From b37d8c0821997038c96723d85bcc95734af0c159 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 16 Nov 2017 20:38:10 +0100 Subject: start decompiling wild encounter --- asm/pokeblock_feed.s | 2 +- asm/rom6.s | 10 +- asm/wild_encounter.s | 1325 ++-------------------------------------------- data/wild_encounter.s | 2 +- include/global.h | 2 +- include/pokeblock.h | 2 +- include/vars.h | 1 + include/wild_encounter.h | 39 ++ ld_script.txt | 1 + src/wild_encounter.c | 483 +++++++++++++++++ sym_ewram.txt | 6 +- 11 files changed, 574 insertions(+), 1299 deletions(-) create mode 100644 include/wild_encounter.h create mode 100644 src/wild_encounter.c diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s index 9830db888..9cbee2fb9 100644 --- a/asm/pokeblock_feed.s +++ b/asm/pokeblock_feed.s @@ -704,7 +704,7 @@ sub_817A1C4: @ 817A1C4 lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 - bl sub_8136FE4 + bl PokeblockGetGain ldr r6, =gUnknown_0203BC9E strh r0, [r6] ldr r1, =gStringVar1 diff --git a/asm/rom6.s b/asm/rom6.s index 15c7acb95..8080f5420 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -2779,7 +2779,7 @@ sub_8136C8C: @ 8136C8C adds r2, r6 ldr r1, [r5] adds r1, r2 - bl sub_8136FE4 + bl PokeblockGetGain adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -3177,8 +3177,8 @@ _08136FDE: bx r1 thumb_func_end sub_8136F9C - thumb_func_start sub_8136FE4 -sub_8136FE4: @ 8136FE4 + thumb_func_start PokeblockGetGain +PokeblockGetGain: @ 8136FE4 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -3227,7 +3227,7 @@ _0813702A: pop {r1} bx r1 .pool - thumb_func_end sub_8136FE4 + thumb_func_end PokeblockGetGain thumb_func_start sub_8137044 sub_8137044: @ 8137044 @@ -3261,7 +3261,7 @@ _08137074: ldr r0, =gUnknown_085B2720 adds r1, r0 adds r0, r5, 0 - bl sub_8136FE4 + bl PokeblockGetGain lsls r0, 16 cmp r0, 0 ble _081370A0 diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index 70346e4d7..19b7eeba6 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -5,1251 +5,6 @@ .text - thumb_func_start sub_80B48B8 -sub_80B48B8: @ 80B48B8 - ldr r1, =gUnknown_02038C00 - strb r0, [r1] - bx lr - .pool - thumb_func_end sub_80B48B8 - - thumb_func_start sub_80B48C4 -sub_80B48C4: @ 80B48C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - ldr r3, =gUnknown_08553A7C - lsls r1, r2, 1 - adds r1, r2 - lsls r2, r1, 1 - adds r2, r3 - adds r0, r1, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - mov r9, r0 - adds r1, 0x2 - lsls r1, 1 - adds r1, r3 - ldrh r6, [r1] - ldrh r5, [r2] - cmp r5, r9 - bhi _080B496E - ldr r0, =gMapHeader - mov r10, r0 -_080B4906: - movs r4, 0 - mov r1, r10 - ldr r0, [r1] - ldr r0, [r0] - cmp r4, r0 - bge _080B4964 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r7, r0, 16 -_080B4920: - adds r0, r4, 0x7 - adds r1, r5, 0x7 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfableAndNotWaterfall - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B4954 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r8, r4 - bne _080B4954 - cmp r7, r5 - bne _080B4954 - adds r0, r6, 0 - b _080B4974 - .pool -_080B4954: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - mov r1, r10 - ldr r0, [r1] - ldr r0, [r0] - cmp r4, r0 - blt _080B4920 -_080B4964: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r9 - bls _080B4906 -_080B496E: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r0, 16 -_080B4974: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B48C4 - - thumb_func_start sub_80B4984 -sub_80B4984: @ 80B4984 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - movs r7, 0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0x88 - lsls r0, 6 - cmp r1, r0 - bne _080B4A7A - add r5, sp, 0xC - mov r4, sp - adds r4, 0xE - adds r0, r5, 0 - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - ldrh r0, [r5] - subs r0, 0x7 - strh r0, [r5] - ldrh r0, [r4] - subs r0, 0x7 - strh r0, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, =gUnknown_08553A7C - mov r9, r5 - mov r8, r4 - ldrh r2, [r0, 0x6] - cmp r1, r2 - blt _080B49D0 - ldrh r3, [r0, 0x8] - cmp r1, r3 - bgt _080B49D0 - movs r7, 0x1 -_080B49D0: - mov r2, r8 - movs r3, 0 - ldrsh r1, [r2, r3] - ldrh r2, [r0, 0xC] - cmp r1, r2 - blt _080B49E4 - ldrh r0, [r0, 0xE] - cmp r1, r0 - bgt _080B49E4 - movs r7, 0x2 -_080B49E4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bls _080B4A08 - b _080B4A7A - .pool -_080B4A04: - movs r0, 0x1 - b _080B4A7C -_080B4A08: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, =0x00002e6a - adds r0, r3 - ldrh r0, [r0] - bl sub_80B4AB8 - movs r5, 0 - ldr r6, =0x000001bf -_080B4A1A: - bl sub_80B4A98 - lsls r1, r5, 1 - mov r2, sp - adds r4, r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __umodsi3 - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - bne _080B4A38 - strh r6, [r4] -_080B4A38: - ldrh r0, [r4] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080B4A4A - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080B4A4A: - cmp r5, 0x6 - bne _080B4A1A - mov r3, r9 - movs r1, 0 - ldrsh r0, [r3, r1] - mov r2, r8 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r2, r7, 0 - bl sub_80B48C4 - lsls r0, 16 - lsrs r1, r0, 16 - movs r5, 0 -_080B4A66: - lsls r0, r5, 1 - add r0, sp - ldrh r0, [r0] - cmp r1, r0 - beq _080B4A04 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080B4A66 -_080B4A7A: - movs r0, 0 -_080B4A7C: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B4984 - - thumb_func_start sub_80B4A98 -sub_80B4A98: @ 80B4A98 - ldr r2, =gUnknown_02038C04 - ldr r1, [r2] - ldr r0, =0x41c64e6d - muls r0, r1 - ldr r1, =0x00003039 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - bx lr - .pool - thumb_func_end sub_80B4A98 - - thumb_func_start sub_80B4AB8 -sub_80B4AB8: @ 80B4AB8 - lsls r0, 16 - lsrs r0, 16 - ldr r1, =gUnknown_02038C04 - str r0, [r1] - bx lr - .pool - thumb_func_end sub_80B4AB8 - - thumb_func_start wild_pokemon_rand_grass -wild_pokemon_rand_grass: @ 80B4AC8 - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x13 - bhi _080B4AE4 - movs r0, 0 - b _080B4B7E -_080B4AE4: - adds r0, r1, 0 - subs r0, 0x14 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080B4AF4 - movs r0, 0x1 - b _080B4B7E -_080B4AF4: - adds r0, r1, 0 - subs r0, 0x28 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080B4B04 - movs r0, 0x2 - b _080B4B7E -_080B4B04: - adds r0, r1, 0 - subs r0, 0x32 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080B4B14 - movs r0, 0x3 - b _080B4B7E -_080B4B14: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080B4B24 - movs r0, 0x4 - b _080B4B7E -_080B4B24: - adds r0, r1, 0 - subs r0, 0x46 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080B4B34 - movs r0, 0x5 - b _080B4B7E -_080B4B34: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080B4B44 - movs r0, 0x6 - b _080B4B7E -_080B4B44: - adds r0, r1, 0 - subs r0, 0x55 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080B4B54 - movs r0, 0x7 - b _080B4B7E -_080B4B54: - adds r0, r1, 0 - subs r0, 0x5A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080B4B64 - movs r0, 0x8 - b _080B4B7E -_080B4B64: - adds r0, r1, 0 - subs r0, 0x5E - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080B4B74 - movs r0, 0x9 - b _080B4B7E -_080B4B74: - cmp r1, 0x62 - beq _080B4B7C - movs r0, 0xB - b _080B4B7E -_080B4B7C: - movs r0, 0xA -_080B4B7E: - pop {r1} - bx r1 - thumb_func_end wild_pokemon_rand_grass - - thumb_func_start wild_pokemon_rand_water -wild_pokemon_rand_water: @ 80B4B84 - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r1, 0x3B - bhi _080B4BA2 - movs r0, 0 - b _080B4BD4 -_080B4BA2: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1D - bhi _080B4BB2 - movs r0, 0x1 - b _080B4BD4 -_080B4BB2: - adds r0, r1, 0 - subs r0, 0x5A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080B4BC2 - movs r0, 0x2 - b _080B4BD4 -_080B4BC2: - adds r0, r2, 0 - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _080B4BD2 - movs r0, 0x4 - b _080B4BD4 -_080B4BD2: - movs r0, 0x3 -_080B4BD4: - pop {r1} - bx r1 - thumb_func_end wild_pokemon_rand_water - - thumb_func_start sub_80B4BD8 -sub_80B4BD8: @ 80B4BD8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - movs r5, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, 0x1 - beq _080B4C12 - cmp r4, 0x1 - bgt _080B4C02 - cmp r4, 0 - beq _080B4C08 - b _080B4C6C -_080B4C02: - cmp r6, 0x2 - beq _080B4C36 - b _080B4C6C -_080B4C08: - movs r5, 0x1 - cmp r1, 0x45 - bhi _080B4C6C - movs r5, 0 - b _080B4C6C -_080B4C12: - cmp r1, 0x3B - bhi _080B4C18 - movs r5, 0x2 -_080B4C18: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080B4C26 - movs r5, 0x3 -_080B4C26: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080B4C6C - movs r5, 0x4 - b _080B4C6C -_080B4C36: - cmp r1, 0x27 - bhi _080B4C3C - movs r5, 0x5 -_080B4C3C: - adds r0, r1, 0 - subs r0, 0x28 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - bhi _080B4C4A - movs r5, 0x6 -_080B4C4A: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE - bhi _080B4C58 - movs r5, 0x7 -_080B4C58: - adds r0, r1, 0 - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080B4C66 - movs r5, 0x8 -_080B4C66: - cmp r1, 0x63 - bne _080B4C6C - movs r5, 0x9 -_080B4C6C: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B4BD8 - - thumb_func_start sub_80B4C74 -sub_80B4C74: @ 80B4C74 - push {r4-r7,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x1] - ldrb r1, [r4] - cmp r0, r1 - bcc _080B4C86 - ldrb r7, [r4] - adds r6, r0, 0 - b _080B4C8A -_080B4C86: - ldrb r7, [r4, 0x1] - ldrb r6, [r4] -_080B4C8A: - subs r4, r6, r7 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, =gPlayerParty - adds r0, r5, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B4CEA - adds r0, r5, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x37 - beq _080B4CC8 - cmp r0, 0x48 - beq _080B4CC8 - cmp r0, 0x2E - bne _080B4CEA -_080B4CC8: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B4CE0 - adds r0, r6, 0 - b _080B4CF0 - .pool -_080B4CE0: - cmp r4, 0 - beq _080B4CEA - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080B4CEA: - adds r0, r7, r4 - lsls r0, 24 - lsrs r0, 24 -_080B4CF0: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B4C74 - - thumb_func_start get_wild_data_index_for_map -get_wild_data_index_for_map: @ 80B4CF8 - push {r4-r6,lr} - movs r4, 0 - ldr r0, =gWildMonHeaders - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0xFF - beq _080B4D6C - ldr r6, =0x00006a18 -_080B4D08: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r5 - ldrb r1, [r3] - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r1, r0 - bne _080B4D58 - ldrb r1, [r3, 0x1] - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r1, r0 - bne _080B4D58 - ldrh r0, [r2, 0x4] - cmp r0, r6 - bne _080B4D44 - ldr r0, =0x0000403e - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080B4D3E - movs r0, 0 -_080B4D3E: - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_080B4D44: - adds r0, r4, 0 - b _080B4D6E - .pool -_080B4D58: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080B4D08 -_080B4D6C: - ldr r0, =0x0000ffff -_080B4D6E: - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end get_wild_data_index_for_map - - thumb_func_start sub_80B4D78 -sub_80B4D78: @ 80B4D78 - push {r4-r7,lr} - sub sp, 0x1C - bl GetSafariZoneFlag - cmp r0, 0x1 - bne _080B4E0E - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4F - bhi _080B4E0E - bl SafariZoneGetActivePokeblock - adds r7, r0, 0 - cmp r7, 0 - beq _080B4E0E - movs r5, 0 -_080B4DA6: - mov r1, sp - adds r0, r1, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x18 - bls _080B4DA6 - movs r5, 0 -_080B4DB8: - adds r1, r5, 0x1 - lsls r0, r1, 24 - lsrs r4, r0, 24 - adds r6, r1, 0 - cmp r4, 0x18 - bhi _080B4DE8 - add r5, sp -_080B4DC6: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080B4DDE - ldrb r2, [r5] - mov r0, sp - adds r1, r0, r4 - ldrb r0, [r1] - strb r0, [r5] - strb r2, [r1] -_080B4DDE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x18 - bls _080B4DC6 -_080B4DE8: - lsls r0, r6, 24 - lsrs r5, r0, 24 - cmp r5, 0x17 - bls _080B4DB8 - movs r5, 0 -_080B4DF2: - mov r1, sp - adds r4, r1, r5 - ldrb r0, [r4] - adds r1, r7, 0 - bl sub_8136FE4 - lsls r0, 16 - cmp r0, 0 - bgt _080B4E48 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x18 - bls _080B4DF2 -_080B4E0E: - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B4E4C - adds r0, r4, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1C - bne _080B4E4C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B4E4C - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - b _080B4E54 - .pool -_080B4E48: - ldrb r0, [r4] - b _080B4E5E -_080B4E4C: - bl Random - lsls r0, 16 - lsrs r0, 16 -_080B4E54: - movs r1, 0x19 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 -_080B4E5E: - add sp, 0x1C - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B4D78 - - thumb_func_start sub_80B4E68 -sub_80B4E68: @ 80B4E68 - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - bl ZeroEnemyPartyMons - movs r2, 0x1 - ldr r1, =gBaseStats - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x10] - cmp r0, 0 - beq _080B4E96 - cmp r0, 0 - blt _080B4E98 - cmp r0, 0xFF - bgt _080B4E98 - cmp r0, 0xFE - blt _080B4E98 -_080B4E96: - movs r2, 0 -_080B4E98: - cmp r2, 0 - beq _080B4F28 - ldr r5, =gPlayerParty - adds r0, r5, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B4F28 - adds r0, r5, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x38 - bne _080B4F28 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _080B4F28 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFE - bne _080B4F00 - movs r4, 0 - b _080B4F02 - .pool -_080B4F00: - movs r4, 0xFE -_080B4F02: - bl sub_80B4D78 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty - str r4, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r1, 0 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x20 - bl CreateMonWithGenderNatureLetter - b _080B4F40 - .pool -_080B4F28: - bl sub_80B4D78 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty - str r0, [sp] - adds r0, r1, 0 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x20 - bl CreateMonWithNature -_080B4F40: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B4E68 - - thumb_func_start sub_80B4F4C -sub_80B4F4C: @ 80B4F4C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - adds r4, r3, 0 - lsls r2, 24 - lsrs r6, r2, 24 - movs r1, 0 - mov r0, sp - strb r1, [r0] - cmp r3, 0x1 - beq _080B4FA0 - cmp r3, 0x1 - bgt _080B4F70 - cmp r3, 0 - beq _080B4F76 - b _080B4FBA -_080B4F70: - cmp r4, 0x2 - beq _080B4FB2 - b _080B4FBA -_080B4F76: - ldr r0, [r5, 0x4] - movs r1, 0x8 - movs r2, 0x2A - mov r3, sp - bl TryGetAbilityInfluencedWildMonIndex - lsls r0, 24 - cmp r0, 0 - bne _080B4FBA - ldr r0, [r5, 0x4] - movs r1, 0xD - movs r2, 0x9 - mov r3, sp - bl TryGetAbilityInfluencedWildMonIndex - lsls r0, 24 - cmp r0, 0 - bne _080B4FBA - bl wild_pokemon_rand_grass - b _080B4FB6 -_080B4FA0: - ldr r0, [r5, 0x4] - movs r1, 0xD - movs r2, 0x9 - mov r3, sp - bl TryGetAbilityInfluencedWildMonIndex - lsls r0, 24 - cmp r0, 0 - bne _080B4FBA -_080B4FB2: - bl wild_pokemon_rand_water -_080B4FB6: - mov r1, sp - strb r0, [r1] -_080B4FBA: - mov r0, sp - ldrb r1, [r0] - lsls r1, 2 - ldr r0, [r5, 0x4] - adds r0, r1 - bl sub_80B4C74 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - ands r0, r6 - cmp r0, 0 - beq _080B4FE0 - adds r0, r4, 0 - bl sub_80B58CC - lsls r0, 24 - cmp r0, 0 - beq _080B5000 -_080B4FE0: - ldr r0, =gMapHeader - ldrh r1, [r0, 0x12] - movs r0, 0xB3 - lsls r0, 1 - cmp r1, r0 - beq _080B5008 - movs r0, 0x2 - ands r0, r6 - cmp r0, 0 - beq _080B5008 - adds r0, r4, 0 - bl DoKeenEyeIntimidateWildEncounterTest - lsls r0, 24 - cmp r0, 0 - bne _080B5008 -_080B5000: - movs r0, 0 - b _080B501C - .pool -_080B5008: - mov r0, sp - ldrb r0, [r0] - ldr r1, [r5, 0x4] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - adds r1, r4, 0 - bl sub_80B4E68 - movs r0, 0x1 -_080B501C: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B4F4C - - thumb_func_start sub_80B5024 -sub_80B5024: @ 80B5024 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - bl sub_80B4BD8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 22 - ldr r0, [r5, 0x4] - adds r0, r4 - bl sub_80B4C74 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, [r5, 0x4] - adds r0, r4, r0 - ldrh r0, [r0, 0x2] - bl sub_80B4E68 - ldr r0, [r5, 0x4] - adds r4, r0 - ldrh r0, [r4, 0x2] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80B5024 - - thumb_func_start SetUpMassOutbreakEncounter -SetUpMassOutbreakEncounter: @ 80B505C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B508C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002b94 - adds r0, r1 - ldrb r0, [r0] - bl sub_80B58CC - lsls r0, 24 - cmp r0, 0 - bne _080B508C - movs r0, 0 - b _080B50C6 - .pool -_080B508C: - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, =0x00002b90 - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, 0x4 - adds r1, r2 - ldrb r1, [r1] - bl sub_80B4E68 - movs r4, 0 -_080B50A2: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00002b98 - adds r0, r2 - adds r0, r1 - ldrh r1, [r0] - lsls r2, r4, 24 - lsrs r2, 24 - ldr r0, =gEnemyParty - bl SetMonMoveSlot - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080B50A2 - movs r0, 0x1 -_080B50C6: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end SetUpMassOutbreakEncounter - - thumb_func_start DoMassOutbreakEncounterTest -DoMassOutbreakEncounterTest: @ 80B50DC - push {r4,lr} - ldr r4, =gSaveBlock1Ptr - ldr r2, [r4] - ldr r1, =0x00002b90 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _080B513C - movs r1, 0x5 - ldrsb r1, [r2, r1] - ldr r3, =0x00002b92 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _080B513C - movs r1, 0x4 - ldrsb r1, [r2, r1] - adds r3, 0x1 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _080B513C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - ldr r1, [r4] - ldr r2, =0x00002ba1 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1] - cmp r0, r1 - bcs _080B513C - movs r0, 0x1 - b _080B513E - .pool -_080B513C: - movs r0, 0 -_080B513E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end DoMassOutbreakEncounterTest - - thumb_func_start DoWildEncounterRateDiceRoll -DoWildEncounterRateDiceRoll: @ 80B5144 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - lsls r1, 4 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcc _080B5168 - movs r0, 0 - b _080B516A -_080B5168: - movs r0, 0x1 -_080B516A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end DoWildEncounterRateDiceRoll - - thumb_func_start DoWildEncounterRateTest -DoWildEncounterRateTest: @ 80B5170 - push {r4,lr} - sub sp, 0x4 - str r0, [sp] - lsls r1, 24 - lsrs r4, r1, 24 - lsls r0, 4 - str r0, [sp] - movs r0, 0x6 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _080B519A - ldr r1, [sp] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - movs r1, 0x64 - bl __udivsi3 - str r0, [sp] -_080B519A: - mov r0, sp - bl affects_encounter_rate_based_on_flags - mov r0, sp - bl ApplyCleanseTagWildEncounterRateReduction - cmp r4, 0 - bne _080B5216 - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B5216 - adds r0, r4, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B51E8 - ldr r0, =gMapHeader - ldrh r1, [r0, 0x12] - ldr r0, =0x00000169 - cmp r1, r0 - bne _080B5210 - ldr r1, [sp] - lsls r0, r1, 1 - adds r0, r1 - lsrs r0, 2 - b _080B5214 - .pool -_080B51E8: - cmp r0, 0x23 - bne _080B51F2 - ldr r0, [sp] - lsls r0, 1 - b _080B5214 -_080B51F2: - cmp r0, 0x49 - beq _080B5210 - cmp r0, 0x47 - bne _080B5200 - ldr r0, [sp] - lsls r0, 1 - b _080B5214 -_080B5200: - cmp r0, 0x8 - bne _080B5216 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x2E - ldrb r0, [r0] - cmp r0, 0x8 - bne _080B5216 -_080B5210: - ldr r0, [sp] - lsrs r0, 1 -_080B5214: - str r0, [sp] -_080B5216: - ldr r0, [sp] - movs r1, 0xB4 - lsls r1, 4 - cmp r0, r1 - bls _080B5222 - str r1, [sp] -_080B5222: - ldr r0, [sp] - lsls r0, 16 - lsrs r0, 16 - bl DoWildEncounterRateDiceRoll - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end DoWildEncounterRateTest thumb_func_start DoGlobalWildEncounterDiceRoll DoGlobalWildEncounterDiceRoll: @ 80B523C @@ -1307,13 +62,13 @@ is_it_battle_time_2: @ 80B5288 lsls r1, 16 lsrs r7, r1, 16 mov r8, r7 - ldr r0, =gUnknown_02038C00 + ldr r0, =sWildEncountersDisabled ldrb r0, [r0] cmp r0, 0x1 bne _080B52A6 b _080B54FE _080B52A6: - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r5, r0, 16 ldr r0, =0x0000ffff @@ -1355,7 +110,7 @@ _080B52F8: ldr r0, [r4] movs r1, 0 movs r2, 0x2 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1410,7 +165,7 @@ _080B5372: ldr r0, [r4] movs r1, 0 movs r2, 0x2 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1489,7 +244,7 @@ _080B5418: ldr r0, [r0] movs r1, 0 movs r2, 0x3 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1561,7 +316,7 @@ _080B54BA: ldr r1, =0x000031dc adds r0, r1 ldrb r0, [r0, 0xC] - bl sub_80B58CC + bl IsWildLevelAllowedByRepel lsls r0, 24 cmp r0, 0 beq _080B54FE @@ -1573,7 +328,7 @@ _080B54E4: ldr r0, [r4] movs r1, 0x1 movs r2, 0x3 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1596,7 +351,7 @@ _080B5500: thumb_func_start rock_smash_wild_pokemon_encounter rock_smash_wild_pokemon_encounter: @ 80B550C push {r4,lr} - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r2, r0, 16 ldr r0, =0x0000ffff @@ -1621,7 +376,7 @@ rock_smash_wild_pokemon_encounter: @ 80B550C adds r0, r4, 0 movs r1, 0x2 movs r2, 0x3 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1 @@ -1652,7 +407,7 @@ SweetScentWildEncounter: @ 80B5578 mov r0, sp adds r1, r5, 0 bl PlayerGetDestCoords - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r4, r0, 16 ldr r0, =0x0000ffff @@ -1676,7 +431,7 @@ SweetScentWildEncounter: @ 80B5578 ldr r0, [r0] movs r1, 0 movs r2, 0 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1709,7 +464,7 @@ _080B55EC: ldr r0, [r0] movs r1, 0 movs r2, 0 - bl sub_80B4F4C + bl TryGenerateWildMon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1758,7 +513,7 @@ _080B5680: adds r0, r4, 0 movs r1, 0 movs r2, 0 - bl sub_80B4F4C + bl TryGenerateWildMon b _080B56EA _080B568C: mov r0, sp @@ -1802,7 +557,7 @@ _080B56E0: adds r0, r4, 0 movs r1, 0x1 movs r2, 0 - bl sub_80B4F4C + bl TryGenerateWildMon _080B56EA: bl sub_80B0698 movs r0, 0x1 @@ -1819,7 +574,7 @@ _080B56F4: thumb_func_start GetFishingWildMonListHeader GetFishingWildMonListHeader: @ 80B56FC push {lr} - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r2, r0, 16 ldr r0, =0x0000ffff @@ -1849,25 +604,25 @@ sub_80B5734: @ 80B5734 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - bl sub_80B4984 + bl CheckFeebas lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080B5764 ldr r4, =gUnknown_08553A78 adds r0, r4, 0 - bl sub_80B4C74 + bl ChooseWildMonLevel adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldrh r4, [r4, 0x2] adds r0, r4, 0 - bl sub_80B4E68 + bl CreateWildMon b _080B5784 .pool _080B5764: ldr r4, =gWildMonHeaders - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r0, 16 lsls r1, r0, 2 @@ -1877,7 +632,7 @@ _080B5764: adds r1, r4 ldr r0, [r1] adds r1, r5, 0 - bl sub_80B5024 + bl GenerateFishingWildMon lsls r0, 16 lsrs r4, r0, 16 _080B5784: @@ -1898,7 +653,7 @@ wild_pokemon_rand_for_map: @ 80B57A0 adds r6, r0, 0 movs r0, 0 strb r0, [r6] - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r3, r0, 16 ldr r0, =0x0000ffff @@ -1929,7 +684,7 @@ _080B57E0: _080B57E6: movs r0, 0x1 strb r0, [r6] - bl wild_pokemon_rand_water + bl ChooseWildMonIndex_WaterRock lsls r0, 24 ldr r1, [r4, 0x4] b _080B5820 @@ -1945,12 +700,12 @@ _080B57F4: bls _080B5818 movs r0, 0x1 strb r0, [r6] - bl wild_pokemon_rand_water + bl ChooseWildMonIndex_WaterRock lsls r0, 24 ldr r1, [r4, 0x4] b _080B5820 _080B5818: - bl wild_pokemon_rand_grass + bl ChooseWildMonIndex_Land lsls r0, 24 ldr r1, [r5, 0x4] _080B5820: @@ -1966,7 +721,7 @@ _080B5826: thumb_func_start sub_80B582C sub_80B582C: @ 80B582C push {r4,lr} - bl get_wild_data_index_for_map + bl GetCurrentMapWildMonHeaderId lsls r0, 16 lsrs r2, r0, 16 ldr r0, =0x0000ffff @@ -1981,7 +736,7 @@ sub_80B582C: @ 80B582C ldr r4, [r0] cmp r4, 0 beq _080B5868 - bl wild_pokemon_rand_water + bl ChooseWildMonIndex_WaterRock lsls r0, 24 ldr r1, [r4, 0x4] lsrs r0, 22 @@ -2039,8 +794,8 @@ _080B58C6: bx r1 thumb_func_end sub_80B5870 - thumb_func_start sub_80B58CC -sub_80B58CC: @ 80B58CC + thumb_func_start IsWildLevelAllowedByRepel +IsWildLevelAllowedByRepel: @ 80B58CC push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -2089,11 +844,11 @@ _080B592C: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_80B58CC + thumb_func_end IsWildLevelAllowedByRepel - thumb_func_start DoKeenEyeIntimidateWildEncounterTest -@ _BOOL1 DoKeenEyeIntimidateWildEncounterTest(u8 wildMonLevel) -DoKeenEyeIntimidateWildEncounterTest: @ 80B5934 + thumb_func_start IsAbilityAllowingEncounter +@ _BOOL1 IsAbilityAllowingEncounter(u8 wildMonLevel) +IsAbilityAllowingEncounter: @ 80B5934 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -2138,7 +893,7 @@ _080B598A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end DoKeenEyeIntimidateWildEncounterTest + thumb_func_end IsAbilityAllowingEncounter thumb_func_start TryGetRandomWildMonIndexByType @ _BOOL1 TryGetRandomWildMonIndexByType(WildMonEntry *mons, u8 type, u8 numMons, u8 *monIndex) @@ -2295,9 +1050,9 @@ _080B5AA6: bx r1 thumb_func_end TryGetAbilityInfluencedWildMonIndex - thumb_func_start affects_encounter_rate_based_on_flags -@ void affects_encounter_rate_based_on_flags(u32 *val) -affects_encounter_rate_based_on_flags: @ 80B5AB0 + thumb_func_start ApplyFluteEncounterRateMod +@ void ApplyFluteEncounterRateMod(u32 *val) +ApplyFluteEncounterRateMod: @ 80B5AB0 push {r4,lr} adds r4, r0, 0 ldr r0, =0x000008ad @@ -2327,10 +1082,10 @@ _080B5AE4: pop {r0} bx r0 .pool - thumb_func_end affects_encounter_rate_based_on_flags + thumb_func_end ApplyFluteEncounterRateMod - thumb_func_start ApplyCleanseTagWildEncounterRateReduction -ApplyCleanseTagWildEncounterRateReduction: @ 80B5AF0 + thumb_func_start ApplyCleanseTagEncounterRateMod +ApplyCleanseTagEncounterRateMod: @ 80B5AF0 push {r4,lr} adds r4, r0, 0 ldr r0, =gPlayerParty @@ -2348,6 +1103,6 @@ _080B5B0C: pop {r0} bx r0 .pool - thumb_func_end ApplyCleanseTagWildEncounterRateReduction + thumb_func_end ApplyCleanseTagEncounterRateMod .align 2, 0 @ Don't pad with nop. diff --git a/data/wild_encounter.s b/data/wild_encounter.s index ddb842a76..8540fefac 100644 --- a/data/wild_encounter.s +++ b/data/wild_encounter.s @@ -18,5 +18,5 @@ gUnknown_08553A14:: @ 8553A14 gUnknown_08553A78:: @ 8553A78 .incbin "baserom.gba", 0x553a78, 0x4 -gUnknown_08553A7C:: @ 8553A7C +gRoute119WaterTileData:: @ 8553A7C .incbin "baserom.gba", 0x553a7c, 0x14 diff --git a/include/global.h b/include/global.h index 3421517d7..7547d523b 100644 --- a/include/global.h +++ b/include/global.h @@ -579,7 +579,7 @@ struct SaveBlock1 /*0x2BB0*/ u16 unk2BB0[6]; /*0x2BBC*/ u16 unk2BBC[6]; /*0x2BC8*/ u16 unk2BC8[6]; - /*0x2BD4*/ u16 unk2BD4[3]; + /*0x2BD4*/ u16 unk2BD4[6]; /*0x2BE0*/ struct MailStruct mail[16]; /*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system /*0x2E25*/ u8 unk2E25[3]; // possibly padding? diff --git a/include/pokeblock.h b/include/pokeblock.h index 5d52f8e55..b0e93f0e5 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -23,6 +23,7 @@ enum }; void ClearPokeblocks(void); +s16 PokeblockGetGain(u8, const struct Pokeblock *); /* void sub_810B96C(void); @@ -32,7 +33,6 @@ s16 GetPokeblockData(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); bool8 PokeblockClearIfExists(u8); -s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); void CB2_PreparePokeblockFeedScene(void); diff --git a/include/vars.h b/include/vars.h index f8057d4b5..763b7379d 100644 --- a/include/vars.h +++ b/include/vars.h @@ -30,6 +30,7 @@ #define VAR_RESET_RTC_ENABLE 0x402C #define VAR_0x4037 0x4037 +#define VAR_ALTERING_CAVE_WILD_SET 0x403E #define VAR_DAYS 0x4040 #define VAR_DEPT_STORE_FLOOR 0x4043 diff --git a/include/wild_encounter.h b/include/wild_encounter.h new file mode 100644 index 000000000..c9d7c3fa1 --- /dev/null +++ b/include/wild_encounter.h @@ -0,0 +1,39 @@ +#ifndef GUARD_WILD_ENCOUNTER_H +#define GUARD_WILD_ENCOUNTER_H + +struct WildPokemon +{ + u8 minLevel; + u8 maxLevel; + u16 species; +}; + +struct WildPokemonInfo +{ + u8 encounterRate; + const struct WildPokemon *wildPokemon; +}; + +struct WildPokemonHeader +{ + u8 mapGroup; + u8 mapNum; + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; + const struct WildPokemonInfo *rockSmashMonsInfo; + const struct WildPokemonInfo *fishingMonsInfo; +}; + +extern const struct WildPokemonHeader gWildMonHeaders[]; + +void DisableWildEncounters(bool8 disabled); +bool8 StandardWildEncounter(u16 a, u16 b); +void ScrSpecial_RockSmashWildEncounter(void); +bool8 SweetScentWildEncounter(void); +bool8 DoesCurrentMapHaveFishingMons(void); +void FishingWildEncounter(u8 rod); +u16 GetLocalWildMon(bool8 *isWaterMon); +u16 GetLocalWaterMon(void); +bool8 UpdateRepelCounter(void); + +#endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index 2c958ea5a..b04f2f9af 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -124,6 +124,7 @@ SECTIONS { asm/battle_setup.o(.text); asm/cable_club.o(.text); asm/trainer_see.o(.text); + src/wild_encounter.o(.text); asm/wild_encounter.o(.text); asm/field_effect.o(.text); asm/unknown_task.o(.text); diff --git a/src/wild_encounter.c b/src/wild_encounter.c new file mode 100644 index 000000000..7d4cc7794 --- /dev/null +++ b/src/wild_encounter.c @@ -0,0 +1,483 @@ +#include "global.h" +#include "wild_encounter.h" +#include "pokemon.h" +#include "species.h" +#include "metatile_behavior.h" +#include "fieldmap.h" +#include "rng.h" +#include "map_constants.h" +#include "field_player_avatar.h" +#include "abilities.h" +#include "event_data.h" +#include "safari_zone.h" +#include "pokeblock.h" + +EWRAM_DATA u8 sWildEncountersDisabled = 0; +EWRAM_DATA u32 sFeebasRngValue = 0; + +#define NUM_FEEBAS_SPOTS 6 + +extern const u16 gRoute119WaterTileData[]; + +// this file's functions +u16 FeebasRandom(void); +void FeebasSeedRng(u16 seed); +bool8 IsWildLevelAllowedByRepel(u8 level); +void ApplyFluteEncounterRateMod(u32 *encRate); +void ApplyCleanseTagEncounterRateMod(u32 *encRate); +bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex); +bool8 IsAbilityAllowingEncounter(u8 level); + +void DisableWildEncounters(bool8 disabled) +{ + sWildEncountersDisabled = disabled; +} + +u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) +{ + u16 xCur; + u16 yCur; + u16 yMin = gRoute119WaterTileData[section * 3 + 0]; + u16 yMax = gRoute119WaterTileData[section * 3 + 1]; + u16 tileNum = gRoute119WaterTileData[section * 3 + 2]; + + for (yCur = yMin; yCur <= yMax; yCur++) + { + for (xCur = 0; xCur < gMapHeader.mapData->width; xCur++) + { + u8 tileBehaviorId = MapGridGetMetatileBehaviorAt(xCur + 7, yCur + 7); + if (MetatileBehavior_IsSurfableAndNotWaterfall(tileBehaviorId) == TRUE) + { + tileNum++; + if (x == xCur && y == yCur) + return tileNum; + } + } + } + return tileNum + 1; +} + +bool8 CheckFeebas(void) +{ + u8 i; + u16 feebasSpots[NUM_FEEBAS_SPOTS]; + s16 x; + s16 y; + u8 route119section = 0; + u16 waterTileNum; + + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_ROUTE119 + && gSaveBlock1Ptr->location.mapNum == MAP_ID_ROUTE119) + { + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + x -= 7; + y -= 7; + +#ifdef NONMATCHING + if (y >= gRoute119WaterTileData[3 * 1 + 0] && y <= gRoute119WaterTileData[3 * 1 + 1]) + route119section = 1; + if (y >= gRoute119WaterTileData[3 * 2 + 0] && y <= gRoute119WaterTileData[3 * 2 + 1]) + route119section = 2; +#else + { + register const u16 *arr asm("r0"); + if (y >= (arr = gRoute119WaterTileData)[3 * 1 + 0] && y <= arr[3 * 1 + 1]) + route119section = 1; + if (y >= arr[3 * 2 + 0] && y <= arr[3 * 2 + 1]) + route119section = 2; + } +#endif + + if (Random() % 100 > 49) // 50% chance of encountering Feebas + return FALSE; + + FeebasSeedRng(gSaveBlock1Ptr->easyChatPairs[0].unk2); + for (i = 0; i != NUM_FEEBAS_SPOTS;) + { + feebasSpots[i] = FeebasRandom() % 447; + if (feebasSpots[i] == 0) + feebasSpots[i] = 447; + if (feebasSpots[i] < 1 || feebasSpots[i] >= 4) + i++; + } + waterTileNum = GetRoute119WaterTileNum(x, y, route119section); + for (i = 0; i < NUM_FEEBAS_SPOTS; i++) + { + if (waterTileNum == feebasSpots[i]) + return TRUE; + } + } + return FALSE; +} + +u16 FeebasRandom(void) +{ + sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue; + return sFeebasRngValue >> 16; +} + +void FeebasSeedRng(u16 seed) +{ + sFeebasRngValue = seed; +} + +u8 ChooseWildMonIndex_Land(void) +{ + u8 rand = Random() % 100; + + if (rand < 20) // 20% chance + return 0; + if (rand >= 20 && rand < 40) // 20% chance + return 1; + if (rand >= 40 && rand < 50) // 10% chance + return 2; + if (rand >= 50 && rand < 60) // 10% chance + return 3; + if (rand >= 60 && rand < 70) // 10% chance + return 4; + if (rand >= 70 && rand < 80) // 10% chance + return 5; + if (rand >= 80 && rand < 85) // 5% chance + return 6; + if (rand >= 85 && rand < 90) // 5% chance + return 7; + if (rand >= 90 && rand < 94) // 4% chance + return 8; + if (rand >= 94 && rand < 98) // 4% chance + return 9; + if (rand == 98) // 1% chance + return 10; + else // 1% chance + return 11; +} + +u8 ChooseWildMonIndex_WaterRock(void) +{ + u8 rand = Random() % 100; + + if (rand < 60) // 60% chance + return 0; + if (rand >= 60 && rand < 90) // 30% chance + return 1; + if (rand >= 90 && rand < 95) // 5% chance + return 2; + if (rand >= 95 && rand < 99) // 4% chance + return 3; + else // 1% chance + return 4; +} + +enum +{ + OLD_ROD, + GOOD_ROD, + SUPER_ROD +}; + +u8 ChooseWildMonIndex_Fishing(u8 rod) +{ + u8 wildMonIndex = 0; + u8 rand = Random() % 100; + + switch (rod) + { + case OLD_ROD: + if (rand < 70) // 70% chance + wildMonIndex = 0; + else // 30% chance + wildMonIndex = 1; + break; + case GOOD_ROD: + if (rand < 60) // 60% chance + wildMonIndex = 2; + if (rand >= 60 && rand < 80) // 20% chance + wildMonIndex = 3; + if (rand >= 80 && rand < 100) // 20% chance + wildMonIndex = 4; + break; + case SUPER_ROD: + if (rand < 40) // 40% chance + wildMonIndex = 5; + if (rand >= 40 && rand < 80) // 40% chance + wildMonIndex = 6; + if (rand >= 80 && rand < 95) // 15% chance + wildMonIndex = 7; + if (rand >= 95 && rand < 99) // 4% chance + wildMonIndex = 8; + if (rand == 99) // 1% chance + wildMonIndex = 9; + break; + } + return wildMonIndex; +} + +u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon) +{ + u8 min; + u8 max; + u8 range; + u8 rand; + + // Make sure minimum level is less than maximum level + if (wildPokemon->maxLevel >= wildPokemon->minLevel) + { + min = wildPokemon->minLevel; + max = wildPokemon->maxLevel; + } + else + { + min = wildPokemon->maxLevel; + max = wildPokemon->minLevel; + } + range = max - min + 1; + rand = Random() % range; + + // check ability for max level mon + if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)) + { + u8 ability = GetMonAbility(&gPlayerParty[0]); + if (ability == ABILITY_HUSTLE || ability == ABILITY_VITAL_SPIRIT || ability == ABILITY_PRESSURE) + { + if (Random() % 2 == 0) + return max; + + if (rand != 0) + rand--; + } + } + + return min + rand; +} + +u16 GetCurrentMapWildMonHeaderId(void) +{ + u16 i; + + for (i = 0; ; i++) + { + const struct WildPokemonHeader *wildHeader = &gWildMonHeaders[i]; + if (wildHeader->mapGroup == 0xFF) + break; + + if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && + gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum) + { + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_ALTERING_CAVE && + gSaveBlock1Ptr->location.mapNum == MAP_ID_ALTERING_CAVE) + { + u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET); + if (alteringCaveId > 8) + alteringCaveId = 0; + + i += alteringCaveId; + } + + return i; + } + } + + return -1; +} + +u8 PickWildMonNature(void) +{ + u8 i; + u8 j; + struct Pokeblock *safariPokeblock; + u8 natures[25]; + + if (GetSafariZoneFlag() == TRUE && Random() % 100 < 80) + { + safariPokeblock = SafariZoneGetActivePokeblock(); + if (safariPokeblock != NULL) + { + for (i = 0; i < 25; i++) + natures[i] = i; + for (i = 0; i < 24; i++) + { + for (j = i + 1; j < 25; j++) + { + if (Random() & 1) + { + u8 temp = natures[i]; + + natures[i] = natures[j]; + natures[j] = temp; + } + } + } + for (i = 0; i < 25; i++) + { + if (PokeblockGetGain(natures[i], safariPokeblock) > 0) + return natures[i]; + } + } + } + // check synchronize for a pokemon with the same ability + if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3) + && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE + && Random() % 2 == 0) + { + return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % 25; + } + + // random nature + return Random() % 25; +} + +void CreateWildMon(u16 species, u8 level) +{ + bool32 checkCuteCharm; + + ZeroEnemyPartyMons(); + checkCuteCharm = TRUE; + + switch (gBaseStats[species].genderRatio) + { + case MON_MALE: + case MON_FEMALE: + case MON_GENDERLESS: + checkCuteCharm = FALSE; + break; + } + + if (checkCuteCharm + && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3) + && GetMonAbility(&gPlayerParty[0]) == ABILITY_CUTE_CHARM + && Random() % 3 != 0) + { + u16 leadingMonSpecies = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES); + u32 leadingMonPersonality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY); + u8 gender = GetGenderFromSpeciesAndPersonality(leadingMonSpecies, leadingMonPersonality); + + // misses mon is genderless check, although no genderless mon can have cute charm as ability + if (gender == MON_FEMALE) + gender = MON_MALE; + else + gender = MON_FEMALE; + + CreateMonWithGenderNatureLetter(&gEnemyParty[0], species, level, 32, gender, PickWildMonNature(), 0); + return; + } + + CreateMonWithNature(&gEnemyParty[0], species, level, 32, PickWildMonNature()); +} + +enum +{ + WILD_AREA_LAND, + WILD_AREA_WATER, + WILD_AREA_ROCKS, + WILD_AREA_FISHING, +}; + +#define WILD_CHECK_REPEL 0x1 +#define WILD_CHECK_KEEN_EYE 0x2 + +bool8 TryGenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) +{ + u8 wildMonIndex = 0; + u8 level; + + switch (area) + { + case WILD_AREA_LAND: + if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex)) + break; + if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex)) + break; + + wildMonIndex = ChooseWildMonIndex_Land(); + break; + case WILD_AREA_WATER: + if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex)) + break; + + wildMonIndex = ChooseWildMonIndex_WaterRock(); + break; + case WILD_AREA_ROCKS: + wildMonIndex = ChooseWildMonIndex_WaterRock(); + break; + } + + level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); + if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(level)) + return FALSE; + if (gMapHeader.mapDataId != 0x166 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level)) + return FALSE; + + CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level); + return TRUE; +} + +u16 GenerateFishingWildMon(struct WildPokemonInfo *wildMonInfo, u8 rod) +{ + u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); + u8 level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); + + CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level); + return wildMonInfo->wildPokemon[wildMonIndex].species; +} + +bool8 SetUpMassOutbreakEncounter(u8 flags) +{ + u16 i; + + if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(gSaveBlock1Ptr->outbreakPokemonLevel)) + return FALSE; + + CreateWildMon(gSaveBlock1Ptr->outbreakPokemonSpecies, gSaveBlock1Ptr->outbreakPokemonLevel); + for (i = 0; i < 4; i++) + SetMonMoveSlot(&gEnemyParty[0], gSaveBlock1Ptr->outbreakPokemonMoves[i], i); + + return TRUE; +} + +bool8 DoMassOutbreakEncounterTest(void) +{ + if (gSaveBlock1Ptr->outbreakPokemonSpecies != 0 + && gSaveBlock1Ptr->location.mapNum == gSaveBlock1Ptr->outbreakLocationMapNum + && gSaveBlock1Ptr->location.mapGroup == gSaveBlock1Ptr->outbreakLocationMapGroup) + { + if (Random() % 100 < gSaveBlock1Ptr->outbreakPokemonProbability) + return TRUE; + } + return FALSE; +} + +bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) +{ + if (Random() % 2880 < encounterRate) + return TRUE; + else + return FALSE; +} + +bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) +{ + encounterRate *= 16; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) + encounterRate = encounterRate * 80 / 100; + ApplyFluteEncounterRateMod(&encounterRate); + ApplyCleanseTagEncounterRateMod(&encounterRate); + if (!ignoreAbility && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)) + { + u32 ability = GetMonAbility(&gPlayerParty[0]); + + if (ability == ABILITY_STENCH && gMapHeader.mapDataId == 0x169) + encounterRate = encounterRate * 3 / 4; + else if (ability == ABILITY_STENCH) + encounterRate /= 2; + else if (ability == ABILITY_ILLUMINATE) + encounterRate *= 2; + else if (ability == ABILITY_WHITE_SMOKE) + encounterRate /= 2; + else if (ability == ABILITY_ARENA_TRAP) + encounterRate *= 2; + else if (ability == ABILITY_SAND_VEIL && gSaveBlock1Ptr->weather == 8) + encounterRate /= 2; + } + if (encounterRate > 2880) + encounterRate = 2880; + return DoWildEncounterRateDiceRoll(encounterRate); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 7f835af30..b96ece7eb 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -789,11 +789,7 @@ gUnknown_02038BF9: @ 2038BF9 gUnknown_02038BFC: @ 2038BFC .space 0x4 -gUnknown_02038C00: @ 2038C00 - .space 0x4 - -gUnknown_02038C04: @ 2038C04 - .space 0x4 + .include "src/wild_encounter.o" gFieldEffectArguments: @ 2038C08 .space 0x20 -- cgit v1.2.3 From a2a17bba926d1465108ab55c47f9145494ff78e5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 17 Nov 2017 17:50:07 +0100 Subject: more work on wild encounter --- asm/battle_frontier_2.s | 20 +- asm/battle_setup.s | 18 +- asm/field_control_avatar.s | 2 +- asm/field_player_avatar.s | 2 +- asm/wild_encounter.s | 593 +----------------------------------- data/scripts/field_move_scripts.inc | 2 +- data/specials.inc | 2 +- data/wild_encounter.s | 4 +- include/battle_setup.h | 3 + include/flags.h | 2 + include/global.h | 6 +- src/wild_encounter.c | 257 +++++++++++++++- 12 files changed, 291 insertions(+), 620 deletions(-) diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index f92f964bb..43ad02708 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -25426,8 +25426,8 @@ sub_81A7B84: @ 81A7B84 .pool thumb_func_end sub_81A7B84 - thumb_func_start sub_81A7B90 -sub_81A7B90: @ 81A7B90 + thumb_func_start TryGenerateBattlePikeWildMon +TryGenerateBattlePikeWildMon: @ 81A7B90 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -25437,7 +25437,7 @@ sub_81A7B90: @ 81A7B90 lsls r0, 24 lsrs r0, 24 mov r8, r0 - bl sub_81A7D00 + bl GetBattlePikeWildMonHeaderId lsls r0, 24 lsrs r6, r0, 24 ldr r7, =gSaveBlock2Ptr @@ -25596,10 +25596,10 @@ _081A7CE2: pop {r1} bx r1 .pool - thumb_func_end sub_81A7B90 + thumb_func_end TryGenerateBattlePikeWildMon - thumb_func_start sub_81A7D00 -sub_81A7D00: @ 81A7D00 + thumb_func_start GetBattlePikeWildMonHeaderId +GetBattlePikeWildMonHeaderId: @ 81A7D00 push {lr} ldr r0, =gSaveBlock2Ptr ldr r1, [r0] @@ -25638,7 +25638,7 @@ _081A7D4C: adds r0, r1, 0 pop {r1} bx r1 - thumb_func_end sub_81A7D00 + thumb_func_end GetBattlePikeWildMonHeaderId thumb_func_start sub_81A7D54 sub_81A7D54: @ 81A7D54 @@ -29386,8 +29386,8 @@ _081A9B86: .pool thumb_func_end sub_81A9B44 - thumb_func_start sub_81A9C04 -sub_81A9C04: @ 81A9C04 + thumb_func_start GenerateBattlePyramidWildMon +GenerateBattlePyramidWildMon: @ 81A9C04 push {r4-r6,lr} sub sp, 0x14 ldr r0, =gSaveBlock2Ptr @@ -29627,7 +29627,7 @@ _081A9E0C: pop {r0} bx r0 .pool - thumb_func_end sub_81A9C04 + thumb_func_end GenerateBattlePyramidWildMon thumb_func_start sub_81A9E28 sub_81A9E28: @ 81A9E28 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 621749734..f77e7a5d0 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -82,8 +82,8 @@ task_add_01_battle_start: @ 80B065C .pool thumb_func_end task_add_01_battle_start - thumb_func_start sub_80B0698 -sub_80B0698: @ 80B0698 + thumb_func_start BattleSetup_StartWildBattle +BattleSetup_StartWildBattle: @ 80B0698 push {lr} bl GetSafariZoneFlag cmp r0, 0 @@ -95,15 +95,15 @@ _080B06A8: _080B06AC: pop {r0} bx r0 - thumb_func_end sub_80B0698 + thumb_func_end BattleSetup_StartWildBattle - thumb_func_start sub_80B06B0 -sub_80B06B0: @ 80B06B0 + thumb_func_start BattleSetup_StartBattlePikeWildBattle +BattleSetup_StartBattlePikeWildBattle: @ 80B06B0 push {lr} bl sub_80B07B4 pop {r0} bx r0 - thumb_func_end sub_80B06B0 + thumb_func_end BattleSetup_StartBattlePikeWildBattle thumb_func_start sub_80B06BC sub_80B06BC: @ 80B06BC @@ -147,8 +147,8 @@ _080B06F2: .pool thumb_func_end sub_80B06BC - thumb_func_start sub_80B072C -sub_80B072C: @ 80B072C + thumb_func_start BattleSetup_StartRoamerBattle +BattleSetup_StartRoamerBattle: @ 80B072C push {lr} bl ScriptContext2_Enable bl player_bitmagic @@ -174,7 +174,7 @@ sub_80B072C: @ 80B072C pop {r0} bx r0 .pool - thumb_func_end sub_80B072C + thumb_func_end BattleSetup_StartRoamerBattle thumb_func_start sub_80B077C sub_80B077C: @ 80B077C diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 7ce989d94..a6d3c93ea 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1607,7 +1607,7 @@ _0809CC0C: ldr r5, =gUnknown_020375D6 ldrh r1, [r5] adds r0, r4, 0 - bl is_it_battle_time_2 + bl StandardWildEncounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 34ff54f61..28c90d23d 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -4316,7 +4316,7 @@ fish5: @ 808CABC adds r0, 0x1 strh r0, [r5, 0x8] movs r6, 0 - bl GetFishingWildMonListHeader + bl DoesCurrentMapHaveFishingMons lsls r0, 24 cmp r0, 0 bne _0808CADC diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index 19b7eeba6..d8f02ae83 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -6,598 +6,7 @@ .text - thumb_func_start DoGlobalWildEncounterDiceRoll -DoGlobalWildEncounterDiceRoll: @ 80B523C - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3B - bhi _080B5258 - movs r0, 0x1 - b _080B525A -_080B5258: - movs r0, 0 -_080B525A: - pop {r1} - bx r1 - thumb_func_end DoGlobalWildEncounterDiceRoll - - thumb_func_start sub_80B5260 -sub_80B5260: @ 80B5260 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0xE0 - lsls r0, 3 - cmp r1, r0 - bne _080B5280 - movs r0, 0x53 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - b _080B5282 - .pool -_080B5280: - movs r0, 0 -_080B5282: - pop {r1} - bx r1 - thumb_func_end sub_80B5260 - thumb_func_start is_it_battle_time_2 -is_it_battle_time_2: @ 80B5288 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r6, r0, 16 - mov r9, r6 - lsls r1, 16 - lsrs r7, r1, 16 - mov r8, r7 - ldr r0, =sWildEncountersDisabled - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B52A6 - b _080B54FE -_080B52A6: - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x0000ffff - cmp r5, r0 - bne _080B539C - ldr r0, =gMapHeader - ldrh r1, [r0, 0x12] - movs r0, 0xB3 - lsls r0, 1 - cmp r1, r0 - bne _080B5330 - bl sub_81A7D00 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r7, r6 - beq _080B52D8 - bl DoGlobalWildEncounterDiceRoll - lsls r0, 24 - cmp r0, 0 - bne _080B52D8 - b _080B54FE -_080B52D8: - ldr r1, =gUnknown_08553A14 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r1, 0x4 - adds r4, r0, r1 - ldr r0, [r4] - ldrb r0, [r0] - movs r1, 0 - bl DoWildEncounterRateTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B52F8 - b _080B54FE -_080B52F8: - ldr r0, [r4] - movs r1, 0 - movs r2, 0x2 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B530C - b _080B54FE -_080B530C: - movs r0, 0x1 - bl sub_81A7B90 - cmp r0, 0 - bne _080B5318 - b _080B54FE -_080B5318: - bl sub_80B06B0 - movs r0, 0x1 - b _080B5500 - .pool -_080B5330: - ldr r0, =0x00000169 - cmp r1, r0 - beq _080B5338 - b _080B54FE -_080B5338: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000cb2 - adds r0, r1 - ldrh r5, [r0] - cmp r7, r6 - beq _080B5352 - bl DoGlobalWildEncounterDiceRoll - lsls r0, 24 - cmp r0, 0 - bne _080B5352 - b _080B54FE -_080B5352: - ldr r1, =gUnknown_08553894 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r1, 0x4 - adds r4, r0, r1 - ldr r0, [r4] - ldrb r0, [r0] - movs r1, 0 - bl DoWildEncounterRateTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B5372 - b _080B54FE -_080B5372: - ldr r0, [r4] - movs r1, 0 - movs r2, 0x2 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B5386 - b _080B54FE -_080B5386: - bl sub_81A9C04 - b _080B54F6 - .pool -_080B539C: - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsLandWildEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B543C - ldr r1, =gWildMonHeaders - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - adds r4, r2, 0 - cmp r0, 0 - bne _080B53C4 - b _080B54FE -_080B53C4: - cmp r7, r6 - beq _080B53D4 - bl DoGlobalWildEncounterDiceRoll - lsls r0, 24 - cmp r0, 0 - bne _080B53D4 - b _080B54FE -_080B53D4: - ldr r1, =gWildMonHeaders - adds r0, r4, r5 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0] - movs r1, 0 - bl DoWildEncounterRateTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B53F2 - b _080B54FE -_080B53F2: - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B54BA - bl DoMassOutbreakEncounterTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5418 - movs r0, 0x3 - bl SetUpMassOutbreakEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B54F6 -_080B5418: - ldr r1, =gWildMonHeaders - adds r0, r4, r5 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x3 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B54F6 - b _080B54FE - .pool -_080B543C: - adds r0, r4, 0 - bl MetatileBehavior_IsWaterWildEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B5464 - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _080B54FE - adds r0, r4, 0 - bl MetatileBehavior_IsBridge - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B54FE -_080B5464: - bl sub_80B5260 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B54FE - ldr r1, =gWildMonHeaders - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - adds r4, r2, 0 - cmp r0, 0 - beq _080B54FE - cmp r8, r9 - beq _080B5492 - bl DoGlobalWildEncounterDiceRoll - lsls r0, 24 - cmp r0, 0 - beq _080B54FE -_080B5492: - ldr r1, =gWildMonHeaders - adds r0, r4, r5 - lsls r0, 2 - adds r1, 0x8 - adds r4, r0, r1 - ldr r0, [r4] - ldrb r0, [r0] - movs r1, 0 - bl DoWildEncounterRateTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B54FE - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B54E4 -_080B54BA: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000031dc - adds r0, r1 - ldrb r0, [r0, 0xC] - bl IsWildLevelAllowedByRepel - lsls r0, 24 - cmp r0, 0 - beq _080B54FE - bl sub_80B072C - movs r0, 0x1 - b _080B5500 - .pool -_080B54E4: - ldr r0, [r4] - movs r1, 0x1 - movs r2, 0x3 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B54FE -_080B54F6: - bl sub_80B0698 - movs r0, 0x1 - b _080B5500 -_080B54FE: - movs r0, 0 -_080B5500: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end is_it_battle_time_2 - - thumb_func_start rock_smash_wild_pokemon_encounter -rock_smash_wild_pokemon_encounter: @ 80B550C - push {r4,lr} - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =0x0000ffff - cmp r2, r0 - beq _080B5568 - ldr r1, =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0xC - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _080B5554 - ldrb r0, [r4] - movs r1, 0x1 - bl DoWildEncounterRateTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5568 - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0x3 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _080B5568 - bl sub_80B0698 -_080B5554: - ldr r0, =gSpecialVar_Result - strh r4, [r0] - b _080B556E - .pool -_080B5568: - ldr r1, =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] -_080B556E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end rock_smash_wild_pokemon_encounter - - thumb_func_start SweetScentWildEncounter -SweetScentWildEncounter: @ 80B5578 - push {r4,r5,lr} - sub sp, 0x4 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x0000ffff - cmp r4, r0 - bne _080B562C - ldr r0, =gMapHeader - ldrh r1, [r0, 0x12] - movs r0, 0xB3 - lsls r0, 1 - cmp r1, r0 - bne _080B55E4 - bl sub_81A7D00 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gUnknown_08553A14 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B55CA - b _080B56F2 -_080B55CA: - movs r0, 0 - bl sub_81A7B90 - bl sub_80B06B0 - movs r0, 0x1 - b _080B56F4 - .pool -_080B55E4: - ldr r0, =0x00000169 - cmp r1, r0 - beq _080B55EC - b _080B56F2 -_080B55EC: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000cb2 - adds r0, r1 - ldrh r4, [r0] - ldr r1, =gUnknown_08553894 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - bl TryGenerateWildMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B56F2 - bl sub_81A9C04 - b _080B56EA - .pool -_080B562C: - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsLandWildEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B568C - ldr r1, =gWildMonHeaders - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _080B56F2 - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B56D4 - bl DoMassOutbreakEncounterTest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5680 - movs r0, 0 - bl SetUpMassOutbreakEncounter - b _080B56EA - .pool -_080B5680: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl TryGenerateWildMon - b _080B56EA -_080B568C: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsWaterWildEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B56F2 - bl sub_80B5260 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B56F2 - ldr r1, =gWildMonHeaders - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _080B56F2 - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B56E0 -_080B56D4: - bl sub_80B072C - movs r0, 0x1 - b _080B56F4 - .pool -_080B56E0: - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl TryGenerateWildMon -_080B56EA: - bl sub_80B0698 - movs r0, 0x1 - b _080B56F4 -_080B56F2: - movs r0, 0 -_080B56F4: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end SweetScentWildEncounter - - thumb_func_start GetFishingWildMonListHeader -GetFishingWildMonListHeader: @ 80B56FC - push {lr} - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =0x0000ffff - cmp r2, r0 - beq _080B572C - ldr r0, =gWildMonHeaders - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x10 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - beq _080B572C - movs r0, 0x1 - b _080B572E - .pool -_080B572C: - movs r0, 0 -_080B572E: - pop {r1} - bx r1 - thumb_func_end GetFishingWildMonListHeader thumb_func_start sub_80B5734 sub_80B5734: @ 80B5734 @@ -640,7 +49,7 @@ _080B5784: bl IncrementGameStat adds r0, r4, 0 bl sub_80EDA3C - bl sub_80B0698 + bl BattleSetup_StartWildBattle pop {r4,r5} pop {r0} bx r0 diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index fd2ff3b01..76f2aac6b 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -116,7 +116,7 @@ Route111_EventScript_2907FB:: @ 82907FB specialvar VAR_RESULT, sub_81393FC compare_var_to_value VAR_RESULT, 1 goto_eq Route111_EventScript_290829 - special rock_smash_wild_pokemon_encounter + special RockSmashWildEncounter compare_var_to_value VAR_RESULT, 0 goto_eq Route111_EventScript_290829 waitstate diff --git a/data/specials.inc b/data/specials.inc index d9cfcc6b0..e9e608880 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -181,7 +181,7 @@ gSpecials:: @ 81DBA64 def_special sub_813BF60 def_special sub_813BA60 def_special sub_813BF7C - def_special rock_smash_wild_pokemon_encounter + def_special RockSmashWildEncounter def_special GabbyAndTyGetBattleNum def_special GabbyAndTyAfterInterview def_special GabbyAndTyBeforeInterview diff --git a/data/wild_encounter.s b/data/wild_encounter.s index 8540fefac..d45acf415 100644 --- a/data/wild_encounter.s +++ b/data/wild_encounter.s @@ -9,10 +9,10 @@ .incbin "baserom.gba", 0x55370c, 0x188 -gUnknown_08553894:: @ 8553894 +gBattlePyramidWildMonHeaders:: @ 8553894 .incbin "baserom.gba", 0x553894, 0x180 -gUnknown_08553A14:: @ 8553A14 +gBattlePikeWildMonHeaders:: @ 8553A14 .incbin "baserom.gba", 0x553a14, 0x64 gUnknown_08553A78:: @ 8553A78 diff --git a/include/battle_setup.h b/include/battle_setup.h index e4acd8601..0168022cc 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -4,6 +4,9 @@ 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 trainer_flag_set(u16); diff --git a/include/flags.h b/include/flags.h index 6dfae9ab2..7cc310633 100644 --- a/include/flags.h +++ b/include/flags.h @@ -1,6 +1,8 @@ #ifndef GUARD_FLAGS_H #define GUARD_FLAGS_H +#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53 + #define FLAG_TRAINER_FLAG_START 0x500 #define TRAINERS_FLAG_NO 0x356 #define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 diff --git a/include/global.h b/include/global.h index 7547d523b..490ebe64e 100644 --- a/include/global.h +++ b/include/global.h @@ -215,7 +215,9 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_d : 1; // 0x20 /*0xCA9*/ u8 field_CA9_e : 1; // 0x40 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 - /*0xCAA*/ u16 field_CAA[0x2e]; + /*0xCAA*/ u16 field_CAA[4]; + /*0xCB2*/ u16 battlePyramidWildHeaderId; + /*0xCB4*/ u8 field_CB4[88]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; /*0xd08*/ u8 filler_D08[0x112]; @@ -590,7 +592,7 @@ struct SaveBlock1 /*0x3030*/ struct DaycareData daycare; /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[7]; + /*0x31A1*/ u8 filler_31A1[3]; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 7d4cc7794..6238f6aab 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -11,6 +11,8 @@ #include "event_data.h" #include "safari_zone.h" #include "pokeblock.h" +#include "battle_setup.h" +#include "roamer.h" EWRAM_DATA u8 sWildEncountersDisabled = 0; EWRAM_DATA u32 sFeebasRngValue = 0; @@ -18,6 +20,12 @@ EWRAM_DATA u32 sFeebasRngValue = 0; #define NUM_FEEBAS_SPOTS 6 extern const u16 gRoute119WaterTileData[]; +extern const struct WildPokemonHeader gBattlePikeWildMonHeaders[]; +extern const struct WildPokemonHeader gBattlePyramidWildMonHeaders[]; + +extern u8 GetBattlePikeWildMonHeaderId(void); +extern bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate); +extern void GenerateBattlePyramidWildMon(void); // this file's functions u16 FeebasRandom(void); @@ -374,7 +382,7 @@ enum #define WILD_CHECK_REPEL 0x1 #define WILD_CHECK_KEEN_EYE 0x2 -bool8 TryGenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) +bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) { u8 wildMonIndex = 0; u8 level; @@ -481,3 +489,250 @@ bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) encounterRate = 2880; return DoWildEncounterRateDiceRoll(encounterRate); } + +bool8 DoGlobalWildEncounterDiceRoll(void) +{ + if (Random() % 100 >= 60) + return FALSE; + else + return TRUE; +} + +bool8 AreLegendariesInSootopolisPreventingEncounters(void) +{ + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_SOOTOPOLIS_CITY + || gSaveBlock1Ptr->location.mapNum != MAP_ID_SOOTOPOLIS_CITY) + { + return FALSE; + } + + return FlagGet(FLAG_LEGENDARIES_IN_SOOTOPOLIS); +} + +bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior) +{ + u16 headerId; + struct Roamer *roamer; + + if (sWildEncountersDisabled == TRUE) + return FALSE; + + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId == 0xFFFF) // invalid + { + if (gMapHeader.mapDataId == 0x166) + { + headerId = GetBattlePikeWildMonHeaderId(); + if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + if (DoWildEncounterRateTest(gBattlePikeWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + return FALSE; + if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + return FALSE; + if (!TryGenerateBattlePikeWildMon(TRUE)) + return FALSE; + + BattleSetup_StartBattlePikeWildBattle(); + return TRUE; + } + if (gMapHeader.mapDataId == 0x169) + { + headerId = gSaveBlock2Ptr->battlePyramidWildHeaderId; + if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + return FALSE; + if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + return FALSE; + + GenerateBattlePyramidWildMon(); + BattleSetup_StartWildBattle(); + return TRUE; + } + } + else + { + if (MetatileBehavior_IsLandWildEncounter(currMetaTileBehavior) == TRUE) + { + if (gWildMonHeaders[headerId].landMonsInfo == NULL) + return FALSE; + if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + return FALSE; + + if (TryStartRoamerEncounter() == TRUE) + { + roamer = &gSaveBlock1Ptr->roamer; + if (!IsWildLevelAllowedByRepel(roamer->level)) + return FALSE; + + BattleSetup_StartRoamerBattle(); + return TRUE; + } + else + { + if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + { + BattleSetup_StartWildBattle(); + return TRUE; + } + + // try a regular wild land encounter + if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + { + BattleSetup_StartWildBattle(); + return TRUE; + } + + return FALSE; + } + } + else if (MetatileBehavior_IsWaterWildEncounter(currMetaTileBehavior) == TRUE + || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(currMetaTileBehavior) == TRUE)) + { + if (AreLegendariesInSootopolisPreventingEncounters() == TRUE) + return FALSE; + if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + return FALSE; + if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) + return FALSE; + + if (TryStartRoamerEncounter() == TRUE) + { + roamer = &gSaveBlock1Ptr->roamer; + if (!IsWildLevelAllowedByRepel(roamer->level)) + return FALSE; + + BattleSetup_StartRoamerBattle(); + return TRUE; + } + else // try a regular surfing encounter + { + if (TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + { + BattleSetup_StartWildBattle(); + return TRUE; + } + + return FALSE; + } + } + } + + return FALSE; +} + +void RockSmashWildEncounter(void) +{ + u16 headerId = GetCurrentMapWildMonHeaderId(); + + if (headerId != 0xFFFF) + { + const struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerId].rockSmashMonsInfo; + + if (wildPokemonInfo == NULL) + { + gSpecialVar_Result = FALSE; + } + else if (DoWildEncounterRateTest(wildPokemonInfo->encounterRate, 1) == TRUE + && TryGenerateWildMon(wildPokemonInfo, 2, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + { + BattleSetup_StartWildBattle(); + gSpecialVar_Result = TRUE; + } + else + { + gSpecialVar_Result = FALSE; + } + } + else + { + gSpecialVar_Result = FALSE; + } +} + +bool8 SweetScentWildEncounter(void) +{ + s16 x, y; + u16 headerId; + + PlayerGetDestCoords(&x, &y); + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId == 0xFFFF) // invalid + { + if (gMapHeader.mapDataId == 0x166) + { + headerId = GetBattlePikeWildMonHeaderId(); + if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) + return FALSE; + + TryGenerateBattlePikeWildMon(FALSE); + BattleSetup_StartBattlePikeWildBattle(); + return TRUE; + } + if (gMapHeader.mapDataId == 0x169) + { + headerId = gSaveBlock2Ptr->battlePyramidWildHeaderId; + if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) + return FALSE; + + GenerateBattlePyramidWildMon(); + BattleSetup_StartWildBattle(); + return TRUE; + } + } + else + { + if (MetatileBehavior_IsLandWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE) + { + if (gWildMonHeaders[headerId].landMonsInfo == NULL) + return FALSE; + + if (TryStartRoamerEncounter() == TRUE) + { + BattleSetup_StartRoamerBattle(); + return TRUE; + } + + if (DoMassOutbreakEncounterTest() == TRUE) + SetUpMassOutbreakEncounter(0); + else + TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0); + + BattleSetup_StartWildBattle(); + return TRUE; + } + else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE) + { + if (AreLegendariesInSootopolisPreventingEncounters() == TRUE) + return FALSE; + if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + return FALSE; + + if (TryStartRoamerEncounter() == TRUE) + { + BattleSetup_StartRoamerBattle(); + return TRUE; + } + + TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, 0); + BattleSetup_StartWildBattle(); + return TRUE; + } + } + + return FALSE; +} + +bool8 DoesCurrentMapHaveFishingMons(void) +{ + u16 headerId = GetCurrentMapWildMonHeaderId(); + + if (headerId != 0xFFFF && gWildMonHeaders[headerId].fishingMonsInfo != NULL) + return TRUE; + else + return FALSE; +} -- cgit v1.2.3 From 6b075ae0ffc82a8aff6ae5812f9f6f7675c08031 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 17 Nov 2017 22:28:55 +0100 Subject: wild encounter file is decompiled --- asm/field_control_avatar.s | 2 +- asm/field_player_avatar.s | 2 +- asm/rom4.s | 4 +- asm/wild_encounter.s | 508 --------------------------------------------- data/wild_encounter.s | 2 +- include/global.h | 7 +- include/link.h | 1 + include/tv.h | 1 + src/tv.c | 2 +- src/wild_encounter.c | 223 ++++++++++++++++++-- 10 files changed, 221 insertions(+), 531 deletions(-) diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index a6d3c93ea..57415ca36 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1246,7 +1246,7 @@ sub_809C8DC: @ 809C8DC lsrs r0, 24 cmp r0, 0x1 beq _0809C92E - bl sub_80B5870 + bl UpdateRepelCounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 28c90d23d..ae405f127 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -4640,7 +4640,7 @@ _0808CD58: ldrh r0, [r5, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80B5734 + bl FishingWildEncounter movs r0, 0x1 bl sub_80ED950 ldr r0, =Task_Fish diff --git a/asm/rom4.s b/asm/rom4.s index 3f59c2807..8b7dec1ae 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -2675,12 +2675,12 @@ sub_8085B2C: @ 8085B2C ldr r1, =gUnknown_02032306 movs r0, 0x1 strb r0, [r1] - bl sub_80B582C + bl GetLocalWaterMon b _08085B62 .pool _08085B5C: ldr r0, =gUnknown_02032306 - bl wild_pokemon_rand_for_map + bl GetLocalWildMon _08085B62: ldr r1, =gUnknown_02032304 strh r0, [r1] diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index d8f02ae83..da4dca0ed 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -6,512 +6,4 @@ .text - - - thumb_func_start sub_80B5734 -sub_80B5734: @ 80B5734 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl CheckFeebas - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5764 - ldr r4, =gUnknown_08553A78 - adds r0, r4, 0 - bl ChooseWildMonLevel - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r4, [r4, 0x2] - adds r0, r4, 0 - bl CreateWildMon - b _080B5784 - .pool -_080B5764: - ldr r4, =gWildMonHeaders - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r4, 0x10 - adds r1, r4 - ldr r0, [r1] - adds r1, r5, 0 - bl GenerateFishingWildMon - lsls r0, 16 - lsrs r4, r0, 16 -_080B5784: - movs r0, 0xC - bl IncrementGameStat - adds r0, r4, 0 - bl sub_80EDA3C - bl BattleSetup_StartWildBattle - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B5734 - - thumb_func_start wild_pokemon_rand_for_map -wild_pokemon_rand_for_map: @ 80B57A0 - push {r4-r6,lr} - adds r6, r0, 0 - movs r0, 0 - strb r0, [r6] - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, =0x0000ffff - cmp r3, r0 - beq _080B57D2 - ldr r2, =gWildMonHeaders - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r5, [r0] - adds r2, 0x8 - adds r1, r2 - ldr r4, [r1] - cmp r5, 0 - bne _080B57E0 - cmp r4, 0 - bne _080B57E6 -_080B57D2: - movs r0, 0 - b _080B5826 - .pool -_080B57E0: - cmp r4, 0 - bne _080B57F4 - b _080B5818 -_080B57E6: - movs r0, 0x1 - strb r0, [r6] - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - b _080B5820 -_080B57F4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4F - bls _080B5818 - movs r0, 0x1 - strb r0, [r6] - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - b _080B5820 -_080B5818: - bl ChooseWildMonIndex_Land - lsls r0, 24 - ldr r1, [r5, 0x4] -_080B5820: - lsrs r0, 22 - adds r0, r1 - ldrh r0, [r0, 0x2] -_080B5826: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end wild_pokemon_rand_for_map - - thumb_func_start sub_80B582C -sub_80B582C: @ 80B582C - push {r4,lr} - bl GetCurrentMapWildMonHeaderId - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =0x0000ffff - cmp r2, r0 - beq _080B5868 - ldr r1, =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _080B5868 - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - lsrs r0, 22 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080B586A - .pool -_080B5868: - movs r0, 0 -_080B586A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B582C - - thumb_func_start sub_80B5870 -sub_80B5870: @ 80B5870 - push {r4,r5,lr} - bl InBattlePike - lsls r0, 24 - cmp r0, 0 - bne _080B58C4 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B58C4 - bl InUnionRoom - cmp r0, 0x1 - beq _080B58C4 - ldr r5, =0x00004021 - adds r0, r5, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080B58C4 - subs r4, r0, 0x1 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl VarSet - cmp r4, 0 - bne _080B58C4 - ldr r0, =EventScript_RepelWoreOff - bl ScriptContext1_SetupScript - movs r0, 0x1 - b _080B58C6 - .pool -_080B58C4: - movs r0, 0 -_080B58C6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80B5870 - - thumb_func_start IsWildLevelAllowedByRepel -IsWildLevelAllowedByRepel: @ 80B58CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =0x00004021 - bl VarGet - lsls r0, 16 - cmp r0, 0 - beq _080B5912 - movs r5, 0 -_080B58E0: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080B5920 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080B5920 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bcc _080B592A -_080B5912: - movs r0, 0x1 - b _080B592C - .pool -_080B5920: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080B58E0 -_080B592A: - movs r0, 0 -_080B592C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsWildLevelAllowedByRepel - - thumb_func_start IsAbilityAllowingEncounter -@ _BOOL1 IsAbilityAllowingEncounter(u8 wildMonLevel) -IsAbilityAllowingEncounter: @ 80B5934 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B5988 - adds r0, r4, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x33 - beq _080B595A - cmp r0, 0x16 - bne _080B5988 -_080B595A: - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080B5988 - subs r0, 0x5 - cmp r5, r0 - bgt _080B5988 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B5988 - movs r0, 0 - b _080B598A - .pool -_080B5988: - movs r0, 0x1 -_080B598A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsAbilityAllowingEncounter - - thumb_func_start TryGetRandomWildMonIndexByType -@ _BOOL1 TryGetRandomWildMonIndexByType(WildMonEntry *mons, u8 type, u8 numMons, u8 *monIndex) -TryGetRandomWildMonIndexByType: @ 80B5990 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r7, sp - mov r12, r0 - mov r8, r3 - lsls r1, 24 - lsrs r1, 24 - str r1, [r7] - lsls r2, 24 - lsrs r2, 24 - mov r9, sp - adds r0, r2, 0x3 - lsrs r0, 2 - lsls r0, 2 - mov r1, sp - subs r1, r0 - mov sp, r1 - mov r5, sp - movs r3, 0 - cmp r3, r2 - bcs _080B59D2 - movs r1, 0 -_080B59C4: - adds r0, r5, r3 - strb r1, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r2 - bcc _080B59C4 -_080B59D2: - movs r4, 0 - movs r3, 0 - cmp r4, r2 - bcs _080B5A12 - ldr r6, =gBaseStats - mov r10, r6 -_080B59DE: - lsls r0, r3, 2 - add r0, r12 - ldrh r1, [r0, 0x2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r6, r10 - adds r1, r0, r6 - ldrb r0, [r1, 0x6] - ldr r6, [r7] - cmp r0, r6 - beq _080B59FC - ldrb r0, [r1, 0x7] - cmp r0, r6 - bne _080B5A08 -_080B59FC: - adds r1, r4, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r1, r5, r1 - strb r3, [r1] -_080B5A08: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r2 - bcc _080B59DE -_080B5A12: - cmp r4, 0 - beq _080B5A1A - cmp r4, r2 - bne _080B5A24 -_080B5A1A: - movs r0, 0 - b _080B5A3C - .pool -_080B5A24: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - adds r0, r5, r0 - ldrb r0, [r0] - mov r1, r8 - strb r0, [r1] - movs r0, 0x1 -_080B5A3C: - mov sp, r9 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TryGetRandomWildMonIndexByType - - thumb_func_start TryGetAbilityInfluencedWildMonIndex -@ _BOOL1 TryGetAbilityInfluencedWildMonIndex(WildMonEntry *mons, u8 type, u8 abilityId, u8 *monIndex) -TryGetAbilityInfluencedWildMonIndex: @ 80B5A50 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - mov r8, r3 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - ldr r4, =gPlayerParty - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _080B5AA4 - adds r0, r4, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _080B5AA4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B5AA4 - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0xC - mov r3, r8 - bl TryGetRandomWildMonIndexByType - lsls r0, 24 - lsrs r0, 24 - b _080B5AA6 - .pool -_080B5AA4: - movs r0, 0 -_080B5AA6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TryGetAbilityInfluencedWildMonIndex - - thumb_func_start ApplyFluteEncounterRateMod -@ void ApplyFluteEncounterRateMod(u32 *val) -ApplyFluteEncounterRateMod: @ 80B5AB0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =0x000008ad - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5AD0 - ldr r0, [r4] - lsrs r1, r0, 1 - adds r0, r1 - b _080B5AE2 - .pool -_080B5AD0: - ldr r0, =0x000008ae - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B5AE4 - ldr r0, [r4] - lsrs r0, 1 -_080B5AE2: - str r0, [r4] -_080B5AE4: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ApplyFluteEncounterRateMod - - thumb_func_start ApplyCleanseTagEncounterRateMod -ApplyCleanseTagEncounterRateMod: @ 80B5AF0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gPlayerParty - movs r1, 0xC - bl GetMonData - cmp r0, 0xBE - bne _080B5B0C - ldr r0, [r4] - lsls r0, 1 - movs r1, 0x3 - bl __udivsi3 - str r0, [r4] -_080B5B0C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ApplyCleanseTagEncounterRateMod - .align 2, 0 @ Don't pad with nop. diff --git a/data/wild_encounter.s b/data/wild_encounter.s index d45acf415..e221c2f99 100644 --- a/data/wild_encounter.s +++ b/data/wild_encounter.s @@ -15,7 +15,7 @@ gBattlePyramidWildMonHeaders:: @ 8553894 gBattlePikeWildMonHeaders:: @ 8553A14 .incbin "baserom.gba", 0x553a14, 0x64 -gUnknown_08553A78:: @ 8553A78 +gWildFeebasRoute119Data:: @ 8553A78 .incbin "baserom.gba", 0x553a78, 0x4 gRoute119WaterTileData:: @ 8553A7C diff --git a/include/global.h b/include/global.h index 490ebe64e..c05d6a309 100644 --- a/include/global.h +++ b/include/global.h @@ -217,10 +217,10 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 /*0xCAA*/ u16 field_CAA[4]; /*0xCB2*/ u16 battlePyramidWildHeaderId; - /*0xCB4*/ u8 field_CB4[88]; + /*0xCB4*/ u8 field_CB4[82]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; - /*0xd08*/ u8 filler_D08[0x112]; + /*0xD08*/ u8 filler_D08[0x112]; /*0xE1A*/ u16 battlePyramidFloor; // possibly? /*0xE1C*/ u8 field_E1C[16]; /*0xE2C*/ struct PyramidBag pyramidBag; @@ -587,12 +587,11 @@ struct SaveBlock1 /*0x2E25*/ u8 unk2E25[3]; // possibly padding? /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2e8c*/ u8 filler_2E8C[0x4]; /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DaycareData daycare; /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[3]; + /*0x31A1*/ u8 filler_31A1[7]; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/include/link.h b/include/link.h index 7a6563144..ddd809ebe 100644 --- a/include/link.h +++ b/include/link.h @@ -179,6 +179,7 @@ void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); u8 GetLinkPlayerCount(void); +bool32 InUnionRoom(void); void sub_800E0E8(void); bool8 sub_800A520(void); diff --git a/include/tv.h b/include/tv.h index 43f36d69f..3f48af569 100644 --- a/include/tv.h +++ b/include/tv.h @@ -13,5 +13,6 @@ void sub_80EE184(void); void sub_80EEA70(void); void sub_80F14F8(TVShow *shows); size_t sub_80EF370(int value); +void SetPokemonAnglerSpecies(u16 species); #endif //GUARD_TV_H diff --git a/src/tv.c b/src/tv.c index c1d648652..1d978b093 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1883,7 +1883,7 @@ void PutFishingAdviceShowOnTheAir(void) } } -void sub_80EDA3C(u16 species) +void SetPokemonAnglerSpecies(u16 species) { sPokemonAnglerSpecies = species; } diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 6238f6aab..d92f9daf3 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -13,28 +13,43 @@ #include "pokeblock.h" #include "battle_setup.h" #include "roamer.h" +#include "game_stat.h" +#include "tv.h" +#include "link.h" +#include "script.h" +#include "items.h" -EWRAM_DATA u8 sWildEncountersDisabled = 0; -EWRAM_DATA u32 sFeebasRngValue = 0; +extern const u8 EventScript_RepelWoreOff[]; -#define NUM_FEEBAS_SPOTS 6 +#define NUM_FEEBAS_SPOTS 6 + +#define LAND_WILD_COUNT 12 +#define WATER_WILD_COUNT 5 +#define ROCK_WILD_COUNT 5 +#define FISH_WILD_COUNT 10 extern const u16 gRoute119WaterTileData[]; extern const struct WildPokemonHeader gBattlePikeWildMonHeaders[]; extern const struct WildPokemonHeader gBattlePyramidWildMonHeaders[]; +extern const struct WildPokemon gWildFeebasRoute119Data; extern u8 GetBattlePikeWildMonHeaderId(void); extern bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate); extern void GenerateBattlePyramidWildMon(void); +extern bool8 InBattlePike(void); +extern bool8 InBattlePyramid(void); // this file's functions -u16 FeebasRandom(void); -void FeebasSeedRng(u16 seed); -bool8 IsWildLevelAllowedByRepel(u8 level); -void ApplyFluteEncounterRateMod(u32 *encRate); -void ApplyCleanseTagEncounterRateMod(u32 *encRate); -bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex); -bool8 IsAbilityAllowingEncounter(u8 level); +static u16 FeebasRandom(void); +static void FeebasSeedRng(u16 seed); +static bool8 IsWildLevelAllowedByRepel(u8 level); +static void ApplyFluteEncounterRateMod(u32 *encRate); +static void ApplyCleanseTagEncounterRateMod(u32 *encRate); +static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex); +static bool8 IsAbilityAllowingEncounter(u8 level); + +EWRAM_DATA u8 sWildEncountersDisabled = 0; +EWRAM_DATA u32 sFeebasRngValue = 0; void DisableWildEncounters(bool8 disabled) { @@ -118,13 +133,13 @@ bool8 CheckFeebas(void) return FALSE; } -u16 FeebasRandom(void) +static u16 FeebasRandom(void) { sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue; return sFeebasRngValue >> 16; } -void FeebasSeedRng(u16 seed) +static void FeebasSeedRng(u16 seed) { sFeebasRngValue = seed; } @@ -418,7 +433,7 @@ bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 return TRUE; } -u16 GenerateFishingWildMon(struct WildPokemonInfo *wildMonInfo, u8 rod) +u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) { u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); u8 level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); @@ -736,3 +751,185 @@ bool8 DoesCurrentMapHaveFishingMons(void) else return FALSE; } + +void FishingWildEncounter(u8 rod) +{ + u16 species; + + if (CheckFeebas() == TRUE) + { + u8 level = ChooseWildMonLevel(&gWildFeebasRoute119Data); + + species = gWildFeebasRoute119Data.species; + CreateWildMon(species, level); + } + else + { + species = GenerateFishingWildMon(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod); + } + IncrementGameStat(GAME_STAT_FISHING_CAPTURES); + SetPokemonAnglerSpecies(species); + BattleSetup_StartWildBattle(); +} + +u16 GetLocalWildMon(bool8 *isWaterMon) +{ + u16 headerId; + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; + + *isWaterMon = FALSE; + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId == 0xFFFF) + return SPECIES_NONE; + landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; + waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + // Neither + if (landMonsInfo == NULL && waterMonsInfo == NULL) + return SPECIES_NONE; + // Land Pokemon + if (landMonsInfo != NULL && waterMonsInfo == NULL) + return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; + // Water Pokemon + if (landMonsInfo == NULL && waterMonsInfo != NULL) + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } + // Either land or water Pokemon + if ((Random() % 100) < 80) + { + return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; + } + else + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } +} + +u16 GetLocalWaterMon(void) +{ + u16 headerId = GetCurrentMapWildMonHeaderId(); + + if (headerId != 0xFFFF) + { + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + + if (waterMonsInfo) + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } + return SPECIES_NONE; +} + +bool8 UpdateRepelCounter(void) +{ + u16 steps; + + if (InBattlePike() || InBattlePyramid()) + return FALSE; + if (InUnionRoom() == TRUE) + return FALSE; + + steps = VarGet(VAR_REPEL_STEP_COUNT); + + if (steps != 0) + { + steps--; + VarSet(VAR_REPEL_STEP_COUNT, steps); + if (steps == 0) + { + ScriptContext1_SetupScript(EventScript_RepelWoreOff); + return TRUE; + } + } + return FALSE; +} + +static bool8 IsWildLevelAllowedByRepel(u8 wildLevel) +{ + u8 i; + + if (!VarGet(VAR_REPEL_STEP_COUNT)) + return TRUE; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + + if (wildLevel < ourLevel) + return FALSE; + else + return TRUE; + } + } + + return FALSE; +} + +static bool8 IsAbilityAllowingEncounter(u8 level) +{ + u8 ability; + + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)) + return TRUE; + + ability = GetMonAbility(&gPlayerParty[0]); + if (ability == ABILITY_KEEN_EYE || ability == ABILITY_INTIMIDATE) + { + u8 playerMonLevel = GetMonData(&gPlayerParty[0], MON_DATA_LEVEL); + if (playerMonLevel > 5 && level <= playerMonLevel - 5 && !(Random() % 2)) + return FALSE; + } + + return TRUE; +} + +static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, u8 type, u8 numMon, u8 *monIndex) +{ + u8 validIndexes[numMon]; // variable length array, an interesting feature + u8 i, validMonCount; + + for (i = 0; i < numMon; i++) + validIndexes[i] = 0; + + for (validMonCount = 0, i = 0; i < numMon; i++) + { + if (gBaseStats[wildMon[i].species].type1 == type || gBaseStats[wildMon[i].species].type2 == type) + validIndexes[validMonCount++] = i; + } + + if (validMonCount == 0 || validMonCount == numMon) + return FALSE; + + *monIndex = validIndexes[Random() % validMonCount]; + return TRUE; +} + +static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex) +{ + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)) + return FALSE; + if (GetMonAbility(&gPlayerParty[0]) != ability) + return FALSE; + if (Random() % 2 != 0) + return FALSE; + + return TryGetRandomWildMonIndexByType(wildMon, type, LAND_WILD_COUNT, monIndex); +} + +static void ApplyFluteEncounterRateMod(u32 *encRate) +{ + if (FlagGet(FLAG_SYS_ENC_UP_ITEM) == TRUE) + *encRate += *encRate / 2; + else if (FlagGet(FLAG_SYS_ENC_DOWN_ITEM) == TRUE) + *encRate = *encRate / 2; +} + +static void ApplyCleanseTagEncounterRateMod(u32 *encRate) +{ + if (GetMonData(&gPlayerParty[0], MON_DATA_HELD_ITEM) == ITEM_CLEANSE_TAG) + *encRate = *encRate * 2 / 3; +} -- cgit v1.2.3 From f8b40754c70679bb3ec4c0611613a0658f679225 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 18 Nov 2017 12:27:10 +0100 Subject: wild encounter done --- asm/wild_encounter.s | 9 --------- include/wild_encounter.h | 7 ++++++- ld_script.txt | 1 - src/wild_encounter.c | 39 +++++++++++++++++---------------------- 4 files changed, 23 insertions(+), 33 deletions(-) delete mode 100644 asm/wild_encounter.s diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s deleted file mode 100644 index da4dca0ed..000000000 --- a/asm/wild_encounter.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - .align 2, 0 @ Don't pad with nop. diff --git a/include/wild_encounter.h b/include/wild_encounter.h index c9d7c3fa1..55bbaa7dd 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -1,6 +1,11 @@ #ifndef GUARD_WILD_ENCOUNTER_H #define GUARD_WILD_ENCOUNTER_H +#define LAND_WILD_COUNT 12 +#define WATER_WILD_COUNT 5 +#define ROCK_WILD_COUNT 5 +#define FISH_WILD_COUNT 10 + struct WildPokemon { u8 minLevel; @@ -27,7 +32,7 @@ struct WildPokemonHeader extern const struct WildPokemonHeader gWildMonHeaders[]; void DisableWildEncounters(bool8 disabled); -bool8 StandardWildEncounter(u16 a, u16 b); +bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); void ScrSpecial_RockSmashWildEncounter(void); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); diff --git a/ld_script.txt b/ld_script.txt index b04f2f9af..7526cd4ea 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -125,7 +125,6 @@ SECTIONS { asm/cable_club.o(.text); asm/trainer_see.o(.text); src/wild_encounter.o(.text); - asm/wild_encounter.o(.text); asm/field_effect.o(.text); asm/unknown_task.o(.text); asm/option_menu.o(.text); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index d92f9daf3..b4095aa17 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -23,11 +23,6 @@ extern const u8 EventScript_RepelWoreOff[]; #define NUM_FEEBAS_SPOTS 6 -#define LAND_WILD_COUNT 12 -#define WATER_WILD_COUNT 5 -#define ROCK_WILD_COUNT 5 -#define FISH_WILD_COUNT 10 - extern const u16 gRoute119WaterTileData[]; extern const struct WildPokemonHeader gBattlePikeWildMonHeaders[]; extern const struct WildPokemonHeader gBattlePyramidWildMonHeaders[]; @@ -56,7 +51,7 @@ void DisableWildEncounters(bool8 disabled) sWildEncountersDisabled = disabled; } -u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) +static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) { u16 xCur; u16 yCur; @@ -80,7 +75,7 @@ u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) return tileNum + 1; } -bool8 CheckFeebas(void) +static bool8 CheckFeebas(void) { u8 i; u16 feebasSpots[NUM_FEEBAS_SPOTS]; @@ -144,7 +139,7 @@ static void FeebasSeedRng(u16 seed) sFeebasRngValue = seed; } -u8 ChooseWildMonIndex_Land(void) +static u8 ChooseWildMonIndex_Land(void) { u8 rand = Random() % 100; @@ -174,7 +169,7 @@ u8 ChooseWildMonIndex_Land(void) return 11; } -u8 ChooseWildMonIndex_WaterRock(void) +static u8 ChooseWildMonIndex_WaterRock(void) { u8 rand = Random() % 100; @@ -197,7 +192,7 @@ enum SUPER_ROD }; -u8 ChooseWildMonIndex_Fishing(u8 rod) +static u8 ChooseWildMonIndex_Fishing(u8 rod) { u8 wildMonIndex = 0; u8 rand = Random() % 100; @@ -234,7 +229,7 @@ u8 ChooseWildMonIndex_Fishing(u8 rod) return wildMonIndex; } -u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon) +static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon) { u8 min; u8 max; @@ -272,7 +267,7 @@ u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon) return min + rand; } -u16 GetCurrentMapWildMonHeaderId(void) +static u16 GetCurrentMapWildMonHeaderId(void) { u16 i; @@ -302,7 +297,7 @@ u16 GetCurrentMapWildMonHeaderId(void) return -1; } -u8 PickWildMonNature(void) +static u8 PickWildMonNature(void) { u8 i; u8 j; @@ -348,7 +343,7 @@ u8 PickWildMonNature(void) return Random() % 25; } -void CreateWildMon(u16 species, u8 level) +static void CreateWildMon(u16 species, u8 level) { bool32 checkCuteCharm; @@ -397,7 +392,7 @@ enum #define WILD_CHECK_REPEL 0x1 #define WILD_CHECK_KEEN_EYE 0x2 -bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) +static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) { u8 wildMonIndex = 0; u8 level; @@ -433,7 +428,7 @@ bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 return TRUE; } -u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) +static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) { u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); u8 level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); @@ -442,7 +437,7 @@ u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) return wildMonInfo->wildPokemon[wildMonIndex].species; } -bool8 SetUpMassOutbreakEncounter(u8 flags) +static bool8 SetUpMassOutbreakEncounter(u8 flags) { u16 i; @@ -456,7 +451,7 @@ bool8 SetUpMassOutbreakEncounter(u8 flags) return TRUE; } -bool8 DoMassOutbreakEncounterTest(void) +static bool8 DoMassOutbreakEncounterTest(void) { if (gSaveBlock1Ptr->outbreakPokemonSpecies != 0 && gSaveBlock1Ptr->location.mapNum == gSaveBlock1Ptr->outbreakLocationMapNum @@ -468,7 +463,7 @@ bool8 DoMassOutbreakEncounterTest(void) return FALSE; } -bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) +static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) { if (Random() % 2880 < encounterRate) return TRUE; @@ -476,7 +471,7 @@ bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) return FALSE; } -bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) +static bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) { encounterRate *= 16; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) @@ -505,7 +500,7 @@ bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) return DoWildEncounterRateDiceRoll(encounterRate); } -bool8 DoGlobalWildEncounterDiceRoll(void) +static bool8 DoGlobalWildEncounterDiceRoll(void) { if (Random() % 100 >= 60) return FALSE; @@ -513,7 +508,7 @@ bool8 DoGlobalWildEncounterDiceRoll(void) return TRUE; } -bool8 AreLegendariesInSootopolisPreventingEncounters(void) +static bool8 AreLegendariesInSootopolisPreventingEncounters(void) { if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_SOOTOPOLIS_CITY || gSaveBlock1Ptr->location.mapNum != MAP_ID_SOOTOPOLIS_CITY) -- cgit v1.2.3 From 8fd30813062f9588529461f44df333a6bcfde411 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 18 Nov 2017 16:11:34 +0100 Subject: start working on berry blender --- asm/battle_frontier_1.s | 2 +- asm/berry_blender.s | 1887 ++++-------------------------------------- asm/cable_club.s | 52 +- asm/contest.s | 2 +- asm/contest_link_80FC4F4.s | 8 +- asm/item_menu.s | 2 +- asm/link.s | 50 +- asm/menu.s | 2 +- asm/mystery_event_menu.s | 2 +- asm/naming_screen.s | 2 +- asm/new_menu_helpers.s | 12 +- asm/party_menu.s | 2 +- asm/pokeblock_feed.s | 2 +- asm/pokemon_summary_screen.s | 2 +- asm/pokenav.s | 6 +- asm/record_mixing.s | 2 +- asm/rom6.s | 4 +- asm/shop.s | 2 +- asm/trade.s | 14 +- data/graphics.s | 2 +- data/link.s | 20 +- data/scripts/pokeblocks.inc | 4 +- data/specials.inc | 2 +- include/berry.h | 10 + include/decompress.h | 2 + include/flags.h | 1 + include/gba/m4a_internal.h | 2 +- include/item_menu_icons.h | 6 + include/items.h | 4 + include/new_menu_helpers.h | 1 + src/battle_message.c | 4 +- src/berry.c | 22 +- src/berry_blender.c | 947 ++++++++++++++++++++- src/decompress.c | 5 +- src/m4a_4.c | 4 +- sym_common.txt | 2 +- sym_ewram.txt | 6 +- 37 files changed, 1229 insertions(+), 1870 deletions(-) create mode 100644 include/item_menu_icons.h diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index e52ed0c3d..973e87fbb 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -14531,7 +14531,7 @@ sub_81965D8: @ 81965D8 negs r0, r0 ands r0, r1 strb r0, [r2] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index f0d1b48d7..e0571c653 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -5,1590 +5,7 @@ .text - thumb_func_start sub_807F738 -sub_807F738: @ 807F738 - push {lr} - ldr r0, =gMPlay_SE2 - ldr r1, =0x0000ffff - ldr r2, =gUnknown_020322A4 - ldr r2, [r2] - adds r2, 0x4C - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .pool - thumb_func_end sub_807F738 - - thumb_func_start sub_807F764 -sub_807F764: @ 807F764 - push {r4,lr} - sub sp, 0x10 - bl sub_8082DF4 - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA0 - lsls r0, 1 - add r0, r12 - ldr r1, [r0] - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldr r2, [r0] - movs r0, 0xA4 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r3, [r0, r4] - movs r0, 0xA5 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r0, [r0, r4] - str r0, [sp] - movs r0, 0xA6 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r0, [r0, r4] - str r0, [sp, 0x4] - movs r0, 0xA7 - lsls r0, 1 - add r0, r12 - movs r4, 0 - ldrsh r0, [r0, r4] - str r0, [sp, 0x8] - movs r0, 0xA8 - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - str r0, [sp, 0xC] - movs r0, 0x2 - bl SetBgAffine - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807F764 - - thumb_func_start sub_807F7D8 -sub_807F7D8: @ 807F7D8 - push {r4,r5,lr} - ldr r1, =gUnknown_020322A4 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - adds r5, r1, 0 - cmp r0, 0x9 - bls _0807F7E8 - b _0807F9C8 -_0807F7E8: - lsls r0, 2 - ldr r1, =_0807F7FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0807F7FC: - .4byte _0807F824 - .4byte _0807F854 - .4byte _0807F880 - .4byte _0807F8AC - .4byte _0807F8C8 - .4byte _0807F8F4 - .4byte _0807F910 - .4byte _0807F940 - .4byte _0807F950 - .4byte _0807F980 -_0807F824: - ldr r5, =gUnknown_08D91598 - adds r0, r5, 0 - bl sub_8034974 - adds r0, 0x64 - bl AllocZeroed - adds r1, r0, 0 - ldr r4, =gUnknown_020322A4 - ldr r0, [r4] - ldr r2, =0x000011bc - adds r0, r2 - str r1, [r0] - adds r0, r5, 0 - bl LZDecompressWram - ldr r1, [r4] - b _0807F966 - .pool -_0807F854: - ldr r1, =sBlenderCenterMap - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x2 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r0, =sBlenderCenterPal - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0807F962 - .pool -_0807F880: - ldr r0, [r5] - ldr r1, =0x000011bc - adds r0, r1 - ldr r4, [r0] - ldr r0, =gUnknown_08D91598 - bl sub_8034974 - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x2 - adds r1, r4, 0 - movs r3, 0 - bl LoadBgTiles - ldr r1, [r5] - b _0807F966 - .pool -_0807F8AC: - ldr r0, =gUnknown_08D91DB8 - ldr r1, [r5] - ldr r2, =0x000011bc - adds r1, r2 - ldr r1, [r1] - bl LZDecompressWram - ldr r1, [r5] - b _0807F966 - .pool -_0807F8C8: - ldr r0, [r5] - ldr r1, =0x000011bc - adds r0, r1 - ldr r4, [r0] - ldr r0, =gUnknown_08D91DB8 - bl sub_8034974 - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - adds r1, r4, 0 - movs r3, 0 - bl LoadBgTiles - ldr r1, [r5] - b _0807F966 - .pool -_0807F8F4: - ldr r0, =gUnknown_08D927EC - ldr r1, [r5] - ldr r2, =0x000011bc - adds r1, r2 - ldr r1, [r1] - bl LZDecompressWram - ldr r1, [r5] - b _0807F966 - .pool -_0807F910: - ldr r0, [r5] - ldr r1, =0x000011bc - adds r0, r1 - ldr r4, [r0] - ldr r0, =gUnknown_08D927EC - bl sub_8034974 - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - adds r1, r4, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r1, [r5] - b _0807F966 - .pool -_0807F940: - ldr r0, =sBlenderOuterPal - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0807F962 - .pool -_0807F950: - ldr r0, =sSpriteSheet_BlenderArrow - bl LoadSpriteSheet - ldr r0, =gUnknown_08339BD8 - bl LoadSpriteSheet - ldr r0, =gUnknown_08339B38 - bl LoadSpriteSheet -_0807F962: - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] -_0807F966: - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0807F9C8 - .pool -_0807F980: - ldr r0, =gUnknown_08339C24 - bl LoadSpriteSheet - ldr r0, =gUnknown_08339C58 - bl LoadSpriteSheet - ldr r0, =sSpritePal_BlenderArrow - bl LoadSpritePalette - ldr r0, =sSpritePal_BlenderMisc - bl LoadSpritePalette - ldr r4, =gUnknown_020322A4 - ldr r0, [r4] - ldr r2, =0x000011bc - adds r0, r2 - ldr r0, [r0] - bl Free - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0807F9CA - .pool -_0807F9C8: - movs r0, 0 -_0807F9CA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807F7D8 - - thumb_func_start sub_807F9D0 -sub_807F9D0: @ 807F9D0 - push {lr} - sub sp, 0x8 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_807F9D0 - - thumb_func_start sub_807FA34 -sub_807FA34: @ 807FA34 - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_08339980 - bl InitWindows - lsls r0, 16 - cmp r0, 0 - beq _0807FA74 - bl DeactivateAllTextPrinters - movs r4, 0 -_0807FA4A: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0 - bl FillWindowPixelBuffer - adds r4, 0x1 - cmp r4, 0x4 - ble _0807FA4A - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0xE0 - bl sub_81978B0 -_0807FA74: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FA34 - - thumb_func_start sub_807FA80 -sub_807FA80: @ 807FA80 - push {r4,lr} - ldr r4, =gUnknown_020322A4 - ldr r0, [r4] - cmp r0, 0 - bne _0807FA94 - movs r0, 0x8F - lsls r0, 5 - bl AllocZeroed - str r0, [r4] -_0807FA94: - ldr r0, [r4] - adds r0, 0x63 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x63 - strb r1, [r0] - ldr r0, =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_807FE54 - ldr r0, =sub_807FAC8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FA80 - thumb_func_start sub_807FAC8 -sub_807FAC8: @ 807FAC8 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, =gUnknown_020322A4 - ldr r0, [r1] - ldrb r0, [r0] - adds r6, r1, 0 - cmp r0, 0x6 - bls _0807FADA - b _0807FCE2 -_0807FADA: - lsls r0, 2 - ldr r1, =_0807FAEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0807FAEC: - .4byte _0807FB08 - .4byte _0807FBAC - .4byte _0807FC38 - .4byte _0807FC4E - .4byte _0807FC64 - .4byte _0807FC90 - .4byte _0807FCB0 -_0807FB08: - movs r0, 0 - movs r1, 0 - bl SetGpuReg - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_08339974 - movs r0, 0x1 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, =gUnknown_020322A4 - ldr r1, [r4] - movs r0, 0xDC - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, =0x000009b8 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r0, 0 - movs r1, 0x1 - movs r2, 0xD0 - bl sub_809882C - movs r0, 0 - movs r1, 0x14 - movs r2, 0xF0 - bl copy_textbox_border_tile_patterns_to_vram - bl sub_807FA34 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r3, [r4] - movs r1, 0x8C - lsls r1, 1 - adds r0, r3, r1 - movs r1, 0 - strh r2, [r0] - movs r4, 0x8B - lsls r4, 1 - adds r0, r3, r4 - strh r2, [r0] - movs r0, 0x8D - lsls r0, 1 - adds r4, r3, r0 - movs r0, 0x50 - strh r0, [r4] - movs r4, 0x8E - lsls r4, 1 - adds r0, r3, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r3, r4 - strh r2, [r0] - strb r1, [r3, 0x1] - bl sub_8082D28 - b _0807FCE2 - .pool -_0807FBAC: - bl sub_807F7D8 - lsls r0, 24 - cmp r0, 0 - bne _0807FBB8 - b _0807FCE2 -_0807FBB8: - movs r4, 0 - ldr r5, =sBlenderSyncArrowsPos - ldr r6, =gUnknown_020322A4 -_0807FBBE: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, =sBlenderSyncArrow_SpriteTemplate - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x50 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x50 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0807FBBE - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0807FC14 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _0807FC14 - bl sub_800E0E8 - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 -_0807FC14: - ldr r0, =sub_807F764 - bl SetVBlankCallback - b _0807FCA0 - .pool -_0807FC38: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8082D28 - b _0807FCA0 -_0807FC4E: - bl sub_807F9D0 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807FCE2 - b _0807FCA0 - .pool -_0807FC64: - ldr r4, [r6] - ldr r0, =0x000011b8 - adds r4, r0 - ldr r5, =gText_BerryBlenderStart - bl sav2_get_text_speed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_808417C - cmp r0, 0 - beq _0807FCE2 - ldr r1, [r6] - b _0807FCA4 - .pool -_0807FC90: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0807FCA0: - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] -_0807FCA4: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0807FCE2 - .pool -_0807FCB0: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0807FCE2 - bl FreeAllWindowBuffers - movs r0, 0x2 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - movs r0, 0 - bl SetVBlankCallback - ldr r0, =sub_807FFA4 - bl sub_81AABF0 - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - strb r4, [r0] -_0807FCE2: - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FAC8 - - thumb_func_start sub_807FD08 -sub_807FD08: @ 807FD08 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0807FD56 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0807FD50 - adds r0, r4, 0 - bl DestroySprite - b _0807FD56 -_0807FD50: - movs r0, 0x74 - bl PlaySE -_0807FD56: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807FD08 - - thumb_func_start sub_807FD64 -sub_807FD64: @ 807FD64 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, =sub_807FD08 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FD64 - - thumb_func_start sub_807FD90 -sub_807FD90: @ 807FD90 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80D511C - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, =gSprites - add r8, r0 - ldr r5, =gUnknown_08339C78 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_807FD64 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FD90 - - thumb_func_start sub_807FE14 -sub_807FE14: @ 807FE14 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_807FE14 - - thumb_func_start sub_807FE54 -sub_807FE54: @ 807FE54 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - beq _0807FE7C - cmp r5, 0x1 - bgt _0807FE68 - cmp r5, 0 - beq _0807FE72 - b _0807FF88 -_0807FE68: - cmp r5, 0x2 - beq _0807FEE8 - cmp r5, 0x3 - beq _0807FF3C - b _0807FF88 -_0807FE72: - ldr r0, =gUnknown_03005D98 - strb r5, [r0] - b _0807FF88 - .pool -_0807FE7C: - ldr r0, =gUnknown_03005D98 - strb r5, [r0] - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - adds r0, 0x7C - movs r1, 0x2 - strb r1, [r0] - ldr r4, =gLinkPlayers + 8 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - movs r0, 0xD0 - lsls r0, 2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0807FEC8 - adds r0, r4, 0 - adds r0, 0x1C - ldr r1, =sBlenderOpponentsNames - ldr r1, [r1, 0xC] - bl StringCopy - b _0807FED4 - .pool -_0807FEC8: - adds r0, r4, 0 - adds r0, 0x1C - ldr r1, =sBlenderOpponentsNames - ldr r1, [r1] - bl StringCopy -_0807FED4: - ldr r1, =gLinkPlayers - movs r0, 0x2 - strh r0, [r1, 0x1A] - strh r0, [r1, 0x36] - b _0807FF88 - .pool -_0807FEE8: - ldr r0, =gUnknown_03005D98 - strb r5, [r0] - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - adds r0, 0x7C - movs r1, 0x3 - strb r1, [r0] - ldr r6, =gLinkPlayers + 8 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - adds r0, r6, 0 - adds r0, 0x1C - ldr r4, =sBlenderOpponentsNames - ldr r1, [r4, 0x10] - bl StringCopy - adds r0, r6, 0 - adds r0, 0x38 - ldr r1, [r4, 0x8] - bl StringCopy - adds r0, r6, 0 - subs r0, 0x8 - strh r5, [r0, 0x1A] - strh r5, [r0, 0x36] - adds r0, 0x52 - strh r5, [r0] - b _0807FF88 - .pool -_0807FF3C: - ldr r0, =gUnknown_03005D98 - strb r5, [r0] - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - adds r0, 0x7C - movs r1, 0x4 - strb r1, [r0] - ldr r5, =gLinkPlayers + 8 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r5, 0 - bl StringCopy - adds r0, r5, 0 - adds r0, 0x1C - ldr r4, =sBlenderOpponentsNames - ldr r1, [r4, 0x14] - bl StringCopy - adds r0, r5, 0 - adds r0, 0x38 - ldr r1, [r4, 0x4] - bl StringCopy - adds r0, r5, 0 - adds r0, 0x54 - ldr r1, [r4, 0x8] - bl StringCopy - adds r0, r5, 0 - subs r0, 0x8 - movs r1, 0x2 - strh r1, [r0, 0x1A] - strh r1, [r0, 0x36] - adds r0, 0x52 - strh r1, [r0] - adds r0, 0x1C - strh r1, [r0] -_0807FF88: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FE54 - - thumb_func_start sub_807FFA4 -sub_807FFA4: @ 807FFA4 - push {r4,r5,lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r4, =gUnknown_020322A4 - ldr r0, [r4] - cmp r0, 0 - bne _0807FFC0 - movs r0, 0x8F - lsls r0, 5 - bl AllocZeroed - str r0, [r4] -_0807FFC0: - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - movs r2, 0x86 - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, =gSpecialVar_0x8004 - movs r3, 0 -_0807FFD6: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x74 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0807FFD6 - ldrb r0, [r5] - bl sub_807FE54 - ldrh r0, [r5] - cmp r0, 0 - bne _08080008 - ldr r0, =sub_8080018 - bl SetMainCallback2 - b _0808000E - .pool -_08080008: - ldr r0, =sub_80808D4 - bl SetMainCallback2 -_0808000E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_807FFA4 - - thumb_func_start sub_8080018 -sub_8080018: @ 8080018 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gUnknown_020322A4 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x15 - bls _0808002A - b _08080546 -_0808002A: - lsls r0, 2 - ldr r1, =_0808003C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0808003C: - .4byte _08080094 - .4byte _08080100 - .4byte _08080120 - .4byte _0808019C - .4byte _080801AE - .4byte _080801C8 - .4byte _08080546 - .4byte _08080546 - .4byte _080801F8 - .4byte _08080248 - .4byte _0808026C - .4byte _08080302 - .4byte _0808035C - .4byte _080803D4 - .4byte _08080408 - .4byte _0808049C - .4byte _080804D0 - .4byte _08080546 - .4byte _080804F8 - .4byte _080804E4 - .4byte _080804EA - .4byte _08080508 -_08080094: - bl sub_8080588 - ldr r1, =gUnknown_020229C6 - ldr r2, =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, =gUnknown_020322A4 - ldr r0, [r2] - adds r0, 0x72 - movs r1, 0 - strb r1, [r0] - movs r5, 0 - movs r6, 0 - movs r7, 0x92 - lsls r7, 1 -_080800B2: - ldr r0, [r2] - lsls r1, r5, 1 - adds r0, 0x64 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r3, 0x2 -_080800C4: - ldr r0, [r2] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080800C4 - adds r5, r4, 0 - cmp r5, 0x3 - ble _080800B2 - ldr r3, =gUnknown_020322A4 - ldr r4, [r3] - adds r1, r4, 0 - adds r1, 0x70 - movs r2, 0 - movs r0, 0 - strh r0, [r1] - subs r1, 0x22 - strh r0, [r1] - strb r2, [r4, 0x1] - ldr r1, [r3] - b _080804FC - .pool -_08080100: - bl sub_807F7D8 - lsls r0, 24 - cmp r0, 0 - bne _0808010C - b _08080546 -_0808010C: - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8082D28 - b _08080546 - .pool -_08080120: - movs r5, 0 - ldr r4, =sBlenderSyncArrowsPos - ldr r6, =gUnknown_020322A4 -_08080126: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, =sBlenderSyncArrow_SpriteTemplate - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x54 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x54 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08080126 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0808016A - b _080804F8 -_0808016A: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08080174 - b _080804F8 -_08080174: - bl sub_800E0E8 - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080804F8 - .pool -_0808019C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _080804F8 -_080801AE: - bl sub_807F9D0 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080801C0 - b _08080546 -_080801C0: - b _080804F8 - .pool -_080801C8: - ldr r4, =gUnknown_020322A4 - ldr r0, [r4] - ldr r3, =0x000011b8 - adds r0, r3 - ldr r1, =sText_CommunicationStandby - movs r2, 0 - bl sub_808417C - ldr r1, [r4] - movs r2, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _08080546 - .pool -_080801F8: - ldr r4, =gUnknown_020322A4 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - movs r6, 0 - strb r0, [r1] - ldr r0, [r4] - movs r2, 0x8A - lsls r2, 1 - adds r0, r2 - strb r6, [r0] - ldr r0, [r4] - movs r5, 0xAC - lsls r5, 1 - adds r0, r5 - ldr r1, =gSpecialVar_ItemId - ldrh r1, [r1] - bl sub_807FE14 - ldr r0, =gUnknown_020228C4 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x10 - bl memcpy - bl sub_800ADF8 - ldr r0, [r4] - movs r3, 0x84 - lsls r3, 1 - adds r0, r3 - str r6, [r0] - b _08080546 - .pool -_08080248: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08080254 - b _08080546 -_08080254: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08080264 - b _080804F8 -_08080264: - movs r0, 0x4 - bl sub_800A4D8 - b _080804F8 -_0808026C: - ldr r6, =gUnknown_020322A4 - ldr r1, [r6] - movs r0, 0x84 - lsls r0, 1 - adds r1, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08080282 - b _08080546 -_08080282: - movs r0, 0x4 - movs r1, 0x1 - bl sub_8197DF8 - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_800A9D8 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0808029E - b _08080546 -_0808029E: - movs r5, 0 - adds r7, r6, 0 - movs r6, 0xAC - lsls r6, 1 - b _080802D4 - .pool -_080802AC: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x74 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_080802D4: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _080802AC - bl ResetBlockReceivedFlags - b _080804F8 - .pool -_080802EC: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x74 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_807FD90 - b _08080336 -_08080302: - bl GetLinkPlayerCount - ldr r2, =gUnknown_020322A4 - ldr r1, [r2] - adds r1, 0x7C - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r1, 0x8A - lsls r1, 1 - adds r4, r2, r1 - ldr r1, =gUnknown_083399D0 - adds r0, r2, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_08080328: - ldrb r1, [r0] - cmp r3, r1 - beq _080802EC - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _08080328 -_08080336: - ldr r3, =gUnknown_020322A4 - ldr r1, [r3] - movs r0, 0x84 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r2, 0x8A - lsls r2, 1 - adds r1, r2 - b _080804FC - .pool -_0808035C: - ldr r3, [r2] - movs r0, 0x84 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08080370 - b _08080546 -_08080370: - movs r1, 0x8A - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x7C - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _080803B8 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r2, [r2] - ldr r3, =gUnknown_083399DC - ldr r1, =gUnknown_083399E4 - adds r0, r2, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x4A - strh r1, [r2] - b _080803BE - .pool -_080803B8: - ldrb r0, [r3] - subs r0, 0x1 - strb r0, [r3] -_080803BE: - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _08080546 - .pool -_080803D4: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080803E0 - b _08080546 -_080803E0: - ldr r2, =gUnknown_020322A4 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2 - bl sub_8082CB4 - movs r0, 0x2B - bl PlaySE - movs r0, 0x2 - bl ShowBg - b _08080546 - .pool -_08080408: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl SetGpuRegBits - ldr r4, =gUnknown_020322A4 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x4A - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r3, [r1] - adds r0, r3 - strh r0, [r1] - movs r0, 0x8D - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0808048C - movs r0, 0xC - movs r1, 0x2 - bl SetGpuRegBits - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r3, [r4] - movs r2, 0x8D - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, =gUnknown_083399DC - ldr r1, =gUnknown_083399E4 - adds r0, r3, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - adds r1, r3, 0 - adds r1, 0x4A - strh r0, [r1] - movs r0, 0x84 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl sub_808074C - bl sub_80807BC -_0808048C: - ldr r0, [r4] - b _080804BE - .pool -_0808049C: - bl sub_8083380 - lsls r0, 24 - cmp r0, 0 - beq _080804BA - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080804BA: - ldr r0, =gUnknown_020322A4 - ldr r0, [r0] -_080804BE: - movs r1, 0xA0 - lsls r1, 1 - adds r0, r1 - bl sub_8082CB4 - b _08080546 - .pool -_080804D0: - ldr r0, =gUnknown_08339C2C - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _080804F8 - .pool -_080804E4: - bl sub_800ADF8 - b _080804F8 -_080804EA: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08080546 - bl sub_800A418 -_080804F8: - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] -_080804FC: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08080546 - .pool -_08080508: - ldr r5, =gUnknown_020322A4 - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x4C - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - movs r1, 0x82 - lsls r1, 1 - adds r0, r3, r1 - str r2, [r0] - ldr r0, =sub_8081898 - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, =0x00000193 - cmp r0, r4 - beq _08080540 - bl GetCurrentMapMusic - ldr r1, [r5] - movs r2, 0xAA - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_08080540: - adds r0, r4, 0 - bl PlayBGM -_08080546: - ldr r0, =gUnknown_020322A4 - ldr r1, [r0] - movs r3, 0x8E - lsls r3, 1 - adds r0, r1, r3 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r3, 0x2 - adds r1, r3 - movs r2, 0 - ldrsh r1, [r1, r2] - bl nullsub_31 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080018 thumb_func_start sub_8080588 sub_8080588: @ 8080588 @@ -1599,15 +16,15 @@ sub_8080588: @ 8080588 bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks - ldr r0, =sub_807F764 + ldr r0, =VBlankCB0_BerryBlender bl SetVBlankCallback movs r0, 0 bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_08339974 + ldr r1, =sBerryBlenderBgTemplates movs r0, 0x1 movs r2, 0x3 bl InitBgsFromTemplates - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r1, [r4] movs r0, 0xDC lsls r0, 1 @@ -1627,7 +44,7 @@ sub_8080588: @ 8080588 movs r1, 0x14 movs r2, 0xF0 bl copy_textbox_border_tile_patterns_to_vram - bl sub_807FA34 + bl InitBerryBlenderWindows ldr r2, [r4] adds r0, r2, 0 adds r0, 0x44 @@ -1660,7 +77,7 @@ task_tutorial_oak_boy_girl: @ 8080624 lsrs r0, 24 adds r2, r0, 0 adds r2, 0x18 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsrs r1, 23 adds r0, 0x96 @@ -1809,7 +226,7 @@ _08080734: sub_808074C: @ 808074C push {r4-r7,lr} movs r4, 0 - ldr r7, =gUnknown_020322A4 + ldr r7, =sBerryBlenderData movs r6, 0xFF ldr r5, =gUnknown_083399D0 _08080756: @@ -1835,7 +252,7 @@ _08080756: cmp r4, 0x3 ble _08080756 movs r3, 0 - ldr r7, =gUnknown_020322A4 + ldr r7, =sBerryBlenderData _08080784: movs r4, 0 adds r6, r3, 0x1 @@ -1886,7 +303,7 @@ sub_80807BC: @ 80807BC mov r10, r0 _080807DE: movs r6, 0 - ldr r7, =gUnknown_020322A4 + ldr r7, =sBerryBlenderData mov r8, r6 _080807E4: ldr r2, [r7] @@ -2002,7 +419,7 @@ _080808B6: sub_80808D4: @ 80808D4 push {r4-r7,lr} sub sp, 0x4 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] adds r2, r1, 0 @@ -2047,13 +464,13 @@ _08080950: ldrh r1, [r4] movs r0, 0 bl sub_8082FDC - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData ldr r0, [r5] movs r6, 0xAC lsls r6, 1 adds r0, r6 ldrh r1, [r4] - bl sub_807FE14 + bl Blender_CopyBerryData ldrh r0, [r4] ldr r2, [r5] adds r1, r2, 0 @@ -2063,7 +480,7 @@ _08080950: bl sub_8080674 movs r4, 0 movs r6, 0 - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType mov r12, r0 movs r7, 0x92 lsls r7, 1 @@ -2089,7 +506,7 @@ _080809A0: adds r4, r3, 0 cmp r4, 0x3 ble _0808098E - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r3, [r4] adds r1, r3, 0 adds r1, 0x70 @@ -2105,13 +522,13 @@ _080809A0: b _08080CB2 .pool _080809E4: - bl sub_807F7D8 + bl LoadBerryBlenderGfx lsls r0, 24 cmp r0, 0 bne _080809F0 b _08080DAE _080809F0: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -2122,7 +539,7 @@ _080809F0: _08080A04: movs r4, 0 ldr r5, =sBlenderSyncArrowsPos - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData _08080A0A: ldrb r1, [r5] ldrb r2, [r5, 0x1] @@ -2162,7 +579,7 @@ _08080A58: movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r1, [r2] ldrb r0, [r1] adds r0, 0x1 @@ -2175,7 +592,7 @@ _08080A58: b _08080DAE .pool _08080A84: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r1, [r4] movs r5, 0x84 lsls r5, 1 @@ -2201,7 +618,7 @@ _08080AAA: b _08080DAE .pool _08080ABC: - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r1, [r2] movs r3, 0 movs r0, 0xB @@ -2226,7 +643,7 @@ _08080AD8: _08080AEC: movs r4, 0 ldr r2, =gUnknown_083399D0 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r3, [r0] adds r0, r3, 0 adds r0, 0x7C @@ -2247,7 +664,7 @@ _08080B08: cmp r4, 0x3 ble _08080B08 _08080B16: - ldr r3, =gUnknown_020322A4 + ldr r3, =sBerryBlenderData ldr r1, [r3] movs r5, 0x84 lsls r5, 1 @@ -2308,7 +725,7 @@ _08080B94: subs r0, 0x1 _08080B98: strb r0, [r3] - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r3, 0x84 lsls r3, 1 @@ -2318,7 +735,7 @@ _08080B98: b _08080DAE .pool _08080BB0: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r1, [r4] ldrb r0, [r1] adds r0, 0x1 @@ -2340,7 +757,7 @@ _08080BDC: lsls r1, 3 movs r0, 0 bl SetGpuRegBits - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r2, [r4] adds r1, r2, 0 adds r1, 0x4A @@ -2409,13 +826,13 @@ _08080C78: lsls r0, 24 cmp r0, 0 beq _08080C8C - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] _08080C8C: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r1, 0xA0 lsls r1, 1 @@ -2431,7 +848,7 @@ _08080CA0: movs r3, 0x3 bl CreateSprite _08080CAE: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] _08080CB2: ldrb r0, [r1] @@ -2441,7 +858,7 @@ _08080CB2: .pool _08080CC4: bl sub_8080DF8 - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData ldr r4, [r5] adds r1, r4, 0 adds r1, 0x4C @@ -2507,7 +924,7 @@ _08080D5A: ldm r6!, {r0} lsrs r1, r5, 24 bl CreateTask - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r1, [r1] movs r2, 0x90 lsls r2, 1 @@ -2530,7 +947,7 @@ _08080D80: cmp r0, r4 beq _08080D9E bl GetCurrentMapMusic - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r1, [r1] movs r5, 0xAA lsls r5, 1 @@ -2541,9 +958,9 @@ _08080D9E: bl PlayBGM movs r0, 0x35 bl PlaySE - bl sub_807F738 + bl Blender_ControlHitPitch _08080DAE: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r2, 0x8E lsls r2, 1 @@ -2555,7 +972,7 @@ _08080DAE: adds r1, r5 movs r2, 0 ldrsh r1, [r1, r2] - bl nullsub_31 + bl Blender_DummiedOutFunc bl RunTasks bl AnimateSprites bl BuildOamBuffer @@ -2657,7 +1074,7 @@ sub_8080EA4: @ 8080EA4 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x4A ldrh r0, [r0] @@ -2791,7 +1208,7 @@ sub_8080FD0: @ 8080FD0 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData ldr r3, [r6] adds r0, r3, 0 adds r0, 0x4A @@ -2917,7 +1334,7 @@ sub_80810F8: @ 80810F8 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData ldr r3, [r5] adds r0, r3, 0 adds r0, 0x4A @@ -3044,7 +1461,7 @@ sub_8081224: @ 8081224 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r0, 0x4A ldrh r0, [r0] @@ -3186,7 +1603,7 @@ sub_8081370: @ 8081370 lsls r0, 16 lsrs r4, r0, 16 adds r5, r4, 0 - bl sub_807F738 + bl Blender_ControlHitPitch ldr r0, =0x00004523 cmp r4, r0 beq _080813A4 @@ -3204,7 +1621,7 @@ _08081398: b _080814A0 .pool _080813A4: - ldr r7, =gUnknown_020322A4 + ldr r7, =sBerryBlenderData ldr r4, [r7] adds r5, r4, 0 adds r5, 0x4C @@ -3269,7 +1686,7 @@ _080813E0: b _080814A0 .pool _0808143C: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r2, [r0] adds r4, r2, 0 adds r4, 0x4C @@ -3292,7 +1709,7 @@ _0808143C: b _0808149E .pool _08081474: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r4, r0, 0 adds r4, 0x4C @@ -3401,7 +1818,7 @@ _08081532: bge _0808152A _0808153C: movs r7, 0 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r0, 0x7C ldrb r0, [r0] @@ -3431,7 +1848,7 @@ _08081562: bne _08081576 b _080816D2 _08081576: - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData ldr r0, [r6] adds r0, 0x96 ldr r2, [sp, 0x4] @@ -3544,7 +1961,7 @@ _0808166A: cmp r0, r10 bne _080816D2 _08081678: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r2, r0, 0 adds r2, 0x4C @@ -3585,7 +2002,7 @@ _080816D2: movs r1, 0x10 add r8, r1 adds r7, 0x1 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r0, 0x7C ldrb r0, [r0] @@ -3598,7 +2015,7 @@ _080816F6: cmp r0, 0 beq _08081722 movs r7, 0 - ldr r3, =gUnknown_020322A4 + ldr r3, =sBerryBlenderData ldr r0, [r3] adds r0, 0x7C ldrb r0, [r0] @@ -3641,7 +2058,7 @@ sub_8081744: @ 8081744 lsls r0, 24 lsrs r6, r0, 24 _0808175A: - ldr r3, =gUnknown_020322A4 + ldr r3, =sBerryBlenderData ldr r1, [r3] lsls r2, r6, 1 adds r0, r1, 0 @@ -3683,7 +2100,7 @@ _080817B6: cmp r4, 0 beq _0808182C _080817BA: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r1, [r4] lsls r2, r5, 1 adds r0, r1, 0 @@ -3783,7 +2200,7 @@ _0808187E: sub_8081898: @ 8081898 push {r4-r6,lr} bl sub_8082D28 - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] movs r1, 0x82 lsls r1, 1 @@ -3839,7 +2256,7 @@ _080818B4: ldr r0, =sub_8081FC8 bl SetMainCallback2 _0808191A: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r2, 0x8E lsls r2, 1 @@ -3851,7 +2268,7 @@ _0808191A: adds r1, r2 movs r2, 0 ldrsh r1, [r1, r2] - bl nullsub_31 + bl Blender_DummiedOutFunc bl RunTasks bl AnimateSprites bl BuildOamBuffer @@ -3863,10 +2280,10 @@ _0808191A: .pool thumb_func_end sub_8081898 - thumb_func_start nullsub_31 -nullsub_31: @ 8081960 + thumb_func_start Blender_DummiedOutFunc +Blender_DummiedOutFunc: @ 8081960 bx lr - thumb_func_end nullsub_31 + thumb_func_end Blender_DummiedOutFunc thumb_func_start help_system_is_not_first_time help_system_is_not_first_time: @ 8081964 @@ -4533,7 +2950,7 @@ sub_8081E04: @ 8081E04 thumb_func_start sub_8081E20 sub_8081E20: @ 8081E20 push {r4-r6,lr} - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r2, 0x82 lsls r2, 1 @@ -4729,7 +3146,7 @@ sub_8081FC8: @ 8081FC8 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x63 ldrb r0, [r0] @@ -4776,7 +3193,7 @@ _08082038: b _08082064 .pool _0808204C: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r1, 0x90 lsls r1, 1 @@ -4795,7 +3212,7 @@ _08082064: b _08082458 .pool _08082078: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r1, [r4] adds r1, 0x4C ldrh r0, [r1] @@ -4825,14 +3242,14 @@ _080820B0: movs r0, 0x5 _080820B6: strb r0, [r1] - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r0, 0 strb r0, [r1] ldr r0, =gMPlay_SE2 bl m4aMPlayStop _080820C6: - bl sub_807F738 + bl Blender_ControlHitPitch b _0808249E .pool _080820D4: @@ -4856,7 +3273,7 @@ _080820EC: ldrb r0, [r0] cmp r0, 0 beq _0808218C - ldr r3, =gUnknown_020322A4 + ldr r3, =sBerryBlenderData ldr r1, [r3] movs r4, 0x8E lsls r4, 5 @@ -4922,7 +3339,7 @@ _08082172: b _0808245C .pool _0808218C: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r3, [r4] movs r0, 0xCC lsls r0, 1 @@ -4958,7 +3375,7 @@ _080821C8: b _0808249E _080821D4: bl ResetBlockReceivedFlags - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData ldr r1, [r5] adds r1, 0x63 ldrb r0, [r1] @@ -5017,7 +3434,7 @@ _08082220: .pool _08082254: ldr r2, =gBlockRecvBuffer - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r3, [r0] ldrh r0, [r2, 0x4] adds r1, r3, 0 @@ -5045,7 +3462,7 @@ _08082286: bne _08082292 b _0808249E _08082292: - ldr r0, =gUnknown_03005D98 + ldr r0, =gInGameOpponentsNo ldrb r0, [r0] cmp r0, 0 bne _080822A8 @@ -5058,18 +3475,18 @@ _080822A8: bl IncrementGameStat b _08082458 _080822B0: - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData ldr r4, [r6] ldr r5, =0x000011b8 adds r4, r5 ldr r5, =sText_WouldLikeToBlendAnotherBerry - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 - bl sub_808417C + bl Blender_PrintText cmp r0, 0 bne _080822D2 b _0808249E @@ -5078,7 +3495,7 @@ _080822D2: b _0808245C .pool _080822E4: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x9E movs r1, 0 @@ -5109,7 +3526,7 @@ _08082322: beq _08082328 b _0808249E _08082328: - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r0, [r2] adds r0, 0x9E movs r1, 0x1 @@ -5121,7 +3538,7 @@ _08082328: strb r0, [r1] movs r4, 0 _0808233E: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x8E @@ -5143,7 +3560,7 @@ _0808235C: b _0808249E .pool _0808236C: - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r0, 0x9E strb r2, [r0] @@ -5154,7 +3571,7 @@ _0808236C: strb r0, [r1] movs r4, 0 _08082380: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x8E @@ -5179,7 +3596,7 @@ _080823B0: ldr r6, =gUnknown_03003110 adds r0, r6, 0 bl sub_8081F94 - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r2, [r4] adds r0, r2, 0 adds r0, 0x9E @@ -5233,13 +3650,13 @@ _0808241C: b _0808245E .pool _08082430: - ldr r0, =gUnknown_03005D98 + ldr r0, =gInGameOpponentsNo ldrb r0, [r0] cmp r0, 0 beq _08082458 ldr r0, =sub_8082924 bl SetMainCallback2 - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r0, [r2] adds r0, 0x63 movs r1, 0 @@ -5248,7 +3665,7 @@ _08082430: b _0808249C .pool _08082458: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] _0808245C: adds r1, 0x63 @@ -5259,18 +3676,18 @@ _0808245E: b _0808249E .pool _0808246C: - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData ldr r4, [r6] ldr r0, =0x000011b8 adds r4, r0 ldr r5, =sText_CommunicationStandby - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 - bl sub_808417C + bl Blender_PrintText cmp r0, 0 beq _0808249E ldr r0, =sub_8082644 @@ -5284,7 +3701,7 @@ _0808249C: strb r1, [r0] _0808249E: bl sub_808330C - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x4C ldrh r0, [r0] @@ -5301,7 +3718,7 @@ _0808249E: adds r1, r5 movs r2, 0 ldrsh r1, [r1, r2] - bl nullsub_31 + bl Blender_DummiedOutFunc bl RunTasks bl AnimateSprites bl BuildOamBuffer @@ -5318,7 +3735,7 @@ _0808249E: thumb_func_start sub_80824FC sub_80824FC: @ 80824FC push {r4,lr} - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] movs r2, 0xD0 lsls r2, 1 @@ -5346,7 +3763,7 @@ _08082524: .4byte _0808261A _08082540: bl sub_800ADF8 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r2, [r0] movs r3, 0xD0 lsls r3, 1 @@ -5359,7 +3776,7 @@ _08082558: lsls r0, 24 cmp r0, 0 beq _0808263C - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r2, 0xD0 lsls r2, 1 @@ -5374,7 +3791,7 @@ _08082558: .pool _08082584: bl sub_8153430 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r2, [r0] b _08082602 .pool @@ -5407,7 +3824,7 @@ _080825BA: lsrs r2, r0, 24 cmp r2, 0 beq _080825E4 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r1, 0xD0 lsls r1, 1 @@ -5417,7 +3834,7 @@ _080825BA: b _0808263C .pool _080825E4: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r3, 0x84 lsls r3, 1 @@ -5474,7 +3891,7 @@ _0808263E: sub_8082644: @ 8082644 push {r4-r6,lr} sub sp, 0x4 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r0, 0x63 ldrb r0, [r0] @@ -5586,13 +4003,13 @@ _08082754: ldr r0, =0x000011b8 adds r4, r0 ldr r5, =gStringVar4 - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 - bl sub_808417C + bl Blender_PrintText cmp r0, 0 bne _08082774 b _080828DC @@ -5629,7 +4046,7 @@ _080827AA: adds r0, r1 ldr r1, =gText_SavingDontTurnOff2 movs r2, 0 - bl sub_808417C + bl Blender_PrintText bl sub_800ADF8 b _080828BA .pool @@ -5640,7 +4057,7 @@ _080827C8: bne _080827D4 b _080828DC _080827D4: - ldr r3, =gUnknown_020322A4 + ldr r3, =sBerryBlenderData ldr r1, [r3] movs r2, 0x84 lsls r2, 1 @@ -5665,7 +4082,7 @@ _080827FC: beq _080828DC movs r0, 0x37 bl PlaySE - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] b _080828BC .pool @@ -5689,7 +4106,7 @@ _08082828: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] b _080828BC .pool @@ -5717,7 +4134,7 @@ _0808284C: ldr r0, [r6] bl Free str r4, [r6] - ldr r0, =sub_807FA80 + ldr r0, =DoBerryBlending bl SetMainCallback2 b _080828DC .pool @@ -5759,7 +4176,7 @@ _080828C6: bl SetMainCallback2 _080828DC: bl sub_8082AD4 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r2, 0x8E lsls r2, 1 @@ -5771,7 +4188,7 @@ _080828DC: adds r1, r2 movs r2, 0 ldrsh r1, [r1, r2] - bl nullsub_31 + bl Blender_DummiedOutFunc bl RunTasks bl AnimateSprites bl BuildOamBuffer @@ -5787,7 +4204,7 @@ _080828DC: thumb_func_start sub_8082924 sub_8082924: @ 8082924 push {r4-r6,lr} - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r0, 0x63 ldrb r0, [r0] @@ -5881,13 +4298,13 @@ _08082A00: ldr r2, =0x000011b8 adds r4, r2 ldr r5, =gStringVar4 - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 - bl sub_808417C + bl Blender_PrintText cmp r0, 0 beq _08082A92 ldr r0, [r6] @@ -5899,7 +4316,7 @@ _08082A00: _08082A30: movs r0, 0x3 bl BeginFastPaletteFade - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] adds r1, 0x63 ldrb r0, [r1] @@ -5919,7 +4336,7 @@ _08082A48: ldrh r0, [r0] cmp r0, 0 bne _08082A70 - ldr r0, =sub_807FA80 + ldr r0, =DoBerryBlending bl SetMainCallback2 b _08082A76 .pool @@ -5932,14 +4349,14 @@ _08082A76: bl UnsetBgTilemapBuffer movs r0, 0x1 bl UnsetBgTilemapBuffer - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] bl Free movs r0, 0 str r0, [r4] _08082A92: bl sub_8082AD4 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r2, 0x8E lsls r2, 1 @@ -5951,7 +4368,7 @@ _08082A92: adds r1, r2 movs r2, 0 ldrsh r1, [r1, r2] - bl nullsub_31 + bl Blender_DummiedOutFunc bl RunTasks bl AnimateSprites bl BuildOamBuffer @@ -5998,11 +4415,11 @@ _08082B24: _08082B26: cmp r3, r0 beq _08082B38 - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData b _08082B48 .pool _08082B38: - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r0, [r2] adds r1, r0, 0 adds r1, 0x6C @@ -6020,7 +4437,7 @@ _08082B58: ldr r0, =0x00002222 cmp r1, r0 bne _08082B66 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r0, 0x64 _08082B64: @@ -6032,7 +4449,7 @@ _08082B66: beq _08082B72 b _08082CA4 _08082B72: - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r0, [r2] adds r0, 0x64 ldrh r1, [r0] @@ -6109,7 +4526,7 @@ _08082C12: lsrs r0, 24 cmp r5, r0 bcs _08082C2E - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsls r1, r5, 1 adds r0, 0x64 @@ -6137,7 +4554,7 @@ _08082C4E: lsrs r0, 24 cmp r5, r0 bcs _08082C6A - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsls r1, r5, 1 adds r0, 0x64 @@ -6161,7 +4578,7 @@ _08082C6A: _08082C90: ldr r0, =0x00001111 strh r0, [r4, 0x2] - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] lsls r1, r5, 1 adds r0, 0x64 @@ -6187,7 +4604,7 @@ sub_8082CB4: @ 8082CB4 lsls r1, 7 str r1, [sp, 0x4] mov r3, sp - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r1, [r1] mov r12, r1 movs r1, 0x8E @@ -6230,7 +4647,7 @@ sub_8082CB4: @ 8082CB4 thumb_func_start sub_8082D18 sub_8082D18: @ 8082D18 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r0, 0x4A ldrh r0, [r0] @@ -6259,7 +4676,7 @@ _08082D3C: beq _08082DCC cmp r1, 0 bne _08082D90 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r3, [r0] adds r2, r3, 0 adds r2, 0x4A @@ -6293,7 +4710,7 @@ _08082D90: lsls r0, 7 cmp r1, r0 bne _08082DEA - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r2, [r0] ldrh r0, [r3, 0xA] movs r4, 0x8B @@ -6311,7 +4728,7 @@ _08082D90: b _08082DEA .pool _08082DCC: - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] adds r2, r1, 0 adds r2, 0x4A @@ -6332,10 +4749,10 @@ _08082DEA: .pool thumb_func_end sub_8082D28 - thumb_func_start sub_8082DF4 -sub_8082DF4: @ 8082DF4 + thumb_func_start BerryBlender_SetGpuRegs +BerryBlender_SetGpuRegs: @ 8082DF4 push {r4-r6,lr} - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] movs r6, 0x8E lsls r6, 1 @@ -6364,7 +4781,7 @@ sub_8082DF4: @ 8082DF4 pop {r0} bx r0 .pool - thumb_func_end sub_8082DF4 + thumb_func_end BerryBlender_SetGpuRegs thumb_func_start sub_8082E3C sub_8082E3C: @ 8082E3C @@ -6433,7 +4850,7 @@ sub_8082E84: @ 8082E84 movs r7, 0x10 _08082EB0: bl Random - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r4, [r1] adds r4, 0x4A lsls r0, 16 @@ -6583,7 +5000,7 @@ sub_8082FDC: @ 8082FDC lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r3, [r2] lsls r4, r0, 1 adds r2, r3, 0 @@ -6596,7 +5013,7 @@ sub_8082FDC: @ 8082FDC adds r0, r2 adds r3, r0 adds r0, r3, 0 - bl sub_807FE14 + bl Blender_CopyBerryData pop {r4} pop {r0} bx r0 @@ -6747,7 +5164,7 @@ _08083112: asrs r0, 16 cmp r0, 0xB0 ble _08083130 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -6770,7 +5187,7 @@ sub_8083140: @ 8083140 lsrs r0, 16 lsls r1, 16 lsrs r3, r1, 16 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r1, [r1] movs r2, 0x8C lsls r2, 1 @@ -6898,7 +5315,7 @@ sub_8083230: @ 8083230 lsrs r0, 16 bl sub_8083210 adds r5, r0, 0 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] adds r1, r0, 0 adds r1, 0x4E @@ -7009,7 +5426,7 @@ _08083308: thumb_func_start sub_808330C sub_808330C: @ 808330C push {r4,lr} - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] movs r1, 0x8E lsls r1, 1 @@ -7073,7 +5490,7 @@ _08083378: thumb_func_start sub_8083380 sub_8083380: @ 8083380 push {r4,r5,lr} - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData ldr r2, [r5] movs r4, 0x84 lsls r4, 1 @@ -7134,7 +5551,7 @@ _080833F0: thumb_func_start sub_80833F8 sub_80833F8: @ 80833F8 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r2, [r1] movs r3, 0x8E lsls r3, 1 @@ -7157,7 +5574,7 @@ UpdateBerryBlenderRecord: @ 8083418 push {lr} ldr r0, =gSaveBlock1Ptr ldr r2, [r0] - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] adds r0, r1, 0 adds r0, 0x7C @@ -7187,7 +5604,7 @@ berry_blender_related: @ 8083450 mov r5, r8 push {r5-r7} sub sp, 0x4C - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] adds r4, r1, 0 @@ -7251,7 +5668,7 @@ _080834C8: _080834DC: movs r6, 0 _080834DE: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x46 adds r0, r6 @@ -7291,7 +5708,7 @@ _08083518: adds r1, r4, 0 movs r3, 0x1 bl sub_80840D4 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r2, r0, 0 adds r2, 0x7C @@ -7408,7 +5825,7 @@ _0808361A: movs r2, 0 movs r3, 0x51 bl sub_80840D4 - ldr r6, =gUnknown_020322A4 + ldr r6, =sBerryBlenderData ldr r0, [r6] adds r4, r0, 0 adds r4, 0x9F @@ -7557,7 +5974,7 @@ _080837A8: bl sub_8198070 movs r6, 0 add r7, sp, 0x40 - ldr r5, =gUnknown_020322A4 + ldr r5, =sBerryBlenderData _080837B6: ldr r0, [r5] lsls r2, r6, 1 @@ -7591,7 +6008,7 @@ _080837EA: cmp r6, 0x3 bls _080837B6 bl sub_8081E20 - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r3, [r4] movs r1, 0xAC lsls r1, 1 @@ -7641,13 +6058,13 @@ _0808386C: ldr r0, =0x000011b8 adds r5, r4, r0 adds r4, 0x9F - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r5, 0 adds r1, r4, 0 - bl sub_808417C + bl Blender_PrintText cmp r0, 0 beq _08083898 bl UpdateBerryBlenderRecord @@ -7795,7 +6212,7 @@ sub_80839B4: @ 80839B4 push {r5-r7} sub sp, 0x14 movs r5, 0 - ldr r2, =gUnknown_020322A4 + ldr r2, =sBerryBlenderData ldr r0, [r2] adds r0, 0x7C adds r1, r2, 0 @@ -7876,7 +6293,7 @@ _08083A10: cmp r5, r1 bcc _08083A10 _08083A5E: - ldr r4, =gUnknown_020322A4 + ldr r4, =sBerryBlenderData ldr r0, [r4] adds r0, 0x7C ldrb r1, [r0] @@ -7922,7 +6339,7 @@ _08083AB4: lsrs r3, r0, 24 _08083ABC: movs r5, 0 - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] adds r0, 0x7C ldrb r0, [r0] @@ -7970,7 +6387,7 @@ sub_8083B08: @ 8083B08 mov r5, r8 push {r5-r7} sub sp, 0xC - ldr r1, =gUnknown_020322A4 + ldr r1, =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] adds r2, r1, 0 @@ -8064,7 +6481,7 @@ _08083B9A: movs r2, 0x34 movs r3, 0 bl CreateSprite - ldr r7, =gUnknown_020322A4 + ldr r7, =sBerryBlenderData ldr r1, [r7] adds r1, 0x46 strb r0, [r1] @@ -8272,7 +6689,7 @@ _08083D8A: movs r0, 0x5 movs r1, 0x3 bl CopyWindowToVram - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] movs r3, 0x84 lsls r3, 1 @@ -8304,7 +6721,7 @@ _08083DE2: beq _08083E12 movs r0, 0x5 bl PlaySE - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r1, [r0] _08083DF8: ldrb r0, [r1] @@ -8469,7 +6886,7 @@ _08083F62: lsls r0, 24 cmp r0, 0 beq _08083F82 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r0, [r0] movs r1, 0xAA lsls r1, 1 @@ -8518,7 +6935,7 @@ sub_8083F94: @ 8083F94 ldrb r0, [r0] cmp r0, 0 beq _080840C4 - ldr r0, =gUnknown_020322A4 + ldr r0, =sBerryBlenderData ldr r2, [r0] movs r4, 0xD2 lsls r4, 1 @@ -8730,8 +7147,8 @@ _08084148: bx r0 thumb_func_end sub_80840D4 - thumb_func_start sub_808417C -sub_808417C: @ 808417C + thumb_func_start Blender_PrintText +Blender_PrintText: @ 808417C push {r4-r7,lr} sub sp, 0x8 adds r5, r0, 0 @@ -8783,6 +7200,6 @@ _080841DC: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_808417C + thumb_func_end Blender_PrintText .align 2, 0 @ Don't pad with nop. diff --git a/asm/cable_club.s b/asm/cable_club.s index 2ce8bb0b1..611b87eef 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -244,7 +244,7 @@ sub_80B252C: @ 80B252C lsrs r1, r0, 24 cmp r1, 0 bne _080B2570 - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType strh r1, [r0] ldr r1, =gTasks lsls r0, r4, 2 @@ -286,7 +286,7 @@ _080B258E: b _080B25BA .pool _080B25A4: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType movs r0, 0 strh r0, [r1] ldr r1, =gTasks @@ -743,7 +743,7 @@ _080B2994: strb r0, [r1] ldrb r0, [r4] bl sub_800AA04 - ldr r4, =gUnknown_020228C4 + ldr r4, =gBlockSendBuffer adds r0, r4, 0 bl sub_80C30A4 ldr r0, =gUnknown_0203CEF8 @@ -833,7 +833,7 @@ _080B2A6C: strb r0, [r1] ldrb r0, [r4] bl sub_800AA04 - ldr r4, =gUnknown_020228C4 + ldr r4, =gBlockSendBuffer adds r0, r4, 0 bl sub_80C30A4 ldr r0, =gUnknown_0203CEF8 @@ -964,7 +964,7 @@ task_map_chg_seq_0807EC34: @ 80B2B94 ldrh r0, [r5] cmp r0, 0x1 bne _080B2C10 - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType ldrh r2, [r0] ldr r0, =0x00002266 cmp r2, r0 @@ -1215,20 +1215,20 @@ _080B2DC0: b _080B2E34 _080B2DCA: movs r3, 0x2 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r4, =0x00002233 b _080B2E30 .pool _080B2DDC: movs r3, 0x2 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r4, =0x00002244 b _080B2E30 .pool _080B2DEC: movs r3, 0x4 movs r2, 0x4 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r4, =0x00002255 b _080B2E30 .pool @@ -1243,12 +1243,12 @@ _080B2E00: ands r0, r1 cmp r0, 0 bne _080B2E2C - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r4, =0x00002266 b _080B2E30 .pool _080B2E2C: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r4, =0x00002277 _080B2E30: adds r0, r4, 0 @@ -1266,7 +1266,7 @@ _080B2E34: thumb_func_start sub_80B2E4C sub_80B2E4C: @ 80B2E4C push {lr} - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00001133 adds r0, r2, 0 strh r0, [r1] @@ -1287,7 +1287,7 @@ sub_80B2E74: @ 80B2E74 ldr r1, =gSpecialVar_Result movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00003311 adds r0, r2, 0 strh r0, [r1] @@ -1454,7 +1454,7 @@ _080B2FC6: thumb_func_start sub_80B2FD8 sub_80B2FD8: @ 80B2FD8 push {lr} - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00004411 adds r0, r2, 0 strh r0, [r1] @@ -1472,7 +1472,7 @@ sub_80B2FD8: @ 80B2FD8 thumb_func_start sub_80B3000 sub_80B3000: @ 80B3000 push {lr} - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00006601 adds r0, r2, 0 strh r0, [r1] @@ -1490,7 +1490,7 @@ sub_80B3000: @ 80B3000 thumb_func_start sub_80B3028 sub_80B3028: @ 80B3028 push {lr} - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00006602 adds r0, r2, 0 strh r0, [r1] @@ -1540,17 +1540,17 @@ _080B3084: .4byte _080B3128 .4byte _080B30D8 _080B30A8: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002233 b _080B3124 .pool _080B30B8: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002244 b _080B3124 .pool _080B30C8: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002255 b _080B3124 .pool @@ -1564,22 +1564,22 @@ _080B30D8: ands r0, r1 cmp r0, 0 bne _080B3100 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002266 b _080B3124 .pool _080B3100: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002277 b _080B3124 .pool _080B3110: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00001111 b _080B3124 .pool _080B3120: - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00003322 _080B3124: adds r0, r2, 0 @@ -1809,7 +1809,7 @@ _080B32F8: movs r0, 0x1 movs r1, 0 bl fade_screen - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002211 adds r0, r2, 0 strh r0, [r1] @@ -1922,7 +1922,7 @@ _080B3408: movs r0, 0x1 movs r1, 0 bl fade_screen - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType ldr r2, =0x00002211 adds r1, r2, 0 strh r1, [r0] @@ -2548,7 +2548,7 @@ nullsub_37: @ 80B3964 thumb_func_start sub_80B3968 sub_80B3968: @ 80B3968 push {lr} - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002211 adds r0, r2, 0 strh r0, [r1] @@ -2829,7 +2829,7 @@ sub_80B3BC4: @ 80B3BC4 ldrb r0, [r0] cmp r0, 0 bne _080B3BD6 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00002288 adds r0, r2, 0 strh r0, [r1] diff --git a/asm/contest.s b/asm/contest.s index 50398c518..88d4203ab 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -14067,7 +14067,7 @@ _080DEC80: b _080DEC9C .pool _080DEC94: - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r1, r0, 24 _080DEC9C: diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s index f1e2019da..ba96bf4ea 100644 --- a/asm/contest_link_80FC4F4.s +++ b/asm/contest_link_80FC4F4.s @@ -284,7 +284,7 @@ _080FC6FE: lsls r0, 24 cmp r0, 0 beq _080FC7F4 - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gUnknown_02039F25 ldrb r1, [r1] lsls r1, 6 @@ -297,7 +297,7 @@ _080FC6FE: b _080FC7F4 .pool _080FC738: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gUnknown_02039F25 ldrb r1, [r1] lsls r1, 6 @@ -487,7 +487,7 @@ _080FC8D8: beq _080FC954 b _080FC96E _080FC8DE: - ldr r1, =gUnknown_020228C4 + ldr r1, =gBlockSendBuffer ldrh r0, [r4, 0x1A] strb r0, [r1] bl GetMultiplayerId @@ -1142,7 +1142,7 @@ _080FCE8C: beq _080FCEFC b _080FCF16 _080FCE92: - ldr r1, =gUnknown_020228C4 + ldr r1, =gBlockSendBuffer movs r0, 0x6E strb r0, [r1] bl GetMultiplayerId diff --git a/asm/item_menu.s b/asm/item_menu.s index a868b2672..61bd5c6e9 100755 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -1863,7 +1863,7 @@ DisplayItemMessage: @ 81ABB4C strh r0, [r4, 0x14] movs r1, 0x11 bl FillWindowPixelBuffer - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 ldrb r1, [r4, 0x14] diff --git a/asm/link.s b/asm/link.s index d2dc05630..9d6adff34 100644 --- a/asm/link.s +++ b/asm/link.s @@ -206,7 +206,7 @@ sub_8009570: @ 8009570 ldr r0, =sub_80096BC bl SetVBlankCallback bl sub_800A2E0 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00001111 adds r0, r2, 0 strh r0, [r1] @@ -291,7 +291,7 @@ sub_8009638: @ 8009638 ldr r0, [r4] ldrb r0, [r0, 0x8] strb r0, [r5, 0x13] - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType ldrh r0, [r0] str r0, [r5, 0x14] ldr r0, =gGameLanguage @@ -1185,7 +1185,7 @@ _08009E2C: _08009E38: ldr r0, =gUnknown_03003110 strh r2, [r0] - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldrh r1, [r1] b _08009F04 .pool @@ -1814,7 +1814,7 @@ _0800A30C: str r7, [r4, 0x4] b _0800A336 _0800A324: - ldr r5, =gUnknown_020228C4 + ldr r5, =gBlockSendBuffer cmp r7, r5 beq _0800A334 adds r0, r5, 0 @@ -2772,7 +2772,7 @@ sub_800AA60: @ 800AA60 ldr r0, =gUnknown_02022A74 ldr r2, =0x00002288 mov r8, r2 - ldr r7, =gUnknown_020229C6 + ldr r7, =gLinkType mov r6, r12 adds r6, 0x14 adds r5, r0, 0x4 @@ -3798,7 +3798,7 @@ sub_800B348: @ 800B348 strh r2, [r0] ldrb r2, [r3, 0x2] strb r2, [r0, 0x2] - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r2, 0x3C bl memcpy pop {r4-r6} @@ -10306,7 +10306,7 @@ sub_800E700: @ 800E700 lsrs r1, r0, 16 cmp r1, 0 bne _0800E732 - ldr r0, =gUnknown_020229C6 + ldr r0, =gLinkType strh r1, [r0] bl sub_800AAF4 movs r0, 0 @@ -13149,7 +13149,7 @@ _0800FEC8: str r7, [r5, 0x70] b _0800FF1C _0800FF0A: - ldr r4, =gUnknown_020228C4 + ldr r4, =gBlockSendBuffer cmp r7, r4 beq _0800FF1A adds r0, r4, 0 @@ -14734,7 +14734,7 @@ _08010B8C: b _08010C4A .pool _08010BC0: - ldr r5, =gUnknown_020228C4 + ldr r5, =gBlockSendBuffer adds r1, r5, 0 ldr r0, =gUnknown_082ED7EC ldm r0!, {r2-r4} @@ -14772,7 +14772,7 @@ _08010BE2: adds r0, 0x1 strh r0, [r1, 0x8] _08010C0A: - ldr r5, =gUnknown_020228C4 + ldr r5, =gBlockSendBuffer ldr r1, =gUnknown_03005000 ldrb r0, [r1, 0xD] strb r0, [r5, 0xF] @@ -14796,7 +14796,7 @@ _08010C20: mov r1, r12 movs r2, 0x8C bl memcpy - ldr r1, =gUnknown_020228C4 + ldr r1, =gBlockSendBuffer movs r0, 0 movs r2, 0xA0 bl SendBlock @@ -14921,7 +14921,7 @@ _08010D56: cmp r0, 0 beq _08010DA6 bl sub_800B348 - ldr r1, =gUnknown_020228C4 + ldr r1, =gBlockSendBuffer movs r0, 0 movs r2, 0x3C bl SendBlock @@ -16608,7 +16608,7 @@ sub_8011AFC: @ 8011AFC lsls r0, 24 cmp r0, 0 beq _08011B70 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00001111 adds r0, r2, 0 strh r0, [r1] @@ -20832,7 +20832,7 @@ _08013FFC: b _0801405A .pool _08014038: - ldr r4, =gUnknown_020228C4 + ldr r4, =gBlockSendBuffer ldr r0, =gSaveBlock1Ptr ldr r1, [r0] ldr r0, =0x00002be0 @@ -21403,7 +21403,7 @@ _080145D8: .pool _080145F4: bl overworld_free_bg_tilemaps - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 bl sp000_heal_pokemon @@ -21422,7 +21422,7 @@ _08014620: bl sp000_heal_pokemon bl copy_player_party_to_sav1 bl copy_bags_and_unk_data_from_save_blocks - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 movs r0, 0x2 @@ -21438,7 +21438,7 @@ _0801464C: bl sp000_heal_pokemon bl copy_player_party_to_sav1 bl copy_bags_and_unk_data_from_save_blocks - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 movs r0, 0x5 @@ -21450,7 +21450,7 @@ _0801464C: b _080146B0 .pool _08014678: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 bl overworld_free_bg_tilemaps @@ -21463,7 +21463,7 @@ _08014678: b _080146B0 .pool _08014698: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 bl overworld_free_bg_tilemaps @@ -21503,7 +21503,7 @@ _080146F6: bl sub_801DD98 b _08014764 _080146FC: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0 bl sub_80143E4 ldr r0, =sub_80141A4 @@ -21573,7 +21573,7 @@ sub_8014790: @ 8014790 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r7, r0, r1 - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer mov r9, r0 movs r1, 0 ldrsh r0, [r7, r1] @@ -23720,7 +23720,7 @@ _08015BBE: bne _08015BCA bl _08016878 _08015BCA: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 ldr r0, =sub_80140E0 @@ -24247,7 +24247,7 @@ _080160DA: bne _080160E4 b _08016878 _080160E4: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 ldr r0, =sub_80140E0 @@ -33721,7 +33721,7 @@ _0801AE48: beq _0801AE54 b _0801AFAE _0801AE54: - ldr r4, =gUnknown_020228C4 + ldr r4, =gBlockSendBuffer adds r0, r4, 0 movs r1, 0 movs r2, 0x20 @@ -33738,7 +33738,7 @@ _0801AE78: movs r0, 0x51 _0801AE7A: strb r0, [r4] - ldr r1, =gUnknown_020228C4 + ldr r1, =gBlockSendBuffer movs r0, 0 movs r2, 0x20 bl SendBlock diff --git a/asm/menu.s b/asm/menu.s index 71ff9218c..e1102893a 100755 --- a/asm/menu.s +++ b/asm/menu.s @@ -22,7 +22,7 @@ AddTextPrinterWithCallbackForMessage: @ 8197A9C ands r1, r2 orrs r1, r0 strb r1, [r3] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/mystery_event_menu.s b/asm/mystery_event_menu.s index df8e443a1..f15346b81 100644 --- a/asm/mystery_event_menu.s +++ b/asm/mystery_event_menu.s @@ -232,7 +232,7 @@ _08178B56: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00005501 adds r0, r2, 0 strh r0, [r1] diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 22d7b260e..cded48783 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -904,7 +904,7 @@ _080E3586: movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s index d79f7df32..25f7fe605 100755 --- a/asm/new_menu_helpers.s +++ b/asm/new_menu_helpers.s @@ -185,7 +185,7 @@ AddTextPrinterForMessage: @ 81972C4 ands r1, r2 orrs r1, r0 strb r1, [r3] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -222,7 +222,7 @@ AddTextPrinterForMessage_2: @ 8197310 ands r1, r2 orrs r1, r0 strb r1, [r3] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -945,7 +945,7 @@ DisplayItemMessageOnField: @ 81978EC lsls r4, 24 lsrs r4, 24 bl sub_81973A4 - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 movs r2, 0x80 @@ -1021,8 +1021,8 @@ _0819798A: bx r1 thumb_func_end sub_8197964 - thumb_func_start sav2_get_text_speed -sav2_get_text_speed: @ 8197990 + thumb_func_start GetPlayerTextSpeed +GetPlayerTextSpeed: @ 8197990 push {lr} ldr r0, =gSaveBlock2Ptr ldr r2, [r0] @@ -1045,7 +1045,7 @@ _081979AC: pop {r1} bx r1 .pool - thumb_func_end sav2_get_text_speed + thumb_func_end GetPlayerTextSpeed thumb_func_start sub_81979C4 sub_81979C4: @ 81979C4 diff --git a/asm/party_menu.s b/asm/party_menu.s index 018ee7b84..4ae689d4d 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5992,7 +5992,7 @@ sub_81B3300: @ 81B3300 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s index 9830db888..167c75730 100644 --- a/asm/pokeblock_feed.s +++ b/asm/pokeblock_feed.s @@ -740,7 +740,7 @@ _0817A268: movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index d30c6b4ee..c2c65e49b 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5547,7 +5547,7 @@ DisplayItemMessageInBattlePyramid: @ 81C6DD8 movs r0, 0x2 movs r1, 0x11 bl FillWindowPixelBuffer - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 movs r1, 0x1 diff --git a/asm/pokenav.s b/asm/pokenav.s index 249258404..d6a3cc80c 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -10207,7 +10207,7 @@ sub_81CC158: @ 81CC158 adds r1, 0xF bl sub_81CAF78 adds r5, r0, 0 - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 ldrb r2, [r4, 0x14] @@ -23751,7 +23751,7 @@ sub_81D2BF4: @ 81D2BF4 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sav2_get_text_speed + bl GetPlayerTextSpeed adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -28068,7 +28068,7 @@ sub_81D4E30: @ 81D4E30 lsls r2, 6 movs r1, 0 bl memset - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00005503 adds r0, r2, 0 strh r0, [r1] diff --git a/asm/record_mixing.s b/asm/record_mixing.s index 35e0557ee..e7d7c8a38 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -993,7 +993,7 @@ _080E75AC: movs r0, 0xC8 muls r0, r2 adds r1, r0 - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer movs r2, 0xC8 bl memcpy b _080E75FC diff --git a/asm/rom6.s b/asm/rom6.s index f07689a86..719feaae0 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -2601,7 +2601,7 @@ sub_8136AB4: @ 8136AB4 ldr r1, =gText_ThrowAwayVar1 adds r0, r5, 0 bl StringExpandPlaceholders - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -2657,7 +2657,7 @@ sub_8136B78: @ 8136B78 ldr r1, =gText_Var1ThrownAway adds r0, r5, 0 bl StringExpandPlaceholders - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 movs r1, 0x1 diff --git a/asm/shop.s b/asm/shop.s index 94756624c..2d6791a62 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1219,7 +1219,7 @@ BuyMenuDisplayMessage: @ 80E04E8 adds r6, r2, 0 lsls r4, 24 lsrs r4, 24 - bl sav2_get_text_speed + bl GetPlayerTextSpeed lsls r0, 24 lsrs r0, 24 movs r1, 0x1 diff --git a/asm/trade.s b/asm/trade.s index cbf980b74..74e907aee 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -401,7 +401,7 @@ _080774B2: ldrb r2, [r0] cmp r2, 0 bne _0807754C - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r5, =0x00001122 adds r0, r5, 0 strh r0, [r1] @@ -2142,7 +2142,7 @@ _08078484: .4byte _080786F0 .4byte _08078720 _080784DC: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gPlayerParty movs r2, 0xC8 bl sub_8078438 @@ -2208,7 +2208,7 @@ _08078552: b _080787A2 .pool _0807857C: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gPlayerParty + 200 movs r2, 0xC8 bl sub_8078438 @@ -2247,7 +2247,7 @@ _080785B6: b _080787A2 .pool _080785E0: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gPlayerParty + 400 movs r2, 0xC8 bl sub_8078438 @@ -2286,7 +2286,7 @@ _0807861A: b _080787A2 .pool _08078644: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gSaveBlock1Ptr ldr r1, [r1] ldr r2, =0x00002be0 @@ -2328,7 +2328,7 @@ _0807868A: b _080787A2 .pool _080786B4: - ldr r0, =gUnknown_020228C4 + ldr r0, =gBlockSendBuffer ldr r1, =gSaveBlock1Ptr ldr r1, [r1] ldr r2, =0x000031a8 @@ -7258,7 +7258,7 @@ _0807AEAC: ldrb r0, [r0] cmp r0, 0 bne _0807AEC0 - ldr r1, =gUnknown_020229C6 + ldr r1, =gLinkType ldr r2, =0x00001144 adds r0, r2, 0 strh r0, [r1] diff --git a/data/graphics.s b/data/graphics.s index 87b983a80..72daf144f 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -682,7 +682,7 @@ gMonIcon_Egg:: @ 8D8FC74 .incbin "baserom.gba", 0xd90074, 0x1524 -gUnknown_08D91598:: @ 8D91598 +sBlenderCenterGfx:: @ 8D91598 .incbin "baserom.gba", 0xd91598, 0x820 gUnknown_08D91DB8:: @ 8D91DB8 diff --git a/data/link.s b/data/link.s index d9cf886c5..336383678 100644 --- a/data/link.s +++ b/data/link.s @@ -28,15 +28,15 @@ g2BlankTilesGfx:: @ 82ED168 .incbin "graphics/interface/blank_1x2.4bpp" gUnknown_082ED1A8:: @ 82ED1A8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000C8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000C8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x00000064 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000DC - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x00000028 gUnknown_082ED1D0:: @ 82ED1D0 @@ -224,15 +224,15 @@ gUnknown_082ED6A5:: @ 82ED6A5 .align 2 gUnknown_082ED6B8:: @ 82ED6B8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000c8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000c8 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x00000064 - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x000000dc - .4byte gUnknown_020228C4 + .4byte gBlockSendBuffer .4byte 0x00000028 .align 2 diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc index e77e4d789..d8f2f2e48 100644 --- a/data/scripts/pokeblocks.inc +++ b/data/scripts/pokeblocks.inc @@ -303,7 +303,7 @@ LilycoveCity_ContestLobby_EventScript_293CEE:: @ 8293CEE LilycoveCity_ContestLobby_EventScript_293D2C:: @ 8293D2C copyvar VAR_0x8004, VAR_0x8009 fadescreen 1 - special sub_807FA80 + special DoBerryBlending waitstate releaseall end @@ -635,7 +635,7 @@ LilycoveCity_ContestLobby_EventScript_294147:: @ 8294147 removeobject 239 removeobject 238 removeobject 237 - special sub_807FA80 + special DoBerryBlending waitstate releaseall end diff --git a/data/specials.inc b/data/specials.inc index 51bb34dff..dac9467fd 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -171,7 +171,7 @@ gSpecials:: @ 81DBA64 def_special ChangePokemonNickname def_special sub_81B94B0 def_special sub_8136EF4 - def_special sub_807FA80 + def_special DoBerryBlending def_special sub_8142BC8 def_special sub_813BD60 def_special sub_813BCA8 diff --git a/include/berry.h b/include/berry.h index f51503d41..f1f3a8afb 100644 --- a/include/berry.h +++ b/include/berry.h @@ -11,6 +11,16 @@ enum BERRY_FIRMNESS_SUPER_HARD, }; +enum +{ + FLAVOUR_SPICY, + FLAVOUR_DRY, + FLAVOUR_SWEET, + FLAVOUR_BITTER, + FLAVOUR_SOUR, + FLAVOUR_COUNT +}; + #define NUM_BERRIES 44 extern const u8 *const gBerryTreeFieldObjectGraphicsIdTablePointers[NUM_BERRIES]; diff --git a/include/decompress.h b/include/decompress.h index 36be803e0..34a678cda 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -28,4 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); +u32 sub_8034974(const u8 *ptr); + #endif // GUARD_DECOMPRESS_H diff --git a/include/flags.h b/include/flags.h index a891cc13f..1cb56a7f4 100644 --- a/include/flags.h +++ b/include/flags.h @@ -2,6 +2,7 @@ #define GUARD_FLAGS_H #define FLAG_PENDING_DAYCARE_EGG 0x86 +#define FLAG_340 0x340 #define FLAG_TRAINER_FLAG_START 0x500 diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 6cdfd13e1..659302fd5 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -406,7 +406,7 @@ void m4aSoundVSyncOff(void); void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch); +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); void ClearModM(struct MusicPlayerTrack *track); void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h new file mode 100644 index 000000000..553e7c262 --- /dev/null +++ b/include/item_menu_icons.h @@ -0,0 +1,6 @@ +#ifndef GUARD_ITEM_MENU_ICONS +#define GUARD_ITEM_MENU_ICONS + +u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3); + +#endif // GUARD_ITEM_MENU_ICONS diff --git a/include/items.h b/include/items.h index 1f6c288c5..1a6df42db 100644 --- a/include/items.h +++ b/include/items.h @@ -386,6 +386,10 @@ enum ITEM_OLD_SEA_MAP, // 0x178 }; +#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY +#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY +#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1)) + #define NUM_TECHNICAL_MACHINES 50 #define NUM_HIDDEN_MACHINES 8 diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 42b8c60b1..c52184972 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -13,5 +13,6 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); void sub_8197434(u8 a0, u8 a1); void SetStandardWindowBorderStyle(u8 a0, u8 a1); void sub_8197930(void); +u8 GetPlayerTextSpeed(void); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/battle_message.c b/src/battle_message.c index 4bd6ca5b7..1f39d5397 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -59,7 +59,7 @@ extern const u8* GetTrainer2LoseText(void); // battle_setup extern void GetFrontierTrainerName(u8 *dst, u16 trainerId); extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing); extern u8 sub_8185FC4(void); -extern u8 sav2_get_text_speed(void); +extern u8 GetPlayerTextSpeed(void); // this file's functions static void sub_814F8F8(u8 *textPtr); @@ -2266,7 +2266,7 @@ void BattleHandleAddTextPrinter(const u8 *text, u8 arg1) else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) speed = sRecordedBattleTextSpeeds[sub_8185FC4()]; else - speed = sav2_get_text_speed(); + speed = GetPlayerTextSpeed(); gTextFlags.flag_0 = 1; } diff --git a/src/berry.c b/src/berry.c index 6d1fd17a1..0c1553463 100644 --- a/src/berry.c +++ b/src/berry.c @@ -18,12 +18,6 @@ extern u16 gSpecialVar_ItemId; extern const u8 BerryTreeScript[]; -#define BERRY_NAME_LENGTH 6 - -#define FIRST_BERRY ITEM_CHERI_BERRY -#define LAST_BERRY ITEM_ENIGMA_BERRY - - static const u8 sBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); static const u8 sBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); static const u8 sBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); @@ -1062,28 +1056,28 @@ u8 GetStageByBerryTreeId(u8 id) u8 ItemIdToBerryType(u16 item) { - u16 berry = item - FIRST_BERRY; + u16 berry = item - FIRST_BERRY_INDEX; - if (berry > LAST_BERRY - FIRST_BERRY) + if (berry > LAST_BERRY_INDEX - FIRST_BERRY_INDEX) return 1; else - return item - FIRST_BERRY + 1; + return ITEM_TO_BERRY(item); } u16 BerryTypeToItemId(u16 berry) { u16 item = berry - 1; - if (item > LAST_BERRY - FIRST_BERRY) - return FIRST_BERRY; + if (item > LAST_BERRY_INDEX - FIRST_BERRY_INDEX) + return FIRST_BERRY_INDEX; else - return berry + FIRST_BERRY - 1; + return berry + FIRST_BERRY_INDEX - 1; } void GetBerryNameByBerryType(u8 berry, u8 *string) { - memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_LENGTH); - string[BERRY_NAME_LENGTH] = EOS; + memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_COUNT - 1); + string[BERRY_NAME_COUNT - 1] = EOS; } void GetBerryCountStringByBerryType(u8 berry, u8* dest, u32 berryCount) diff --git a/src/berry_blender.c b/src/berry_blender.c index 8e5a51845..f626fef91 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3,15 +3,370 @@ #include "window.h" #include "task.h" #include "sprite.h" +#include "sound.h" +#include "songs.h" +#include "m4a.h" +#include "bg.h" +#include "palette.h" +#include "decompress.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "text.h" +#include "event_data.h" +#include "main.h" +#include "link.h" +#include "new_menu_helpers.h" +#include "item_menu_icons.h" +#include "berry.h" +#include "items.h" +#include "string_util.h" // Static type declarations +#define BLENDER_SCORE_BEST 0 +#define BLENDER_SCORE_GOOD 1 +#define BLENDER_SCORE_MISS 2 -// Static RAM declarations -IWRAM_DATA void *berry_blender_c_unused_03000de4; -IWRAM_DATA s16 gUnknown_03000DE8[8]; -IWRAM_DATA s16 gUnknown_03000DF8[6]; -IWRAM_DATA s16 gUnknown_03000E04; -IWRAM_DATA s16 gUnknown_03000E06; +#define BLENDER_MAX_PLAYERS 4 +#define BLENDER_SCORES_NO 3 + +struct BlenderBerry +{ + u16 itemId; + u8 name[BERRY_NAME_COUNT]; + u8 flavours[FLAVOUR_COUNT]; + u8 smoothness; +}; + +struct BerryBlenderData +{ + u8 mainState; + u8 loadGfxState; + u8 field_02; + u8 field_03; + u8 field_04; + u8 field_05; + u8 field_06; + u8 field_07; + u8 field_08; + u8 field_09; + u8 field_0A; + u8 field_0B; + u8 field_0C; + u8 field_0D; + u8 field_0E; + u8 field_0F; + + u8 field_10; + u8 field_11; + u8 field_12; + u8 field_13; + u8 field_14; + u8 field_15; + u8 field_16; + u8 field_17; + u8 field_18; + u8 field_19; + u8 field_1A; + u8 field_1B; + u8 field_1C; + u8 field_1D; + u8 field_1E; + u8 field_1F; + + u8 field_20; + u8 field_21; + u8 field_22; + u8 field_23; + u8 field_24; + u8 field_25; + u8 field_26; + u8 field_27; + u8 field_28; + u8 field_29; + u8 field_2A; + u8 field_2B; + u8 field_2C; + u8 field_2D; + u8 field_2E; + u8 field_2F; + + u8 field_30; + u8 field_31; + u8 field_32; + u8 field_33; + u8 field_34; + u8 field_35; + u8 field_36; + u8 field_37; + u8 field_38; + u8 field_39; + u8 field_3A; + u8 field_3B; + u8 field_3C; + u8 field_3D; + u8 field_3E; + u8 field_3F; + + u8 field_40; + u8 field_41; + u8 field_42; + u8 field_43; + u8 field_44; + u8 field_45; + u8 field_46; + u8 field_47; + u8 field_48; + u8 field_49; + u16 arrowPos; + s16 field_4C; + s16 field_4E; + + u8 syncArrowSpriteIds[BLENDER_MAX_PLAYERS]; + u8 syncArrowSprite2Ids[BLENDER_MAX_PLAYERS]; + u8 field_58; + u8 field_59; + u8 field_5A; + u8 field_5B; + u8 field_5C; + u8 field_5D; + u8 field_5E; + u8 field_5F; + + u8 field_60; + u8 field_61; + u8 field_62; + u8 field_63; + u16 field_64[BLENDER_MAX_PLAYERS]; + u8 field_6C; + u8 field_6D; + u8 field_6E; + u8 field_6F; + + u16 field_70; + u8 field_72; + u8 field_73; + u16 chosenItemId[BLENDER_MAX_PLAYERS]; + u8 playersNo; + u8 field_7D; + u8 field_7E; + u8 field_7F; + + u8 field_80; + u8 field_81; + u8 field_82; + u8 field_83; + u8 field_84; + u8 field_85; + u8 field_86; + u8 field_87; + u8 field_88; + u8 field_89; + u8 field_8A; + u8 field_8B; + u8 field_8C; + u8 field_8D; + u8 field_8E; + u8 field_8F; + + u8 field_90; + u8 field_91; + u8 field_92; + u8 field_93; + u8 field_94; + u8 field_95; + u8 field_96; + u8 field_97; + u8 field_98; + u8 field_99; + u8 field_9A; + u8 field_9B; + u8 field_9C; + u8 field_9D; + u8 field_9E; + u8 field_9F; + + u8 field_A0; + u8 field_A1; + u8 field_A2; + u8 field_A3; + u8 field_A4; + u8 field_A5; + u8 field_A6; + u8 field_A7; + u8 field_A8; + u8 field_A9; + u8 field_AA; + u8 field_AB; + u8 field_AC; + u8 field_AD; + u8 field_AE; + u8 field_AF; + + u8 field_B0; + u8 field_B1; + u8 field_B2; + u8 field_B3; + u8 field_B4; + u8 field_B5; + u8 field_B6; + u8 field_B7; + u8 field_B8; + u8 field_B9; + u8 field_BA; + u8 field_BB; + u8 field_BC; + u8 field_BD; + u8 field_BE; + u8 field_BF; + + u8 field_C0; + u8 field_C1; + u8 field_C2; + u8 field_C3; + u8 field_C4; + u8 field_C5; + u8 field_C6; + u8 field_C7; + u8 field_C8; + u8 field_C9; + u8 field_CA; + u8 field_CB; + u8 field_CC; + u8 field_CD; + u8 field_CE; + u8 field_CF; + + u8 field_D0; + u8 field_D1; + u8 field_D2; + u8 field_D3; + u8 field_D4; + u8 field_D5; + u8 field_D6; + u8 field_D7; + u8 field_D8; + u8 field_D9; + u8 field_DA; + u8 field_DB; + u8 field_DC; + u8 field_DD; + u8 field_DE; + u8 field_DF; + + u8 field_E0; + u8 field_E1; + u8 field_E2; + u8 field_E3; + u8 field_E4; + u8 field_E5; + u8 field_E6; + u8 field_E7; + u8 field_E8; + u8 field_E9; + u8 field_EA; + u8 field_EB; + u8 field_EC; + u8 field_ED; + u8 field_EE; + u8 field_EF; + + u8 field_F0; + u8 field_F1; + u8 field_F2; + u8 field_F3; + u8 field_F4; + u8 field_F5; + u8 field_F6; + u8 field_F7; + u8 field_F8; + u8 field_F9; + u8 field_FA; + u8 field_FB; + u8 field_FC; + u8 field_FD; + u8 field_FE; + u8 field_FF; + + u8 field_100; + u8 field_101; + u8 field_102; + u8 field_103; + u32 gameFrameTime; + s32 framesToWait; + u32 field_10C; + + u8 field_110; + u8 field_111; + u8 field_112; + u8 field_113; + u8 field_114; + u8 field_115; + u16 field_116; + u16 field_118; + u16 field_11A; + s16 field_11C; + s16 field_11E; + + u8 field_120; + u8 field_121; + u8 field_122; + u8 field_123; + u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; + u8 field_13C; + u8 field_13D; + u8 field_13E; + u8 field_13F; + + struct BgAffineSrcData bgAffineSrc; + + u16 field_154; + u8 field_156; + u8 field_157; + struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; + u8 field_198; + u8 field_199; + u8 field_19A; + u8 field_19B; + u8 field_19C; + u8 field_19D; + u8 field_19E; + u8 field_19F; + + u8 field_1A0; + u8 field_1A1; + u8 field_1A2; + u8 field_1A3; + u8 field_1A4; + u8 field_1A5; + u8 field_1A6; + u8 field_1A7; + u8 field_1A8; + u8 field_1A9; + u8 field_1AA; + u8 field_1AB; + u8 field_1AC; + u8 field_1AD; + u8 field_1AE; + u8 field_1AF; + + u8 field_1B0; + u8 field_1B1; + u8 field_1B2; + u8 field_1B3; + u8 field_1B4; + u8 field_1B5; + u8 field_1B6; + u8 field_1B7; + u8 tilemapBuffers[2][0x800]; + s16 textState; + void *tilesBuffer; + u8 field_11C0[0x20]; +}; + +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u16 gSpecialVar_ItemId; +extern u8 gInGameOpponentsNo; // graphics extern const u8 gBerryBlenderArrowTiles[]; @@ -22,6 +377,20 @@ extern const u8 gBerryBlenderCountdownNumbersTiles[]; extern const u16 gBerryBlenderMiscPalette[]; extern const u16 gBerryBlenderArrowPalette[]; +// text +extern const u8 gText_BerryBlenderStart[]; + +extern void sub_81978B0(u16); +extern void sub_800A418(void); +extern u8 sub_800A9D8(void); +extern bool8 sub_800A4D8(u8); +extern void sub_8197DF8(u8 windowId, bool8 copyToVram); +extern void sub_809882C(u8, u16, u8); +extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8); +extern void sub_81AABF0(void (*callback)(void)); + +// this file's functions +void BerryBlender_SetGpuRegs(void); void sub_8080EA4(u8 taskId); void sub_8080FD0(u8 taskId); void sub_80810F8(u8 taskId); @@ -29,8 +398,30 @@ void sub_80833F8(struct Sprite *sprite); void sub_8082F68(struct Sprite *sprite); void sub_8083010(struct Sprite *sprite); void sub_80830C0(struct Sprite *sprite); +void Blender_SetPlayerNamesLocal(u8 opponentsNum); +void sub_807FAC8(void); +void sub_8082D28(void); +bool32 Blender_PrintText(s16 *textState, const u8 *string, u8 textSpeed); +void sub_807FFA4(void); +void sub_8080018(void); +void sub_80808D4(void); +void Blender_DummiedOutFunc(s16 a0, s16 a1); +void sub_8081898(void); +void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc); +bool8 sub_8083380(void); +void sub_808074C(void); +void sub_80807BC(void); +void sub_8080588(void); + +extern struct BerryBlenderData *sBerryBlenderData; + +// Static RAM declarations +IWRAM_DATA void *berry_blender_c_unused_03000de4; +IWRAM_DATA s16 gUnknown_03000DE8[8]; +IWRAM_DATA s16 gUnknown_03000DF8[6]; +IWRAM_DATA s16 gUnknown_03000E04; +IWRAM_DATA s16 gUnknown_03000E06; -// .rodata // TODO: make those static once the file is decompiled const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); @@ -67,6 +458,16 @@ const u8* const sBlenderOpponentsNames[] = sText_Miss }; +enum +{ + BLENDER_MISTER, + BLENDER_LADDIE, + BLENDER_LASSIE, + BLENDER_MASTER, + BLENDER_DUDE, + BLENDER_MISS +}; + static const u8 sText_PressAToStart[] = _("Press the A Button to start."); static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while."); const u8 sText_CommunicationStandby[] = _("Communication standby…"); @@ -91,7 +492,7 @@ const u8 sText_TheLevelIs[] = _("The level is "); const u8 sText_TheFeelIs[] = _(", and the feel is "); const u8 sText_Dot2[] = _("."); -const struct BgTemplate gUnknown_08339974[3] = +const struct BgTemplate sBerryBlenderBgTemplates[3] = { { .bg = 0, @@ -122,7 +523,7 @@ const struct BgTemplate gUnknown_08339974[3] = } }; -const struct WindowTemplate gUnknown_08339980[] = +static const struct WindowTemplate sBerryBlender_WindowTemplates[] = { {0, 1, 6, 7, 2, 0xE, 0x28}, {0, 0x16, 6, 7, 2, 0xE, 0x36}, @@ -143,7 +544,7 @@ const s8 gUnknown_083399C0[][2] = {-1, -1}, {1, -1}, {-1, 1}, {1, 1} }; -const u8 sBlenderSyncArrowsPos[][2] = +const u8 sBlenderSyncArrowsPos[BLENDER_MAX_PLAYERS][2] = { {72, 32}, {168, 32}, {72, 128}, {168, 128} }; @@ -594,4 +995,528 @@ static const u8 gUnknown_08339CD2[] = const struct WindowTemplate gUnknown_08339D14[] = {0, 6, 4, 0x12, 0xB, 0xF, 8}; -// .text +// code + +void Blender_ControlHitPitch(void) +{ + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, 2 * (sBerryBlenderData->field_4C - 128)); +} + +void VBlankCB0_BerryBlender(void) +{ + BerryBlender_SetGpuRegs(); + SetBgAffine(2, sBerryBlenderData->bgAffineSrc.texX, sBerryBlenderData->bgAffineSrc.texY, + sBerryBlenderData->bgAffineSrc.scrX, sBerryBlenderData->bgAffineSrc.scrY, + sBerryBlenderData->bgAffineSrc.sx, sBerryBlenderData->bgAffineSrc.sy, + sBerryBlenderData->bgAffineSrc.alpha); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +extern const u8 sBlenderCenterGfx[]; +extern const u8 gUnknown_08D91DB8[]; +extern const u8 gUnknown_08D927EC[]; + +bool8 LoadBerryBlenderGfx(void) +{ + switch (sBerryBlenderData->loadGfxState) + { + case 0: + sBerryBlenderData->tilesBuffer = AllocZeroed(sub_8034974(sBlenderCenterGfx) + 100); + LZDecompressWram(sBlenderCenterGfx, sBerryBlenderData->tilesBuffer); + sBerryBlenderData->loadGfxState++; + break; + case 1: + CopyToBgTilemapBuffer(2, sBlenderCenterMap, 0x400, 0); + CopyBgTilemapBufferToVram(2); + LoadPalette(sBlenderCenterPal, 0, 0x100); + sBerryBlenderData->loadGfxState++; + break; + case 2: + LoadBgTiles(2, sBerryBlenderData->tilesBuffer, sub_8034974(sBlenderCenterGfx), 0); + sBerryBlenderData->loadGfxState++; + break; + case 3: + LZDecompressWram(gUnknown_08D91DB8, sBerryBlenderData->tilesBuffer); + sBerryBlenderData->loadGfxState++; + break; + case 4: + LoadBgTiles(1, sBerryBlenderData->tilesBuffer, sub_8034974(gUnknown_08D91DB8), 0); + sBerryBlenderData->loadGfxState++; + break; + case 5: + LZDecompressWram(gUnknown_08D927EC, sBerryBlenderData->tilesBuffer); + sBerryBlenderData->loadGfxState++; + break; + case 6: + CopyToBgTilemapBuffer(1, sBerryBlenderData->tilesBuffer, sub_8034974(gUnknown_08D927EC), 0); + CopyBgTilemapBufferToVram(1); + sBerryBlenderData->loadGfxState++; + break; + case 7: + LoadPalette(sBlenderOuterPal, 0x80, 0x20); + sBerryBlenderData->loadGfxState++; + break; + case 8: + LoadSpriteSheet(&sSpriteSheet_BlenderArrow); + LoadSpriteSheet(&gUnknown_08339BD8); + LoadSpriteSheet(&gUnknown_08339B38); + sBerryBlenderData->loadGfxState++; + break; + case 9: + LoadSpriteSheet(&gUnknown_08339C24); + LoadSpriteSheet(&gUnknown_08339C58); + LoadSpritePalette(&sSpritePal_BlenderArrow); + LoadSpritePalette(&sSpritePal_BlenderMisc); + Free(sBerryBlenderData->tilesBuffer); + sBerryBlenderData->loadGfxState = 0; + return TRUE; + } + + return FALSE; +} + +void sub_807F9D0(void) +{ + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); + CopyBgTilemapBufferToVram(0); + ShowBg(0); + ShowBg(1); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); +} + +void InitBerryBlenderWindows(void) +{ + if (InitWindows(sBerryBlender_WindowTemplates)) + { + s32 i; + + DeactivateAllTextPrinters(); + for (i = 0; i < 5; i++) + FillWindowPixelBuffer(i, 0); + + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); + sub_81978B0(0xE0); + } +} + +void DoBerryBlending(void) +{ + if (sBerryBlenderData == NULL) + sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData)); + + sBerryBlenderData->field_63 = 0; + sBerryBlenderData->mainState = 0; + sBerryBlenderData->field_63 = 0; + + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + SetMainCallback2(sub_807FAC8); +} + +void sub_807FAC8(void) +{ + s32 i; + + switch (sBerryBlenderData->mainState) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates)); + SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]); + SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]); + sub_809882C(0, 1, 0xD0); + copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0); + InitBerryBlenderWindows(); + + sBerryBlenderData->mainState++; + sBerryBlenderData->field_118 = 0; + sBerryBlenderData->field_116 = 0; + sBerryBlenderData->field_11A = 0x50; + sBerryBlenderData->field_11C = 0; + sBerryBlenderData->field_11E = 0; + sBerryBlenderData->loadGfxState = 0; + + sub_8082D28(); + break; + case 1: + if (LoadBerryBlenderGfx()) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->syncArrowSpriteIds[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[i]], i + 8); + } + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + { + sub_800E0E8(); + sub_800DFB4(0, 0); + } + SetVBlankCallback(VBlankCB0_BerryBlender); + sBerryBlenderData->mainState++; + } + break; + case 2: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sub_8082D28(); + sBerryBlenderData->mainState++; + break; + case 3: + sub_807F9D0(); + if (!gPaletteFade.active) + sBerryBlenderData->mainState++; + break; + case 4: + if (Blender_PrintText(&sBerryBlenderData->textState, gText_BerryBlenderStart, GetPlayerTextSpeed())) + sBerryBlenderData->mainState++; + break; + case 5: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + sBerryBlenderData->mainState++; + break; + case 6: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + UnsetBgTilemapBuffer(2); + UnsetBgTilemapBuffer(1); + SetVBlankCallback(NULL); + sub_81AABF0(sub_807FFA4); + + sBerryBlenderData->mainState = 0; + } + break; + } + + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +void sub_807FD08(struct Sprite* sprite) +{ + sprite->data1 += sprite->data6; + sprite->data2 -= sprite->data4; + sprite->data2 += sprite->data7; + sprite->data0 += sprite->data7; + sprite->data4--; + + if (sprite->data0 < sprite->data2) + { + sprite->data3 = sprite->data4 = sprite->data3 - 1; + + if (++sprite->data5 > 3) + DestroySprite(sprite); + else + PlaySE(SE_TB_KARA); + } + sprite->pos1.x = sprite->data1; + sprite->pos1.y = sprite->data2; +} + +void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + sprite->data0 = a3; + sprite->data1 = a2; + sprite->data2 = a3; + sprite->data3 = a4; + sprite->data4 = 10; + sprite->data5 = 0; + sprite->data6 = a5; + sprite->data7 = a6; + sprite->callback = sub_807FD08; +} + +void sub_807FD90(u16 a0, u8 a1) +{ + u8 spriteId = sub_80D511C(a0 + 123, 0, 80, a1 & 1); + sub_807FD64(&gSprites[spriteId], gUnknown_08339C78[a1][0], gUnknown_08339C78[a1][1], gUnknown_08339C78[a1][2], gUnknown_08339C78[a1][3], gUnknown_08339C78[a1][4]); +} + +void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) +{ + const struct Berry *berryInfo = GetBerryInfo(ITEM_TO_BERRY(itemId)); + + berry->itemId = itemId; + StringCopy(berry->name, berryInfo->name); + berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; + berry->flavours[FLAVOUR_DRY] = berryInfo->dry; + berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; + berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; + berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; + berry->smoothness = berryInfo->smoothness; +} + +void Blender_SetPlayerNamesLocal(u8 opponentsNum) +{ + switch (opponentsNum) + { + case 0: + gInGameOpponentsNo = 0; + break; + case 1: + gInGameOpponentsNo = 1; + sBerryBlenderData->playersNo = 2; + StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); + + if (!FlagGet(FLAG_340)) + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MASTER]); + else + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISTER]); + + gLinkPlayers[0].language = GAME_LANGUAGE; + gLinkPlayers[1].language = GAME_LANGUAGE; + break; + case 2: + gInGameOpponentsNo = 2; + sBerryBlenderData->playersNo = 3; + StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_DUDE]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LASSIE]); + + gLinkPlayers[0].language = GAME_LANGUAGE; + gLinkPlayers[1].language = GAME_LANGUAGE; + gLinkPlayers[2].language = GAME_LANGUAGE; + break; + case 3: + gInGameOpponentsNo = 3; + sBerryBlenderData->playersNo = 4; + StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISS]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LADDIE]); + StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[BLENDER_LASSIE]); + + gLinkPlayers[0].language = GAME_LANGUAGE; + gLinkPlayers[1].language = GAME_LANGUAGE; + gLinkPlayers[2].language = GAME_LANGUAGE; + gLinkPlayers[3].language = GAME_LANGUAGE; + break; + } +} + +void sub_807FFA4(void) +{ + s32 i; + + SetGpuReg(REG_OFFSET_DISPCNT, 0); + if (sBerryBlenderData == NULL) + sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData)); + + sBerryBlenderData->mainState = 0; + sBerryBlenderData->field_10C = 0; + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + sBerryBlenderData->chosenItemId[i] = ITEM_NONE; + + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + + if (gSpecialVar_0x8004 == 0) + SetMainCallback2(sub_8080018); + else + SetMainCallback2(sub_80808D4); +} + +void sub_8080018(void) +{ + s32 i, j; + + switch (sBerryBlenderData->mainState) + { + case 0: + sub_8080588(); + gLinkType = 0x4422; + sBerryBlenderData->field_72 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_64[i] = 0; + for (j = 0; j < 3; j++) + { + sBerryBlenderData->scores[i][j] = 0; + } + } + sBerryBlenderData->field_70 = 0; + sBerryBlenderData->field_4E = 0; + sBerryBlenderData->loadGfxState = 0; + sBerryBlenderData->mainState++; + break; + case 1: + if (LoadBerryBlenderGfx()) + { + sBerryBlenderData->mainState++; + sub_8082D28(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8); + } + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + { + sub_800E0E8(); + sub_800DFB4(0, 0); + } + sBerryBlenderData->mainState++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sBerryBlenderData->mainState++; + break; + case 4: + sub_807F9D0(); + if (!gPaletteFade.active) + { + sBerryBlenderData->mainState++; + } + break; + case 5: + Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, 0); + sBerryBlenderData->mainState = 8; + sBerryBlenderData->framesToWait = 0; + break; + case 8: + sBerryBlenderData->mainState++; + sBerryBlenderData->field_114 = 0; + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); + memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + sub_800ADF8(); + sBerryBlenderData->framesToWait = 0; + break; + case 9: + if (sub_800A520()) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() == 0) + sub_800A4D8(4); + sBerryBlenderData->mainState++; + } + break; + case 10: + if (++sBerryBlenderData->framesToWait > 20) + { + sub_8197DF8(4, TRUE); + if (GetBlockReceivedStatus() == sub_800A9D8()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + sBerryBlenderData->chosenItemId[i] = sBerryBlenderData->blendedBerries[i].itemId; + } + + ResetBlockReceivedFlags(); + sBerryBlenderData->mainState++; + } + } + break; + case 11: + sBerryBlenderData->playersNo = GetLinkPlayerCount(); + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_114 == gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]) + { + sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); + break; + } + } + + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + sBerryBlenderData->field_114++; + break; + case 12: + if (++sBerryBlenderData->framesToWait > 60) + { + if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) + { + sBerryBlenderData->mainState++; + sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; + } + else + { + sBerryBlenderData->mainState--; + } + sBerryBlenderData->framesToWait = 0; + } + break; + case 13: + if (sub_800A520()) + { + sBerryBlenderData->mainState++; + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + PlaySE(SE_RU_HYUU); + ShowBg(2); + } + break; + case 14: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); + sBerryBlenderData->arrowPos += 0x200; + sBerryBlenderData->field_11A += 4; + if (sBerryBlenderData->field_11A > 255) + { + SetGpuRegBits(REG_OFFSET_BG2CNT, 2); + sBerryBlenderData->mainState++; + sBerryBlenderData->field_11A = 256; + sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; + sBerryBlenderData->framesToWait = 0; + PlaySE(SE_TRACK_DOOR); + sub_808074C(); + sub_80807BC(); + } + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + break; + case 15: + if (sub_8083380()) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + } + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + break; + case 16: + CreateSprite(&gUnknown_08339C2C, 120, -16, 3); + sBerryBlenderData->mainState++; + break; + case 18: + sBerryBlenderData->mainState++; + break; + case 19: + sub_800ADF8(); + sBerryBlenderData->mainState++; + break; + case 20: + if (sub_800A520()) + { + sub_800A418(); + sBerryBlenderData->mainState++; + } + break; + case 21: + sBerryBlenderData->field_4C = 128; + sBerryBlenderData->gameFrameTime = 0; + SetMainCallback2(sub_8081898); + if (GetCurrentMapMusic() != BGM_CYCLING) + { + sBerryBlenderData->field_154 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + break; + } + + Blender_DummiedOutFunc(sBerryBlenderData->field_11C, sBerryBlenderData->field_11E); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} diff --git a/src/decompress.c b/src/decompress.c index 9210799ec..e2ae6ce83 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -459,10 +459,9 @@ _08034964:\n\ .syntax divided"); } -u32 sub_8034974(void* ptr) +u32 sub_8034974(const u8 *ptr) { - u8* ptr_ = (u8*)(ptr); - return (ptr_[3] << 16) | (ptr_[2] << 8) | (ptr_[1]); + return (ptr[3] << 16) | (ptr[2] << 8) | (ptr[1]); } bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src) diff --git a/src/m4a_4.c b/src/m4a_4.c index 99195ec00..e645fbef5 100644 --- a/src/m4a_4.c +++ b/src/m4a_4.c @@ -45,7 +45,7 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 mplayInfo->ident = ID_NUMBER; } -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch) +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) { s32 i; u32 bit; @@ -66,7 +66,7 @@ void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 { if (track->flags & MPT_FLG_EXIST) { - track->keyShiftX = (s16)pitch >> 8; + track->keyShiftX = pitch >> 8; track->pitX = pitch; track->flags |= MPT_FLG_PITCHG; } diff --git a/sym_common.txt b/sym_common.txt index 1a199dbb3..82248165d 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -248,7 +248,7 @@ gSaveBlock2Ptr: @ 3005D90 gPokemonStoragePtr: @ 3005D94 .space 0x4 -gUnknown_03005D98: @ 3005D98 +gInGameOpponentsNo: @ 3005D98 .space 0x4 gUnknown_03005D9C: @ 3005D9C diff --git a/sym_ewram.txt b/sym_ewram.txt index f037d9ace..088ca2746 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -34,13 +34,13 @@ gUnknown_020223C0: @ 20223C0 gBlockRecvBuffer: @ 20223C4 .space 0x500 -gUnknown_020228C4: @ 20228C4 gBlockSendBuffer +gBlockSendBuffer: @ 20228C4 gBlockSendBuffer .space 0x100 gUnknown_020229C4: @ 20229C4 .space 0x2 -gUnknown_020229C6: @ 20229C6 +gLinkType: @ 20229C6 .space 0x2 gUnknown_020229C8: @ 20229C8 @@ -571,7 +571,7 @@ gUnknown_0203229C: @ 203229C gUnknown_020322A0: @ 20322A0 .space 0x4 -gUnknown_020322A4: @ 20322A4 +sBerryBlenderData: @ 20322A4 .space 0x4 gUnknown_020322A8: @ 20322A8 -- cgit v1.2.3 From 185402fe213935c577a64684e28df2a8850066c1 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 18 Nov 2017 21:38:57 +0100 Subject: more work on berry blender --- asm/berry_blender.s | 1834 +-------------------------------------------------- asm/link.s | 136 ++-- include/link.h | 3 +- src/berry_blender.c | 686 ++++++++++++++++++- sym_common.txt | 4 +- 5 files changed, 764 insertions(+), 1899 deletions(-) diff --git a/asm/berry_blender.s b/asm/berry_blender.s index e0571c653..bb9eb72ae 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -7,1773 +7,7 @@ - thumb_func_start sub_8080588 -sub_8080588: @ 8080588 - push {r4,lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, =VBlankCB0_BerryBlender - bl SetVBlankCallback - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =sBerryBlenderBgTemplates - movs r0, 0x1 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, =sBerryBlenderData - ldr r1, [r4] - movs r0, 0xDC - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r3, =0x000009b8 - adds r1, r3 - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r0, 0 - movs r1, 0x1 - movs r2, 0xD0 - bl sub_809882C - movs r0, 0 - movs r1, 0x14 - movs r2, 0xF0 - bl copy_textbox_border_tile_patterns_to_vram - bl InitBerryBlenderWindows - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x44 - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - movs r3, 0x8E - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080588 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 8080624 - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0x96 - adds r0, r1 - ldrb r0, [r0] - ldr r1, =gUnknown_083399E7 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0808066C - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0808066C - subs r0, 0x1C - cmp r2, r0 - bcc _08080668 - adds r0, 0x8 - cmp r2, r0 - bcs _08080668 - movs r0, 0x2 - b _0808066E - .pool -_08080668: - movs r0, 0x1 - b _0808066E -_0808066C: - movs r0, 0 -_0808066E: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_8080674 -sub_8080674: @ 8080674 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r6, 0 - cmp r5, 0xAF - bne _080806AC - movs r4, 0 - subs r7, r1, 0x1 - adds r2, 0x9 -_08080690: - adds r0, r2, r6 - adds r1, r2, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0808069E - adds r6, r4, 0 -_0808069E: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08080690 - adds r0, r6, 0x5 - b _080806C4 -_080806AC: - adds r0, r5, 0 - subs r0, 0x85 - lsls r0, 16 - lsrs r6, r0, 16 - subs r7, r1, 0x1 - cmp r6, 0x4 - bls _080806C8 - adds r0, r6, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_080806C4: - lsls r0, 16 - lsrs r6, r0, 16 -_080806C8: - movs r4, 0 - cmp r4, r7 - bge _08080734 - ldr r0, =gUnknown_08339CA0 - mov r9, r0 - adds r0, r5, 0 - subs r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_080806DC: - lsls r0, r6, 1 - adds r0, r6 - adds r0, r4, r0 - add r0, r9 - ldrb r5, [r0] - movs r0, 0xD0 - lsls r0, 2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0808071A - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x1 - bne _0808071A - adds r0, r6, 0 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, =gUnknown_08339CBE - adds r0, r6, r0 - ldrb r5, [r0] - mov r0, r8 - cmp r0, 0x4 - bhi _0808071A - subs r0, r5, 0x5 - lsls r0, 16 - lsrs r5, r0, 16 -_0808071A: - adds r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r5, 0 - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_8082FDC - lsls r4, 16 - lsrs r4, 16 - cmp r4, r7 - blt _080806DC -_08080734: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080674 - - thumb_func_start sub_808074C -sub_808074C: @ 808074C - push {r4-r7,lr} - movs r4, 0 - ldr r7, =sBerryBlenderData - movs r6, 0xFF - ldr r5, =gUnknown_083399D0 -_08080756: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0x96 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x8E - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _08080756 - movs r3, 0 - ldr r7, =sBerryBlenderData -_08080784: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0808078A: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x8E - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _080807A2 - adds r0, r2, 0 - adds r0, 0x96 - adds r0, r5 - strh r4, [r0] -_080807A2: - adds r4, 0x1 - cmp r4, 0x3 - ble _0808078A - adds r3, r6, 0 - cmp r3, 0x3 - ble _08080784 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_808074C - - thumb_func_start sub_80807BC -sub_80807BC: @ 80807BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r0, 0 - mov r10, r0 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080807DE - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_080807DE: - movs r6, 0 - ldr r7, =sBerryBlenderData - mov r8, r6 -_080807E4: - ldr r2, [r7] - lsls r5, r6, 1 - adds r0, r2, 0 - adds r0, 0x8E - adds r3, r0, r5 - ldrh r0, [r3] - cmp r0, 0xFF - beq _080808B6 - adds r1, r2, 0 - adds r1, 0x50 - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x54 - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - mov r9, r2 - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x8E - adds r1, r5 - adds r0, 0x50 - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - mov r1, r8 - lsrs r4, r1, 24 - adds r1, r4, 0 - bl StartSpriteAnim - add r1, sp, 0x8 - movs r0, 0xFF - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x8E - adds r0, r5 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, =gLinkPlayers + 8 - adds r1, r0 - add r0, sp, 0x8 - bl StringCopy - movs r0, 0x1 - add r1, sp, 0x8 - movs r2, 0x38 - bl GetStringCenterAlignXOffset - adds r2, r0, 0 - ldr r0, [r7] - adds r0, 0x8E - adds r0, r5 - mov r5, r8 - ldrh r0, [r0] - cmp r10, r0 - bne _08080890 - lsls r2, 24 - lsrs r2, 24 - mov r0, r9 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - adds r0, r4, 0 - add r1, sp, 0x8 - movs r3, 0x1 - bl sub_80840D4 - b _080808A6 - .pool -_08080890: - lsls r2, 24 - lsrs r2, 24 - mov r1, r9 - str r1, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r4, 0 - add r1, sp, 0x8 - movs r3, 0x1 - bl sub_80840D4 -_080808A6: - lsrs r4, r5, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram -_080808B6: - movs r2, 0x80 - lsls r2, 17 - add r8, r2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080807E4 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80807BC - - thumb_func_start sub_80808D4 -sub_80808D4: @ 80808D4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x15 - bls _080808E6 - b _08080DAE -_080808E6: - lsls r0, 2 - ldr r1, =_080808F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080808F8: - .4byte _08080950 - .4byte _080809E4 - .4byte _08080A04 - .4byte _08080A58 - .4byte _08080A84 - .4byte _08080DAE - .4byte _08080DAE - .4byte _08080DAE - .4byte _08080ABC - .4byte _08080DAE - .4byte _08080DAE - .4byte _08080AEC - .4byte _08080B3C - .4byte _08080BB0 - .4byte _08080BDC - .4byte _08080C78 - .4byte _08080CA0 - .4byte _08080DAE - .4byte _08080CAE - .4byte _08080CAE - .4byte _08080CAE - .4byte _08080CC4 -_08080950: - bl sub_800B4C0 - bl sub_8080588 - ldr r4, =gSpecialVar_ItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_8082FDC - ldr r5, =sBerryBlenderData - ldr r0, [r5] - movs r6, 0xAC - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl Blender_CopyBerryData - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x7C - ldrb r1, [r1] - adds r2, r6 - bl sub_8080674 - movs r4, 0 - movs r6, 0 - ldr r0, =gLinkType - mov r12, r0 - movs r7, 0x92 - lsls r7, 1 -_0808098E: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x64 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_080809A0: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080809A0 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0808098E - ldr r4, =sBerryBlenderData - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0x70 - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - ldr r1, =0x00004422 - adds r0, r1, 0 - mov r2, r12 - strh r0, [r2] - ldr r1, [r4] - b _08080CB2 - .pool -_080809E4: - bl LoadBerryBlenderGfx - lsls r0, 24 - cmp r0, 0 - bne _080809F0 - b _08080DAE -_080809F0: - ldr r0, =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8082D28 - b _08080DAE - .pool -_08080A04: - movs r4, 0 - ldr r5, =sBlenderSyncArrowsPos - ldr r6, =sBerryBlenderData -_08080A0A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, =sBlenderSyncArrow_SpriteTemplate - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x54 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x54 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _08080A0A - b _08080CAE - .pool -_08080A58: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, =sBerryBlenderData - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x84 - lsls r3, 1 - adds r0, r3 - str r4, [r0] - b _08080DAE - .pool -_08080A84: - ldr r4, =sBerryBlenderData - ldr r1, [r4] - movs r5, 0x84 - lsls r5, 1 - adds r1, r5 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _08080A9C - bl sub_807F9D0 -_08080A9C: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08080AAA - b _08080DAE -_08080AAA: - ldr r1, [r4] - movs r0, 0x8 - strb r0, [r1] - b _08080DAE - .pool -_08080ABC: - ldr r2, =sBerryBlenderData - ldr r1, [r2] - movs r3, 0 - movs r0, 0xB - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x8A - lsls r1, 1 - adds r0, r1 - strb r3, [r0] - b _08080DAE - .pool -_08080AD8: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x74 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_807FD90 - b _08080B16 -_08080AEC: - movs r4, 0 - ldr r2, =gUnknown_083399D0 - ldr r0, =sBerryBlenderData - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x8A - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_08080B08: - ldrb r2, [r0] - cmp r1, r2 - beq _08080AD8 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _08080B08 -_08080B16: - ldr r3, =sBerryBlenderData - ldr r1, [r3] - movs r5, 0x84 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x8A - lsls r0, 1 - adds r1, r0 - b _08080CB2 - .pool -_08080B3C: - ldr r3, [r2] - movs r2, 0x84 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08080B50 - b _08080DAE -_08080B50: - movs r5, 0x8A - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x7C - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _08080B94 - ldr r2, =gUnknown_083399DC - ldr r1, =gUnknown_083399E4 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x4A - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _08080B98 - .pool -_08080B94: - ldrb r0, [r3] - subs r0, 0x1 -_08080B98: - strb r0, [r3] - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r3, 0x84 - lsls r3, 1 - adds r0, r3 - movs r1, 0 - str r1, [r0] - b _08080DAE - .pool -_08080BB0: - ldr r4, =sBerryBlenderData - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_808074C - movs r0, 0x2B - bl PlaySE - ldr r0, [r4] - movs r5, 0xA0 - lsls r5, 1 - adds r0, r5 - bl sub_8082CB4 - movs r0, 0x2 - bl ShowBg - b _08080DAE - .pool -_08080BDC: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl SetGpuRegBits - ldr r4, =sBerryBlenderData - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x4A - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0x8D - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _08080C5C - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r3, [r4] - movs r2, 0x8D - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, =gUnknown_083399DC - ldr r1, =gUnknown_083399E4 - adds r0, r3, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x4A - strh r1, [r0] - movs r0, 0xC - movs r1, 0x2 - bl SetGpuRegBits - ldr r0, [r4] - movs r3, 0x84 - lsls r3, 1 - adds r0, r3 - movs r1, 0 - str r1, [r0] - movs r0, 0x34 - bl PlaySE - bl sub_80807BC -_08080C5C: - ldr r0, [r4] - movs r5, 0xA0 - lsls r5, 1 - adds r0, r5 - bl sub_8082CB4 - b _08080DAE - .pool -_08080C78: - bl sub_8083380 - lsls r0, 24 - cmp r0, 0 - beq _08080C8C - ldr r0, =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08080C8C: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 1 - adds r0, r1 - bl sub_8082CB4 - b _08080DAE - .pool -_08080CA0: - ldr r0, =gUnknown_08339C2C - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite -_08080CAE: - ldr r0, =sBerryBlenderData - ldr r1, [r0] -_08080CB2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08080DAE - .pool -_08080CC4: - bl sub_8080DF8 - ldr r5, =sBerryBlenderData - ldr r4, [r5] - adds r1, r4, 0 - adds r1, 0x4C - movs r3, 0 - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - movs r1, 0x82 - lsls r1, 1 - adds r0, r4, r1 - str r2, [r0] - ldr r2, =0x00000123 - adds r0, r4, r2 - strb r3, [r0] - ldr r0, [r5] - adds r0, 0x72 - strb r3, [r0] - ldr r0, =sub_8081898 - bl SetMainCallback2 - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x1 - bne _08080D44 - movs r0, 0xD0 - lsls r0, 2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08080D30 - ldr r0, =sub_8081224 - movs r1, 0xA - bl CreateTask - ldr r1, [r5] - movs r3, 0x90 - lsls r3, 1 - adds r1, r3 - b _08080D42 - .pool -_08080D30: - ldr r0, =gUnknown_083399EC - ldr r0, [r0] - movs r1, 0xA - bl CreateTask - ldr r1, [r5] - movs r5, 0x90 - lsls r5, 1 - adds r1, r5 -_08080D42: - strb r0, [r1] -_08080D44: - ldr r1, =gSpecialVar_0x8004 - ldrh r0, [r1] - cmp r0, 0x1 - bls _08080D80 - movs r4, 0 - ldrh r1, [r1] - cmp r4, r1 - bge _08080D80 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, =gUnknown_083399EC -_08080D5A: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, =sBerryBlenderData - ldr r1, [r1] - movs r2, 0x90 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _08080D5A -_08080D80: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, =0x00000193 - cmp r0, r4 - beq _08080D9E - bl GetCurrentMapMusic - ldr r1, =sBerryBlenderData - ldr r1, [r1] - movs r5, 0xAA - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_08080D9E: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl Blender_ControlHitPitch -_08080DAE: - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - movs r5, 0x8F - lsls r5, 1 - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl Blender_DummiedOutFunc - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80808D4 - - thumb_func_start sub_8080DF8 -sub_8080DF8: @ 8080DF8 - push {lr} - ldr r3, =gUnknown_03003110 - movs r0, 0 - ldr r1, =gUnknown_03003090 - movs r2, 0x3 -_08080E02: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x4] - adds r1, 0x10 - subs r2, 0x1 - cmp r2, 0 - bge _08080E02 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080DF8 - - thumb_func_start sub_8080E20 -sub_8080E20: @ 8080E20 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _08080E58 - ldr r0, =gUnknown_03003090 - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 4 - adds r0, 0x4 - adds r1, r0 - ldr r0, =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_08080E58: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080E20 - - thumb_func_start sub_8080E6C -sub_8080E6C: @ 8080E6C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =sub_8080E20 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080E6C - - thumb_func_start sub_8080EA4 -sub_8080EA4: @ 8080EA4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x4A - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08080EC2 - b _08080FB8 -_08080EC2: - ldr r2, =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _08080ED8 - b _08080FC6 -_08080ED8: - ldr r0, [r4] - ldr r1, =0x00000123 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08080F9A - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x4C - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, =0x000001f3 - cmp r2, r0 - bgt _08080F40 - cmp r1, 0x4B - bls _08080F2C - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 - b _08080F30 - .pool -_08080F2C: - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 -_08080F30: - strh r0, [r1, 0x14] - ldr r0, =0x00005432 - b _08080F9E - .pool -_08080F40: - ldr r0, =0x000005db - cmp r2, r0 - bgt _08080F6E - cmp r1, 0x50 - bhi _08080F9A - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _08080F68 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 - b _08080F9E - .pool -_08080F68: - cmp r1, 0x9 - bhi _08080FA0 - b _08080F90 -_08080F6E: - cmp r1, 0x5A - bhi _08080F9A - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _08080F8C - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 - b _08080F9E - .pool -_08080F8C: - cmp r3, 0x1D - bhi _08080FA0 -_08080F90: - movs r0, 0x1 - movs r1, 0x5 - bl sub_8080E6C - b _08080FA0 -_08080F9A: - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 -_08080F9E: - strh r0, [r1, 0x14] -_08080FA0: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _08080FC4 - .pool -_08080FB8: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_08080FC4: - strh r0, [r1, 0x8] -_08080FC6: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080EA4 - - thumb_func_start sub_8080FD0 -sub_8080FD0: @ 8080FD0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, =sBerryBlenderData - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x4A - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0x9A - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, =gUnknown_083399E7 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _080810E0 - adds r0, 0x14 - cmp r2, r0 - bcs _080810E0 - ldr r2, =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _080810EE - ldr r1, =0x00000123 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080810CC - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x4C - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, =0x000001f3 - cmp r1, r0 - bgt _08081088 - cmp r2, 0x42 - bls _08081078 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 - strh r0, [r1, 0x24] - b _080810B0 - .pool -_08081078: - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 - strh r0, [r1, 0x24] - b _080810B0 - .pool -_08081088: - cmp r2, 0x41 - bls _08081092 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 - strh r0, [r1, 0x24] -_08081092: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _080810A4 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 - strh r0, [r1, 0x24] -_080810A4: - cmp r3, 0x9 - bhi _080810B0 - movs r0, 0x2 - movs r1, 0x5 - bl sub_8080E6C -_080810B0: - ldr r0, =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _080810EC - .pool -_080810CC: - ldr r0, =gUnknown_03003090 - ldr r1, =0x00004523 - strh r1, [r0, 0x24] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _080810EE - .pool -_080810E0: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_080810EC: - strh r0, [r1, 0x8] -_080810EE: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8080FD0 - - thumb_func_start sub_80810F8 -sub_80810F8: @ 80810F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, =sBerryBlenderData - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x4A - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0x9C - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, =gUnknown_083399E7 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0808120C - adds r0, 0x14 - cmp r2, r0 - bcs _0808120C - ldr r2, =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0808121A - ldr r1, =0x00000123 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080811F8 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x4C - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, =0x000001f3 - cmp r1, r0 - bgt _080811AC - cmp r2, 0x58 - bls _0808119C - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 - strh r0, [r1, 0x34] - b _080811DE - .pool -_0808119C: - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 - strh r0, [r1, 0x34] - b _080811DE - .pool -_080811AC: - cmp r2, 0x3C - bls _080811C0 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00004523 - b _080811D0 - .pool -_080811C0: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080811D2 - ldr r1, =gUnknown_03003090 - ldr r0, =0x00005432 -_080811D0: - strh r0, [r1, 0x34] -_080811D2: - cmp r2, 0x4 - bhi _080811DE - movs r0, 0x3 - movs r1, 0x5 - bl sub_8080E6C -_080811DE: - ldr r0, =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _08081218 - .pool -_080811F8: - ldr r0, =gUnknown_03003090 - ldr r1, =0x00004523 - strh r1, [r0, 0x34] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0808121A - .pool -_0808120C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_08081218: - strh r0, [r1, 0x8] -_0808121A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80810F8 - - thumb_func_start sub_8081224 -sub_8081224: @ 8081224 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x4A - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08081270 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r2, r1, r0 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0808127E - ldr r0, =gUnknown_03003090 - ldr r1, =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0808127E - .pool -_08081270: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x8] -_0808127E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081224 - - thumb_func_start sub_8081288 -sub_8081288: @ 8081288 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, =gUnknown_08339B40 - ldr r4, =sBlenderSyncArrowsPos - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, =gUnknown_083399C0 - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, =0x00004523 - cmp r7, r0 - bne _08081314 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, =sub_8082F9C - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _08081358 - .pool -_08081314: - ldr r0, =0x00005432 - cmp r7, r0 - bne _0808133C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _08081358 - .pool -_0808133C: - ldr r0, =0x00002345 - cmp r8, r0 - bne _08081358 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_08081358: - bl sub_8082E84 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081288 - - thumb_func_start sub_8081370 -sub_8081370: @ 8081370 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl Blender_ControlHitPitch - ldr r0, =0x00004523 - cmp r4, r0 - beq _080813A4 - cmp r4, r0 - bgt _08081398 - ldr r0, =0x00002345 - cmp r4, r0 - beq _08081474 - b _080814A0 - .pool -_08081398: - ldr r0, =0x00005432 - cmp r5, r0 - beq _0808143C - b _080814A0 - .pool -_080813A4: - ldr r7, =sBerryBlenderData - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x4C - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, =0x000005db - cmp r1, r0 - bgt _080813E0 - ldr r1, =gUnknown_08339CC3 - adds r0, r4, 0 - adds r0, 0x7C - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _080814A0 - .pool -_080813E0: - ldr r1, =gUnknown_08339CC3 - adds r0, r4, 0 - adds r0, 0x7C - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0x8E - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80832BC - ldr r0, [r7] - movs r1, 0x8F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x4C - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80832BC - b _080814A0 - .pool -_0808143C: - ldr r0, =sBerryBlenderData - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x4C - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, =0x000005db - cmp r1, r0 - bgt _080814A0 - ldr r1, =gUnknown_08339CC3 - adds r0, r2, 0 - adds r0, 0x7C - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0808149E - .pool -_08081474: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x4C - ldr r1, =gUnknown_08339CC3 - adds r0, 0x7C - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _080814A0 - movs r0, 0x80 -_0808149E: - strh r0, [r4] -_080814A0: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081370 - thumb_func_start sub_80814B0 -sub_80814B0: @ 80814B0 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080814E4 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _080814E4 - movs r0, 0xFF - lsls r0, 8 - ands r0, r3 - cmp r0, r2 - bne _080814EC - movs r0, 0x1 - b _080814EE - .pool -_080814E4: - cmp r3, r1 - bne _080814EC - movs r0, 0x1 - b _080814EE -_080814EC: - movs r0, 0 -_080814EE: - pop {r1} - bx r1 - thumb_func_end sub_80814B0 thumb_func_start sub_80814F4 sub_80814F4: @ 80814F4 @@ -1787,9 +21,9 @@ sub_80814F4: @ 80814F4 ldrh r0, [r0] cmp r0, 0 beq _0808153C - ldr r3, =gUnknown_03003110 + ldr r3, =gSendCmd ldrh r0, [r3, 0x4] - ldr r2, =gUnknown_03003090 + ldr r2, =gRecvCmds cmp r0, 0 beq _0808151C movs r1, 0 @@ -1798,7 +32,7 @@ sub_80814F4: @ 80814F4 strh r0, [r2] strh r1, [r3, 0x4] _0808151C: - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds ldr r3, =0x00004444 adds r1, r2, 0 adds r1, 0x10 @@ -1826,7 +60,7 @@ _0808153C: blt _0808154C b _080816F6 _0808154C: - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r2, r0, 0 adds r2, 0x20 str r2, [sp] @@ -2022,7 +256,7 @@ _080816F6: cmp r7, r0 bge _08081722 movs r2, 0 - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds _08081710: strh r2, [r1] strh r2, [r1, 0x4] @@ -2123,24 +357,24 @@ _080817BA: adds r0, 0x4A ldrh r0, [r0] adds r1, r6, 0 - bl task_tutorial_oak_boy_girl + bl sub_8080624 lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _08081810 - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r0, =0x00004523 b _08081828 .pool _08081810: cmp r0, 0x1 bne _08081824 - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r0, =0x00005432 b _08081828 .pool _08081824: - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r0, =0x00002345 _08081828: strh r0, [r1, 0x4] @@ -3593,7 +1827,7 @@ _0808239E: b _0808249E .pool _080823B0: - ldr r6, =gUnknown_03003110 + ldr r6, =gSendCmd adds r0, r6, 0 bl sub_8081F94 ldr r4, =sBerryBlenderData @@ -4389,7 +2623,7 @@ sub_8082AD4: @ 8082AD4 bne _08082AE0 b _08082CA4 _08082AE0: - ldr r4, =gUnknown_03003090 + ldr r4, =gRecvCmds ldrh r0, [r4] ldr r1, =0x00002fff movs r2, 0xBC @@ -4468,7 +2702,7 @@ _08082B8A: b _08082BF4 .pool _08082B9C: - ldr r6, =gUnknown_03003090 + ldr r6, =gRecvCmds lsls r4, r5, 4 adds r0, r4, r6 ldrh r0, [r0] @@ -4563,7 +2797,7 @@ _08082C4E: cmp r0, r4 beq _08082C48 _08082C6A: - ldr r4, =gUnknown_03003110 + ldr r4, =gSendCmd adds r0, r4, 0 bl sub_8081F94 bl GetLinkPlayerCount @@ -4686,7 +2920,7 @@ _08082D3C: ldrh r1, [r2] adds r0, r1 strh r0, [r2] - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd movs r4, 0x8B lsls r4, 1 adds r0, r3, r4 @@ -4701,7 +2935,7 @@ _08082D3C: b _08082DEA .pool _08082D90: - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -4993,8 +3227,8 @@ _08082FD4: .pool thumb_func_end sub_8082F9C - thumb_func_start sub_8082FDC -sub_8082FDC: @ 8082FDC + thumb_func_start Blender_SetBankBerryData +Blender_SetBankBerryData: @ 8082FDC push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -5018,7 +3252,7 @@ sub_8082FDC: @ 8082FDC pop {r0} bx r0 .pool - thumb_func_end sub_8082FDC + thumb_func_end Blender_SetBankBerryData thumb_func_start sub_8083010 sub_8083010: @ 8083010 @@ -5707,7 +3941,7 @@ _08083518: movs r0, 0x5 adds r1, r4, 0 movs r3, 0x1 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, =sBerryBlenderData ldr r0, [r1] adds r2, r0, 0 @@ -5772,7 +4006,7 @@ _08083564: movs r0, 0x5 movs r2, 0x8 adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [r7] adds r0, r1, 0 adds r0, 0x9F @@ -5802,7 +4036,7 @@ _08083564: movs r0, 0x5 movs r2, 0x54 adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter movs r1, 0x10 add r9, r1 mov r2, r8 @@ -5824,7 +4058,7 @@ _0808361A: movs r0, 0x5 movs r2, 0 movs r3, 0x51 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r6, =sBerryBlenderData ldr r0, [r6] adds r4, r0, 0 @@ -5879,7 +4113,7 @@ _0808361A: str r0, [sp, 0x4] movs r0, 0x5 movs r3, 0x51 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, =sText_Time mov r2, r10 str r2, [sp] @@ -5888,7 +4122,7 @@ _0808361A: movs r0, 0x5 movs r2, 0 movs r3, 0x61 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r5, [r6] movs r1, 0x82 lsls r1, 1 @@ -5941,7 +4175,7 @@ _0808361A: str r0, [sp, 0x4] movs r0, 0x5 movs r3, 0x61 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [r6] movs r3, 0x84 lsls r3, 1 @@ -6473,7 +4707,7 @@ _08083B9A: movs r0, 0x5 adds r1, r4, 0 movs r3, 0x1 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, =gUnknown_08339B40 mov r8, r1 mov r0, r8 @@ -6604,7 +4838,7 @@ _08083C84: movs r0, 0x5 movs r2, 0 adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [r7] adds r0, r1, 0 adds r0, 0x9F @@ -6628,7 +4862,7 @@ _08083C84: movs r0, 0x5 movs r2, 0x4E adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [r7] adds r0, r1, 0 adds r0, 0x9F @@ -6649,7 +4883,7 @@ _08083C84: movs r0, 0x5 movs r2, 0x6E adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [r7] adds r0, r1, 0 adds r0, 0x9F @@ -6670,7 +4904,7 @@ _08083C84: movs r0, 0x5 movs r2, 0x8E adds r3, r6, 0 - bl sub_80840D4 + bl Blender_AddTextPrinter ldr r1, [sp, 0x8] adds r1, 0x10 str r1, [sp, 0x8] @@ -7054,8 +5288,8 @@ _080840C6: bx r1 thumb_func_end sub_8083F94 - thumb_func_start sub_80840D4 -sub_80840D4: @ 80840D4 + thumb_func_start Blender_AddTextPrinter +Blender_AddTextPrinter: @ 80840D4 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -7145,7 +5379,7 @@ _08084148: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_80840D4 + thumb_func_end Blender_AddTextPrinter thumb_func_start Blender_PrintText Blender_PrintText: @ 808417C @@ -7173,7 +5407,7 @@ _08084194: adds r1, r7, 0 movs r2, 0 movs r3, 0x1 - bl sub_80840D4 + bl Blender_AddTextPrinter movs r0, 0x4 bl PutWindowTilemap movs r0, 0x4 diff --git a/asm/link.s b/asm/link.s index 9d6adff34..92fc95102 100644 --- a/asm/link.s +++ b/asm/link.s @@ -339,7 +339,7 @@ sub_80096BC: @ 80096BC sub_80096D0: @ 80096D0 push {lr} ldr r3, =gUnknown_020229C4 - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r2, =0x0000efff adds r0, r1, 0 adds r0, 0xE @@ -685,7 +685,7 @@ sub_80099E0: @ 80099E0 _080099F4: movs r1, 0 ldr r5, =gUnknown_03003084 - ldr r3, =gUnknown_03003110 + ldr r3, =gSendCmd movs r2, 0 _080099FC: lsls r0, r1, 1 @@ -781,7 +781,7 @@ _08009AAE: movs r0, 0 strh r0, [r3] lsls r4, r6, 4 - ldr r5, =gUnknown_03003090 + ldr r5, =gRecvCmds adds r2, r4, r5 ldrh r0, [r2] mov r12, r1 @@ -901,12 +901,12 @@ _08009BC4: adds r1, r0 movs r2, 0 strh r2, [r1] - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] strh r0, [r1, 0x2] - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x4 adds r0, r4, r0 ldrh r0, [r0] @@ -930,7 +930,7 @@ _08009BF0: mov r8, r0 movs r2, 0 adds r5, r3, 0 - ldr r7, =gUnknown_03003090 + ldr r7, =gRecvCmds adds r3, r4, 0 _08009C14: ldrh r1, [r5] @@ -955,7 +955,7 @@ _08009C40: ldr r1, =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds mov r8, r3 lsls r5, r6, 8 adds r3, r4, 0 @@ -1069,7 +1069,7 @@ _08009D38: b _08009D6E _08009D3E: ldr r3, =gUnknown_082ED1A8 - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r2, [r0] @@ -1084,7 +1084,7 @@ _08009D3E: b _08009D6E .pool _08009D64: - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] @@ -1183,26 +1183,26 @@ _08009E2C: b _08009F06 .pool _08009E38: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] ldr r1, =gLinkType ldrh r1, [r1] b _08009F04 .pool _08009E4C: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] ldr r1, =gMain ldrh r1, [r1, 0x2C] b _08009F04 .pool _08009E60: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd movs r1, 0 b _08009F02 .pool _08009E6C: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] movs r1, 0 adds r3, r0, 0 @@ -1219,7 +1219,7 @@ _08009E76: b _08009F06 .pool _08009E8C: - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd strh r2, [r1] ldr r2, =gUnknown_03000D10 ldrh r0, [r2, 0x2] @@ -1230,28 +1230,28 @@ _08009E8C: b _08009F06 .pool _08009EA8: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] ldr r1, =gSpecialVar_ItemId ldrh r1, [r1] b _08009F04 .pool _08009EBC: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] ldr r1, =gUnknown_03003150 ldrb r1, [r1] b _08009F04 .pool _08009ED0: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] ldr r1, =gUnknown_030030F4 ldrh r1, [r1] b _08009F04 .pool _08009EE4: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd strh r2, [r0] b _08009F06 .pool @@ -1264,7 +1264,7 @@ _08009EF0: ldrb r0, [r0] cmp r0, 0 bne _08009F06 - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd _08009F02: strh r2, [r0] _08009F04: @@ -1863,7 +1863,7 @@ sub_800A388: @ 800A388 push {r4-r6,lr} ldr r0, =gUnknown_03000D10 ldr r5, [r0, 0x4] - ldr r2, =gUnknown_03003110 + ldr r2, =gSendCmd ldr r1, =0x00008888 strh r1, [r2] movs r3, 0 @@ -3861,8 +3861,8 @@ HandleLinkConnection: @ 800B40C cmp r0, 0 bne _0800B45C ldr r0, =gUnknown_03003144 - ldr r1, =gUnknown_03003110 - ldr r2, =gUnknown_03003090 + ldr r1, =gSendCmd + ldr r2, =gRecvCmds bl sub_800B638 ldr r4, =gUnknown_030030E0 str r0, [r4] @@ -10247,13 +10247,13 @@ _0800E64A: adds r0, r4, 0 bl sub_800D724 strh r5, [r7] - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r2, =0x01000008 adds r0, r7, 0 bl CpuSet mov r0, r8 strh r5, [r0] - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds ldr r2, =0x01000028 bl CpuSet mov r0, r9 @@ -11278,7 +11278,7 @@ sub_800EFB0: @ 800EFB0 push {r4-r7,lr} sub sp, 0x4 movs r2, 0 - ldr r7, =gUnknown_03003090 + ldr r7, =gRecvCmds ldr r0, =gUnknown_03005000 adds r6, r7, 0 ldr r1, =0x00000c87 @@ -11323,8 +11323,8 @@ _0800EFD0: thumb_func_start sub_800F014 sub_800F014: @ 800F014 push {lr} - ldr r3, =gUnknown_03003110 - ldr r2, =gUnknown_03003090 + ldr r3, =gSendCmd + ldr r2, =gRecvCmds movs r1, 0x6 _0800F01C: ldrh r0, [r3] @@ -11334,7 +11334,7 @@ _0800F01C: subs r1, 0x1 cmp r1, 0 bge _0800F01C - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd movs r2, 0 adds r0, r1, 0 adds r0, 0xC @@ -11413,7 +11413,7 @@ _0800F0C4: .pool _0800F0CC: movs r3, 0 - ldr r4, =gUnknown_03003090 + ldr r4, =gRecvCmds _0800F0D0: movs r2, 0 lsls r0, r3, 4 @@ -11681,7 +11681,7 @@ _0800F2E0: str r2, [sp, 0x4] adds r5, 0x1 str r5, [sp] - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds mov r9, r1 adds r5, r3, 0 adds r7, r4, 0 @@ -11908,7 +11908,7 @@ sub_800F4F0: @ 800F4F0 mov r1, sp bl sub_800D934 movs r1, 0 - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds mov r12, r0 _0800F506: movs r4, 0 @@ -12012,7 +12012,7 @@ _0800F5C0: ldrb r1, [r2] strb r0, [r2] bl sub_8010528 - ldr r5, =gUnknown_03003110 + ldr r5, =gSendCmd add r4, sp, 0x48 adds r0, r5, 0 adds r1, r4, 0 @@ -12306,7 +12306,7 @@ sub_800F820: @ 800F820 cmp r0, 0 bne _0800F83C bl sub_8082D18 - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd strh r0, [r1, 0xC] _0800F83C: ldr r1, =gUnknown_020223C0 @@ -12345,7 +12345,7 @@ sub_800F86C: @ 800F86C _0800F87A: mov r1, r8 lsls r0, r1, 4 - ldr r2, =gUnknown_03003090 + ldr r2, =gRecvCmds adds r1, r0, r2 ldrh r7, [r1] movs r3, 0xFF @@ -12555,7 +12555,7 @@ _0800FA0E: adds r2, r4, 0x1 lsls r0, r2, 1 adds r0, r3 - ldr r4, =gUnknown_03003090 + ldr r4, =gRecvCmds adds r0, r4 ldrh r0, [r0] strh r0, [r1] @@ -12686,7 +12686,7 @@ _0800FB10: adds r0, r7, r2 strb r1, [r0] _0800FB48: - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -12699,7 +12699,7 @@ _0800FB78: movs r0, 0xEE lsls r0, 8 bl sub_800FD14 - ldr r1, =gUnknown_03003110 + ldr r1, =gSendCmd ldr r3, =gUnknown_03003092 adds r0, r5, r3 ldrh r0, [r0] @@ -12708,7 +12708,7 @@ _0800FB78: adds r0, r5, r4 ldrh r0, [r0] strh r0, [r1, 0x4] - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -12910,7 +12910,7 @@ sub_800FD14: @ 800FD14 push {r4,r5,lr} lsls r0, 16 lsrs r1, r0, 16 - ldr r5, =gUnknown_03003110 + ldr r5, =gSendCmd strh r1, [r5] movs r0, 0xF0 lsls r0, 7 @@ -13063,7 +13063,7 @@ _0800FE46: sub_800FE50: @ 800FE50 push {r4,lr} adds r4, r0, 0 - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0800FE76 @@ -13097,7 +13097,7 @@ sub_800FE84: @ 800FE84 ldr r0, [r5] cmp r0, 0 bne _0800FEB8 - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0800FEB8 @@ -13182,7 +13182,7 @@ _0800FF32: thumb_func_start rfufunc_80F9F44 rfufunc_80F9F44: @ 800FF4C push {r4,r5,lr} - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0800FFA0 @@ -13207,7 +13207,7 @@ rfufunc_80F9F44: @ 800FF4C .pool _0800FF84: bl GetMultiplayerId - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds lsls r0, 24 lsrs r0, 20 adds r0, r1 @@ -13233,7 +13233,7 @@ sub_800FFB0: @ 800FFB0 ldr r0, =gUnknown_03005000 mov r12, r0 ldr r5, [r0, 0x70] - ldr r3, =gUnknown_03003110 + ldr r3, =gSendCmd mov r2, r12 adds r2, 0x6C ldrh r1, [r2] @@ -13302,7 +13302,7 @@ rfufunc_80FA020: @ 8010028 ldrb r0, [r5, 0xC] cmp r0, 0 bne _080100F0 - ldr r3, =gUnknown_03003110 + ldr r3, =gSendCmd adds r2, r5, 0 adds r2, 0x6E ldrh r0, [r2] @@ -13313,7 +13313,7 @@ rfufunc_80FA020: @ 8010028 strh r0, [r3] movs r4, 0 mov r9, r5 - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds mov r12, r0 lsls r5, r6, 4 adds r7, r2, 0 @@ -13539,7 +13539,7 @@ _08010220: thumb_func_start sub_801022C sub_801022C: @ 801022C push {r4,lr} - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0801024E @@ -13694,7 +13694,7 @@ sub_8010358: @ 8010358 ldrb r0, [r0] cmp r0, 0 bne _0801037A - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0801037A @@ -13723,7 +13723,7 @@ sub_8010390: @ 8010390 ldrb r0, [r0] cmp r0, 0 bne _0801041E - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0801041E @@ -13766,7 +13766,7 @@ _080103FA: ldrb r0, [r0] cmp r0, 0 bne _0801041E - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _0801041E @@ -14404,7 +14404,7 @@ _080108F0: b _080109D2 .pool _08010904: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080109D2 @@ -14676,7 +14676,7 @@ _08010B28: .4byte _08010C0A .4byte _08010C94 _08010B40: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 beq _08010B4A @@ -14690,7 +14690,7 @@ _08010B4A: b _08010C4A .pool _08010B60: - ldr r0, =gUnknown_03003110 + ldr r0, =gSendCmd ldrh r0, [r0] cmp r0, 0 beq _08010B6A @@ -16575,7 +16575,7 @@ sub_8011AC8: @ 8011AC8 sub sp, 0x4 movs r0, 0 str r0, [sp] - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds ldr r2, =0x05000014 mov r0, sp bl CpuSet @@ -16968,7 +16968,7 @@ sub_8011E2C: @ 8011E2C push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r6, =gUnknown_03003110 + ldr r6, =gSendCmd ldrh r0, [r6] cmp r0, 0 bne _08011E7A @@ -25082,7 +25082,7 @@ _08016894: sub_801689C: @ 801689C push {r4,r5,lr} adds r2, r0, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrh r5, [r3, 0x12] adds r4, r5, 0 cmp r4, 0 @@ -28045,7 +28045,7 @@ _08017FC6: sub_8017FD8: @ 8017FD8 push {lr} adds r2, r0, 0 - ldr r0, =gUnknown_03003090 + ldr r0, =gRecvCmds ldrh r1, [r0, 0x2] cmp r1, 0 beq _08017FFC @@ -50249,7 +50249,7 @@ sub_802339C: @ 802339C mov r10, r3 _080233C0: lsls r0, r7, 4 - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds adds r2, r0, r1 ldrh r1, [r2] movs r0, 0xFF @@ -50858,7 +50858,7 @@ sub_802385C: @ 802385C push {r4,r5,lr} adds r5, r0, 0 movs r4, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrb r0, [r5, 0x9] cmp r4, r0 bcs _08023880 @@ -59626,7 +59626,7 @@ sub_8027DD0: @ 8027DD0 sub_8027DFC: @ 8027DFC push {lr} adds r2, r0, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -60082,7 +60082,7 @@ sub_8028164: @ 8028164 mov r9, r0 adds r2, r7, 0 adds r2, 0x14 - ldr r4, =gUnknown_03003090 + ldr r4, =gRecvCmds ldrh r0, [r4] movs r1, 0xFF lsls r1, 8 @@ -60295,7 +60295,7 @@ sub_8028318: @ 8028318 push {r4,lr} adds r2, r0, 0 adds r4, r1, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -60347,7 +60347,7 @@ sub_8028350: @ 8028350 sub_8028374: @ 8028374 push {lr} adds r2, r0, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -71819,7 +71819,7 @@ sub_802E0D0: @ 802E0D0 push {r4,lr} sub sp, 0xC adds r4, r1, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds lsls r2, r0, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -71946,7 +71946,7 @@ sub_802E1BC: @ 802E1BC sub sp, 0xC adds r5, r0, 0 adds r4, r1, 0 - ldr r2, =gUnknown_03003090 + ldr r2, =gRecvCmds ldrh r0, [r2] movs r1, 0xFF lsls r1, 8 @@ -72036,7 +72036,7 @@ sub_802E264: @ 802E264 adds r4, r0, 0 adds r5, r2, 0 adds r6, r3, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -72091,7 +72091,7 @@ sub_802E2D0: @ 802E2D0 push {r4,lr} sub sp, 0xC adds r4, r0, 0 - ldr r3, =gUnknown_03003090 + ldr r3, =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -73085,7 +73085,7 @@ sub_802EAB0: @ 802EAB0 ldrb r0, [r0] cmp r0, 0 beq _0802EB14 - ldr r1, =gUnknown_03003090 + ldr r1, =gRecvCmds ldrh r0, [r1, 0x2] ldr r5, =0x00007fff cmp r0, r5 diff --git a/include/link.h b/include/link.h index 7a6563144..b3f7c8d60 100644 --- a/include/link.h +++ b/include/link.h @@ -2,6 +2,7 @@ #define GUARD_LINK_H #define MAX_LINK_PLAYERS 4 +#define MAX_RFU_PLAYERS 5 #define CMD_LENGTH 8 #define QUEUE_CAPACITY 50 #define BLOCK_BUFFER_SIZE 0x100 @@ -131,7 +132,7 @@ struct BlockRequest extern const struct BlockRequest sBlockRequestLookupTable[5]; extern struct Link gLink; -extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; +extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gLinkType; extern u32 gLinkStatus; diff --git a/src/berry_blender.c b/src/berry_blender.c index f626fef91..21706d4dc 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -20,6 +20,8 @@ #include "berry.h" #include "items.h" #include "string_util.h" +#include "international_string_util.h" +#include "rng.h" // Static type declarations #define BLENDER_SCORE_BEST 0 @@ -111,12 +113,10 @@ struct BerryBlenderData u8 field_41; u8 field_42; u8 field_43; - u8 field_44; - u8 field_45; + u16 field_44; u8 field_46; u8 field_47; - u8 field_48; - u8 field_49; + u16 field_48; u16 arrowPos; s16 field_4C; s16 field_4E; @@ -165,23 +165,8 @@ struct BerryBlenderData u8 field_8B; u8 field_8C; u8 field_8D; - u8 field_8E; - u8 field_8F; - - u8 field_90; - u8 field_91; - u8 field_92; - u8 field_93; - u8 field_94; - u8 field_95; - u8 field_96; - u8 field_97; - u8 field_98; - u8 field_99; - u8 field_9A; - u8 field_9B; - u8 field_9C; - u8 field_9D; + u16 field_8E[BLENDER_MAX_PLAYERS]; + u16 field_96[BLENDER_MAX_PLAYERS]; u8 field_9E; u8 field_9F; @@ -307,9 +292,7 @@ struct BerryBlenderData s16 field_11C; s16 field_11E; - u8 field_120; - u8 field_121; - u8 field_122; + u8 field_120[3]; u8 field_123; u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; u8 field_13C; @@ -388,16 +371,19 @@ extern void sub_8197DF8(u8 windowId, bool8 copyToVram); extern void sub_809882C(u8, u16, u8); extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8); extern void sub_81AABF0(void (*callback)(void)); +extern void sub_800B4C0(void); // this file's functions void BerryBlender_SetGpuRegs(void); void sub_8080EA4(u8 taskId); void sub_8080FD0(u8 taskId); void sub_80810F8(u8 taskId); +void sub_8081224(u8 taskId); void sub_80833F8(struct Sprite *sprite); void sub_8082F68(struct Sprite *sprite); void sub_8083010(struct Sprite *sprite); void sub_80830C0(struct Sprite *sprite); +void sub_8082F9C(struct Sprite *sprite); void Blender_SetPlayerNamesLocal(u8 opponentsNum); void sub_807FAC8(void); void sub_8082D28(void); @@ -410,8 +396,13 @@ void sub_8081898(void); void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc); bool8 sub_8083380(void); void sub_808074C(void); -void sub_80807BC(void); +void Blender_PrintPlayerNames(void); void sub_8080588(void); +void Blender_SetBankBerryData(u8 bank, u16 itemId); +void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 width, s8 x, s8 y, s32 state); +void sub_8080DF8(void); +void sub_8082E84(void); +void sub_80832BC(s16* a0, u16 a1); extern struct BerryBlenderData *sBerryBlenderData; @@ -972,12 +963,12 @@ const s16 gUnknown_08339C78[][5] = {250, 140, 10, -2, -1}, }; -const u8 gUnknown_08339CA0[][3] = +static const u8 sOpponentBerrySets[][3] = { {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, }; -const u8 gUnknown_08339CBE[] = {30, 31, 32, 33, 34}; +static const u8 sSpecialOpponentBerrySets[] = {30, 31, 32, 33, 34}; const u8 gUnknown_08339CC3[] = {1, 1, 2, 3, 4}; @@ -1471,7 +1462,7 @@ void sub_8080018(void) sBerryBlenderData->framesToWait = 0; PlaySE(SE_TRACK_DOOR); sub_808074C(); - sub_80807BC(); + Blender_PrintPlayerNames(); } sub_8082CB4(&sBerryBlenderData->bgAffineSrc); break; @@ -1520,3 +1511,642 @@ void sub_8080018(void) RunTextPrinters(); UpdatePaletteFade(); } + +void sub_8080588(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + + SetVBlankCallback(VBlankCB0_BerryBlender); + + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates)); + + SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]); + SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]); + + sub_809882C(0, 1, 0xD0); + copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0); + InitBerryBlenderWindows(); + + sBerryBlenderData->field_44 = 0; + sBerryBlenderData->field_4C = 0; + sBerryBlenderData->arrowPos = 0; + sBerryBlenderData->field_4E = 0; + sBerryBlenderData->field_11C = 0; + sBerryBlenderData->field_11E = 0; +} + +u8 sub_8080624(u16 arrowPos, u8 playerId) +{ + u32 var1 = (arrowPos / 256) + 24; + u8 arrID = sBerryBlenderData->field_96[playerId]; + u32 var2 = gUnknown_083399E7[arrID]; + + if (var1 >= var2 && var1 < var2 + 48) + { + if (var1 >= var2 + 20 && var1 < var2 + 28) + return 2; + else + return 1; + } + + return 0; +} + +void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry) +{ + u16 opponentSetId = 0; + u16 opponentBerryId; + u16 var; + u16 i; + + if (playerBerryItemId == ITEM_ENIGMA_BERRY) + { + for (i = 0; i < FLAVOUR_COUNT; i++) + { + if (playerBerry->flavours[opponentSetId] > playerBerry->flavours[i]) + opponentSetId = i; + } + opponentSetId += 5; + } + else + { + opponentSetId = playerBerryItemId - FIRST_BERRY_INDEX; + if (opponentSetId >= 5) + opponentSetId = (opponentSetId % 5) + 5; + } + for (i = 0; i < playersNum - 1; i++) + { + opponentBerryId = sOpponentBerrySets[opponentSetId][i]; + var = playerBerryItemId - 163; + if (!FlagGet(0x340) && gSpecialVar_0x8004 == 1) + { + opponentSetId %= 5; + opponentBerryId = sSpecialOpponentBerrySets[opponentSetId]; + if (var <= 4) + opponentBerryId -= 5; + } + Blender_SetBankBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX); + } +} + +void sub_808074C(void) +{ + s32 i, j; + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_96[i] = 0xFF; + sBerryBlenderData->field_8E[i] = gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; + } + for (j = 0; j < BLENDER_MAX_PLAYERS; j++) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_8E[i] == j) + sBerryBlenderData->field_96[j] = i; + } + } +} + +void Blender_PrintPlayerNames(void) +{ + s32 i, width; + u32 multiplayerId = 0; + u8 text[20]; + + if (gReceivedRemoteLinkPlayers) + multiplayerId = GetMultiplayerId(); + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_8E[i] != 0xFF) + { + sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]] = sBerryBlenderData->syncArrowSprite2Ids[i]; + StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]]], i); + + text[0] = EOS; + StringCopy(text, gLinkPlayers[sBerryBlenderData->field_8E[i]].name); + width = GetStringCenterAlignXOffset(1, text, 0x38); + + if (multiplayerId == sBerryBlenderData->field_8E[i]) + Blender_AddTextPrinter(i, text, width, 1, 0, 2); + else + Blender_AddTextPrinter(i, text, width, 1, 0, 1); + + PutWindowTilemap(i); + CopyWindowToVram(i, 3); + } + } +} + +void sub_80808D4(void) +{ + s32 i, j; + + switch (sBerryBlenderData->mainState) + { + case 0: + sub_800B4C0(); + sub_8080588(); + Blender_SetBankBerryData(0, gSpecialVar_ItemId); + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); + Blender_SetOpponentsBerryData(gSpecialVar_ItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]); + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_64[i] = 0; + for (j = 0; j < 3; j++) + { + sBerryBlenderData->scores[i][j] = 0; + } + } + + sBerryBlenderData->field_70 = 0; + sBerryBlenderData->loadGfxState = 0; + gLinkType = 0x4422; + sBerryBlenderData->mainState++; + break; + case 1: + if (LoadBerryBlenderGfx()) + { + sBerryBlenderData->mainState++; + sub_8082D28(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8); + } + sBerryBlenderData->mainState++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sBerryBlenderData->mainState++; + sBerryBlenderData->framesToWait = 0; + break; + case 4: + if (++sBerryBlenderData->framesToWait == 2) + sub_807F9D0(); + if (!gPaletteFade.active) + sBerryBlenderData->mainState = 8; + break; + case 8: + sBerryBlenderData->mainState = 11; + sBerryBlenderData->field_114 = 0; + break; + case 11: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + u32 var = gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; + if (sBerryBlenderData->field_114 == var) + { + sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); + break; + } + } + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + sBerryBlenderData->field_114++; + break; + case 12: + if (++sBerryBlenderData->framesToWait > 60) + { + if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) + { + sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; + sBerryBlenderData->mainState++; + } + else + { + sBerryBlenderData->mainState--; + } + sBerryBlenderData->framesToWait = 0; + } + break; + case 13: + sBerryBlenderData->mainState++; + sub_808074C(); + PlaySE(SE_RU_HYUU); + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + ShowBg(2); + break; + case 14: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); + sBerryBlenderData->arrowPos += 0x200; + sBerryBlenderData->field_11A += 4; + if (sBerryBlenderData->field_11A > 255) + { + sBerryBlenderData->mainState++; + sBerryBlenderData->field_11A = 256; + sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; + SetGpuRegBits(REG_OFFSET_BG2CNT, 2); + sBerryBlenderData->framesToWait = 0; + PlaySE(SE_TRACK_DOOR); + Blender_PrintPlayerNames(); + } + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + break; + case 15: + if (sub_8083380()) + { + sBerryBlenderData->mainState++; + } + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + break; + case 16: + CreateSprite(&gUnknown_08339C2C, 120, -16, 3); + sBerryBlenderData->mainState++; + break; + case 18: + sBerryBlenderData->mainState++; + break; + case 19: + sBerryBlenderData->mainState++; + break; + case 20: + sBerryBlenderData->mainState++; + break; + case 21: + sub_8080DF8(); + sBerryBlenderData->field_4C = 128; + sBerryBlenderData->gameFrameTime = 0; + sBerryBlenderData->field_123 = 0; + sBerryBlenderData->field_72 = 0; + SetMainCallback2(sub_8081898); + + if (gSpecialVar_0x8004 == 1) + { + if (!FlagGet(FLAG_340)) + sBerryBlenderData->field_120[0] = CreateTask(sub_8081224, 10); + else + sBerryBlenderData->field_120[0] = CreateTask(gUnknown_083399EC[0], 10); + } + + if (gSpecialVar_0x8004 > 1) + { + for (i = 0; i < gSpecialVar_0x8004; i++) + sBerryBlenderData->field_120[i] = CreateTask(gUnknown_083399EC[i], 10 + i); + } + + if (GetCurrentMapMusic() != BGM_CYCLING) + sBerryBlenderData->field_154 = GetCurrentMapMusic(); + + PlayBGM(BGM_CYCLING); + PlaySE(SE_MOTER); + Blender_ControlHitPitch(); + break; + } + + Blender_DummiedOutFunc(sBerryBlenderData->field_11C, sBerryBlenderData->field_11E); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +void sub_8080DF8(void) +{ + s32 i; + for (i = 0; i < 4; i++) + { + gSendCmd[0] = 0; + gSendCmd[2] = 0; + gRecvCmds[i][0] = 0; + gRecvCmds[i][2] = 0; + } +} + +void sub_8080E20(u8 taskId) +{ + if(++gTasks[taskId].data[0] > gTasks[taskId].data[1]) + { + gRecvCmds[gTasks[taskId].data[2]][2] = 0x2345; + DestroyTask(taskId); + } +} + +void sub_8080E6C(u8 a0, u8 a1) +{ + u8 taskId = CreateTask(sub_8080E20, 80); + gTasks[taskId].data[1] = a1; + gTasks[taskId].data[2] = a0; +} + +void sub_8080EA4(u8 taskId) +{ + if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskId].data[0] == 0) + { + if (sBerryBlenderData->field_123 == 0) + { + u8 rand = Random() / 655; + if (sBerryBlenderData->field_4C < 500) + { + if (rand > 75) + gRecvCmds[1][2] = 0x4523; + else + gRecvCmds[1][2] = 0x5432; + + gRecvCmds[1][2] = 0x5432; + } + else if (sBerryBlenderData->field_4C < 1500) + { + if (rand > 80) + { + gRecvCmds[1][2] = 0x4523; + } + else + { + u8 value = rand - 21; + if (value < 60) + gRecvCmds[1][2] = 0x5432; + else if (rand < 10) + sub_8080E6C(1, 5); + } + } + else if (rand <= 90) + { + u8 value = rand - 71; + if (value < 20) + gRecvCmds[1][2] = 0x5432; + else if (rand < 30) + sub_8080E6C(1, 5); + } + else + { + gRecvCmds[1][2] = 0x4523; + } + } + else + { + gRecvCmds[1][2] = 0x4523; + } + + gTasks[taskId].data[0] = 1; + } + } + else + { + gTasks[taskId].data[0] = 0; + } +} + +void sub_8080FD0(u8 taskId) +{ + u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = sBerryBlenderData->field_96[2] & 0xFF; + if ((var1 >> 8) > gUnknown_083399E7[var2] + 20 && (var1 >> 8) < gUnknown_083399E7[var2] + 40) + { + if (gTasks[taskId].data[0] == 0) + { + if (sBerryBlenderData->field_123 == 0) + { + u8 rand = Random() / 655; + if (sBerryBlenderData->field_4C < 500) + { + if (rand > 66) + gRecvCmds[2][2] = 0x4523; + else + gRecvCmds[2][2] = 0x5432; + } + else + { + u8 value; + if (rand > 65) + gRecvCmds[2][2] = 0x4523; + value = rand - 41; + if (value < 25) + gRecvCmds[2][2] = 0x5432; + if (rand < 10) + sub_8080E6C(2, 5); + } + + gTasks[taskId].data[0] = 1; + } + else + { + gRecvCmds[2][2] = 0x4523; + gTasks[taskId].data[0] = 1; + } + } + } + else + { + gTasks[taskId].data[0] = 0; + } +} + +void sub_80810F8(u8 taskId) +{ + u32 var1, var2; + + var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = sBerryBlenderData->field_96[3] & 0xFF; + if ((var1 >> 8) > gUnknown_083399E7[var2] + 20 && (var1 >> 8) < gUnknown_083399E7[var2] + 40) + { + if (gTasks[taskId].data[0] == 0) + { + if (sBerryBlenderData->field_123 == 0) + { + u8 rand = (Random() / 655); + if (sBerryBlenderData->field_4C < 500) + { + if (rand > 88) + gRecvCmds[3][2] = 0x4523; + else + gRecvCmds[3][2] = 0x5432; + } + else + { + if (rand > 60) + { + gRecvCmds[3][2] = 0x4523; + } + else + { + s8 value = rand - 56; // makes me wonder what the original code was + u8 value2 = value; + if (value2 < 5) + gRecvCmds[3][2] = 0x5432; + } + if (rand < 5) + sub_8080E6C(3, 5); + } + gTasks[taskId].data[0] = 1; + } + else + { + gRecvCmds[3][2] = 0x4523; + gTasks[taskId].data[0] = 1; + } + } + } + else + { + gTasks[taskId].data[0] = 0; + } +} + +void sub_8081224(u8 taskId) +{ + if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskId].data[0] == 0) + { + gRecvCmds[1][2] = 0x4523; + gTasks[taskId].data[0] = 1; + } + } + else + { + gTasks[taskId].data[0] = 0; + } +} + +void sub_8081288(u16 a0, u8 a1) +{ + u8 spriteId; + + spriteId = CreateSprite(&gUnknown_08339B40, + sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_083399C0[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_083399C0[a1][1]), + 1); + if (a0 == 0x4523) + { + StartSpriteAnim(&gSprites[spriteId], 2); + gSprites[spriteId].callback = sub_8082F9C; + PlaySE(SE_RU_GASHIN); + } + else if (a0 == 0x5432) + { + StartSpriteAnim(&gSprites[spriteId], 0); + PlaySE(SE_SEIKAI); + } + else if (a0 == 0x2345) + { + StartSpriteAnim(&gSprites[spriteId], 1); + PlaySE(SE_HAZURE); + } + sub_8082E84(); +} + +void sub_8081370(u16 a0) +{ + Blender_ControlHitPitch(); + switch (a0) + { + case 0x4523: + if (sBerryBlenderData->field_4C < 1500) + sBerryBlenderData->field_4C += (384 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + else + { + sBerryBlenderData->field_4C += (128 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + sub_80832BC(&sBerryBlenderData->field_11C, (sBerryBlenderData->field_4C / 100) - 10); + sub_80832BC(&sBerryBlenderData->field_11E, (sBerryBlenderData->field_4C / 100) - 10); + } + break; + case 0x5432: + if (sBerryBlenderData->field_4C < 1500) + sBerryBlenderData->field_4C += (256 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + break; + case 0x2345: + sBerryBlenderData->field_4C -= (256 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + if (sBerryBlenderData->field_4C < 128) + sBerryBlenderData->field_4C = 128; + break; + } +} + +bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2) +{ + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + { + if ((arg0 & 0xFF00) == arg2) + return TRUE; + } + else + { + if (arg0 == arg1) + return TRUE; + } + + return FALSE; +} + +/* +void sub_80814B0(void) +{ + s32 i; + + if (gSpecialVar_0x8004 != 0) + { + if (gSendCmd[2] != 0) + { + gRecvCmds[2][0] = gSendCmd[2]; + gRecvCmds[0][0] = 0x4444; + gSendCmd[2] = 0; + } + for (i = 1; i < 4; i++) + { + if (gRecvCmds[2][i] != 0) + gRecvCmds[0][i] = 0x4444; + } + } + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + if (gRecvCmds[0][i] == 0x4444) + { + u32 var = gBerryBlenderData->field_A2[i]; + if (gRecvCmds[2][i] == 0x4523) + { + sub_804FD30(0x4523); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); + if (gBerryBlenderData->field_13E >= 1000) + gBerryBlenderData->field_13E = 1000; + sub_804FC48(0x4523, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + } + else if (gRecvCmds[2][i] == 0x5432) + { + sub_804FD30(0x5432); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); + sub_804FC48(0x5432, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + } + else if (gRecvCmds[2][i] == 0x2345) + { + sub_804FC48(0x2345, var); + sub_804FD30(0x2345); + if (gBerryBlenderData->field_4.win_field_F > 1000) + gBerryBlenderData->field_13E = 1000; + if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + } + if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + { + if (gBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); + else + m4aMPlayTempoControl(&gMPlay_BGM, 256); + } + } + } + if (gSpecialVar_0x8004 != 0) + { + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } + } +}*/ + diff --git a/sym_common.txt b/sym_common.txt index 82248165d..93b8431f4 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -75,7 +75,7 @@ gUnknown_0300307C: @ 300307C gUnknown_03003084: @ 3003084 .space 0xC -gUnknown_03003090: @ 3003090 +gRecvCmds: @ 3003090 .space 0x2 gUnknown_03003092: @ 3003092 @@ -111,7 +111,7 @@ gLinkVSyncDisabled: @ 30030FC gUnknown_03003100: @ 3003100 .space 0x10 -gUnknown_03003110: @ 3003110 +gSendCmd: @ 3003110 .space 0x10 gUnknown_03003120: @ 3003120 -- cgit v1.2.3 From a3b5af17eabb255e983e61c6306e30f27de82524 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 19 Nov 2017 22:48:46 +0100 Subject: berry blender is done --- asm/battle_frontier_2.s | 68 +- asm/battle_records.s | 12 +- asm/berry_blender.s | 5439 --------------------------------------- asm/link.s | 10 +- asm/rom6.s | 36 +- data/scripts/pokeblocks.inc | 12 +- data/specials.inc | 2 +- include/berry_blender.h | 8 + include/menu.h | 3 + include/pokeblock.h | 23 +- include/text.h | 2 + include/tv.h | 1 + ld_script.txt | 1 - src/berry_blender.c | 2437 ++++++++++++++---- src/berry_fix_program.c | 3 +- src/clear_save_data_screen.c | 2 +- src/decoration.c | 1 + src/egg_hatch.c | 3 - src/international_string_util.c | 2 +- src/mail.c | 4 +- src/region_map.c | 4 +- src/save_failed_screen.c | 2 - src/text.c | 4 +- sym_ewram.txt | 16 +- 24 files changed, 2058 insertions(+), 6037 deletions(-) delete mode 100644 asm/berry_blender.s create mode 100644 include/berry_blender.h diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index f92f964bb..85bf356e4 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -14280,7 +14280,7 @@ sub_81A1C4C: @ 81A1C4C adds r3, r0, 0 lsls r0, r5, 3 adds r5, r0, 0x1 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId ldrb r0, [r0] lsls r3, 24 lsrs r3, 24 @@ -14306,7 +14306,7 @@ sub_81A1C90: @ 81A1C90 push {r4,lr} sub sp, 0x34 adds r2, r0, 0 - ldr r3, =gUnknown_0203AB74 + ldr r3, =gResultsWindowId movs r1, 0xAE mov r0, sp adds r0, 0x2F @@ -14361,7 +14361,7 @@ sub_81A1CD8: @ 81A1CD8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -14580,7 +14580,7 @@ sub_81A1EA8: @ 81A1EA8 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14621,7 +14621,7 @@ _081A1F28: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gUnknown_0203AB74 + ldr r6, =gResultsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -14734,7 +14734,7 @@ sub_81A2008: @ 81A2008 lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -14868,7 +14868,7 @@ sub_81A2134: @ 81A2134 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14893,7 +14893,7 @@ _081A2184: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] ldr r2, =gText_Lv502 movs r6, 0x21 @@ -14905,7 +14905,7 @@ _081A2184: movs r1, 0x1 movs r3, 0x8 bl PrintTextOnWindow - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] ldr r2, =gText_OpenLv movs r1, 0x61 @@ -14988,10 +14988,10 @@ _081A2184: mov r1, r8 movs r3, 0x40 bl sub_81A2008 - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] bl PutWindowTilemap - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] movs r1, 0x3 bl CopyWindowToVram @@ -15027,7 +15027,7 @@ sub_81A22B8: @ 81A22B8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15221,7 +15221,7 @@ sub_81A2460: @ 81A2460 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -15246,7 +15246,7 @@ _081A24B0: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gUnknown_0203AB74 + ldr r6, =gResultsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -15356,7 +15356,7 @@ sub_81A258C: @ 81A258C lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -15469,7 +15469,7 @@ sub_81A2698: @ 81A2698 mov r5, r8 push {r5-r7} sub sp, 0xC - ldr r6, =gUnknown_0203AB74 + ldr r6, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r6] @@ -15608,7 +15608,7 @@ sub_81A27E8: @ 81A27E8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15772,7 +15772,7 @@ _081A2956: sub_81A2968: @ 81A2968 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gUnknown_0203AB74 + ldr r5, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -15871,7 +15871,7 @@ sub_81A2A28: @ 81A2A28 lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r6, [sp] @@ -16147,7 +16147,7 @@ sub_81A2C94: @ 81A2C94 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -16172,7 +16172,7 @@ _081A2CE0: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r8, r0 ldrb r0, [r0] ldr r2, =gText_Lv502 @@ -16276,7 +16276,7 @@ sub_81A2DB4: @ 81A2DB4 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -16442,7 +16442,7 @@ _081A2F26: sub_81A2F38: @ 81A2F38 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gUnknown_0203AB74 + ldr r5, =gResultsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -16520,7 +16520,7 @@ sub_81A2FF8: @ 81A2FF8 mov r6, r8 push {r6,r7} sub sp, 0xC - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C7C bl AddWindow strb r0, [r4] @@ -16686,7 +16686,7 @@ _081A315C: movs r2, 0x1 movs r3, 0x4 bl ConvertIntToDecimalStringN - ldr r6, =gUnknown_0203AB74 + ldr r6, =gResultsWindowId ldrb r0, [r6] movs r1, 0x26 adds r3, r5, 0 @@ -18962,7 +18962,7 @@ sub_81A4594: @ 81A4594 sub sp, 0x2C mov r8, r1 adds r6, r3, 0 - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r5, [r1] lsls r4, r0, 1 adds r4, r0 @@ -18998,7 +18998,7 @@ sub_81A4594: @ 81A4594 ldrb r2, [r6, 0xE] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] mov r3, r8 adds r3, 0x2 @@ -19038,7 +19038,7 @@ _081A4618: adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] str r7, [sp] mov r1, r10 @@ -19072,7 +19072,7 @@ sub_81A4684: @ 81A4684 adds r7, r1, 0 mov r10, r2 adds r5, r3, 0 - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] lsls r2, r6, 1 adds r2, r6 @@ -19112,7 +19112,7 @@ sub_81A4684: @ 81A4684 ldrb r2, [r5, 0x1A] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gUnknown_0203AB74 + ldr r1, =gResultsWindowId ldrb r0, [r1] adds r3, r7, 0x2 lsls r3, 27 @@ -19147,7 +19147,7 @@ _081A4734: adds r1, r4, 0 bl StringCopy _081A473C: - ldr r2, =gUnknown_0203AB74 + ldr r2, =gResultsWindowId mov r9, r2 ldrb r0, [r2] adds r3, r7, 0x4 @@ -19468,7 +19468,7 @@ sub_81A4998: @ 81A4998 ldr r1, [r5] adds r0, r6, 0 bl StringExpandPlaceholders - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r8, r0 ldrb r0, [r0] movs r1, 0x1 @@ -19567,7 +19567,7 @@ _081A4A90: thumb_func_start sub_81A4AA0 sub_81A4AA0: @ 81A4AA0 push {r4,lr} - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldr r0, =gUnknown_08611C84 bl AddWindow strb r0, [r4] @@ -19595,7 +19595,7 @@ sub_81A4AA0: @ 81A4AA0 thumb_func_start sub_81A4AE8 sub_81A4AE8: @ 81A4AE8 push {r4,lr} - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer diff --git a/asm/battle_records.s b/asm/battle_records.s index c961aefe3..c441adc74 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -496,7 +496,7 @@ sub_813C2F4: @ 813C2F4 movs r2, 0xD0 bl GetStringCenterAlignXOffset adds r3, r0, 0 - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId ldrb r0, [r0] lsls r3, 24 lsrs r3, 24 @@ -531,7 +531,7 @@ sub_813C384: @ 813C384 ldr r7, [r6, 0xC] cmp r7, 0 bne _0813C40C - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r8, r0 ldrb r0, [r0] ldr r2, =gUnknown_085B3D84 @@ -587,7 +587,7 @@ _0813C40C: lsrs r1, 24 ldr r0, =gStringVar1 bl ConvertInternationalString - ldr r0, =gUnknown_0203AB74 + ldr r0, =gResultsWindowId mov r8, r0 ldrb r0, [r0] lsls r4, 3 @@ -661,7 +661,7 @@ sub_813C4BC: @ 813C4BC mov r6, r8 push {r6,r7} sub sp, 0xC - ldr r6, =gUnknown_0203AB74 + ldr r6, =gResultsWindowId ldr r0, =gUnknown_085B3D7C bl AddWindow strb r0, [r6] @@ -729,7 +729,7 @@ _0813C540: adds r4, 0x1 cmp r4, 0x4 ble _0813C540 - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldrb r0, [r4] bl PutWindowTilemap ldrb r0, [r4] @@ -748,7 +748,7 @@ _0813C540: thumb_func_start sub_813C5A0 sub_813C5A0: @ 813C5A0 push {r4,lr} - ldr r4, =gUnknown_0203AB74 + ldr r4, =gResultsWindowId ldrb r0, [r4] movs r1, 0 bl sub_819746C diff --git a/asm/berry_blender.s b/asm/berry_blender.s deleted file mode 100644 index bb9eb72ae..000000000 --- a/asm/berry_blender.s +++ /dev/null @@ -1,5439 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - - - thumb_func_start sub_80814F4 -sub_80814F4: @ 80814F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0808153C - ldr r3, =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, =gRecvCmds - cmp r0, 0 - beq _0808151C - movs r1, 0 - strh r0, [r2, 0x4] - ldr r0, =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0808151C: - ldr r0, =gRecvCmds - ldr r3, =0x00004444 - adds r1, r2, 0 - adds r1, 0x10 - adds r2, r0, 0 - adds r2, 0x14 - movs r7, 0x2 -_0808152A: - ldrh r0, [r2] - cmp r0, 0 - beq _08081532 - strh r3, [r1] -_08081532: - adds r1, 0x10 - adds r2, 0x10 - subs r7, 0x1 - cmp r7, 0 - bge _0808152A -_0808153C: - movs r7, 0 - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x7C - ldrb r0, [r0] - cmp r7, r0 - blt _0808154C - b _080816F6 -_0808154C: - ldr r0, =gRecvCmds - adds r2, r0, 0 - adds r2, 0x20 - str r2, [sp] - movs r1, 0 - mov r9, r1 - movs r2, 0 - str r2, [sp, 0x4] - mov r8, r0 - ldr r0, =0x00005432 - mov r10, r0 -_08081562: - mov r1, r8 - ldrh r0, [r1] - ldr r1, =0x00004444 - movs r2, 0x88 - lsls r2, 7 - bl sub_80814B0 - cmp r0, 0 - bne _08081576 - b _080816D2 -_08081576: - ldr r6, =sBerryBlenderData - ldr r0, [r6] - adds r0, 0x96 - ldr r2, [sp, 0x4] - adds r0, r2 - ldrh r5, [r0] - mov r0, r8 - ldrh r4, [r0, 0x4] - ldr r1, =0x00004523 - cmp r4, r1 - bne _080815F4 - adds r0, r1, 0 - bl sub_8081370 - ldr r0, [r6] - movs r2, 0x8B - lsls r2, 1 - adds r4, r0, r2 - adds r0, 0x4C - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, =0x03e70000 - cmp r1, r0 - bls _080815BA - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_080815BA: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, =0x00004523 - bl sub_8081288 - ldr r1, [r6] - movs r2, 0x92 - lsls r2, 1 - adds r1, r2 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0808165E - .pool -_080815F4: - cmp r4, r10 - bne _08081632 - mov r0, r10 - bl sub_8081370 - ldr r0, [r6] - movs r1, 0x8B - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x4C - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_8081288 - ldr r1, [r6] - movs r0, 0x93 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0808165E -_08081632: - ldr r0, =0x00002345 - cmp r4, r0 - bne _0808166A - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8081288 - adds r0, r4, 0 - bl sub_8081370 - ldr r0, [r6] - movs r1, 0x94 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, =0x000003e6 - cmp r2, r0 - bhi _08081660 - adds r0, r2, 0x1 -_0808165E: - strh r0, [r1] -_08081660: - mov r0, r8 - ldrh r1, [r0, 0x4] - ldr r0, =0x00002345 - cmp r1, r0 - beq _08081678 -_0808166A: - ldr r1, [sp] - ldrh r0, [r1] - ldr r2, =0x00004523 - cmp r0, r2 - beq _08081678 - cmp r0, r10 - bne _080816D2 -_08081678: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x4C - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, =0x000005dc - cmp r1, r0 - ble _080816C8 - adds r0, r1, 0 - ldr r2, =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, =gMPlay_BGM - bl m4aMPlayTempoControl - b _080816D2 - .pool -_080816C8: - ldr r0, =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_080816D2: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - ldr r0, [sp, 0x4] - adds r0, 0x2 - str r0, [sp, 0x4] - movs r1, 0x10 - add r8, r1 - adds r7, 0x1 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x7C - ldrb r0, [r0] - cmp r7, r0 - bge _080816F6 - b _08081562 -_080816F6: - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08081722 - movs r7, 0 - ldr r3, =sBerryBlenderData - ldr r0, [r3] - adds r0, 0x7C - ldrb r0, [r0] - cmp r7, r0 - bge _08081722 - movs r2, 0 - ldr r1, =gRecvCmds -_08081710: - strh r2, [r1] - strh r2, [r1, 0x4] - adds r1, 0x10 - adds r7, 0x1 - ldr r0, [r3] - adds r0, 0x7C - ldrb r0, [r0] - cmp r7, r0 - blt _08081710 -_08081722: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80814F4 - - thumb_func_start sub_8081744 -sub_8081744: @ 8081744 - push {r4-r6,lr} - movs r4, 0 - movs r6, 0 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0808175A - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 -_0808175A: - ldr r3, =sBerryBlenderData - ldr r1, [r3] - lsls r2, r6, 1 - adds r0, r1, 0 - adds r0, 0x96 - adds r0, r2 - ldrb r5, [r0] - adds r1, 0x63 - ldrb r0, [r1] - cmp r0, 0 - bne _0808182C - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080817A8 - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080817B6 - ldrh r2, [r2, 0x28] - ldr r1, =0x00000201 - adds r0, r1, 0 - ands r0, r2 - cmp r0, r1 - beq _080817B6 - b _080817BA - .pool -_080817A8: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080817B6 - movs r4, 0x1 -_080817B6: - cmp r4, 0 - beq _0808182C -_080817BA: - ldr r4, =sBerryBlenderData - ldr r1, [r4] - lsls r2, r5, 1 - adds r0, r1, 0 - adds r0, 0x8E - adds r0, r2 - adds r1, 0x50 - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r5, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x4A - ldrh r0, [r0] - adds r1, r6, 0 - bl sub_8080624 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08081810 - ldr r1, =gSendCmd - ldr r0, =0x00004523 - b _08081828 - .pool -_08081810: - cmp r0, 0x1 - bne _08081824 - ldr r1, =gSendCmd - ldr r0, =0x00005432 - b _08081828 - .pool -_08081824: - ldr r1, =gSendCmd - ldr r0, =0x00002345 -_08081828: - strh r0, [r1, 0x4] - adds r3, r4, 0 -_0808182C: - ldr r1, [r3] - adds r1, 0x72 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _0808185A - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x4C - ldrh r2, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _08081852 - subs r0, r2, 0x1 - strh r0, [r1] -_08081852: - ldr r0, [r3] - adds r0, 0x72 - movs r1, 0 - strb r1, [r0] -_0808185A: - ldr r0, =gUnknown_020322D5 - ldrb r0, [r0] - cmp r0, 0 - beq _0808187E - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0808187E - ldr r0, [r3] - ldr r1, =0x00000123 - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_0808187E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081744 - - thumb_func_start sub_8081898 -sub_8081898: @ 8081898 - push {r4-r6,lr} - bl sub_8082D28 - ldr r4, =sBerryBlenderData - ldr r0, [r4] - movs r1, 0x82 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, =0x00057e03 - cmp r1, r0 - bhi _080818B4 - adds r0, r1, 0x1 - str r0, [r2] -_080818B4: - bl sub_8081744 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4C - ldrh r0, [r0] - movs r5, 0x8B - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl sub_800A994 - bl sub_80814F4 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_8083140 - ldr r0, [r4] - adds r0, 0x4C - ldrh r0, [r0] - bl sub_8083230 - bl sub_808330C - bl sub_8082AD4 - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x63 - ldrb r0, [r3] - cmp r0, 0 - bne _0808191A - movs r1, 0x8C - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, =0x000003e7 - cmp r1, r0 - bls _0808191A - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, =sub_8081FC8 - bl SetMainCallback2 -_0808191A: - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0x8F - lsls r2, 1 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - bl Blender_DummiedOutFunc - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081898 - - thumb_func_start Blender_DummiedOutFunc -Blender_DummiedOutFunc: @ 8081960 - bx lr - thumb_func_end Blender_DummiedOutFunc - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 8081964 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080819A2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080819B0 - ldr r0, [r4, 0x8] - ldr r2, =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080819B0 - ldr r0, [r4, 0xC] - ldr r2, =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080819B0 -_080819A2: - movs r0, 0x1 - b _080819B2 - .pool -_080819B0: - movs r0, 0 -_080819B2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80819B8 -sub_80819B8: @ 80819B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_080819D4: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080819D4 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_080819E8: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080819F2 - adds r6, 0x1 -_080819F2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080819E8 - cmp r6, 0x5 - beq _08081A46 - cmp r3, 0x3 - bhi _08081A46 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _08081A5E - mov r3, r10 -_08081A0C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08081A54 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_08081A1C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _08081A4A - cmp r4, r6 - beq _08081A4A - cmp r0, 0xAF - bne _08081A46 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _08081A4A -_08081A46: - movs r0, 0xC - b _08081B9E -_08081A4A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _08081A1C -_08081A54: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _08081A0C -_08081A5E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_08081A64: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08081A72 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08081A72: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08081A64 - cmp r2, 0x3 - bls _08081A82 - movs r0, 0xD - b _08081B9E -_08081A82: - cmp r2, 0x3 - bne _08081A8A - movs r0, 0xB - b _08081B9E -_08081A8A: - movs r4, 0 - mov r1, sp -_08081A8E: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _08081A98 - b _08081B98 -_08081A98: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08081A8E - cmp r2, 0x1 - bne _08081AEA - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _08081AB2 - movs r0, 0x1 - b _08081B9E -_08081AB2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08081AC0 - movs r0, 0x2 - b _08081B9E -_08081AC0: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _08081ACE - movs r0, 0x3 - b _08081B9E -_08081ACE: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _08081ADC - movs r0, 0x4 - b _08081B9E -_08081ADC: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _08081AEA - movs r0, 0x5 - b _08081B9E -_08081AEA: - cmp r2, 0x2 - bne _08081B9C - movs r4, 0 - ldr r5, =gUnknown_03000DF8 - mov r1, sp - adds r2, r5, 0 -_08081AF6: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08081B02 - strh r4, [r2] - adds r2, 0x2 -_08081B02: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08081AF6 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08081B58 - adds r0, r3, 0 - cmp r0, 0 - bne _08081B38 - lsls r0, r2, 16 - b _08081B62 - .pool -_08081B38: - cmp r0, 0x1 - bne _08081B40 - lsls r0, r2, 16 - b _08081B6E -_08081B40: - cmp r0, 0x2 - bne _08081B48 - lsls r0, r2, 16 - b _08081B7A -_08081B48: - cmp r0, 0x3 - bne _08081B50 - lsls r0, r2, 16 - b _08081B86 -_08081B50: - cmp r0, 0x4 - bne _08081B9C - lsls r0, r2, 16 - b _08081B92 -_08081B58: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _08081B68 - lsls r0, r3, 16 -_08081B62: - movs r1, 0x6 - orrs r0, r1 - b _08081B9E -_08081B68: - cmp r0, 0x1 - bne _08081B74 - lsls r0, r3, 16 -_08081B6E: - movs r1, 0x7 - orrs r0, r1 - b _08081B9E -_08081B74: - cmp r0, 0x2 - bne _08081B80 - lsls r0, r3, 16 -_08081B7A: - movs r1, 0x8 - orrs r0, r1 - b _08081B9E -_08081B80: - cmp r0, 0x3 - bne _08081B8C - lsls r0, r3, 16 -_08081B86: - movs r1, 0x9 - orrs r0, r1 - b _08081B9E -_08081B8C: - cmp r0, 0x4 - bne _08081B9C - lsls r0, r3, 16 -_08081B92: - movs r1, 0xA - orrs r0, r1 - b _08081B9E -_08081B98: - movs r0, 0xE - b _08081B9E -_08081B9C: - movs r0, 0 -_08081B9E: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80819B8 - - thumb_func_start sub_8081BB0 -sub_8081BB0: @ 8081BB0 - ldr r1, =gUnknown_03000E04 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_8081BB0 - - thumb_func_start sub_8081BBC -sub_8081BBC: @ 8081BBC - ldr r0, =gUnknown_03000E04 - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .pool - thumb_func_end sub_8081BBC - - thumb_func_start sub_8081BC8 -sub_8081BC8: @ 8081BC8 - ldr r1, =gUnknown_03000E06 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_8081BC8 - - thumb_func_start sub_8081BD4 -sub_8081BD4: @ 8081BD4 - ldr r0, =gUnknown_03000E06 - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .pool - thumb_func_end sub_8081BD4 - - thumb_func_start sub_8081BE0 -sub_8081BE0: @ 8081BE0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, =gUnknown_03000DE8 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_08081C0A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _08081C0A - movs r6, 0 - cmp r6, r9 - bge _08081C40 - ldr r0, =gUnknown_03000DE8 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08081C20: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08081C26: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08081C26 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08081C20 -_08081C40: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_08081C6A: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _08081C76 - strh r2, [r1] - adds r3, 0x1 -_08081C76: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081C6A - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, =gUnknown_03000DE8 - movs r6, 0x4 -_08081C8A: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _08081CA4 - cmp r0, r3 - bge _08081CA0 - strh r4, [r1] - b _08081CA4 - .pool -_08081CA0: - subs r0, r2, r3 - strh r0, [r1] -_08081CA4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081C8A - ldr r1, =gUnknown_03000DE8 - ldr r2, =gUnknown_020322A8 - movs r6, 0x4 -_08081CB2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081CB2 - ldr r1, =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, =gUnknown_020322D0 - str r3, [r4] - movs r6, 0x4 -_08081CD6: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08081D02 - adds r5, 0x1 -_08081D02: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081CD6 - ldr r1, =gUnknown_03000DE8 - ldr r2, =gUnknown_020322BC - movs r6, 0x4 -_08081D12: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081D12 - ldr r4, =gUnknown_03000DE8 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80819B8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _08081D4C - movs r0, 0 - strh r0, [r4, 0xA] -_08081D4C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _08081DA6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, =gUnknown_08339CC8 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_08081D74: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _08081D9C - strh r3, [r1] - b _08081D9E - .pool -_08081D9C: - strh r2, [r1] -_08081D9E: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _08081D74 -_08081DA6: - ldr r7, =gUnknown_03000DE8 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_08081DAE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _08081DB8 - strh r2, [r1] -_08081DB8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08081DAE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_08081DDE: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _08081DDE - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081BE0 - - thumb_func_start sub_8081E04 -sub_8081E04: @ 8081E04 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8081BE0 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8081E04 - - thumb_func_start sub_8081E20 -sub_8081E20: @ 8081E20 - push {r4-r6,lr} - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r2, 0x82 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x4E - ldrh r4, [r0] - movs r2, 0 - ldr r5, =0x00000383 - cmp r1, r5 - bhi _08081E48 - movs r2, 0x5 - b _08081E9A - .pool -_08081E48: - ldr r3, =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, =0x00000257 - cmp r0, r3 - bhi _08081E64 - movs r2, 0x4 - b _08081E9A - .pool -_08081E64: - ldr r6, =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _08081E78 - movs r2, 0x3 - b _08081E9A - .pool -_08081E78: - ldr r3, =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _08081E8C - movs r2, 0x2 - b _08081E9A - .pool -_08081E8C: - ldr r6, =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, =0x012b0000 - cmp r0, r1 - bhi _08081E9A - movs r2, 0x1 -_08081E9A: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8081BC8 - movs r2, 0 - cmp r4, 0x40 - bhi _08081F7C - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081EC4 - ldr r2, =0x0000ffff - b _08081F7C - .pool -_08081EC4: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081ED8 - ldr r2, =0x0000fffe - b _08081F7C - .pool -_08081ED8: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081EEC - ldr r2, =0x0000fffd - b _08081F7C - .pool -_08081EEC: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F00 - ldr r2, =0x0000fffc - b _08081F7C - .pool -_08081F00: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F14 - ldr r2, =0x0000fffb - b _08081F7C - .pool -_08081F14: - ldr r1, =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F2C - ldr r2, =0x0000fffa - b _08081F7C - .pool -_08081F2C: - ldr r3, =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F44 - ldr r2, =0x0000fff9 - b _08081F7C - .pool -_08081F44: - ldr r6, =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F5C - ldr r2, =0x0000fff8 - b _08081F7C - .pool -_08081F5C: - ldr r1, =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08081F74 - ldr r2, =0x0000fff7 - b _08081F7C - .pool -_08081F74: - ldr r0, =0x00000257 - cmp r4, r0 - bls _08081F7C - ldr r2, =0x0000fff6 -_08081F7C: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8081BB0 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081E20 - - thumb_func_start sub_8081F94 -sub_8081F94: @ 8081F94 - push {lr} - adds r1, r0, 0 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08081FB8 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08081FB8 - movs r2, 0xBC - lsls r2, 6 - b _08081FBA - .pool -_08081FB8: - ldr r2, =0x00002fff -_08081FBA: - adds r0, r2, 0 - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081F94 - - thumb_func_start sub_8081FC8 -sub_8081FC8: @ 8081FC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x63 - ldrb r0, [r0] - cmp r0, 0x2 - bhi _08081FDE - bl sub_8082D28 -_08081FDE: - bl GetMultiplayerId - ldr r0, [r4] - adds r0, 0x63 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _08081FF0 - b _0808249E -_08081FF0: - lsls r0, 2 - ldr r1, =_08082004 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08082004: - .4byte _08082038 - .4byte _08082078 - .4byte _080820D4 - .4byte _080821C8 - .4byte _08082278 - .4byte _08082286 - .4byte _080822B0 - .4byte _08082458 - .4byte _080822E4 - .4byte _08082308 - .4byte _080823B0 - .4byte _08082430 - .4byte _0808246C -_08082038: - ldr r0, =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _08082064 - .pool -_0808204C: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08082064: - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _0808204C - b _08082458 - .pool -_08082078: - ldr r4, =sBerryBlenderData - ldr r1, [r4] - adds r1, 0x4C - ldrh r0, [r1] - subs r0, 0x20 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bgt _080820C6 - bl sub_8009F8C - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x4C - movs r0, 0 - strh r0, [r1] - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080820B0 - adds r1, 0x17 - ldrb r0, [r1] - adds r0, 0x1 - b _080820B6 - .pool -_080820B0: - adds r1, r2, 0 - adds r1, 0x63 - movs r0, 0x5 -_080820B6: - strb r0, [r1] - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r0, 0 - strb r0, [r1] - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop -_080820C6: - bl Blender_ControlHitPitch - b _0808249E - .pool -_080820D4: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080820E0 - b _08082458 -_080820E0: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080820EC - b _0808249E -_080820EC: - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0808218C - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _0808218C - ldr r3, =sBerryBlenderData - ldr r1, [r3] - movs r4, 0x8E - lsls r4, 5 - adds r2, r1, r4 - movs r5, 0x82 - lsls r5, 1 - adds r0, r1, r5 - ldr r0, [r0] - str r0, [r2] - adds r0, r1, 0 - adds r0, 0x4E - ldrh r0, [r0] - ldr r2, =0x000011c4 - adds r1, r2 - strh r0, [r1] - movs r4, 0 - mov r8, r3 - mov r12, r8 - ldr r7, =0x000011c8 - movs r6, 0x92 - lsls r6, 1 -_08082128: - movs r3, 0 - adds r5, r4, 0x1 - lsls r0, r4, 1 - adds r0, r4 - lsls r4, r0, 1 -_08082132: - mov r1, r12 - ldr r0, [r1] - lsls r1, r3, 1 - adds r1, r4 - adds r2, r0, r7 - adds r2, r1 - adds r0, r6 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _08082132 - lsls r0, r5, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08082128 - mov r2, r8 - ldr r1, [r2] - movs r4, 0x8E - lsls r4, 5 - adds r1, r4 - movs r0, 0 - movs r2, 0x20 - bl SendBlock - lsls r0, 24 - cmp r0, 0 - bne _08082172 - b _0808249E -_08082172: - mov r5, r8 - ldr r1, [r5] - b _0808245C - .pool -_0808218C: - ldr r4, =sBerryBlenderData - ldr r3, [r4] - movs r0, 0xCC - lsls r0, 1 - adds r1, r3, r0 - movs r2, 0x82 - lsls r2, 1 - adds r0, r3, r2 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x4E - ldrh r2, [r0] - movs r5, 0xCE - lsls r5, 1 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - lsls r0, 24 - cmp r0, 0 - bne _080821BE - b _0808249E -_080821BE: - ldr r1, [r4] - b _0808245C - .pool -_080821C8: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _080821D4 - b _0808249E -_080821D4: - bl ResetBlockReceivedFlags - ldr r5, =sBerryBlenderData - ldr r1, [r5] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08082254 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08082254 - ldr r2, =gBlockRecvBuffer - ldr r3, [r5] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x4E - strh r0, [r1] - movs r0, 0x82 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - movs r4, 0 - adds r7, r2, 0 - adds r7, 0x8 - adds r6, r5, 0 - movs r2, 0x92 - lsls r2, 1 -_08082216: - movs r3, 0 - adds r5, r4, 0x1 - lsls r0, r4, 1 - adds r0, r4 - lsls r4, r0, 1 -_08082220: - ldr r1, [r6] - lsls r0, r3, 1 - adds r0, r4 - adds r1, r2 - adds r1, r0 - adds r0, r7, r0 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _08082220 - lsls r0, r5, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08082216 - b _0808249E - .pool -_08082254: - ldr r2, =gBlockRecvBuffer - ldr r0, =sBerryBlenderData - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x4E - strh r0, [r1] - movs r4, 0x82 - lsls r4, 1 - adds r1, r3, r4 - ldr r0, [r2] - str r0, [r1] - b _0808249E - .pool -_08082278: - bl sub_8083B08 - lsls r0, 24 - cmp r0, 0 - bne _08082284 - b _0808249E -_08082284: - b _08082458 -_08082286: - bl berry_blender_related - lsls r0, 24 - cmp r0, 0 - bne _08082292 - b _0808249E -_08082292: - ldr r0, =gInGameOpponentsNo - ldrb r0, [r0] - cmp r0, 0 - bne _080822A8 - movs r0, 0x22 - bl IncrementGameStat - b _08082458 - .pool -_080822A8: - movs r0, 0x21 - bl IncrementGameStat - b _08082458 -_080822B0: - ldr r6, =sBerryBlenderData - ldr r4, [r6] - ldr r5, =0x000011b8 - adds r4, r5 - ldr r5, =sText_WouldLikeToBlendAnotherBerry - bl GetPlayerTextSpeed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl Blender_PrintText - cmp r0, 0 - bne _080822D2 - b _0808249E -_080822D2: - ldr r1, [r6] - b _0808245C - .pool -_080822E4: - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x9E - movs r1, 0 - strb r1, [r0] - ldr r0, =gUnknown_083399B8 - movs r1, 0x1 - movs r2, 0xD - movs r3, 0 - bl CreateYesNoMenu - ldr r1, [r4] - b _0808245C - .pool -_08082308: - bl sub_8198C58 - lsls r0, 24 - asrs r2, r0, 24 - cmp r2, 0 - beq _0808236C - cmp r2, 0 - bgt _08082322 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08082328 - b _0808249E -_08082322: - cmp r2, 0x1 - beq _08082328 - b _0808249E -_08082328: - ldr r2, =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x9E - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r2] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r4, 0 -_0808233E: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x8E - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0xFF - beq _0808235C - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram -_0808235C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0808233E - b _0808249E - .pool -_0808236C: - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x9E - strb r2, [r0] - ldr r1, [r1] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r4, 0 -_08082380: - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x8E - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0xFF - beq _0808239E - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram -_0808239E: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08082380 - b _0808249E - .pool -_080823B0: - ldr r6, =gSendCmd - adds r0, r6, 0 - bl sub_8081F94 - ldr r4, =sBerryBlenderData - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x9E - ldrb r5, [r0] - cmp r5, 0 - bne _0808241C - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _080823EC - ldr r0, [r4] - adds r0, 0x70 - movs r1, 0x2 - strh r1, [r0] - ldr r0, =0x00009999 - b _08082414 - .pool -_080823EC: - bl sub_8136EF4 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0808240C - ldr r0, [r4] - adds r0, 0x70 - movs r1, 0x3 - strh r1, [r0] - ldr r0, =0x0000aaaa - b _08082414 - .pool -_0808240C: - ldr r0, [r4] - adds r0, 0x70 - strh r5, [r0] - ldr r0, =0x00007779 -_08082414: - strh r0, [r6, 0x2] - b _08082458 - .pool -_0808241C: - adds r1, r2, 0 - adds r1, 0x70 - movs r0, 0x1 - strh r0, [r1] - ldr r0, =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _0808245E - .pool -_08082430: - ldr r0, =gInGameOpponentsNo - ldrb r0, [r0] - cmp r0, 0 - beq _08082458 - ldr r0, =sub_8082924 - bl SetMainCallback2 - ldr r2, =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x63 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - b _0808249C - .pool -_08082458: - ldr r0, =sBerryBlenderData - ldr r1, [r0] -_0808245C: - adds r1, 0x63 -_0808245E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808249E - .pool -_0808246C: - ldr r6, =sBerryBlenderData - ldr r4, [r6] - ldr r0, =0x000011b8 - adds r4, r0 - ldr r5, =sText_CommunicationStandby - bl GetPlayerTextSpeed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl Blender_PrintText - cmp r0, 0 - beq _0808249E - ldr r0, =sub_8082644 - bl SetMainCallback2 - ldr r0, [r6] - adds r0, 0x63 - movs r1, 0 - strb r1, [r0] - ldr r0, [r6] -_0808249C: - strb r1, [r0] -_0808249E: - bl sub_808330C - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x4C - ldrh r0, [r0] - bl sub_8083230 - bl sub_8082AD4 - ldr r1, [r4] - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - movs r4, 0 - ldrsh r0, [r0, r4] - movs r5, 0x8F - lsls r5, 1 - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl Blender_DummiedOutFunc - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8081FC8 - - thumb_func_start sub_80824FC -sub_80824FC: @ 80824FC - push {r4,lr} - ldr r1, =sBerryBlenderData - ldr r0, [r1] - movs r2, 0xD0 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08082512 - b _0808263C -_08082512: - lsls r0, 2 - ldr r1, =_08082524 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08082524: - .4byte _08082540 - .4byte _08082558 - .4byte _08082584 - .4byte _08082594 - .4byte _080825BA - .4byte _08082600 - .4byte _0808261A -_08082540: - bl sub_800ADF8 - ldr r0, =sBerryBlenderData - ldr r2, [r0] - movs r3, 0xD0 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _0808260C - .pool -_08082558: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _0808263C - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r2, 0xD0 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _0808263C - .pool -_08082584: - bl sub_8153430 - ldr r0, =sBerryBlenderData - ldr r2, [r0] - b _08082602 - .pool -_08082594: - ldr r1, [r4] - movs r2, 0x84 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _0808263C - bl sub_800ADF8 - ldr r1, [r4] - movs r3, 0xD0 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0808263C -_080825BA: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _0808263C - bl sub_8153474 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080825E4 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xD0 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _0808263C - .pool -_080825E4: - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r3, 0x84 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xD0 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _0808263C - .pool -_08082600: - ldr r2, [r4] -_08082602: - movs r3, 0xD0 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_0808260C: - str r0, [r1] - movs r0, 0x84 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _0808263C -_0808261A: - ldr r1, [r4] - movs r2, 0x84 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _0808263C - ldr r1, =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _0808263E - .pool -_0808263C: - movs r0, 0 -_0808263E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80824FC - - thumb_func_start sub_8082644 -sub_8082644: @ 8082644 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x63 - ldrb r0, [r0] - adds r6, r1, 0 - cmp r0, 0xC - bls _08082658 - b _080828DC -_08082658: - lsls r0, 2 - ldr r1, =_0808266C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0808266C: - .4byte _080826A0 - .4byte _080826EC - .4byte _0808271C - .4byte _08082754 - .4byte _0808278C - .4byte _080827AA - .4byte _080827C8 - .4byte _080827FC - .4byte _08082818 - .4byte _08082828 - .4byte _0808284C - .4byte _080828A4 - .4byte _080828C6 -_080826A0: - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x64 - ldrh r2, [r0] - ldr r0, =0x00002222 - cmp r2, r0 - bne _080826B0 - b _080827A2 -_080826B0: - ldr r0, =0x00001111 - cmp r2, r0 - beq _080826B8 - b _080828DC -_080826B8: - adds r0, r1, 0 - adds r0, 0x6C - ldrh r2, [r0] - ldr r0, =0x00009999 - cmp r2, r0 - bne _080826D8 - adds r1, 0x63 - movs r0, 0x2 - strb r0, [r1] - b _080828DC - .pool -_080826D8: - ldr r0, =0x0000aaaa - cmp r2, r0 - bne _080827A2 - adds r1, 0x63 - movs r0, 0x1 - strb r0, [r1] - b _080828DC - .pool -_080826EC: - ldr r0, [r6] - adds r0, 0x63 - movs r1, 0x3 - strb r1, [r0] - ldr r4, =gStringVar4 - ldr r0, [r6] - adds r0, 0x6E - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, =gLinkPlayers + 8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =sText_ApostropheSPokeblockCaseIsFull - b _08082740 - .pool -_0808271C: - ldr r1, [r6] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r4, =gStringVar4 - ldr r0, [r6] - adds r0, 0x6E - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, =gLinkPlayers + 8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, =sText_HasNoBerriesToPut -_08082740: - adds r0, r4, 0 - bl StringAppend - b _080828DC - .pool -_08082754: - ldr r4, [r6] - ldr r0, =0x000011b8 - adds r4, r0 - ldr r5, =gStringVar4 - bl GetPlayerTextSpeed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl Blender_PrintText - cmp r0, 0 - bne _08082774 - b _080828DC -_08082774: - ldr r1, [r6] - movs r0, 0x84 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _080828BC - .pool -_0808278C: - ldr r4, [r6] - movs r2, 0x84 - lsls r2, 1 - adds r1, r4, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _080827A0 - b _080828DC -_080827A0: - adds r1, r4, 0 -_080827A2: - adds r1, 0x63 - movs r0, 0x5 - strb r0, [r1] - b _080828DC -_080827AA: - ldr r0, [r6] - ldr r1, =0x000011b8 - adds r0, r1 - ldr r1, =gText_SavingDontTurnOff2 - movs r2, 0 - bl Blender_PrintText - bl sub_800ADF8 - b _080828BA - .pool -_080827C8: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080827D4 - b _080828DC -_080827D4: - ldr r3, =sBerryBlenderData - ldr r1, [r3] - movs r2, 0x84 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xD0 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080828DC - .pool -_080827FC: - bl sub_80824FC - lsls r0, 24 - cmp r0, 0 - beq _080828DC - movs r0, 0x37 - bl PlaySE - ldr r0, =sBerryBlenderData - ldr r1, [r0] - b _080828BC - .pool -_08082818: - ldr r1, [r6] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_800ADF8 - b _080828DC -_08082828: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080828DC - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sBerryBlenderData - ldr r1, [r0] - b _080828BC - .pool -_0808284C: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080828DC - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x64 - ldrh r1, [r0] - ldr r0, =0x00002222 - cmp r1, r0 - bne _08082898 - bl FreeAllWindowBuffers - movs r0, 0x2 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - ldr r0, [r6] - bl Free - str r4, [r6] - ldr r0, =DoBerryBlending - bl SetMainCallback2 - b _080828DC - .pool -_08082898: - movs r1, 0x84 - lsls r1, 1 - adds r0, r2, r1 - str r4, [r0] - adds r1, r2, 0 - b _080828BC -_080828A4: - ldr r1, [r6] - movs r2, 0x84 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080828DC - bl sub_800AC34 -_080828BA: - ldr r1, [r6] -_080828BC: - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080828DC -_080828C6: - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r4, [r0] - cmp r4, 0 - bne _080828DC - ldr r0, [r6] - bl Free - str r4, [r6] - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080828DC: - bl sub_8082AD4 - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0x8F - lsls r2, 1 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - bl Blender_DummiedOutFunc - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082644 - - thumb_func_start sub_8082924 -sub_8082924: @ 8082924 - push {r4-r6,lr} - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x63 - ldrb r0, [r0] - adds r6, r1, 0 - cmp r0, 0xA - bls _08082936 - b _08082A92 -_08082936: - lsls r0, 2 - ldr r1, =_08082948 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08082948: - .4byte _08082974 - .4byte _080829AA - .4byte _080829D4 - .4byte _08082A00 - .4byte _08082A92 - .4byte _08082A92 - .4byte _08082A92 - .4byte _08082A92 - .4byte _08082A92 - .4byte _08082A30 - .4byte _08082A48 -_08082974: - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r0, [r0] - cmp r0, 0x1 - bhi _08082986 - adds r1, 0x63 - movs r0, 0x9 - strb r0, [r1] -_08082986: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - cmp r1, 0x2 - bne _08082996 - subs r0, 0xD - strb r1, [r0] -_08082996: - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r0, [r0] - cmp r0, 0x3 - bne _08082A92 - adds r1, 0x63 - movs r0, 0x1 - strb r0, [r1] - b _08082A92 -_080829AA: - ldr r0, [r6] - adds r0, 0x63 - movs r2, 0 - movs r1, 0x3 - strb r1, [r0] - ldr r0, [r6] - ldr r1, =0x000011b8 - adds r0, r1 - strh r2, [r0] - ldr r0, =gStringVar4 - ldr r1, =sText_YourPokeblockCaseIsFull - bl StringCopy - b _08082A92 - .pool -_080829D4: - ldr r1, [r6] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r6] - ldr r1, =0x000011b8 - adds r0, r1 - strh r2, [r0] - ldr r0, =gStringVar4 - ldr r1, =sText_RunOutOfBerriesForBlending - bl StringCopy - b _08082A92 - .pool -_08082A00: - ldr r4, [r6] - ldr r2, =0x000011b8 - adds r4, r2 - ldr r5, =gStringVar4 - bl GetPlayerTextSpeed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl Blender_PrintText - cmp r0, 0 - beq _08082A92 - ldr r0, [r6] - adds r0, 0x63 - movs r1, 0x9 - strb r1, [r0] - b _08082A92 - .pool -_08082A30: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, =sBerryBlenderData - ldr r1, [r0] - adds r1, 0x63 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08082A92 - .pool -_08082A48: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08082A92 - ldr r0, [r6] - adds r0, 0x70 - ldrh r0, [r0] - cmp r0, 0 - bne _08082A70 - ldr r0, =DoBerryBlending - bl SetMainCallback2 - b _08082A76 - .pool -_08082A70: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_08082A76: - bl FreeAllWindowBuffers - movs r0, 0x2 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - ldr r4, =sBerryBlenderData - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_08082A92: - bl sub_8082AD4 - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0x8F - lsls r2, 1 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - bl Blender_DummiedOutFunc - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082924 - - thumb_func_start sub_8082AD4 -sub_8082AD4: @ 8082AD4 - push {r4-r7,lr} - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08082AE0 - b _08082CA4 -_08082AE0: - ldr r4, =gRecvCmds - ldrh r0, [r4] - ldr r1, =0x00002fff - movs r2, 0xBC - lsls r2, 6 - bl sub_80814B0 - cmp r0, 0 - beq _08082B66 - ldrh r1, [r4, 0x2] - ldr r0, =0x00001111 - cmp r1, r0 - bne _08082B58 - ldrh r3, [r4, 0x4] - ldr r0, =0x00009999 - cmp r3, r0 - beq _08082B38 - cmp r3, r0 - bgt _08082B24 - ldr r0, =0x00008888 - b _08082B26 - .pool -_08082B24: - ldr r0, =0x0000aaaa -_08082B26: - cmp r3, r0 - beq _08082B38 - ldr r2, =sBerryBlenderData - b _08082B48 - .pool -_08082B38: - ldr r2, =sBerryBlenderData - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x6C - strh r3, [r1] - ldrh r1, [r4, 0x6] - adds r0, 0x6E - strh r1, [r0] -_08082B48: - ldr r0, [r2] - adds r0, 0x64 - ldr r1, =0x00001111 - b _08082B64 - .pool -_08082B58: - ldr r0, =0x00002222 - cmp r1, r0 - bne _08082B66 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x64 -_08082B64: - strh r1, [r0] -_08082B66: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08082B72 - b _08082CA4 -_08082B72: - ldr r2, =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x64 - ldrh r1, [r0] - ldr r0, =0x00001111 - cmp r1, r0 - bne _08082B82 - b _08082CA4 -_08082B82: - ldr r0, =0x00002222 - cmp r1, r0 - bne _08082B8A - b _08082CA4 -_08082B8A: - movs r5, 0 - adds r7, r2, 0 - b _08082BF4 - .pool -_08082B9C: - ldr r6, =gRecvCmds - lsls r4, r5, 4 - adds r0, r4, r6 - ldrh r0, [r0] - ldr r1, =0x00002fff - movs r2, 0xBC - lsls r2, 6 - bl sub_80814B0 - cmp r0, 0 - beq _08082BEE - adds r0, r6, 0x2 - adds r0, r4, r0 - ldrh r2, [r0] - ldr r0, =0x00008888 - cmp r2, r0 - beq _08082BE4 - cmp r2, r0 - bgt _08082BD8 - ldr r0, =0x00007779 - b _08082BE0 - .pool -_08082BD8: - ldr r0, =0x00009999 - cmp r2, r0 - beq _08082BE4 - ldr r0, =0x0000aaaa -_08082BE0: - cmp r2, r0 - bne _08082BEE -_08082BE4: - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, 0x64 - adds r0, r1 - strh r2, [r0] -_08082BEE: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08082BF4: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bcc _08082B9C - movs r5, 0 - b _08082C12 - .pool -_08082C0C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08082C12: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bcs _08082C2E - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, 0x64 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08082C0C -_08082C2E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bne _08082CA4 - movs r5, 0 - ldr r4, =0x00007779 - b _08082C4E - .pool -_08082C48: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08082C4E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bcs _08082C6A - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, 0x64 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r4 - beq _08082C48 -_08082C6A: - ldr r4, =gSendCmd - adds r0, r4, 0 - bl sub_8081F94 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bne _08082C90 - ldr r0, =0x00002222 - strh r0, [r4, 0x2] - b _08082CA4 - .pool -_08082C90: - ldr r0, =0x00001111 - strh r0, [r4, 0x2] - ldr r0, =sBerryBlenderData - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, 0x64 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x4] - strh r5, [r4, 0x6] -_08082CA4: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082AD4 - - thumb_func_start sub_8082CB4 -sub_8082CB4: @ 8082CB4 - push {r4,lr} - sub sp, 0x14 - movs r1, 0xF0 - lsls r1, 7 - str r1, [sp] - movs r1, 0xA0 - lsls r1, 7 - str r1, [sp, 0x4] - mov r3, sp - ldr r1, =sBerryBlenderData - ldr r1, [r1] - mov r12, r1 - movs r1, 0x8E - lsls r1, 1 - add r1, r12 - ldrh r2, [r1] - movs r1, 0x78 - subs r1, r2 - strh r1, [r3, 0x8] - movs r1, 0x8F - lsls r1, 1 - add r1, r12 - ldrh r2, [r1] - movs r1, 0x50 - subs r1, r2 - strh r1, [r3, 0xA] - mov r2, sp - movs r3, 0x8D - lsls r3, 1 - add r3, r12 - ldrh r1, [r3] - strh r1, [r2, 0xC] - ldrh r1, [r3] - strh r1, [r2, 0xE] - mov r1, r12 - adds r1, 0x4A - ldrh r1, [r1] - strh r1, [r2, 0x10] - mov r1, sp - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - ldm r1!, {r2,r3} - stm r0!, {r2,r3} - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082CB4 - - thumb_func_start sub_8082D18 -sub_8082D18: @ 8082D18 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x4A - ldrh r0, [r0] - bx lr - .pool - thumb_func_end sub_8082D18 - - thumb_func_start sub_8082D28 -sub_8082D28: @ 8082D28 - push {r4,lr} - movs r1, 0 - ldr r4, =gReceivedRemoteLinkPlayers - ldrb r0, [r4] - cmp r0, 0 - beq _08082D3C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 -_08082D3C: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08082DCC - ldrb r0, [r4] - cmp r0, 0 - beq _08082DCC - cmp r1, 0 - bne _08082D90 - ldr r0, =sBerryBlenderData - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x4A - adds r0, r3, 0 - adds r0, 0x4C - ldrh r0, [r0] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - ldr r1, =gSendCmd - movs r4, 0x8B - lsls r4, 1 - adds r0, r3, r4 - ldrh r0, [r0] - strh r0, [r1, 0xA] - ldrh r0, [r2] - strh r0, [r1, 0xC] - movs r1, 0xA0 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8082CB4 - b _08082DEA - .pool -_08082D90: - ldr r3, =gRecvCmds - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0x88 - lsls r0, 7 - cmp r1, r0 - bne _08082DEA - ldr r0, =sBerryBlenderData - ldr r2, [r0] - ldrh r0, [r3, 0xA] - movs r4, 0x8B - lsls r4, 1 - adds r1, r2, r4 - strh r0, [r1] - ldrh r0, [r3, 0xC] - adds r1, r2, 0 - adds r1, 0x4A - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - bl sub_8082CB4 - b _08082DEA - .pool -_08082DCC: - ldr r0, =sBerryBlenderData - ldr r1, [r0] - adds r2, r1, 0 - adds r2, 0x4A - adds r0, r1, 0 - adds r0, 0x4C - ldrh r0, [r0] - ldrh r3, [r2] - adds r0, r3 - strh r0, [r2] - movs r4, 0xA0 - lsls r4, 1 - adds r0, r1, r4 - bl sub_8082CB4 -_08082DEA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082D28 - - thumb_func_start BerryBlender_SetGpuRegs -BerryBlender_SetGpuRegs: @ 8082DF4 - push {r4-r6,lr} - ldr r4, =sBerryBlenderData - ldr r0, [r4] - movs r6, 0x8E - lsls r6, 1 - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, [r4] - movs r5, 0x8F - lsls r5, 1 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, [r4] - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, [r4] - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end BerryBlender_SetGpuRegs - - thumb_func_start sub_8082E3C -sub_8082E3C: @ 8082E3C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08082E5A - adds r0, 0x7 -_08082E5A: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08082E68 - adds r0, 0x7 -_08082E68: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08082E80 - adds r0, r2, 0 - bl DestroySprite -_08082E80: - pop {r0} - bx r0 - thumb_func_end sub_8082E3C - - thumb_func_start sub_8082E84 -sub_8082E84: @ 8082E84 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08082F40 - ldr r0, =gSineTable - mov r9, r0 - ldr r2, =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08082EB0: - bl Random - ldr r1, =sBerryBlenderData - ldr r4, [r1] - adds r4, 0x4A - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _08082EE4 - adds r1, 0x3 -_08082EE4: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _08082EF4 - adds r0, 0x3 -_08082EF4: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, =gUnknown_08339BE0 - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, =gSprites + 0x1C - adds r5, r3 - ldr r0, =sub_8082E3C - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08082EB0 -_08082F40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082E84 - - thumb_func_start sub_8082F68 -sub_8082F68: @ 8082F68 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08082F94 - adds r0, r4, 0 - bl DestroySprite -_08082F94: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8082F68 - - thumb_func_start sub_8082F9C -sub_8082F9C: @ 8082F9C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _08082FC0 - ldr r0, =0x0000fff4 - strh r0, [r2, 0x26] -_08082FC0: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08082FD4 - adds r0, r2, 0 - bl DestroySprite -_08082FD4: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8082F9C - - thumb_func_start Blender_SetBankBerryData -Blender_SetBankBerryData: @ 8082FDC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, =sBerryBlenderData - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x74 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xAC - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl Blender_CopyBerryData - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end Blender_SetBankBerryData - - thumb_func_start sub_8083010 -sub_8083010: @ 8083010 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0808304C - cmp r0, 0x1 - bgt _08083026 - cmp r0, 0 - beq _0808302C - b _080830B2 -_08083026: - cmp r0, 0x2 - beq _08083066 - b _080830B2 -_0808302C: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080830B2 - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080830B2 -_0808304C: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080830B2 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080830B2 -_08083066: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080830B2 - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080830A0 - adds r0, r4, 0 - bl DestroySprite - ldr r0, =gUnknown_08339C60 - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080830B2 - .pool -_080830A0: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080830B2: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8083010 - - thumb_func_start sub_80830C0 -sub_80830C0: @ 80830C0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080830FC - cmp r0, 0x1 - bgt _080830D6 - cmp r0, 0 - beq _080830DC - b _08083130 -_080830D6: - cmp r0, 0x2 - beq _08083112 - b _08083130 -_080830DC: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _08083130 - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _08083130 -_080830FC: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08083130 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08083130 -_08083112: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _08083130 - ldr r0, =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_08083130: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80830C0 - - thumb_func_start sub_8083140 -sub_8083140: @ 8083140 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, =sBerryBlenderData - ldr r1, [r1] - movs r2, 0x8C - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08083166 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_8083170 -_08083166: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8083140 - - thumb_func_start sub_8083170 -sub_8083170: @ 8083170 - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08083188 - adds r0, r1, 0x7 -_08083188: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080831B0 - ldr r0, =0x000080e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080831A0: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080831A0 - adds r3, r4, 0 -_080831B0: - adds r0, r1, 0 - cmp r1, 0 - bge _080831B8 - adds r0, r1, 0x7 -_080831B8: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080831D6 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, =0xffff80e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080831D6: - cmp r3, 0x7 - bgt _080831FA - ldr r0, =0x000080e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080831EC: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080831EC -_080831FA: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8083170 - - thumb_func_start sub_8083210 -sub_8083210: @ 8083210 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08083222 - ldr r1, =0x0000ffff - adds r0, r1 -_08083222: - asrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end sub_8083210 - - thumb_func_start sub_8083230 -sub_8083230: @ 8083230 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8083210 - adds r5, r0, 0 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x4E - ldrh r0, [r1] - cmp r0, r5 - bcs _0808324E - strh r5, [r1] -_0808324E: - movs r6, 0 -_08083250: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08083250 - ldr r2, =0x06006458 - mov r0, sp - ldr r3, =0x00008072 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8083230 - - thumb_func_start sub_80832BC -sub_80832BC: @ 80832BC - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080832E0 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_080832E0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80832BC - - thumb_func_start sub_80832E8 -sub_80832E8: @ 80832E8 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _080832FA - adds r0, r2, 0x1 - strh r0, [r1] -_080832FA: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08083308 - subs r0, r2, 0x1 - strh r0, [r1] -_08083308: - pop {r0} - bx r0 - thumb_func_end sub_80832E8 - - thumb_func_start sub_808330C -sub_808330C: @ 808330C - push {r4,lr} - ldr r4, =sBerryBlenderData - ldr r0, [r4] - movs r1, 0x8E - lsls r1, 1 - adds r0, r1 - bl sub_80832E8 - ldr r0, [r4] - movs r1, 0x8F - lsls r1, 1 - adds r0, r1 - bl sub_80832E8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_808330C - - thumb_func_start sub_8083334 -sub_8083334: @ 8083334 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08083344 - movs r5, 0x10 -_08083344: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08083362 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08083376 -_08083362: - cmp r1, 0 - bge _0808336A - adds r0, 0x1 - strh r0, [r4] -_0808336A: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08083378 - subs r0, r1, 0x1 -_08083376: - strh r0, [r4] -_08083378: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8083334 - - thumb_func_start sub_8083380 -sub_8083380: @ 8083380 - push {r4,r5,lr} - ldr r5, =sBerryBlenderData - ldr r2, [r5] - movs r4, 0x84 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _080833A0 - movs r3, 0x8E - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_080833A0: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0x8E - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8083334 - ldr r1, [r5] - movs r3, 0x8F - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8083334 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _080833DC - movs r0, 0 - b _080833F0 - .pool -_080833DC: - movs r1, 0x8E - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0x8F - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_080833F0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8083380 - - thumb_func_start sub_80833F8 -sub_80833F8: @ 80833F8 - ldr r1, =sBerryBlenderData - ldr r2, [r1] - movs r3, 0x8E - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .pool - thumb_func_end sub_80833F8 - - thumb_func_start UpdateBerryBlenderRecord -@ void UpdateBerryBlenderRecord() -UpdateBerryBlenderRecord: @ 8083418 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, =sBerryBlenderData - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, =0x000009bc - adds r2, r3 - adds r2, r0 - adds r1, 0x4E - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _0808343E - strh r1, [r2] -_0808343E: - pop {r0} - bx r0 - .pool - thumb_func_end UpdateBerryBlenderRecord - - thumb_func_start berry_blender_related -berry_blender_related: @ 8083450 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4C - ldr r1, =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _0808346A - b _08083898 -_0808346A: - lsls r0, 2 - ldr r1, =_0808347C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0808347C: - .4byte _08083498 - .4byte _080834AE - .4byte _080834C8 - .4byte _08083518 - .4byte _08083790 - .4byte _080837A8 - .4byte _0808386C -_08083498: - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _08083898 -_080834AE: - ldr r1, [r4] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _080834C2 - b _08083898 -_080834C2: - movs r0, 0 - str r0, [r2] - b _08083854 -_080834C8: - ldr r1, [r4] - movs r0, 0x84 - lsls r0, 1 - adds r1, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _080834DC - b _08083898 -_080834DC: - movs r6, 0 -_080834DE: - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x46 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _080834DE - ldr r1, [r4] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - b _08083854 - .pool -_08083518: - ldr r4, =sText_BlendingResults - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xA8 - bl GetStringCenterAlignXOffset - lsls r2, r0, 24 - lsrs r2, 24 - movs r0, 0xFF - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x5 - adds r1, r4, 0 - movs r3, 0x1 - bl Blender_AddTextPrinter - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r2, r0, 0 - adds r2, 0x7C - ldrb r0, [r2] - movs r3, 0x15 - mov r9, r3 - cmp r0, 0x4 - bne _08083550 - movs r0, 0x11 - mov r9, r0 -_08083550: - movs r6, 0 - mov r3, sp - adds r3, 0x10 - str r3, [sp, 0x48] - ldrb r2, [r2] - cmp r6, r2 - bcs _0808361A - adds r7, r1, 0 - movs r0, 0x3 - mov r10, r0 -_08083564: - ldr r0, [r7] - movs r2, 0x9E - lsls r2, 1 - adds r1, r0, r2 - adds r1, r6 - ldrb r5, [r1] - adds r0, 0x9F - adds r6, 0x1 - mov r8, r6 - mov r1, r8 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, [r7] - adds r0, 0x9F - ldr r1, =sText_Dot - bl StringAppend - ldr r0, [r7] - adds r0, 0x9F - ldr r1, =gText_Space - bl StringAppend - ldr r0, [r7] - adds r0, 0x9F - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - ldr r3, =gLinkPlayers + 8 - adds r1, r4, r3 - bl StringAppend - ldr r1, [r7] - adds r1, 0x9F - mov r0, r9 - lsls r6, r0, 24 - lsrs r6, 24 - movs r2, 0xFF - str r2, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x5 - movs r2, 0x8 - adds r3, r6, 0 - bl Blender_AddTextPrinter - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x9F - lsls r5, 4 - adds r5, r1 - movs r1, 0xAD - lsls r1, 1 - adds r5, r1 - adds r1, r5, 0 - bl StringCopy - ldr r0, [r7] - adds r0, 0x9F - ldr r2, =gLinkPlayers - adds r4, r2 - ldrb r1, [r4, 0x1A] - bl ConvertInternationalString - ldr r0, [r7] - adds r0, 0x9F - ldr r1, =sText_SpaceBerry - bl StringAppend - ldr r1, [r7] - adds r1, 0x9F - movs r3, 0xFF - str r3, [sp] - mov r0, r10 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r2, 0x54 - adds r3, r6, 0 - bl Blender_AddTextPrinter - movs r1, 0x10 - add r9, r1 - mov r2, r8 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r0, [r7] - adds r0, 0x7C - ldrb r0, [r0] - cmp r6, r0 - bcc _08083564 -_0808361A: - ldr r1, =sText_MaximumSpeed - movs r3, 0xFF - mov r10, r3 - str r3, [sp] - movs r0, 0x3 - mov r9, r0 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r2, 0 - movs r3, 0x51 - bl Blender_AddTextPrinter - ldr r6, =sBerryBlenderData - ldr r0, [r6] - adds r4, r0, 0 - adds r4, 0x9F - adds r0, 0x4E - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r0, 0x9F - ldr r1, =sText_Dot - bl StringAppend - ldr r0, [r6] - adds r0, 0x4E - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, [sp, 0x48] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r0, 0x9F - ldr r1, [sp, 0x48] - bl StringAppend - ldr r0, [r6] - adds r0, 0x9F - ldr r1, =sText_RPM - bl StringAppend - ldr r1, [r6] - adds r1, 0x9F - movs r0, 0x1 - movs r2, 0xA8 - bl GetStringRightAlignXOffset - ldr r1, [r6] - adds r1, 0x9F - lsls r2, r0, 24 - lsrs r2, 24 - mov r3, r10 - str r3, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r3, 0x51 - bl Blender_AddTextPrinter - ldr r1, =sText_Time - mov r2, r10 - str r2, [sp] - mov r3, r9 - str r3, [sp, 0x4] - movs r0, 0x5 - movs r2, 0 - movs r3, 0x61 - bl Blender_AddTextPrinter - ldr r5, [r6] - movs r1, 0x82 - lsls r1, 1 - adds r0, r5, r1 - ldr r0, [r0] - mov r8, r0 - movs r1, 0x3C - bl __udivsi3 - movs r1, 0x3C - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r1, 0xE1 - lsls r1, 4 - mov r0, r8 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r5, 0x9F - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r0, 0x9F - ldr r1, =sText_Min - bl StringAppend - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r0, 0x9F - ldr r1, =sText_Sec - bl StringAppend - ldr r1, [r6] - adds r1, 0x9F - movs r0, 0x1 - movs r2, 0xA8 - bl GetStringRightAlignXOffset - ldr r1, [r6] - adds r1, 0x9F - lsls r2, r0, 24 - lsrs r2, 24 - mov r3, r10 - str r3, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r3, 0x61 - bl Blender_AddTextPrinter - ldr r1, [r6] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x5 - movs r1, 0x2 - bl CopyWindowToVram - b _08083898 - .pool -_08083790: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0808379E - b _08083898 -_0808379E: - ldr r1, [r4] - b _08083854 - .pool -_080837A8: - movs r0, 0x5 - movs r1, 0x1 - bl sub_8198070 - movs r6, 0 - add r7, sp, 0x40 - ldr r5, =sBerryBlenderData -_080837B6: - ldr r0, [r5] - lsls r2, r6, 1 - adds r0, 0x74 - adds r0, r2 - ldrh r1, [r0] - cmp r1, 0 - beq _080837CC - add r0, sp, 0x38 - adds r0, r2 - subs r1, 0x85 - strh r1, [r0] -_080837CC: - ldr r0, [r5] - adds r0, 0x8E - adds r0, r2 - ldrh r0, [r0] - cmp r0, 0xFF - beq _080837EA - lsls r4, r6, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram -_080837EA: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _080837B6 - bl sub_8081E20 - ldr r4, =sBerryBlenderData - ldr r3, [r4] - movs r1, 0xAC - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x7C - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r7, 0 - add r3, sp, 0x8 - bl sub_8081BE0 - ldr r1, [r4] - adds r1, 0x9F - adds r0, r7, 0 - bl sub_80838AC - ldr r1, [r4] - movs r2, 0xD4 - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl sub_8083F94 - ldr r0, =sub_8083F3C - movs r1, 0x6 - bl CreateTask - bl sub_80EECEC - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r7, 0 - bl sub_8136F2C - ldr r1, [r4] - ldr r3, =0x000011b8 - adds r2, r1, r3 - movs r0, 0 - strh r0, [r2] -_08083854: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08083898 - .pool -_0808386C: - ldr r4, [r4] - ldr r0, =0x000011b8 - adds r5, r4, r0 - adds r4, 0x9F - bl GetPlayerTextSpeed - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl Blender_PrintText - cmp r0, 0 - beq _08083898 - bl UpdateBerryBlenderRecord - movs r0, 0x1 - b _0808389A - .pool -_08083898: - movs r0, 0 -_0808389A: - add sp, 0x4C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end berry_blender_related - - thumb_func_start sub_80838AC -sub_80838AC: @ 80838AC - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, =gText_WasMade - adds r0, r6, 0 - bl StringAppend - ldr r1, =sText_NewLine - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_8136EA4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_8136EDC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, =sText_TheLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, =sText_TheFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, =sText_Dot2 - adds r0, r6, 0 - bl StringAppend - ldr r1, =gText_NewParagraph - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80838AC - - thumb_func_start sub_808395C -sub_808395C: @ 808395C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _080839A8 -_08083972: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _080839A2 - mov r1, r9 - adds r6, r1, r0 -_08083980: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0808399C - strb r3, [r6] - strb r4, [r2] -_0808399C: - adds r5, 0x1 - cmp r5, r7 - blt _08083980 -_080839A2: - mov r0, r8 - cmp r0, r7 - blt _08083972 -_080839A8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808395C - - thumb_func_start sub_80839B4 -sub_80839B4: @ 80839B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - movs r5, 0 - ldr r2, =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x7C - adds r1, r2, 0 - add r3, sp, 0x4 - mov r10, r3 - b _080839E4 - .pool -_080839D4: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x7C -_080839E4: - ldrb r0, [r0] - cmp r5, r0 - bcc _080839D4 - movs r5, 0 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x7C - ldrb r2, [r1] - cmp r5, r2 - bcs _08083A5E - mov r9, r10 - movs r3, 0x92 - lsls r3, 1 - adds r3, r0 - mov r8, r3 - mov r12, r1 - movs r4, 0x93 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0x94 - lsls r1, 1 - adds r6, r0, r1 -_08083A10: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08083A10 -_08083A5E: - ldr r4, =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x7C - ldrb r1, [r0] - mov r0, sp - mov r2, r10 - bl sub_808395C - movs r5, 0 - ldr r0, [r4] - adds r0, 0x7C - ldrb r0, [r0] - cmp r5, r0 - bcs _08083A9E - adds r2, r4, 0 - movs r3, 0x9E - lsls r3, 1 -_08083A80: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x7C - ldrb r0, [r0] - cmp r5, r0 - bcc _08083A80 -_08083A9E: - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08083AB4 - movs r3, 0 - b _08083ABC - .pool -_08083AB4: - bl GetMultiplayerId - lsls r0, 24 - lsrs r3, r0, 24 -_08083ABC: - movs r5, 0 - ldr r1, =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x7C - ldrb r0, [r0] - cmp r5, r0 - bcs _08083AF2 - movs r6, 0x9E - lsls r6, 1 - movs r4, 0xD2 - lsls r4, 1 -_08083AD2: - ldr r2, [r1] - adds r0, r2, r6 - adds r0, r5 - ldrb r0, [r0] - cmp r0, r3 - bne _08083AE2 - adds r0, r2, r4 - strb r5, [r0] -_08083AE2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x7C - ldrb r0, [r0] - cmp r5, r0 - bcc _08083AD2 -_08083AF2: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80839B4 - - thumb_func_start sub_8083B08 -sub_8083B08: @ 8083B08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldr r1, =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08083B22 - b _08083E12 -_08083B22: - lsls r0, 2 - ldr r1, =_08083B34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08083B34: - .4byte _08083B50 - .4byte _08083B66 - .4byte _08083B80 - .4byte _08083B9A - .4byte _08083DC8 - .4byte _08083DE2 - .4byte _08083E08 -_08083B50: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _08083E12 -_08083B66: - ldr r1, [r2] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08083B7A - b _08083E12 -_08083B7A: - movs r0, 0 - str r0, [r2] - b _08083DF8 -_08083B80: - ldr r1, [r2] - movs r0, 0x84 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _08083B94 - b _08083E12 -_08083B94: - movs r0, 0 - str r0, [r2] - b _08083DF8 -_08083B9A: - movs r0, 0x5 - movs r1, 0 - movs r2, 0x1 - movs r3, 0xD - bl SetWindowBorderStyle - ldr r4, =sText_Ranking - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xA8 - bl GetStringCenterAlignXOffset - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xFF - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x5 - adds r1, r4, 0 - movs r3, 0x1 - bl Blender_AddTextPrinter - ldr r1, =gUnknown_08339B40 - mov r8, r1 - mov r0, r8 - movs r1, 0x80 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, =sBerryBlenderData - ldr r1, [r7] - adds r1, 0x46 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x46 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r6, =gSprites - adds r0, r6 - movs r1, 0x3 - bl StartSpriteAnim - ldr r0, [r7] - adds r0, 0x46 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r6, 0 - adds r5, 0x1C - adds r0, r5 - ldr r4, =SpriteCallbackDummy - str r4, [r0] - mov r0, r8 - movs r1, 0xA0 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x47 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x47 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - mov r0, r8 - movs r1, 0xC0 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x48 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x48 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r7] - adds r0, 0x48 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - bl sub_80839B4 - movs r2, 0x29 - str r2, [sp, 0x8] - movs r2, 0 - ldr r0, [r7] - adds r0, 0x7C - ldrb r0, [r0] - cmp r2, r0 - bcc _08083C7C - b _08083D8A -_08083C7C: - movs r3, 0xFF - mov r10, r3 - movs r0, 0x3 - mov r9, r0 -_08083C84: - ldr r0, [r7] - movs r3, 0x9E - lsls r3, 1 - adds r1, r0, r3 - adds r1, r2 - ldrb r5, [r1] - adds r0, 0x9F - adds r2, 0x1 - mov r8, r2 - mov r1, r8 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, [r7] - adds r0, 0x9F - ldr r1, =sText_Dot - bl StringAppend - ldr r0, [r7] - adds r0, 0x9F - ldr r1, =gText_Space - bl StringAppend - ldr r0, [r7] - adds r0, 0x9F - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r2, =gLinkPlayers + 8 - adds r1, r2 - bl StringAppend - ldr r1, [r7] - adds r1, 0x9F - ldr r0, [sp, 0x8] - lsls r6, r0, 24 - lsrs r6, 24 - mov r2, r10 - str r2, [sp] - mov r3, r9 - str r3, [sp, 0x4] - movs r0, 0x5 - movs r2, 0 - adds r3, r6, 0 - bl Blender_AddTextPrinter - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x9F - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r2, 0x92 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - ldrh r1, [r1] - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, [r7] - adds r1, 0x9F - mov r3, r10 - str r3, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r2, 0x4E - adds r3, r6, 0 - bl Blender_AddTextPrinter - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x9F - movs r2, 0x93 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - ldrh r1, [r1] - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, [r7] - adds r1, 0x9F - mov r3, r10 - str r3, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r2, 0x6E - adds r3, r6, 0 - bl Blender_AddTextPrinter - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x9F - movs r2, 0x94 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - ldrh r1, [r1] - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, [r7] - adds r1, 0x9F - mov r3, r10 - str r3, [sp] - mov r0, r9 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r2, 0x8E - adds r3, r6, 0 - bl Blender_AddTextPrinter - ldr r1, [sp, 0x8] - adds r1, 0x10 - str r1, [sp, 0x8] - mov r2, r8 - lsls r2, 16 - lsrs r2, 16 - ldr r0, [r7] - adds r0, 0x7C - ldrb r0, [r0] - cmp r2, r0 - bcs _08083D8A - b _08083C84 -_08083D8A: - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0x5 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, =sBerryBlenderData - ldr r1, [r0] - movs r3, 0x84 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - b _08083DF8 - .pool -_08083DC8: - ldr r2, [r2] - movs r0, 0x84 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _08083E12 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _08083E12 -_08083DE2: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08083E12 - movs r0, 0x5 - bl PlaySE - ldr r0, =sBerryBlenderData - ldr r1, [r0] -_08083DF8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08083E12 - .pool -_08083E08: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08083E14 -_08083E12: - movs r0, 0 -_08083E14: - 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 sub_8083B08 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8083E24 - push {r4-r7,lr} - sub sp, 0x34 - ldr r0, =gUnknown_08339D14 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x2C] - str r1, [sp, 0x30] - ldr r5, =gUnknown_0203AB74 - add r0, sp, 0x2C - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - movs r1, 0 - bl sub_81973FC - ldrb r0, [r5] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r6, =gText_BlenderMaxSpeedRecord - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x90 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldrb r0, [r5] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - adds r2, r6, 0 - bl PrintTextOnWindow - ldrb r0, [r5] - ldr r2, =gText_234Players - movs r1, 0x29 - str r1, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x4 - bl PrintTextOnWindow - movs r6, 0 - movs r7, 0xA4 - lsls r7, 22 -_08083E8A: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r6, 1 - ldr r2, =0x000009bc - adds r0, r2 - adds r0, r1 - ldrh r4, [r0] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - add r0, sp, 0xC - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, =sText_Dot - bl StringAppend - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, =sText_RPM - bl StringAppend - movs r0, 0x1 - add r1, sp, 0xC - movs r2, 0x8C - bl GetStringRightAlignXOffset - adds r3, r0, 0 - ldr r4, =gUnknown_0203AB74 - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - lsrs r1, r7, 24 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - add r2, sp, 0xC - bl PrintTextOnWindow - movs r0, 0x80 - lsls r0, 21 - adds r7, r0 - adds r6, 0x1 - cmp r6, 0x2 - ble _08083E8A - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x34 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8083F3C -sub_8083F3C: @ 8083F3C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08083F62 - ldr r0, =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08083F62: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08083F82 - ldr r0, =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xAA - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08083F82: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8083F3C - - thumb_func_start sub_8083F94 -sub_8083F94: @ 8083F94 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r7, r1, 0 - bl sub_8136EA4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl sub_8136EDC - adds r1, r0, 0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 1 - lsls r1, 24 - lsrs r1, 24 - bl __divsi3 - lsls r0, 16 - lsrs r3, r0, 16 - strb r3, [r7, 0xD] - ldrb r0, [r6] - strb r0, [r7, 0xC] - movs r0, 0xFF - strb r0, [r7] - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080840C4 - ldr r0, =sBerryBlenderData - ldr r2, [r0] - movs r4, 0xD2 - lsls r4, 1 - adds r1, r2, r4 - ldrb r1, [r1] - mov r8, r0 - cmp r1, 0 - bne _08084058 - cmp r3, 0x14 - bls _08084058 - adds r0, r2, 0 - adds r0, 0x7C - ldrb r1, [r0] - subs r1, 0x1 - movs r0, 0x9E - lsls r0, 1 - mov r9, r0 - adds r0, r2, r0 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r5, =gLinkPlayers + 8 - adds r1, r5 - adds r0, r7, 0 - bl StringCopy - adds r0, r6, 0 - bl sub_81370B4 - strb r0, [r7, 0xB] - ldrb r1, [r7, 0xB] - ldrb r2, [r7, 0xC] - ldrb r3, [r7, 0xD] - mov r6, r8 - ldr r4, [r6] - adds r0, r4, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x1 - add r4, r9 - adds r4, r0 - ldrb r4, [r4] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r5, r0 - ldrb r0, [r5, 0x12] - str r0, [sp] - adds r0, r7, 0 - bl Put3CheersForPokeblocksOnTheAir - lsls r0, 24 - cmp r0, 0 - bne _080840BA - b _080840C4 - .pool -_08084058: - mov r0, r8 - ldr r2, [r0] - movs r1, 0xD2 - lsls r1, 1 - adds r0, r2, r1 - ldrb r1, [r0] - adds r0, r2, 0 - adds r0, 0x7C - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _080840C4 - cmp r3, 0x14 - bhi _080840C4 - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - ldrb r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r5, =gLinkPlayers + 8 - adds r1, r5 - adds r0, r7, 0 - bl StringCopy - adds r0, r6, 0 - bl sub_81370B4 - strb r0, [r7, 0xB] - ldrb r1, [r7, 0xB] - ldrb r2, [r7, 0xC] - ldrb r3, [r7, 0xD] - mov r6, r8 - ldr r0, [r6] - adds r0, r4 - ldrb r4, [r0] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r5, r0 - ldrb r0, [r5, 0x12] - str r0, [sp] - adds r0, r7, 0 - bl Put3CheersForPokeblocksOnTheAir - lsls r0, 24 - cmp r0, 0 - beq _080840C4 -_080840BA: - movs r0, 0x1 - b _080840C6 - .pool -_080840C4: - movs r0, 0 -_080840C6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8083F94 - - thumb_func_start Blender_AddTextPrinter -Blender_AddTextPrinter: @ 80840D4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - mov r9, r1 - ldr r4, [sp, 0x38] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r7, r3, 24 - movs r5, 0 - cmp r4, 0x1 - beq _08084116 - cmp r4, 0x1 - bgt _08084100 - cmp r4, 0 - beq _08084108 - b _08084132 -_08084100: - cmp r4, 0x2 - beq _08084124 - cmp r4, 0x3 - bne _08084136 -_08084108: - add r1, sp, 0x14 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - movs r0, 0x3 - b _08084130 -_08084116: - add r0, sp, 0x14 - strb r5, [r0] - adds r1, r0, 0 - movs r0, 0x2 - strb r0, [r1, 0x1] - movs r0, 0x3 - b _08084130 -_08084124: - add r0, sp, 0x14 - strb r5, [r0] - adds r1, r0, 0 - movs r0, 0x4 - strb r0, [r1, 0x1] - movs r0, 0x5 -_08084130: - strb r0, [r1, 0x2] -_08084132: - cmp r4, 0x3 - beq _08084148 -_08084136: - add r0, sp, 0x14 - ldrb r0, [r0] - lsls r1, r0, 4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl FillWindowPixelBuffer -_08084148: - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - add r0, sp, 0x14 - str r0, [sp, 0x8] - ldr r0, [sp, 0x34] - lsls r0, 24 - asrs r0, 24 - str r0, [sp, 0xC] - mov r0, r9 - str r0, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0x1 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParametrized2 - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Blender_AddTextPrinter - - thumb_func_start Blender_PrintText -Blender_PrintText: @ 808417C - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r7, r1, 0 - adds r6, r2, 0 - movs r0, 0 - ldrsh r4, [r5, r0] - cmp r4, 0 - beq _08084194 - cmp r4, 0x1 - beq _080841C6 - b _080841DA -_08084194: - movs r0, 0x4 - movs r1, 0 - movs r2, 0x14 - movs r3, 0xF - bl sub_8197B1C - str r6, [sp] - str r4, [sp, 0x4] - movs r0, 0x4 - adds r1, r7, 0 - movs r2, 0 - movs r3, 0x1 - bl Blender_AddTextPrinter - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x4 - movs r1, 0x3 - bl CopyWindowToVram - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _080841DA -_080841C6: - movs r0, 0x4 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080841DA - strh r0, [r5] - movs r0, 0x1 - b _080841DC -_080841DA: - movs r0, 0 -_080841DC: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Blender_PrintText - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/link.s b/asm/link.s index 92fc95102..1ce6f7710 100644 --- a/asm/link.s +++ b/asm/link.s @@ -646,7 +646,7 @@ _08009976: orrs r1, r0 _08009990: adds r0, r2, 0 - bl sub_800A994 + bl SetLinkDebugValues _08009996: add sp, 0x4 pop {r4,r5} @@ -2644,15 +2644,15 @@ _0800A94E: .pool thumb_func_end task00_link_test - thumb_func_start sub_800A994 -sub_800A994: @ 800A994 + thumb_func_start SetLinkDebugValues +SetLinkDebugValues: @ 800A994 ldr r2, =gUnknown_0300302C str r0, [r2] ldr r0, =gUnknown_03003070 str r1, [r0] bx lr .pool - thumb_func_end sub_800A994 + thumb_func_end SetLinkDebugValues thumb_func_start sub_800A9A8 sub_800A9A8: @ 800A9A8 @@ -12305,7 +12305,7 @@ sub_800F820: @ 800F820 lsls r0, 24 cmp r0, 0 bne _0800F83C - bl sub_8082D18 + bl GetBlenderArrowPosition ldr r1, =gSendCmd strh r0, [r1, 0xC] _0800F83C: diff --git a/asm/rom6.s b/asm/rom6.s index 719feaae0..6fed08e6c 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -1223,7 +1223,7 @@ sub_8135F04: @ 8135F04 adds r4, 0x1 ldr r6, =gStringVar1 adds r0, r5, 0 - bl sub_8136EA4 + bl GetHighestPokeblocksFlavourLevel adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -1364,7 +1364,7 @@ _08136032: bls _08136002 ldr r4, =gStringVar1 mov r0, r8 - bl sub_8136EDC + bl GetPokeblocksFeel adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2995,8 +2995,8 @@ _08136E8C: bx r0 thumb_func_end ClearPokeblocks - thumb_func_start sub_8136EA4 -sub_8136EA4: @ 8136EA4 + thumb_func_start GetHighestPokeblocksFlavourLevel +GetHighestPokeblocksFlavourLevel: @ 8136EA4 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 @@ -3024,10 +3024,10 @@ _08136ECC: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_8136EA4 + thumb_func_end GetHighestPokeblocksFlavourLevel - thumb_func_start sub_8136EDC -sub_8136EDC: @ 8136EDC + thumb_func_start GetPokeblocksFeel +GetPokeblocksFeel: @ 8136EDC push {lr} movs r1, 0x6 bl sub_8136F9C @@ -3039,10 +3039,10 @@ sub_8136EDC: @ 8136EDC _08136EEE: pop {r1} bx r1 - thumb_func_end sub_8136EDC + thumb_func_end GetPokeblocksFeel - thumb_func_start sub_8136EF4 -sub_8136EF4: @ 8136EF4 + thumb_func_start GetFirstFreePokeblockSlot +GetFirstFreePokeblockSlot: @ 8136EF4 push {lr} movs r1, 0 ldr r0, =gSaveBlock1Ptr @@ -3070,13 +3070,13 @@ _08136F18: _08136F26: pop {r1} bx r1 - thumb_func_end sub_8136EF4 + thumb_func_end GetFirstFreePokeblockSlot - thumb_func_start sub_8136F2C -sub_8136F2C: @ 8136F2C + thumb_func_start AddPokeblock +AddPokeblock: @ 8136F2C push {r4,lr} adds r4, r0, 0 - bl sub_8136EF4 + bl GetFirstFreePokeblockSlot lsls r0, 24 asrs r1, r0, 24 movs r0, 0x1 @@ -3102,7 +3102,7 @@ _08136F62: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8136F2C + thumb_func_end AddPokeblock thumb_func_start sub_8136F68 sub_8136F68: @ 8136F68 @@ -3287,8 +3287,8 @@ _081370AC: bx r1 thumb_func_end sub_8137068 - thumb_func_start sub_81370B4 -sub_81370B4: @ 81370B4 + thumb_func_start GetPokeblocksFlavour +GetPokeblocksFlavour: @ 81370B4 push {r4-r7,lr} adds r5, r0, 0 movs r7, 0 @@ -3324,7 +3324,7 @@ _081370E2: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_81370B4 + thumb_func_end GetPokeblocksFlavour thumb_func_start sub_81370FC sub_81370FC: @ 81370FC diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc index d8f2f2e48..a93c44615 100644 --- a/data/scripts/pokeblocks.inc +++ b/data/scripts/pokeblocks.inc @@ -290,7 +290,7 @@ LilycoveCity_ContestLobby_EventScript_293CEE:: @ 8293CEE checkitem ITEM_POKEBLOCK_CASE, 1 compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_293D43 - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_eq LilycoveCity_ContestLobby_EventScript_293D39 specialvar VAR_RESULT, PlayerHasBerries @@ -365,7 +365,7 @@ LilycoveCity_ContestLobby_EventScript_293DC6:: @ 8293DC6 compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_293E14 msgbox LilycoveCity_ContestLobby_Text_293237, 4 - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_if 5, LilycoveCity_ContestLobby_EventScript_293D91 compare_var_to_value VAR_RESULT, 65535 @@ -431,7 +431,7 @@ LilycoveCity_ContestLobby_EventScript_293EA3:: @ 8293EA3 compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_293EF1 msgbox LilycoveCity_ContestLobby_Text_29354E, 4 - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_if 5, LilycoveCity_ContestLobby_EventScript_293E6E compare_var_to_value VAR_RESULT, 65535 @@ -470,7 +470,7 @@ LilycoveCity_ContestLobby_EventScript_293F28:: @ 8293F28 specialvar VAR_RESULT, PlayerHasBerries compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_293F1E - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_if 5, LilycoveCity_ContestLobby_EventScript_293F64 compare_var_to_value VAR_RESULT, 65535 @@ -536,7 +536,7 @@ LilycoveCity_ContestLobby_EventScript_293FF8:: @ 8293FF8 checkitem ITEM_POKEBLOCK_CASE, 1 compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_294028 - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_eq LilycoveCity_ContestLobby_EventScript_294028 dodailyevents @@ -570,7 +570,7 @@ LilycoveCity_ContestLobby_EventScript_294055:: @ 8294055 checkitem ITEM_POKEBLOCK_CASE, 1 compare_var_to_value VAR_RESULT, 0 goto_eq LilycoveCity_ContestLobby_EventScript_29416C - specialvar VAR_RESULT, sub_8136EF4 + specialvar VAR_RESULT, GetFirstFreePokeblockSlot compare_var_to_value VAR_RESULT, 65535 goto_if 5, LilycoveCity_ContestLobby_EventScript_294092 compare_var_to_value VAR_RESULT, 65535 diff --git a/data/specials.inc b/data/specials.inc index dac9467fd..003435ce4 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -170,7 +170,7 @@ gSpecials:: @ 81DBA64 def_special sub_80B086C def_special ChangePokemonNickname def_special sub_81B94B0 - def_special sub_8136EF4 + def_special GetFirstFreePokeblockSlot def_special DoBerryBlending def_special sub_8142BC8 def_special sub_813BD60 diff --git a/include/berry_blender.h b/include/berry_blender.h new file mode 100644 index 000000000..fb62e3fa3 --- /dev/null +++ b/include/berry_blender.h @@ -0,0 +1,8 @@ +#ifndef GUARD_BERRY_BLENDER_H +#define GUARD_BERRY_BLENDER_H + +void DoBerryBlending(void); +u16 GetBlenderArrowPosition(void); +void ShowBerryBlenderRecordWindow(void); + +#endif // GUARD_BERRY_BLENDER_H diff --git a/include/menu.h b/include/menu.h index e93d688e4..2052a8dad 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,6 +1,7 @@ #ifndef GUARD_MENU_H #define GUARD_MENU_H +#include "text.h" #include "window.h" struct MenuAction @@ -31,5 +32,7 @@ void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirs s8 sub_8198C58(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); +void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); +void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); #endif // GUARD_MENU_H diff --git a/include/pokeblock.h b/include/pokeblock.h index 5d52f8e55..0247ab2e0 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -22,24 +22,13 @@ enum PBLOCK_FEEL, }; +// rom6 void ClearPokeblocks(void); +s8 GetFirstFreePokeblockSlot(void); -/* -void sub_810B96C(void); -u8 sub_810BA50(s16, s16, u8); -u8 sub_810C9B0(struct Pokeblock *); -s16 GetPokeblockData(const struct Pokeblock *, u8); -u8 sub_810C9E8(struct Pokeblock *); -void sub_810BA7C(u8); -bool8 PokeblockClearIfExists(u8); -s16 PokeblockGetGain(u8, const struct Pokeblock *); -u8 sub_810CB68(u8, u8*); -void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); -void CB2_PreparePokeblockFeedScene(void); - -#include "main.h" - -void sub_8136130(struct Pokeblock *, MainCallback); -*/ +bool32 AddPokeblock(struct Pokeblock *pokeblock); +u8 GetHighestPokeblocksFlavourLevel(const struct Pokeblock *pokeblock); +u8 GetPokeblocksFeel(const struct Pokeblock *pokeblock); +u8 GetPokeblocksFlavour(const struct Pokeblock *pokeblock); #endif // GUARD_POKEBLOCK_H diff --git a/include/text.h b/include/text.h index 594661717..86a25df3a 100644 --- a/include/text.h +++ b/include/text.h @@ -85,6 +85,8 @@ #define NUM_TEXT_PRINTERS 32 +#define TEXT_SPEED_FF 0xFF + struct TextPrinterSubStruct { u8 font_type:4; // 0x14 diff --git a/include/tv.h b/include/tv.h index 43f36d69f..35b41cef9 100644 --- a/include/tv.h +++ b/include/tv.h @@ -13,5 +13,6 @@ void sub_80EE184(void); void sub_80EEA70(void); void sub_80F14F8(TVShow *shows); size_t sub_80EF370(int value); +bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language); #endif //GUARD_TV_H diff --git a/ld_script.txt b/ld_script.txt index c6ee53feb..2732c8d4c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -86,7 +86,6 @@ SECTIONS { asm/load_save.o(.text); asm/trade.o(.text); src/berry_blender.o(.text); - asm/berry_blender.o(.text); src/play_time.o(.text); src/new_game.o(.text); asm/rom4.o(.text); diff --git a/src/berry_blender.c b/src/berry_blender.c index 21706d4dc..869f8b834 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1,4 +1,5 @@ #include "global.h" +#include "berry_blender.h" #include "bg.h" #include "window.h" #include "task.h" @@ -18,12 +19,16 @@ #include "new_menu_helpers.h" #include "item_menu_icons.h" #include "berry.h" +#include "item.h" #include "items.h" #include "string_util.h" #include "international_string_util.h" #include "rng.h" +#include "menu.h" +#include "pokeblock.h" +#include "trig.h" +#include "tv.h" -// Static type declarations #define BLENDER_SCORE_BEST 0 #define BLENDER_SCORE_GOOD 1 #define BLENDER_SCORE_MISS 2 @@ -31,6 +36,14 @@ #define BLENDER_MAX_PLAYERS 4 #define BLENDER_SCORES_NO 3 +enum +{ + PLAY_AGAIN_OK, + DONT_PLAY_AGAIN, + CANT_PLAY_NO_BERRIES, + CANT_PLAY_NO_PKBLCK_SPACE +}; + struct BlenderBerry { u16 itemId; @@ -39,317 +52,87 @@ struct BlenderBerry u8 smoothness; }; +struct TimeAndRPM +{ + u32 time; + u16 max_RPM; +}; + +struct BlenderGameBlock +{ + struct TimeAndRPM timeRPM; + u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; +}; + +struct TvBlenderStruct +{ + u8 name[11]; + u8 pokeblockFlavour; + u8 pokeblockColor; + u8 pokeblockSheen; +}; + struct BerryBlenderData { u8 mainState; u8 loadGfxState; - u8 field_02; - u8 field_03; - u8 field_04; - u8 field_05; - u8 field_06; - u8 field_07; - u8 field_08; - u8 field_09; - u8 field_0A; - u8 field_0B; - u8 field_0C; - u8 field_0D; - u8 field_0E; - u8 field_0F; - - u8 field_10; - u8 field_11; - u8 field_12; - u8 field_13; - u8 field_14; - u8 field_15; - u8 field_16; - u8 field_17; - u8 field_18; - u8 field_19; - u8 field_1A; - u8 field_1B; - u8 field_1C; - u8 field_1D; - u8 field_1E; - u8 field_1F; - - u8 field_20; - u8 field_21; - u8 field_22; - u8 field_23; - u8 field_24; - u8 field_25; - u8 field_26; - u8 field_27; - u8 field_28; - u8 field_29; - u8 field_2A; - u8 field_2B; - u8 field_2C; - u8 field_2D; - u8 field_2E; - u8 field_2F; - - u8 field_30; - u8 field_31; - u8 field_32; - u8 field_33; - u8 field_34; - u8 field_35; - u8 field_36; - u8 field_37; - u8 field_38; - u8 field_39; - u8 field_3A; - u8 field_3B; - u8 field_3C; - u8 field_3D; - u8 field_3E; - u8 field_3F; - - u8 field_40; - u8 field_41; - u8 field_42; - u8 field_43; + u8 unused_02[0x42]; u16 field_44; - u8 field_46; - u8 field_47; - u16 field_48; + u8 scoreIconIds[BLENDER_SCORES_NO]; u16 arrowPos; s16 field_4C; - s16 field_4E; - + u16 max_RPM; u8 syncArrowSpriteIds[BLENDER_MAX_PLAYERS]; u8 syncArrowSprite2Ids[BLENDER_MAX_PLAYERS]; - u8 field_58; - u8 field_59; - u8 field_5A; - u8 field_5B; - u8 field_5C; - u8 field_5D; - u8 field_5E; - u8 field_5F; - - u8 field_60; - u8 field_61; - u8 field_62; - u8 field_63; + u8 unused_57[0xB]; + u8 gameEndState; u16 field_64[BLENDER_MAX_PLAYERS]; - u8 field_6C; - u8 field_6D; - u8 field_6E; - u8 field_6F; - - u16 field_70; + u16 field_6C; + u16 field_6E; + u16 playAgainState; u8 field_72; - u8 field_73; u16 chosenItemId[BLENDER_MAX_PLAYERS]; u8 playersNo; - u8 field_7D; - u8 field_7E; - u8 field_7F; - - u8 field_80; - u8 field_81; - u8 field_82; - u8 field_83; - u8 field_84; - u8 field_85; - u8 field_86; - u8 field_87; - u8 field_88; - u8 field_89; - u8 field_8A; - u8 field_8B; - u8 field_8C; - u8 field_8D; + u8 unused_7D[0x10]; u16 field_8E[BLENDER_MAX_PLAYERS]; u16 field_96[BLENDER_MAX_PLAYERS]; - u8 field_9E; - u8 field_9F; - - u8 field_A0; - u8 field_A1; - u8 field_A2; - u8 field_A3; - u8 field_A4; - u8 field_A5; - u8 field_A6; - u8 field_A7; - u8 field_A8; - u8 field_A9; - u8 field_AA; - u8 field_AB; - u8 field_AC; - u8 field_AD; - u8 field_AE; - u8 field_AF; - - u8 field_B0; - u8 field_B1; - u8 field_B2; - u8 field_B3; - u8 field_B4; - u8 field_B5; - u8 field_B6; - u8 field_B7; - u8 field_B8; - u8 field_B9; - u8 field_BA; - u8 field_BB; - u8 field_BC; - u8 field_BD; - u8 field_BE; - u8 field_BF; - - u8 field_C0; - u8 field_C1; - u8 field_C2; - u8 field_C3; - u8 field_C4; - u8 field_C5; - u8 field_C6; - u8 field_C7; - u8 field_C8; - u8 field_C9; - u8 field_CA; - u8 field_CB; - u8 field_CC; - u8 field_CD; - u8 field_CE; - u8 field_CF; - - u8 field_D0; - u8 field_D1; - u8 field_D2; - u8 field_D3; - u8 field_D4; - u8 field_D5; - u8 field_D6; - u8 field_D7; - u8 field_D8; - u8 field_D9; - u8 field_DA; - u8 field_DB; - u8 field_DC; - u8 field_DD; - u8 field_DE; - u8 field_DF; - - u8 field_E0; - u8 field_E1; - u8 field_E2; - u8 field_E3; - u8 field_E4; - u8 field_E5; - u8 field_E6; - u8 field_E7; - u8 field_E8; - u8 field_E9; - u8 field_EA; - u8 field_EB; - u8 field_EC; - u8 field_ED; - u8 field_EE; - u8 field_EF; - - u8 field_F0; - u8 field_F1; - u8 field_F2; - u8 field_F3; - u8 field_F4; - u8 field_F5; - u8 field_F6; - u8 field_F7; - u8 field_F8; - u8 field_F9; - u8 field_FA; - u8 field_FB; - u8 field_FC; - u8 field_FD; - u8 field_FE; - u8 field_FF; - - u8 field_100; - u8 field_101; - u8 field_102; - u8 field_103; + u8 yesNoAnswer; + u8 stringVar[100]; u32 gameFrameTime; s32 framesToWait; u32 field_10C; - - u8 field_110; - u8 field_111; - u8 field_112; - u8 field_113; + u8 unused_110[4]; u8 field_114; - u8 field_115; u16 field_116; u16 field_118; u16 field_11A; - s16 field_11C; - s16 field_11E; - + u16 bg_X; + u16 bg_Y; u8 field_120[3]; u8 field_123; u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; - u8 field_13C; - u8 field_13D; - u8 field_13E; - u8 field_13F; - + u8 playerPlaces[BLENDER_MAX_PLAYERS]; struct BgAffineSrcData bgAffineSrc; - u16 field_154; - u8 field_156; - u8 field_157; struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; - u8 field_198; - u8 field_199; - u8 field_19A; - u8 field_19B; - u8 field_19C; - u8 field_19D; - u8 field_19E; - u8 field_19F; - - u8 field_1A0; - u8 field_1A1; - u8 field_1A2; - u8 field_1A3; + struct TimeAndRPM smallBlock; + u32 field_1A0; u8 field_1A4; - u8 field_1A5; - u8 field_1A6; - u8 field_1A7; - u8 field_1A8; - u8 field_1A9; - u8 field_1AA; - u8 field_1AB; - u8 field_1AC; - u8 field_1AD; - u8 field_1AE; - u8 field_1AF; - - u8 field_1B0; - u8 field_1B1; - u8 field_1B2; - u8 field_1B3; - u8 field_1B4; - u8 field_1B5; - u8 field_1B6; - u8 field_1B7; + struct TvBlenderStruct tvBlender; u8 tilemapBuffers[2][0x800]; s16 textState; void *tilesBuffer; - u8 field_11C0[0x20]; + struct BlenderGameBlock gameBlock; }; extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_BGM; extern u16 gSpecialVar_ItemId; extern u8 gInGameOpponentsNo; +extern u8 gUnknown_020322D5; +extern u8 gResultsWindowId; + +extern const u8 * const gPokeblockNames[]; // graphics extern const u8 gBerryBlenderArrowTiles[]; @@ -359,9 +142,15 @@ extern const u8 gBerryBlenderParticlesTiles[]; extern const u8 gBerryBlenderCountdownNumbersTiles[]; extern const u16 gBerryBlenderMiscPalette[]; extern const u16 gBerryBlenderArrowPalette[]; +extern const u8 sBlenderCenterGfx[]; +extern const u8 gUnknown_08D91DB8[]; +extern const u8 gUnknown_08D927EC[]; // text -extern const u8 gText_BerryBlenderStart[]; +extern const u8 gText_SavingDontTurnOff2[]; +extern const u8 gText_Space[]; +extern const u8 gText_BlenderMaxSpeedRecord[]; +extern const u8 gText_234Players[]; extern void sub_81978B0(u16); extern void sub_800A418(void); @@ -372,51 +161,73 @@ extern void sub_809882C(u8, u16, u8); extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8); extern void sub_81AABF0(void (*callback)(void)); extern void sub_800B4C0(void); +extern void sub_8009F8C(void); +extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +extern void sub_8153430(void); +extern bool8 sub_8153474(void); +extern void sub_80EECEC(void); // this file's functions -void BerryBlender_SetGpuRegs(void); -void sub_8080EA4(u8 taskId); -void sub_8080FD0(u8 taskId); -void sub_80810F8(u8 taskId); -void sub_8081224(u8 taskId); -void sub_80833F8(struct Sprite *sprite); -void sub_8082F68(struct Sprite *sprite); -void sub_8083010(struct Sprite *sprite); -void sub_80830C0(struct Sprite *sprite); -void sub_8082F9C(struct Sprite *sprite); -void Blender_SetPlayerNamesLocal(u8 opponentsNum); -void sub_807FAC8(void); -void sub_8082D28(void); -bool32 Blender_PrintText(s16 *textState, const u8 *string, u8 textSpeed); -void sub_807FFA4(void); -void sub_8080018(void); -void sub_80808D4(void); -void Blender_DummiedOutFunc(s16 a0, s16 a1); -void sub_8081898(void); -void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc); -bool8 sub_8083380(void); -void sub_808074C(void); -void Blender_PrintPlayerNames(void); -void sub_8080588(void); -void Blender_SetBankBerryData(u8 bank, u16 itemId); -void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 width, s8 x, s8 y, s32 state); -void sub_8080DF8(void); -void sub_8082E84(void); -void sub_80832BC(s16* a0, u16 a1); - -extern struct BerryBlenderData *sBerryBlenderData; - -// Static RAM declarations -IWRAM_DATA void *berry_blender_c_unused_03000de4; -IWRAM_DATA s16 gUnknown_03000DE8[8]; -IWRAM_DATA s16 gUnknown_03000DF8[6]; -IWRAM_DATA s16 gUnknown_03000E04; -IWRAM_DATA s16 gUnknown_03000E06; - -// TODO: make those static once the file is decompiled -const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); -const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); -const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); +static void BerryBlender_SetBackgroundsPos(void); +static void sub_8080EA4(u8 taskId); +static void sub_8080FD0(u8 taskId); +static void sub_80810F8(u8 taskId); +static void sub_8081224(u8 taskId); +static void sub_8083F3C(u8 taskId); +static void sub_80833F8(struct Sprite *sprite); +static void sub_8082F68(struct Sprite *sprite); +static void sub_8083010(struct Sprite *sprite); +static void sub_80830C0(struct Sprite *sprite); +static void sub_8082F9C(struct Sprite *sprite); +static void Blender_SetPlayerNamesLocal(u8 opponentsNum); +static void sub_807FAC8(void); +static void sub_8082D28(void); +static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed); +static void sub_807FFA4(void); +static void sub_8080018(void); +static void sub_80808D4(void); +static void Blender_DummiedOutFunc(s16 a0, s16 a1); +static void sub_8081898(void); +static void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc); +static bool8 sub_8083380(void); +static void sub_808074C(void); +static void Blender_PrintPlayerNames(void); +static void sub_8080588(void); +static void Blender_SetBankBerryData(u8 bank, u16 itemId); +static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId); +static void sub_8080DF8(void); +static void sub_8082E84(void); +static void sub_80832BC(s16* a0, u16 a1); +static void sub_8083140(u16 a0, u16 a2); +static void sub_8083230(u16 a0); +static void sub_808330C(void); +static void sub_8082AD4(void); +static void CB2_HandleBlenderEndGame(void); +static bool8 Blender_PrintBlendingRanking(void); +static bool8 Blender_PrintBlendingResults(void); +static void CB2_HandlePlayerPlayAgainChoice(void); +static void CB2_HandlePlayerLinkPlayAgainChoice(void); +static void sub_8083170(u16 a0, u16 a1); +static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst); +static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1); + +// ewram +EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL; +EWRAM_DATA static s32 sUnknown_020322A8[5] = {0}; +EWRAM_DATA static s32 sUnknown_020322BC[5] = {0}; +EWRAM_DATA static u32 sUnknown_020322D0 = 0; + +// iwram +IWRAM_DATA static s16 sUnknown_03000DE8[8]; +IWRAM_DATA static s16 sUnknown_03000DF8[6]; +IWRAM_DATA static s16 sUnknown_03000E04; +IWRAM_DATA static s16 sUnknown_03000E06; + +// rom + +static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); // unreferenced pals? static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unknown/unknown_339514.gbapal"); @@ -429,9 +240,9 @@ static const u8 sUnusedText_Space[] = _(" "); static const u8 sUnusedText_Terminating[] = _("Terminating."); static const u8 sUnusedText_LinkPartnerNotFound[] = _("Link partner(s) not found.\nPlease try again.\p"); -const u8 gText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p"); -const u8 gText_NewParagraph[] = _("\p"); -const u8 gText_WasMade[] = _(" was made!"); +static const u8 sText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p"); +static const u8 sText_NewParagraph[] = _("\p"); +static const u8 sText_WasMade[] = _(" was made!"); static const u8 sText_Mister[] = _("MISTER"); static const u8 sText_Laddie[] = _("LADDIE"); static const u8 sText_Lassie[] = _("LASSIE"); @@ -439,7 +250,7 @@ static const u8 sText_Master[] = _("MASTER"); static const u8 sText_Dude[] = _("DUDE"); static const u8 sText_Miss[] = _("MISS"); -const u8* const sBlenderOpponentsNames[] = +static const u8* const sBlenderOpponentsNames[] = { sText_Mister, sText_Laddie, @@ -461,29 +272,29 @@ enum static const u8 sText_PressAToStart[] = _("Press the A Button to start."); static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while."); -const u8 sText_CommunicationStandby[] = _("Communication standby…"); -const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?"); -const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p"); -const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p"); -const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); -const u8 sText_ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); -const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING"); +static const u8 sText_CommunicationStandby[] = _("Communication standby…"); +static const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?"); +static const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p"); +static const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p"); +static const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); +static const u8 sText_ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); +static const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING"); static const u8 sText_BerryUsed[] = _("BERRY USED"); -const u8 sText_SpaceBerry[] = _(" BERRY"); -const u8 sText_Time[] = _("Time:"); -const u8 sText_Min[] = _(" min. "); -const u8 sText_Sec[] = _(" sec."); -const u8 sText_MaximumSpeed[] = _("MAXIMUM SPEED"); -const u8 sText_RPM[] = _(" RPM"); -const u8 sText_Dot[] = _("."); -const u8 sText_NewLine[] = _("\n"); +static const u8 sText_SpaceBerry[] = _(" BERRY"); +static const u8 sText_Time[] = _("Time:"); +static const u8 sText_Min[] = _(" min. "); +static const u8 sText_Sec[] = _(" sec."); +static const u8 sText_MaximumSpeed[] = _("MAXIMUM SPEED"); +static const u8 sText_RPM[] = _(" RPM"); +static const u8 sText_Dot[] = _("."); +static const u8 sText_NewLine[] = _("\n"); static const u8 sText_Space[] = _(" "); -const u8 sText_Ranking[] = _("RANKING"); -const u8 sText_TheLevelIs[] = _("The level is "); -const u8 sText_TheFeelIs[] = _(", and the feel is "); -const u8 sText_Dot2[] = _("."); +static const u8 sText_Ranking[] = _("RANKING"); +static const u8 sText_TheLevelIs[] = _("The level is "); +static const u8 sText_TheFeelIs[] = _(", and the feel is "); +static const u8 sText_Dot2[] = _("."); -const struct BgTemplate sBerryBlenderBgTemplates[3] = +static const struct BgTemplate sBerryBlenderBgTemplates[3] = { { .bg = 0, @@ -525,31 +336,31 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] = DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_083399B8 = +static const struct WindowTemplate sBlender_YesNoWindowTemplate = { 0, 0x15, 9, 5, 4, 0xE, 0xCC }; -const s8 gUnknown_083399C0[][2] = +static const s8 sUnknown_083399C0[][2] = { {-1, -1}, {1, -1}, {-1, 1}, {1, 1} }; -const u8 sBlenderSyncArrowsPos[BLENDER_MAX_PLAYERS][2] = +static const u8 sBlenderSyncArrowsPos[BLENDER_MAX_PLAYERS][2] = { {72, 32}, {168, 32}, {72, 128}, {168, 128} }; -const u8 gUnknown_083399D0[3][4] = +static const u8 sUnknown_083399D0[3][4] = { {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} }; -const u16 gUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000}; -const u8 gUnknown_083399E4[] = {1, 1, 0}; -const u8 gUnknown_083399E7[] = {32, 224, 96, 160, 0}; +static const u16 sUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000}; +static const u8 sUnknown_083399E4[] = {1, 1, 0}; +static const u8 sUnknown_083399E7[] = {32, 224, 96, 160, 0}; -const TaskFunc gUnknown_083399EC[] = +static const TaskFunc sUnknown_083399EC[] = { sub_8080EA4, sub_8080FD0, sub_80810F8 }; @@ -671,22 +482,22 @@ static const union AnimCmd *const sSpriteAnimTable_82163AC[] = sSpriteAnim_82163A4 }; -const struct SpriteSheet sSpriteSheet_BlenderArrow = +static const struct SpriteSheet sSpriteSheet_BlenderArrow = { gBerryBlenderArrowTiles, 0x800, 46545 }; -const struct SpritePalette sSpritePal_BlenderMisc = +static const struct SpritePalette sSpritePal_BlenderMisc = { gBerryBlenderMiscPalette, 46546 }; -const struct SpritePalette sSpritePal_BlenderArrow = +static const struct SpritePalette sSpritePal_BlenderArrow = { gBerryBlenderArrowPalette, 12312 }; -const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = { .tileTag = 46545, .paletteTag = 12312, @@ -750,12 +561,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216444[] = sSpriteAnim_821643C, }; -const struct SpriteSheet gUnknown_08339B38 = +static const struct SpriteSheet sUnknown_08339B38 = { gBerryBlenderMarubatsuTiles, 0x200, 48888 }; -const struct SpriteTemplate gUnknown_08339B40 = +static const struct SpriteTemplate sUnknown_08339B40 = { .tileTag = 48888, .paletteTag = 46546, @@ -837,12 +648,12 @@ static const union AnimCmd *const sSpriteAnimTable_82164E0[] = sSpriteAnim_82164D8, }; -const struct SpriteSheet gUnknown_08339BD8 = +static const struct SpriteSheet sUnknown_08339BD8 = { gBerryBlenderParticlesTiles, 0xE0, 23456 }; -const struct SpriteTemplate gUnknown_08339BE0 = +static const struct SpriteTemplate sUnknown_08339BE0 = { .tileTag = 23456, .paletteTag = 46546, @@ -895,12 +706,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216534[] = sSpriteAnim_821652C, }; -const struct SpriteSheet gUnknown_08339C24 = +static const struct SpriteSheet sUnknown_08339C24 = { gBerryBlenderCountdownNumbersTiles, 0x600, 12345 }; -const struct SpriteTemplate gUnknown_08339C2C = +static const struct SpriteTemplate sUnknown_08339C2C = { .tileTag = 12345, .paletteTag = 46546, @@ -939,12 +750,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216570[] = sSpriteAnim_8216568, }; -const struct SpriteSheet gUnknown_08339C58 = +static const struct SpriteSheet sUnknown_08339C58 = { gBerryBlenderStartTiles, 0x400, 12346 }; -const struct SpriteTemplate gUnknown_08339C60 = +static const struct SpriteTemplate sUnknown_08339C60 = { .tileTag = 12346, .paletteTag = 46546, @@ -955,7 +766,7 @@ const struct SpriteTemplate gUnknown_08339C60 = .callback = sub_80830C0 }; -const s16 gUnknown_08339C78[][5] = +static const s16 sUnknown_08339C78[][5] = { {-10, 20, 10, 2, 1}, {250, 20, 10, -2, 1}, @@ -970,11 +781,11 @@ static const u8 sOpponentBerrySets[][3] = static const u8 sSpecialOpponentBerrySets[] = {30, 31, 32, 33, 34}; -const u8 gUnknown_08339CC3[] = {1, 1, 2, 3, 4}; +static const u8 sUnknown_08339CC3[] = {1, 1, 2, 3, 4}; -const u8 gUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; +static const u8 sUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; -static const u8 gUnknown_08339CD2[] = +static const u8 sUnknown_08339CD2[] = { 0xfe, 0x02, 0x02, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, 0x0c, 0x10, 0x00, 0xff, 0xfe, 0x91, 0x72, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, @@ -984,18 +795,18 @@ static const u8 gUnknown_08339CD2[] = 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02 }; -const struct WindowTemplate gUnknown_08339D14[] = {0, 6, 4, 0x12, 0xB, 0xF, 8}; +static const struct WindowTemplate sBlenderRecordWindowTemplate = {0, 6, 4, 0x12, 0xB, 0xF, 8}; // code -void Blender_ControlHitPitch(void) +static void Blender_ControlHitPitch(void) { m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, 2 * (sBerryBlenderData->field_4C - 128)); } -void VBlankCB0_BerryBlender(void) +static void VBlankCB0_BerryBlender(void) { - BerryBlender_SetGpuRegs(); + BerryBlender_SetBackgroundsPos(); SetBgAffine(2, sBerryBlenderData->bgAffineSrc.texX, sBerryBlenderData->bgAffineSrc.texY, sBerryBlenderData->bgAffineSrc.scrX, sBerryBlenderData->bgAffineSrc.scrY, sBerryBlenderData->bgAffineSrc.sx, sBerryBlenderData->bgAffineSrc.sy, @@ -1005,11 +816,7 @@ void VBlankCB0_BerryBlender(void) TransferPlttBuffer(); } -extern const u8 sBlenderCenterGfx[]; -extern const u8 gUnknown_08D91DB8[]; -extern const u8 gUnknown_08D927EC[]; - -bool8 LoadBerryBlenderGfx(void) +static bool8 LoadBerryBlenderGfx(void) { switch (sBerryBlenderData->loadGfxState) { @@ -1051,13 +858,13 @@ bool8 LoadBerryBlenderGfx(void) break; case 8: LoadSpriteSheet(&sSpriteSheet_BlenderArrow); - LoadSpriteSheet(&gUnknown_08339BD8); - LoadSpriteSheet(&gUnknown_08339B38); + LoadSpriteSheet(&sUnknown_08339BD8); + LoadSpriteSheet(&sUnknown_08339B38); sBerryBlenderData->loadGfxState++; break; case 9: - LoadSpriteSheet(&gUnknown_08339C24); - LoadSpriteSheet(&gUnknown_08339C58); + LoadSpriteSheet(&sUnknown_08339C24); + LoadSpriteSheet(&sUnknown_08339C58); LoadSpritePalette(&sSpritePal_BlenderArrow); LoadSpritePalette(&sSpritePal_BlenderMisc); Free(sBerryBlenderData->tilesBuffer); @@ -1068,7 +875,7 @@ bool8 LoadBerryBlenderGfx(void) return FALSE; } -void sub_807F9D0(void) +static void sub_807F9D0(void) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); CopyBgTilemapBufferToVram(0); @@ -1081,7 +888,7 @@ void sub_807F9D0(void) ChangeBgY(1, 0, 0); } -void InitBerryBlenderWindows(void) +static void InitBerryBlenderWindows(void) { if (InitWindows(sBerryBlender_WindowTemplates)) { @@ -1101,15 +908,15 @@ void DoBerryBlending(void) if (sBerryBlenderData == NULL) sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData)); - sBerryBlenderData->field_63 = 0; + sBerryBlenderData->gameEndState = 0; sBerryBlenderData->mainState = 0; - sBerryBlenderData->field_63 = 0; + sBerryBlenderData->gameEndState = 0; Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); SetMainCallback2(sub_807FAC8); } -void sub_807FAC8(void) +static void sub_807FAC8(void) { s32 i; @@ -1132,8 +939,8 @@ void sub_807FAC8(void) sBerryBlenderData->field_118 = 0; sBerryBlenderData->field_116 = 0; sBerryBlenderData->field_11A = 0x50; - sBerryBlenderData->field_11C = 0; - sBerryBlenderData->field_11E = 0; + sBerryBlenderData->bg_X = 0; + sBerryBlenderData->bg_Y = 0; sBerryBlenderData->loadGfxState = 0; sub_8082D28(); @@ -1166,7 +973,7 @@ void sub_807FAC8(void) sBerryBlenderData->mainState++; break; case 4: - if (Blender_PrintText(&sBerryBlenderData->textState, gText_BerryBlenderStart, GetPlayerTextSpeed())) + if (Blender_PrintText(&sBerryBlenderData->textState, sText_BerryBlenderStart, GetPlayerTextSpeed())) sBerryBlenderData->mainState++; break; case 5: @@ -1193,7 +1000,7 @@ void sub_807FAC8(void) UpdatePaletteFade(); } -void sub_807FD08(struct Sprite* sprite) +static void sub_807FD08(struct Sprite* sprite) { sprite->data1 += sprite->data6; sprite->data2 -= sprite->data4; @@ -1214,7 +1021,7 @@ void sub_807FD08(struct Sprite* sprite) sprite->pos1.y = sprite->data2; } -void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +static void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) { sprite->data0 = a3; sprite->data1 = a2; @@ -1227,13 +1034,13 @@ void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) sprite->callback = sub_807FD08; } -void sub_807FD90(u16 a0, u8 a1) +static void sub_807FD90(u16 a0, u8 a1) { u8 spriteId = sub_80D511C(a0 + 123, 0, 80, a1 & 1); - sub_807FD64(&gSprites[spriteId], gUnknown_08339C78[a1][0], gUnknown_08339C78[a1][1], gUnknown_08339C78[a1][2], gUnknown_08339C78[a1][3], gUnknown_08339C78[a1][4]); + sub_807FD64(&gSprites[spriteId], sUnknown_08339C78[a1][0], sUnknown_08339C78[a1][1], sUnknown_08339C78[a1][2], sUnknown_08339C78[a1][3], sUnknown_08339C78[a1][4]); } -void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) +static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) { const struct Berry *berryInfo = GetBerryInfo(ITEM_TO_BERRY(itemId)); @@ -1247,7 +1054,7 @@ void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) berry->smoothness = berryInfo->smoothness; } -void Blender_SetPlayerNamesLocal(u8 opponentsNum) +static void Blender_SetPlayerNamesLocal(u8 opponentsNum) { switch (opponentsNum) { @@ -1294,7 +1101,7 @@ void Blender_SetPlayerNamesLocal(u8 opponentsNum) } } -void sub_807FFA4(void) +static void sub_807FFA4(void) { s32 i; @@ -1316,7 +1123,7 @@ void sub_807FFA4(void) SetMainCallback2(sub_80808D4); } -void sub_8080018(void) +static void sub_8080018(void) { s32 i, j; @@ -1334,8 +1141,8 @@ void sub_8080018(void) sBerryBlenderData->scores[i][j] = 0; } } - sBerryBlenderData->field_70 = 0; - sBerryBlenderData->field_4E = 0; + sBerryBlenderData->playAgainState = 0; + sBerryBlenderData->max_RPM = 0; sBerryBlenderData->loadGfxState = 0; sBerryBlenderData->mainState++; break; @@ -1414,7 +1221,7 @@ void sub_8080018(void) for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_114 == gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]) + if (sBerryBlenderData->field_114 == sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]) { sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); break; @@ -1431,7 +1238,7 @@ void sub_8080018(void) if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) { sBerryBlenderData->mainState++; - sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; + sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; } else { @@ -1458,7 +1265,7 @@ void sub_8080018(void) SetGpuRegBits(REG_OFFSET_BG2CNT, 2); sBerryBlenderData->mainState++; sBerryBlenderData->field_11A = 256; - sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; + sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; sBerryBlenderData->framesToWait = 0; PlaySE(SE_TRACK_DOOR); sub_808074C(); @@ -1475,7 +1282,7 @@ void sub_8080018(void) sub_8082CB4(&sBerryBlenderData->bgAffineSrc); break; case 16: - CreateSprite(&gUnknown_08339C2C, 120, -16, 3); + CreateSprite(&sUnknown_08339C2C, 120, -16, 3); sBerryBlenderData->mainState++; break; case 18: @@ -1504,7 +1311,7 @@ void sub_8080018(void) break; } - Blender_DummiedOutFunc(sBerryBlenderData->field_11C, sBerryBlenderData->field_11E); + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -1512,7 +1319,7 @@ void sub_8080018(void) UpdatePaletteFade(); } -void sub_8080588(void) +static void sub_8080588(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); @@ -1535,16 +1342,16 @@ void sub_8080588(void) sBerryBlenderData->field_44 = 0; sBerryBlenderData->field_4C = 0; sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->field_4E = 0; - sBerryBlenderData->field_11C = 0; - sBerryBlenderData->field_11E = 0; + sBerryBlenderData->max_RPM = 0; + sBerryBlenderData->bg_X = 0; + sBerryBlenderData->bg_Y = 0; } -u8 sub_8080624(u16 arrowPos, u8 playerId) +static u8 sub_8080624(u16 arrowPos, u8 playerId) { u32 var1 = (arrowPos / 256) + 24; u8 arrID = sBerryBlenderData->field_96[playerId]; - u32 var2 = gUnknown_083399E7[arrID]; + u32 var2 = sUnknown_083399E7[arrID]; if (var1 >= var2 && var1 < var2 + 48) { @@ -1557,7 +1364,7 @@ u8 sub_8080624(u16 arrowPos, u8 playerId) return 0; } -void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry) +static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry) { u16 opponentSetId = 0; u16 opponentBerryId; @@ -1594,14 +1401,14 @@ void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct } } -void sub_808074C(void) +static void sub_808074C(void) { s32 i, j; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { sBerryBlenderData->field_96[i] = 0xFF; - sBerryBlenderData->field_8E[i] = gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; + sBerryBlenderData->field_8E[i] = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; } for (j = 0; j < BLENDER_MAX_PLAYERS; j++) { @@ -1613,9 +1420,9 @@ void sub_808074C(void) } } -void Blender_PrintPlayerNames(void) +static void Blender_PrintPlayerNames(void) { - s32 i, width; + s32 i, xPos; u32 multiplayerId = 0; u8 text[20]; @@ -1631,12 +1438,12 @@ void Blender_PrintPlayerNames(void) text[0] = EOS; StringCopy(text, gLinkPlayers[sBerryBlenderData->field_8E[i]].name); - width = GetStringCenterAlignXOffset(1, text, 0x38); + xPos = GetStringCenterAlignXOffset(1, text, 0x38); if (multiplayerId == sBerryBlenderData->field_8E[i]) - Blender_AddTextPrinter(i, text, width, 1, 0, 2); + Blender_AddTextPrinter(i, text, xPos, 1, 0, 2); else - Blender_AddTextPrinter(i, text, width, 1, 0, 1); + Blender_AddTextPrinter(i, text, xPos, 1, 0, 1); PutWindowTilemap(i); CopyWindowToVram(i, 3); @@ -1644,7 +1451,7 @@ void Blender_PrintPlayerNames(void) } } -void sub_80808D4(void) +static void sub_80808D4(void) { s32 i, j; @@ -1666,7 +1473,7 @@ void sub_80808D4(void) } } - sBerryBlenderData->field_70 = 0; + sBerryBlenderData->playAgainState = 0; sBerryBlenderData->loadGfxState = 0; gLinkType = 0x4422; sBerryBlenderData->mainState++; @@ -1704,7 +1511,7 @@ void sub_80808D4(void) case 11: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - u32 var = gUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; + u32 var = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; if (sBerryBlenderData->field_114 == var) { sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); @@ -1720,7 +1527,7 @@ void sub_80808D4(void) { if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) { - sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; + sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; sBerryBlenderData->mainState++; } else @@ -1745,7 +1552,7 @@ void sub_80808D4(void) { sBerryBlenderData->mainState++; sBerryBlenderData->field_11A = 256; - sBerryBlenderData->arrowPos = gUnknown_083399DC[gUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; + sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; SetGpuRegBits(REG_OFFSET_BG2CNT, 2); sBerryBlenderData->framesToWait = 0; PlaySE(SE_TRACK_DOOR); @@ -1761,7 +1568,7 @@ void sub_80808D4(void) sub_8082CB4(&sBerryBlenderData->bgAffineSrc); break; case 16: - CreateSprite(&gUnknown_08339C2C, 120, -16, 3); + CreateSprite(&sUnknown_08339C2C, 120, -16, 3); sBerryBlenderData->mainState++; break; case 18: @@ -1786,13 +1593,13 @@ void sub_80808D4(void) if (!FlagGet(FLAG_340)) sBerryBlenderData->field_120[0] = CreateTask(sub_8081224, 10); else - sBerryBlenderData->field_120[0] = CreateTask(gUnknown_083399EC[0], 10); + sBerryBlenderData->field_120[0] = CreateTask(sUnknown_083399EC[0], 10); } if (gSpecialVar_0x8004 > 1) { for (i = 0; i < gSpecialVar_0x8004; i++) - sBerryBlenderData->field_120[i] = CreateTask(gUnknown_083399EC[i], 10 + i); + sBerryBlenderData->field_120[i] = CreateTask(sUnknown_083399EC[i], 10 + i); } if (GetCurrentMapMusic() != BGM_CYCLING) @@ -1804,7 +1611,7 @@ void sub_80808D4(void) break; } - Blender_DummiedOutFunc(sBerryBlenderData->field_11C, sBerryBlenderData->field_11E); + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -1812,7 +1619,7 @@ void sub_80808D4(void) UpdatePaletteFade(); } -void sub_8080DF8(void) +static void sub_8080DF8(void) { s32 i; for (i = 0; i < 4; i++) @@ -1824,7 +1631,7 @@ void sub_8080DF8(void) } } -void sub_8080E20(u8 taskId) +static void sub_8080E20(u8 taskId) { if(++gTasks[taskId].data[0] > gTasks[taskId].data[1]) { @@ -1833,14 +1640,14 @@ void sub_8080E20(u8 taskId) } } -void sub_8080E6C(u8 a0, u8 a1) +static void sub_8080E6C(u8 a0, u8 a1) { u8 taskId = CreateTask(sub_8080E20, 80); gTasks[taskId].data[1] = a1; gTasks[taskId].data[2] = a0; } -void sub_8080EA4(u8 taskId) +static void sub_8080EA4(u8 taskId) { if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) { @@ -1900,11 +1707,11 @@ void sub_8080EA4(u8 taskId) } } -void sub_8080FD0(u8 taskId) +static void sub_8080FD0(u8 taskId) { u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; u32 var2 = sBerryBlenderData->field_96[2] & 0xFF; - if ((var1 >> 8) > gUnknown_083399E7[var2] + 20 && (var1 >> 8) < gUnknown_083399E7[var2] + 40) + if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40) { if (gTasks[taskId].data[0] == 0) { @@ -1945,13 +1752,13 @@ void sub_8080FD0(u8 taskId) } } -void sub_80810F8(u8 taskId) +static void sub_80810F8(u8 taskId) { u32 var1, var2; var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; var2 = sBerryBlenderData->field_96[3] & 0xFF; - if ((var1 >> 8) > gUnknown_083399E7[var2] + 20 && (var1 >> 8) < gUnknown_083399E7[var2] + 40) + if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40) { if (gTasks[taskId].data[0] == 0) { @@ -1996,7 +1803,7 @@ void sub_80810F8(u8 taskId) } } -void sub_8081224(u8 taskId) +static void sub_8081224(u8 taskId) { if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) { @@ -2012,13 +1819,13 @@ void sub_8081224(u8 taskId) } } -void sub_8081288(u16 a0, u8 a1) +static void sub_8081288(u16 a0, u8 a1) { u8 spriteId; - spriteId = CreateSprite(&gUnknown_08339B40, - sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_083399C0[a1][0]), - sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_083399C0[a1][1]), + spriteId = CreateSprite(&sUnknown_08339B40, + sBlenderSyncArrowsPos[a1][0] - (10 * sUnknown_083399C0[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * sUnknown_083399C0[a1][1]), 1); if (a0 == 0x4523) { @@ -2039,34 +1846,34 @@ void sub_8081288(u16 a0, u8 a1) sub_8082E84(); } -void sub_8081370(u16 a0) +static void sub_8081370(u16 a0) { Blender_ControlHitPitch(); switch (a0) { case 0x4523: if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (384 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + sBerryBlenderData->field_4C += (384 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); else { - sBerryBlenderData->field_4C += (128 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); - sub_80832BC(&sBerryBlenderData->field_11C, (sBerryBlenderData->field_4C / 100) - 10); - sub_80832BC(&sBerryBlenderData->field_11E, (sBerryBlenderData->field_4C / 100) - 10); + sBerryBlenderData->field_4C += (128 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + sub_80832BC(&sBerryBlenderData->bg_X, (sBerryBlenderData->field_4C / 100) - 10); + sub_80832BC(&sBerryBlenderData->bg_Y, (sBerryBlenderData->field_4C / 100) - 10); } break; case 0x5432: if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (256 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + sBerryBlenderData->field_4C += (256 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); break; case 0x2345: - sBerryBlenderData->field_4C -= (256 / gUnknown_08339CC3[sBerryBlenderData->playersNo]); + sBerryBlenderData->field_4C -= (256 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); if (sBerryBlenderData->field_4C < 128) sBerryBlenderData->field_4C = 128; break; } } -bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2) +static bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2) { if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) { @@ -2082,8 +1889,7 @@ bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2) return FALSE; } -/* -void sub_80814B0(void) +static void sub_80814F4(void) { s32 i; @@ -2091,50 +1897,48 @@ void sub_80814B0(void) { if (gSendCmd[2] != 0) { - gRecvCmds[2][0] = gSendCmd[2]; + gRecvCmds[0][2] = gSendCmd[2]; gRecvCmds[0][0] = 0x4444; gSendCmd[2] = 0; } for (i = 1; i < 4; i++) { - if (gRecvCmds[2][i] != 0) - gRecvCmds[0][i] = 0x4444; + if (gRecvCmds[i][2] != 0) + gRecvCmds[i][0] = 0x4444; } } - for (i = 0; i < gBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlenderData->playersNo; i++) { - if (gRecvCmds[0][i] == 0x4444) + if (sub_80814B0(gRecvCmds[i][0], 0x4444, 0x4400)) { - u32 var = gBerryBlenderData->field_A2[i]; - if (gRecvCmds[2][i] == 0x4523) + u32 var = sBerryBlenderData->field_96[i]; + if (gRecvCmds[i][2] == 0x4523) { - sub_804FD30(0x4523); - gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); - if (gBerryBlenderData->field_13E >= 1000) - gBerryBlenderData->field_13E = 1000; - sub_804FC48(0x4523, var); - gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + sub_8081370(0x4523); + sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 55); + if (sBerryBlenderData->field_116 >= 1000) + sBerryBlenderData->field_116 = 1000; + sub_8081288(0x4523, var); + sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; } - else if (gRecvCmds[2][i] == 0x5432) + else if (gRecvCmds[i][2] == 0x5432) { - sub_804FD30(0x5432); - gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); - sub_804FC48(0x5432, var); - gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + sub_8081370(0x5432); + sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 70); + sub_8081288(0x5432, var); + sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; } - else if (gRecvCmds[2][i] == 0x2345) + else if (gRecvCmds[i][2] == 0x2345) { - sub_804FC48(0x2345, var); - sub_804FD30(0x2345); - if (gBerryBlenderData->field_4.win_field_F > 1000) - gBerryBlenderData->field_13E = 1000; - if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + sub_8081288(0x2345, var); + sub_8081370(0x2345); + if (sBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; } - if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + if (gRecvCmds[i][2] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) // could be a bug, 2 and i are reversed { - if (gBerryBlenderData->field_56 > 1500) - m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); + if (sBerryBlenderData->field_4C > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((sBerryBlenderData->field_4C - 750) / 20) + 256); else m4aMPlayTempoControl(&gMPlay_BGM, 256); } @@ -2142,11 +1946,1684 @@ void sub_80814B0(void) } if (gSpecialVar_0x8004 != 0) { - for (i = 0; i < gBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + gRecvCmds[i][0] = 0; + gRecvCmds[i][2] = 0; + } + } +} + +static void sub_8081744(void) +{ + u8 var2; + bool8 A_pressed = FALSE; + u8 playerId = 0; + + if (gReceivedRemoteLinkPlayers != 0) + playerId = GetMultiplayerId(); + + var2 = sBerryBlenderData->field_96[playerId]; + + if (sBerryBlenderData->gameEndState == 0) + { + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + { + if ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)) + A_pressed = TRUE; + } + else if (gMain.newKeys & A_BUTTON) + { + A_pressed = TRUE; + } + + if (A_pressed) + { + u8 var3; + StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[var2]]], var2 + 4); + var3 = sub_8080624(sBerryBlenderData->arrowPos, playerId); + + if (var3 == 2) + gSendCmd[2] = 0x4523; + else if (var3 == 1) + gSendCmd[2] = 0x5432; + else + gSendCmd[2] = 0x2345; + } + } + if (++sBerryBlenderData->field_72 > 5) + { + if (sBerryBlenderData->field_4C > 128) + sBerryBlenderData->field_4C--; + sBerryBlenderData->field_72 = 0; + } + if (gUnknown_020322D5 && gMain.newKeys & L_BUTTON) + sBerryBlenderData->field_123 ^= 1; +} + +static void sub_8081898(void) +{ + sub_8082D28(); + + if (sBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + sBerryBlenderData->gameFrameTime++; + + sub_8081744(); + SetLinkDebugValues((u16)(sBerryBlenderData->field_4C), sBerryBlenderData->field_116); + sub_80814F4(); + sub_8083140(sBerryBlenderData->field_116, 1000); + sub_8083230(sBerryBlenderData->field_4C); + sub_808330C(); + sub_8082AD4(); + if (sBerryBlenderData->gameEndState == 0 && sBerryBlenderData->field_118 >= 1000) + { + sBerryBlenderData->field_116 = 1000; + sBerryBlenderData->gameEndState = 1; + SetMainCallback2(CB2_HandleBlenderEndGame); + } + + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +static void Blender_DummiedOutFunc(s16 a0, s16 a1) +{ + +} + +static bool8 sub_8081964(struct BlenderBerry* berries, u8 index1, u8 index2) +{ + if (berries[index1].itemId != berries[index2].itemId + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && (berries[index1].flavours[FLAVOUR_SPICY] == berries[index2].flavours[FLAVOUR_SPICY] + && berries[index1].flavours[FLAVOUR_DRY] == berries[index2].flavours[FLAVOUR_DRY] + && berries[index1].flavours[FLAVOUR_SWEET] == berries[index2].flavours[FLAVOUR_SWEET] + && berries[index1].flavours[FLAVOUR_BITTER] == berries[index2].flavours[FLAVOUR_BITTER] + && berries[index1].flavours[FLAVOUR_SOUR] == berries[index2].flavours[FLAVOUR_SOUR] + && berries[index1].smoothness == berries[index2].smoothness))) + return TRUE; + else + return FALSE; +} + +static u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) +{ + s16 vars[6]; + s32 i; + s32 r6; + u8 r2; + + for (i = 0; i < 6; i++) + vars[i] = a1[i]; + + r6 = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] == 0) + r6++; + } + if (r6 == 5 || a3 > 3) + return 12; + for (i = 0; i < playersNo; i++) + { + for (r6 = 0; r6 < playersNo; r6++) + { + if (berries[i].itemId == berries[r6].itemId && i != r6 + && (berries[i].itemId != ITEM_ENIGMA_BERRY || sub_8081964(berries, i, r6))) + return 12; + } + } + r2 = 0; + for (r2 = 0, i = 0; i < 5; i++) + { + if (vars[i] > 0) + r2++; + } + if (r2 > 3) + return 13; + if (r2 == 3) + return 11; + for (i = 0; i < 5; i++) + { + if (vars[i] > 50) + return 14; + } + if (r2 == 1 && vars[0] > 0) + return 1; + if (r2 == 1 && vars[1] > 0) + return 2; + if (r2 == 1 && vars[2] > 0) + return 3; + if (r2 == 1 && vars[3] > 0) + return 4; + if (r2 == 1 && vars[4] > 0) + return 5; + if (r2 == 2) + { + s32 var = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] > 0) + sUnknown_03000DF8[var++] = i; + } + if (vars[sUnknown_03000DF8[0]] >= vars[sUnknown_03000DF8[1]]) + { + if (sUnknown_03000DF8[0] == 0) + return (sUnknown_03000DF8[1] << 16) | 6; + if (sUnknown_03000DF8[0] == 1) + return (sUnknown_03000DF8[1] << 16) | 7; + if (sUnknown_03000DF8[0] == 2) + return (sUnknown_03000DF8[1] << 16) | 8; + if (sUnknown_03000DF8[0] == 3) + return (sUnknown_03000DF8[1] << 16) | 9; + if (sUnknown_03000DF8[0] == 4) + return (sUnknown_03000DF8[1] << 16) | 10; + } + else + { + if (sUnknown_03000DF8[1] == 0) + return (sUnknown_03000DF8[0] << 16) | 6; + if (sUnknown_03000DF8[1] == 1) + return (sUnknown_03000DF8[0] << 16) | 7; + if (sUnknown_03000DF8[1] == 2) + return (sUnknown_03000DF8[0] << 16) | 8; + if (sUnknown_03000DF8[1] == 3) + return (sUnknown_03000DF8[0] << 16) | 9; + if (sUnknown_03000DF8[1] == 4) + return (sUnknown_03000DF8[0] << 16) | 10; + } + } + return 0; +} + +static void sub_8081BB0(s16 value) +{ + sUnknown_03000E04 = value; +} + +static s16 sub_8081BBC(void) +{ + return sUnknown_03000E04; +} + +static void sub_8081BC8(s16 value) +{ + sUnknown_03000E06 = value; +} + +static s16 sub_8081BD4(void) +{ + return sUnknown_03000E06; +} + +static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 playersNo, u8 *flavours, u16 maxRPM) +{ + s32 i, j; + s32 multiuseVar, var2; + u8 var3; + + for (i = 0; i < 6; i++) + sUnknown_03000DE8[i] = 0; + + for (i = 0; i < playersNo; i++) + { + for (j = 0; j < 6; j++) + sUnknown_03000DE8[j] += berries[i].flavours[j]; + } + + multiuseVar = sUnknown_03000DE8[0]; + sUnknown_03000DE8[0] -= sUnknown_03000DE8[1]; + sUnknown_03000DE8[1] -= sUnknown_03000DE8[2]; + sUnknown_03000DE8[2] -= sUnknown_03000DE8[3]; + sUnknown_03000DE8[3] -= sUnknown_03000DE8[4]; + sUnknown_03000DE8[4] -= multiuseVar; + + multiuseVar = 0; + for (i = 0; i < 5; i++) + { + if (sUnknown_03000DE8[i] < 0) + { + sUnknown_03000DE8[i] = 0; + multiuseVar++; + } + } + var3 = multiuseVar; + for (i = 0; i < 5; i++) + { + if (sUnknown_03000DE8[i] > 0) + { + if (sUnknown_03000DE8[i] < multiuseVar) + sUnknown_03000DE8[i] = 0; + else + sUnknown_03000DE8[i] -= multiuseVar; + } + } + for (i = 0; i < 5; i++) + { + sUnknown_020322A8[i] = sUnknown_03000DE8[i]; + } + + multiuseVar = maxRPM / 333 + 100; + sUnknown_020322D0 = multiuseVar; + + for (i = 0; i < 5; i++) + { + s32 r4; + s32 r5 = sUnknown_03000DE8[i]; + r5 = (r5 * multiuseVar) / 10; + r4 = r5 % 10; + r5 /= 10; + if (r4 > 4) + r5++; + sUnknown_03000DE8[i] = r5; + } + for (i = 0; i < 5; i++) + { + sUnknown_020322BC[i] = sUnknown_03000DE8[i]; + } + + pokeblock->color = Blender_GetPokeblockColor(berries, &sUnknown_03000DE8[0], playersNo, var3); + sUnknown_03000DE8[5] = (sUnknown_03000DE8[5] / playersNo) - playersNo; + + if (sUnknown_03000DE8[5] < 0) + sUnknown_03000DE8[5] = 0; + + if (pokeblock->color == 12) + { + multiuseVar = Random() % 10; + for (i = 0; i < 5; i++) { - gRecvCmds[0][i] = 0; - gRecvCmds[2][i] = 0; + if ((sUnknown_08339CC8[multiuseVar] >> i) & 1) + sUnknown_03000DE8[i] = 2; + else + sUnknown_03000DE8[i] = 0; } } -}*/ + for (i = 0; i < 6; i++) + { + if (sUnknown_03000DE8[i] > 255) + sUnknown_03000DE8[i] = 255; + } + + pokeblock->spicy = sUnknown_03000DE8[0]; + pokeblock->dry = sUnknown_03000DE8[1]; + pokeblock->sweet = sUnknown_03000DE8[2]; + pokeblock->bitter = sUnknown_03000DE8[3]; + pokeblock->sour = sUnknown_03000DE8[4]; + pokeblock->feel = sUnknown_03000DE8[5]; + + for (i = 0; i < 6; i++) + { + flavours[i] = sUnknown_03000DE8[i]; + } +} + +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) +{ + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); +} + +static void sub_8081E20(void) +{ + u32 frames = (u16)(sBerryBlenderData->gameFrameTime); + u16 max_RPM = sBerryBlenderData->max_RPM; + s16 var = 0; + + if (frames < 900) + var = 5; + else if ((u16)(frames - 900) < 600) + var = 4; + else if ((u16)(frames - 1500) < 600) + var = 3; + else if ((u16)(frames - 2100) < 900) + var = 2; + else if ((u16)(frames - 3300) < 300) + var = 1; + + sub_8081BC8(var); + + var = 0; + if (max_RPM <= 64) + { + if (max_RPM >= 50 && max_RPM < 100) + var = -1; + else if (max_RPM >= 100 && max_RPM < 150) + var = -2; + else if (max_RPM >= 150 && max_RPM < 200) + var = -3; + else if (max_RPM >= 200 && max_RPM < 250) + var = -4; + else if (max_RPM >= 250 && max_RPM < 300) + var = -5; + else if (max_RPM >= 350 && max_RPM < 400) + var = -6; + else if (max_RPM >= 400 && max_RPM < 450) + var = -7; + else if (max_RPM >= 500 && max_RPM < 550) + var = -8; + else if (max_RPM >= 550 && max_RPM < 600) + var = -9; + else if (max_RPM >= 600) + var = -10; + } + + sub_8081BB0(var); +} + +static void sub_8081F94(u16 *a0) +{ + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + *a0 = 0x2F00; + else + *a0 = 0x2FFF; +} + +static void CB2_HandleBlenderEndGame(void) +{ + u8 i, j; + + if (sBerryBlenderData->gameEndState < 3) + sub_8082D28(); + + GetMultiplayerId(); // unused return value + + switch (sBerryBlenderData->gameEndState) + { + case 1: + m4aMPlayTempoControl(&gMPlay_BGM, 256); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + DestroyTask(sBerryBlenderData->field_120[i]); + } + sBerryBlenderData->gameEndState++; + break; + case 2: + sBerryBlenderData->field_4C -= 32; + if (sBerryBlenderData->field_4C <= 0) + { + sub_8009F8C(); + sBerryBlenderData->field_4C = 0; + + if (gReceivedRemoteLinkPlayers != 0) + sBerryBlenderData->gameEndState++; + else + sBerryBlenderData->gameEndState = 5; + + sBerryBlenderData->mainState = 0; + m4aMPlayStop(&gMPlay_SE2); + } + Blender_ControlHitPitch(); + break; + case 3: + if (GetMultiplayerId() != 0) + { + sBerryBlenderData->gameEndState++; + } + else if (sub_800A520()) + { + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + { + sBerryBlenderData->gameBlock.timeRPM.time = sBerryBlenderData->gameFrameTime; + sBerryBlenderData->gameBlock.timeRPM.max_RPM = sBerryBlenderData->max_RPM; + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + for (j = 0; j < BLENDER_SCORES_NO; j++) + sBerryBlenderData->gameBlock.scores[i][j] = sBerryBlenderData->scores[i][j]; + } + + if (SendBlock(0, &sBerryBlenderData->gameBlock, sizeof(sBerryBlenderData->gameBlock))) + sBerryBlenderData->gameEndState++; + } + else + { + sBerryBlenderData->smallBlock.time = sBerryBlenderData->gameFrameTime; + sBerryBlenderData->smallBlock.max_RPM = sBerryBlenderData->max_RPM; + if (SendBlock(0, &sBerryBlenderData->smallBlock, sizeof(sBerryBlenderData->smallBlock) + 32)) + sBerryBlenderData->gameEndState++; + } + } + break; + case 4: + if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); + sBerryBlenderData->gameEndState++; + + if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled) + { + struct BlenderGameBlock *receivedBlock = (struct BlenderGameBlock*)(&gBlockRecvBuffer); + + sBerryBlenderData->max_RPM = receivedBlock->timeRPM.max_RPM; + sBerryBlenderData->gameFrameTime = receivedBlock->timeRPM.time; + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + for (j = 0; j < BLENDER_SCORES_NO; j++) + sBerryBlenderData->scores[i][j] = receivedBlock->scores[i][j]; + } + } + else + { + struct TimeAndRPM *receivedBlock = (struct TimeAndRPM*)(&gBlockRecvBuffer); + + sBerryBlenderData->max_RPM = receivedBlock->max_RPM; + sBerryBlenderData->gameFrameTime = receivedBlock->time; + } + } + break; + case 5: + if (Blender_PrintBlendingRanking()) + sBerryBlenderData->gameEndState++; + break; + case 6: + if (Blender_PrintBlendingResults()) + { + if (gInGameOpponentsNo == 0) + IncrementGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS); + else + IncrementGameStat(GAME_STAT_POKEBLOCKS); + + sBerryBlenderData->gameEndState++; + } + break; + case 7: + if (Blender_PrintText(&sBerryBlenderData->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeed())) + sBerryBlenderData->gameEndState++; + break; + case 9: + sBerryBlenderData->yesNoAnswer = 0; + CreateYesNoMenu(&sBlender_YesNoWindowTemplate, 1, 0xD, 0); + sBerryBlenderData->gameEndState++; + break; + case 10: + switch (sub_8198C58()) + { + case 1: + case -1: + sBerryBlenderData->yesNoAnswer = 1; + sBerryBlenderData->gameEndState++; + for (i = 0; i field_8E[i] != 0xFF) + { + PutWindowTilemap(i); + CopyWindowToVram(i, 3); + } + } + break; + case 0: + sBerryBlenderData->yesNoAnswer = 0; + sBerryBlenderData->gameEndState++; + for (i = 0; i field_8E[i] != 0xFF) + { + PutWindowTilemap(i); + CopyWindowToVram(i, 3); + } + } + break; + } + break; + case 11: + sub_8081F94(&gSendCmd[0]); + if (sBerryBlenderData->yesNoAnswer == 0) + { + if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // no berries + { + sBerryBlenderData->playAgainState = CANT_PLAY_NO_BERRIES; + gSendCmd[1] = 0x9999; + } + else if (GetFirstFreePokeblockSlot() == -1) // no space for pokeblocks + { + sBerryBlenderData->playAgainState = CANT_PLAY_NO_PKBLCK_SPACE; + gSendCmd[1] = 0xAAAA; + } + else + { + sBerryBlenderData->playAgainState = PLAY_AGAIN_OK; + gSendCmd[1] = 0x7779; + } + sBerryBlenderData->gameEndState++; + } + else + { + sBerryBlenderData->playAgainState = DONT_PLAY_AGAIN; + gSendCmd[1] = 0x8888; + sBerryBlenderData->gameEndState++; + } + break; + case 12: + if (gInGameOpponentsNo) + { + SetMainCallback2(CB2_HandlePlayerPlayAgainChoice); + sBerryBlenderData->gameEndState = 0; + sBerryBlenderData->mainState = 0; + } + else + { + sBerryBlenderData->gameEndState++; + } + break; + case 8: + sBerryBlenderData->gameEndState++; + break; + case 13: + if (Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, GetPlayerTextSpeed())) + { + SetMainCallback2(CB2_HandlePlayerLinkPlayAgainChoice); + sBerryBlenderData->gameEndState = 0; + sBerryBlenderData->mainState = 0; + } + break; + } + + sub_808330C(); + sub_8083230(sBerryBlenderData->field_4C); + sub_8082AD4(); + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +static bool8 LinkPlayAgainHandleSaving(void) +{ + switch (sBerryBlenderData->field_1A0) + { + case 0: + sub_800ADF8(); + sBerryBlenderData->field_1A0 = 1; + sBerryBlenderData->framesToWait = 0; + break; + case 1: + if (sub_800A520()) + { + sBerryBlenderData->field_1A0++; + gSoftResetDisabled = TRUE; + } + break; + case 2: + sub_8153430(); + sBerryBlenderData->field_1A0++; + sBerryBlenderData->framesToWait = 0; + break; + case 3: + if (++sBerryBlenderData->framesToWait == 10) + { + sub_800ADF8(); + sBerryBlenderData->field_1A0++; + } + break; + case 4: + if (sub_800A520()) + { + if (sub_8153474()) + { + sBerryBlenderData->field_1A0 = 5; + } + else + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_1A0 = 3; + } + } + break; + case 5: + sBerryBlenderData->field_1A0++; + sBerryBlenderData->framesToWait = 0; + break; + case 6: + if (++sBerryBlenderData->framesToWait > 5) + { + gSoftResetDisabled = FALSE; + return TRUE; + } + break; + } + + return FALSE; +} + +static void CB2_HandlePlayerLinkPlayAgainChoice(void) +{ + switch (sBerryBlenderData->gameEndState) + { + case 0: + if (sBerryBlenderData->field_64[0] == 0x2222) + { + sBerryBlenderData->gameEndState = 5; + } + else if (sBerryBlenderData->field_64[0] == 0x1111) + { + if (sBerryBlenderData->field_6C == 0x9999) + sBerryBlenderData->gameEndState = 2; + else if (sBerryBlenderData->field_6C == 0xAAAA) + sBerryBlenderData->gameEndState = 1; + else + sBerryBlenderData->gameEndState = 5; + } + break; + case 1: + sBerryBlenderData->gameEndState = 3; + StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name); + StringAppend(gStringVar4, sText_ApostropheSPokeblockCaseIsFull); + break; + case 2: + sBerryBlenderData->gameEndState++; + StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name); + StringAppend(gStringVar4, sText_HasNoBerriesToPut); + break; + case 3: + if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed())) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->gameEndState++; + } + break; + case 4: + if (++sBerryBlenderData->framesToWait > 60) + sBerryBlenderData->gameEndState = 5; + break; + case 5: + Blender_PrintText(&sBerryBlenderData->textState, gText_SavingDontTurnOff2, 0); + sub_800ADF8(); + sBerryBlenderData->gameEndState++; + break; + case 6: + if (sub_800A520()) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->gameEndState++; + sBerryBlenderData->field_1A0 = 0; + } + break; + case 7: + if (LinkPlayAgainHandleSaving()) + { + PlaySE(SE_SAVE); + sBerryBlenderData->gameEndState++; + } + break; + case 8: + sBerryBlenderData->gameEndState++; + sub_800ADF8(); + break; + case 9: + if (sub_800A520()) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + sBerryBlenderData->gameEndState++; + } + break; + case 10: + if (!gPaletteFade.active) + { + if (sBerryBlenderData->field_64[0] == 0x2222) + { + FreeAllWindowBuffers(); + UnsetBgTilemapBuffer(2); + UnsetBgTilemapBuffer(1); + FREE_AND_SET_NULL(sBerryBlenderData); + SetMainCallback2(DoBerryBlending); + } + else + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->gameEndState++; + } + } + break; + case 11: + if (++sBerryBlenderData->framesToWait > 30) + { + sub_800AC34(); + sBerryBlenderData->gameEndState++; + } + break; + case 12: + if (gReceivedRemoteLinkPlayers == 0) + { + FREE_AND_SET_NULL(sBerryBlenderData); + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + break; + } + + sub_8082AD4(); + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +static void CB2_HandlePlayerPlayAgainChoice(void) +{ + switch (sBerryBlenderData->gameEndState) + { + case 0: + if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK || sBerryBlenderData->playAgainState == DONT_PLAY_AGAIN) + sBerryBlenderData->gameEndState = 9; + if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_BERRIES) + sBerryBlenderData->gameEndState = 2; + if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_PKBLCK_SPACE) + sBerryBlenderData->gameEndState = 1; + break; + case 1: + sBerryBlenderData->gameEndState = 3; + sBerryBlenderData->textState = 0; + StringCopy(gStringVar4, sText_YourPokeblockCaseIsFull); + break; + case 2: + sBerryBlenderData->gameEndState++; + sBerryBlenderData->textState = 0; + StringCopy(gStringVar4, sText_RunOutOfBerriesForBlending); + break; + case 3: + if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed())) + sBerryBlenderData->gameEndState = 9; + break; + case 9: + BeginFastPaletteFade(3); + sBerryBlenderData->gameEndState++; + break; + case 10: + if (!gPaletteFade.active) + { + if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK) + SetMainCallback2(DoBerryBlending); + else + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + + FreeAllWindowBuffers(); + UnsetBgTilemapBuffer(2); + UnsetBgTilemapBuffer(1); + FREE_AND_SET_NULL(sBerryBlenderData); + } + break; + } + + sub_8082AD4(); + Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +static void sub_8082AD4(void) +{ + if (gReceivedRemoteLinkPlayers) + { + if (sub_80814B0(gRecvCmds[0][0], 0x2FFF, 0x2F00)) + { + if (gRecvCmds[0][1] == 0x1111) + { + switch (gRecvCmds[0][2]) + { + case 0x8888: + sBerryBlenderData->field_6C = 0x8888; + sBerryBlenderData->field_6E = gRecvCmds[0][3]; + break; + case 0x9999: + sBerryBlenderData->field_6C = 0x9999; + sBerryBlenderData->field_6E = gRecvCmds[0][3]; + break; + case 0xAAAA: + sBerryBlenderData->field_6C = 0xAAAA; + sBerryBlenderData->field_6E = gRecvCmds[0][3]; + break; + } + + sBerryBlenderData->field_64[0] = 0x1111; + } + else if (gRecvCmds[0][1] == 0x2222) + { + sBerryBlenderData->field_64[0] = 0x2222; + } + } + if (GetMultiplayerId() == 0 && sBerryBlenderData->field_64[0] != 0x1111 && sBerryBlenderData->field_64[0] != 0x2222) + { + u8 i; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (sub_80814B0(gRecvCmds[i][0], 0x2FFF, 0x2F00)) + { + switch (gRecvCmds[i][1]) + { + case 0x8888: + sBerryBlenderData->field_64[i] = 0x8888; + break; + case 0x7779: + sBerryBlenderData->field_64[i] = 0x7779; + break; + case 0x9999: + sBerryBlenderData->field_64[i] = 0x9999; + break; + case 0xAAAA: + sBerryBlenderData->field_64[i] = 0xAAAA; + break; + } + } + } + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (sBerryBlenderData->field_64[i] == 0) + break; + } + if (i == GetLinkPlayerCount()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (sBerryBlenderData->field_64[i] != 0x7779) + break; + } + sub_8081F94(&gSendCmd[0]); + if (i == GetLinkPlayerCount()) + { + gSendCmd[1] = 0x2222; + } + else + { + gSendCmd[1] = 0x1111; + gSendCmd[2] = sBerryBlenderData->field_64[i]; + gSendCmd[3] = i; + } + } + } + } +} + +static void sub_8082CB4(struct BgAffineSrcData *dest) +{ + struct BgAffineSrcData affineSrc; + + affineSrc.texX = 30720; + affineSrc.texY = 20480; + affineSrc.scrX = 120 - sBerryBlenderData->bg_X; + affineSrc.scrY = 80 - sBerryBlenderData->bg_Y; + affineSrc.sx = sBerryBlenderData->field_11A; + affineSrc.sy = sBerryBlenderData->field_11A; + affineSrc.alpha = sBerryBlenderData->arrowPos; + + *dest = affineSrc; +} + +u16 GetBlenderArrowPosition(void) +{ + return sBerryBlenderData->arrowPos; +} + +static void sub_8082D28(void) +{ + u8 playerId = 0; + + if (gReceivedRemoteLinkPlayers != 0) + playerId = GetMultiplayerId(); + + if (gLinkVSyncDisabled && gReceivedRemoteLinkPlayers != 0) + { + if (playerId == 0) + { + sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C; + gSendCmd[5] = sBerryBlenderData->field_116; + gSendCmd[6] = sBerryBlenderData->arrowPos; + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + } + else + { + if ((gRecvCmds[0][0] & 0xFF00) == 0x4400) + { + sBerryBlenderData->field_116 = gRecvCmds[0][5]; + sBerryBlenderData->arrowPos = gRecvCmds[0][6]; + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + } + } + } + else + { + sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C; + sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + } +} + +static void BerryBlender_SetBackgroundsPos(void) +{ + SetGpuReg(REG_OFFSET_BG1HOFS, sBerryBlenderData->bg_X); + SetGpuReg(REG_OFFSET_BG1VOFS, sBerryBlenderData->bg_Y); + + SetGpuReg(REG_OFFSET_BG0HOFS, sBerryBlenderData->bg_X); + SetGpuReg(REG_OFFSET_BG0VOFS, sBerryBlenderData->bg_Y); +} + +static void sub_8082E3C(struct Sprite* sprite) +{ + sprite->data2 += sprite->data0; + sprite->data3 += sprite->data1; + sprite->pos2.x = sprite->data2 / 8; + sprite->pos2.y = sprite->data3 / 8; + + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void sub_8082E84(void) +{ + s32 limit = (Random() % 2) + 1; + s32 i; + + for (i = 0; i < limit; i++) + { + u16 rand; + s32 x, y; + u8 spriteId; + + rand = sBerryBlenderData->arrowPos + (Random() % 20); + + x = gSineTable[(rand & 0xFF) + 64] / 4; + y = gSineTable[(rand & 0xFF)] / 4; + + spriteId = CreateSprite(&sUnknown_08339BE0, x + 120, y + 80, 1); + gSprites[spriteId].data0 = 16 - (Random() % 32); + gSprites[spriteId].data1 = 16 - (Random() % 32); + + gSprites[spriteId].callback = sub_8082E3C; + } +} + +static void sub_8082F68(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 / 3); + + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void sub_8082F9C(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 * 2); + + if (sprite->pos2.y < -12) + sprite->pos2.y = -12; + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void Blender_SetBankBerryData(u8 bank, u16 itemId) +{ + sBerryBlenderData->chosenItemId[bank] = itemId; + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[bank], itemId); +} + +static void sub_8083010(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 88) + { + sprite->data1 = 88; + sprite->data0++; + PlaySE(SE_KON); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + { + sprite->data0++; + sprite->data2 = 0; + } + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + if (++sprite->data3 == 3) + { + DestroySprite(sprite); + CreateSprite(&sUnknown_08339C60, 120, -20, 2); + } + else + { + sprite->data0 = 0; + sprite->data1 = -16; + StartSpriteAnim(sprite, sprite->data3); + } + } + break; + } + + sprite->pos2.y = sprite->data1; +} + +static void sub_80830C0(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 92) + { + sprite->data1 = 92; + sprite->data0++; + PlaySE(SE_PIN); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + sprite->data0++; + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + sBerryBlenderData->mainState++; + DestroySprite(sprite); + } + break; + } + + sprite->pos2.y = sprite->data1; +} + +static void sub_8083140(u16 a0, u16 a1) +{ + if (sBerryBlenderData->field_118 < a0) + { + sBerryBlenderData->field_118 += 2; + sub_8083170(sBerryBlenderData->field_118, a1); + } +} + +static void sub_8083170(u16 a0, u16 a1) +{ + s32 var1, var2, var3, var4; + u16 *vram; + + vram = (u16*)(VRAM + 0x6000); + var1 = (a0 * 64) / a1; + var2 = var1 / 8; + for (var4 = 0; var4 < var2; var4++) + { + vram[11 + var4] = 0x80E9; + vram[43 + var4] = 0x80F9; + } + var3 = var1 % 8; + if (var3 != 0) + { + vram[11 + var4] = var3 + 0x80E1; + vram[43 + var4] = var3 + 0x80F1; + var4++; + } + for (; var4 < 8; var4++) + { + vram[11 + var4] = 0x80E1; + vram[43 + var4] = 0x80F1; + } +} + +static u32 sub_8083210(u16 a0) +{ + return 0x57E40 * a0 / 0x10000; +} + +static void sub_8083230(u16 a0) +{ + u8 i; + u8 palAdders[5]; + + u32 var = sub_8083210(a0); + if (sBerryBlenderData->max_RPM < var) + sBerryBlenderData->max_RPM = var; + for (i = 0; i < 5; i++) + { + palAdders[i] = var % 10; + var /= 10; + } + *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8072; + *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8072; + *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8072; + *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8072; + *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8072; +} + +static void sub_80832BC(s16* a0, u16 a1) +{ + if (*a0 == 0) + *a0 = (Random() % a1) - (a1 / 2); +} + +static void sub_80832E8(s16* a0) +{ + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; +} + +static void sub_808330C(void) +{ + sub_80832E8(&sBerryBlenderData->bg_X); + sub_80832E8(&sBerryBlenderData->bg_Y); +} + +static void sub_8083334(s16* a0, u16 a1) +{ + s32 var; + + if (a1 < 10) + var = 16; + else + var = 8; + + if (*a0 == 0) + { + *a0 = (Random() % var) - (var / 2); + } + else + { + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; + } +} + +static bool8 sub_8083380(void) +{ + if (sBerryBlenderData->framesToWait == 0) + { + sBerryBlenderData->bg_X = 0; + sBerryBlenderData->bg_Y = 0; + } + + sBerryBlenderData->framesToWait++; + sub_8083334(&sBerryBlenderData->bg_X, sBerryBlenderData->framesToWait); + sub_8083334(&sBerryBlenderData->bg_Y, sBerryBlenderData->framesToWait); + + if (sBerryBlenderData->framesToWait == 20) + { + sBerryBlenderData->bg_X = 0; + sBerryBlenderData->bg_Y = 0; + return TRUE; + } + + return FALSE; +} + +static void sub_80833F8(struct Sprite* sprite) +{ + sprite->pos2.x = -(sBerryBlenderData->bg_X); + sprite->pos2.y = -(sBerryBlenderData->bg_Y); +} + +static void TryUpdateBerryBlenderRecord(void) +{ + if (gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] < sBerryBlenderData->max_RPM) + gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] = sBerryBlenderData->max_RPM; +} + +static bool8 Blender_PrintBlendingResults(void) +{ + u16 i; + s32 xPos, yPos; + + struct Pokeblock pokeblock; + u8 flavours[6]; + u8 text[40]; + u16 berryIds[4]; // unused + + switch (sBerryBlenderData->mainState) + { + case 0: + sBerryBlenderData->mainState++; + sBerryBlenderData->framesToWait = 17; + break; + case 1: + sBerryBlenderData->framesToWait -= 10; + if (sBerryBlenderData->framesToWait < 0) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + } + break; + case 2: + if (++sBerryBlenderData->framesToWait > 20) + { + for (i = 0; i < BLENDER_SCORES_NO; i++) + DestroySprite(&gSprites[sBerryBlenderData->scoreIconIds[i]]); + + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + } + break; + case 3: + { + u16 minutes, seconds; + u8 *txtPtr; + + xPos = GetStringCenterAlignXOffset(1, sText_BlendingResults, 0xA8); + Blender_AddTextPrinter(5, sText_BlendingResults, xPos, 1, TEXT_SPEED_FF, 0); + + if (sBerryBlenderData->playersNo == 4) + yPos = 17; + else + yPos = 21; + + for (i = 0; i < sBerryBlenderData->playersNo; yPos += 16, i++) + { + u8 place = sBerryBlenderData->playerPlaces[i]; + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + StringAppend(sBerryBlenderData->stringVar, sText_Dot); + StringAppend(sBerryBlenderData->stringVar, gText_Space); + StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 8, yPos, TEXT_SPEED_FF, 3); + + StringCopy(sBerryBlenderData->stringVar, sBerryBlenderData->blendedBerries[place].name); + ConvertInternationalString(sBerryBlenderData->stringVar, gLinkPlayers[place].language); + StringAppend(sBerryBlenderData->stringVar, sText_SpaceBerry); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x54, yPos, TEXT_SPEED_FF, 3); + } + + Blender_AddTextPrinter(5, sText_MaximumSpeed, 0, 0x51, TEXT_SPEED_FF, 3); + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->max_RPM / 100, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringAppend(sBerryBlenderData->stringVar, sText_Dot); + + ConvertIntToDecimalStringN(text, sBerryBlenderData->max_RPM % 100, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(sBerryBlenderData->stringVar, text); + StringAppend(sBerryBlenderData->stringVar, sText_RPM); + + xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x51, TEXT_SPEED_FF, 3); + Blender_AddTextPrinter(5, sText_Time, 0, 0x61, TEXT_SPEED_FF, 3); + + seconds = (sBerryBlenderData->gameFrameTime / 60) % 60; + minutes = (sBerryBlenderData->gameFrameTime / (60 * 60)); + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); + txtPtr = StringAppend(sBerryBlenderData->stringVar, sText_Min); + + ConvertIntToDecimalStringN(txtPtr, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(sBerryBlenderData->stringVar, sText_Sec); + + xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x61, TEXT_SPEED_FF, 3); + + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + + CopyWindowToVram(5, 2); + } + break; + case 4: + if (gMain.newKeys & A_BUTTON) + sBerryBlenderData->mainState++; + break; + case 5: + sub_8198070(5, 1); + + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->chosenItemId[i] != 0) + berryIds[i] = sBerryBlenderData->chosenItemId[i] - FIRST_BERRY_INDEX; + if (sBerryBlenderData->field_8E[i] != 0xFF) + { + PutWindowTilemap(i); + CopyWindowToVram(i, 3); + } + } + + sub_8081E20(); + + Blender_CalculatePokeblock(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, flavours, sBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar); + TryAddContestLinkTvShow(&pokeblock, &sBerryBlenderData->tvBlender); + + CreateTask(sub_8083F3C, 6); + sub_80EECEC(); + + RemoveBagItem(gSpecialVar_ItemId, 1); + AddPokeblock(&pokeblock); + + sBerryBlenderData->textState = 0; + sBerryBlenderData->mainState++; + break; + case 6: + if (Blender_PrintText(&sBerryBlenderData->textState, sBerryBlenderData->stringVar, GetPlayerTextSpeed())) + { + TryUpdateBerryBlenderRecord(); + return TRUE; + } + break; + } + + return FALSE; +} + +static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst) +{ + u8 text[12]; + u8 flavourLvl, feel; + + dst[0] = EOS; + StringCopy(dst, gPokeblockNames[pokeblock->color]); + StringAppend(dst, sText_WasMade); + StringAppend(dst, sText_NewLine); + + flavourLvl = GetHighestPokeblocksFlavourLevel(pokeblock); + feel = GetPokeblocksFeel(pokeblock); + + StringAppend(dst, sText_TheLevelIs); + ConvertIntToDecimalStringN(text, flavourLvl, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(dst, text); + + StringAppend(dst, sText_TheFeelIs); + ConvertIntToDecimalStringN(text, feel, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(dst, text); + + StringAppend(dst, sText_Dot2); + StringAppend(dst, sText_NewParagraph); +} + +static void Blender_SortBasedOnPoints(u8 *places, u8 playersNum, u32 *scores) +{ + s32 i, j; + + for (i = 0; i < playersNum; i++) + { + for (j = 0; j < playersNum; j++) + { + if (scores[places[i]] > scores[places[j]]) + { + u8 temp = places[i]; + places[i] = places[j]; + places[j] = temp; + } + } + } +} + +static void Blender_SortScores(void) +{ + u8 playerId; + u8 i; + u8 places[BLENDER_MAX_PLAYERS]; + u32 points[BLENDER_MAX_PLAYERS]; + + for (i = 0; i < sBerryBlenderData->playersNo; i++) + places[i] = i; + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + points[i] = 1000000 * sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + } + Blender_SortBasedOnPoints(places, sBerryBlenderData->playersNo, points); + for (i = 0; i < sBerryBlenderData->playersNo; i++) + sBerryBlenderData->playerPlaces[i] = places[i]; + + if (gReceivedRemoteLinkPlayers == 0) + playerId = 0; + else + playerId = GetMultiplayerId(); + + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + if (sBerryBlenderData->playerPlaces[i] == playerId) + sBerryBlenderData->field_1A4 = i; + } +} + +static bool8 Blender_PrintBlendingRanking(void) +{ + u16 i; + s32 xPos, yPos; + + switch (sBerryBlenderData->mainState) + { + case 0: + sBerryBlenderData->mainState++; + sBerryBlenderData->framesToWait = 255; + break; + case 1: + sBerryBlenderData->framesToWait -= 10; + if (sBerryBlenderData->framesToWait < 0) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + } + break; + case 2: + if (++sBerryBlenderData->framesToWait > 20) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + } + break; + case 3: + SetWindowBorderStyle(5, 0, 1, 0xD); + xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8); + Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0); + + sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST] = CreateSprite(&sUnknown_08339B40, 128, 52, 0); + StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]], 3); + gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + + sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD] = CreateSprite(&sUnknown_08339B40, 160, 52, 0); + gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + + sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS] = CreateSprite(&sUnknown_08339B40, 192, 52, 0); + StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]], 1); + gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + + Blender_SortScores(); + + for (yPos = 0x29, i = 0; i < sBerryBlenderData->playersNo; yPos += 0x10, i++) + { + u8 place = sBerryBlenderData->playerPlaces[i]; + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + StringAppend(sBerryBlenderData->stringVar, sText_Dot); + StringAppend(sBerryBlenderData->stringVar, gText_Space); + StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0, yPos, TEXT_SPEED_FF, 3); + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_BEST], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x4E, yPos, TEXT_SPEED_FF, 3); + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x6E, yPos, TEXT_SPEED_FF, 3); + + ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_MISS], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x8E, yPos, TEXT_SPEED_FF, 3); + } + + PutWindowTilemap(5); + CopyWindowToVram(5, 3); + + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->mainState++; + break; + case 4: + if (++sBerryBlenderData->framesToWait > 20) + sBerryBlenderData->mainState++; + break; + case 5: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sBerryBlenderData->mainState++; + } + break; + case 6: + sBerryBlenderData->mainState = 0; + return TRUE; + } + + return FALSE; +} + +void ShowBerryBlenderRecordWindow(void) +{ + s32 i; + s32 xPos, yPos; + struct WindowTemplate winTemplate; + u8 text[32]; + + winTemplate = sBlenderRecordWindowTemplate; + gResultsWindowId = AddWindow(&winTemplate); + sub_81973FC(gResultsWindowId, 0); + FillWindowPixelBuffer(gResultsWindowId, 0x11); + + xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90); + PrintTextOnWindow(gResultsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); + PrintTextOnWindow(gResultsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); + + for (i = 0, yPos = 0x29; i < BLENDER_SCORES_NO; i++) + { + u8 *txtPtr; + u32 record; + + record = gSaveBlock1Ptr->berryBlenderRecords[i]; + + txtPtr = ConvertIntToDecimalStringN(text, record / 100, STR_CONV_MODE_RIGHT_ALIGN, 3); + txtPtr = StringAppend(txtPtr, sText_Dot); + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, STR_CONV_MODE_LEADING_ZEROS, 2); + txtPtr = StringAppend(txtPtr, sText_RPM); + + xPos = GetStringRightAlignXOffset(1, text, 0x8C); + PrintTextOnWindow(gResultsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); + } + + PutWindowTilemap(gResultsWindowId); + CopyWindowToVram(gResultsWindowId, 3); +} + +static void sub_8083F3C(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskId].data[0]++; + } + if (IsFanfareTaskInactive()) + { + PlayBGM(sBerryBlenderData->field_154); + DestroyTask(taskId); + } +} + +static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *tvBlender) +{ + u8 flavourLevel = GetHighestPokeblocksFlavourLevel(pokeblock); + u16 sheen = (flavourLevel * 10) / GetPokeblocksFeel(pokeblock); + + tvBlender->pokeblockSheen = sheen; + tvBlender->pokeblockColor = pokeblock->color; + tvBlender->name[0] = EOS; + + if (gReceivedRemoteLinkPlayers != 0) + { + if (sBerryBlenderData->field_1A4 == 0 && sheen > 20) + { + StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].name); + tvBlender->pokeblockFlavour = GetPokeblocksFlavour(pokeblock); + if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavour, + tvBlender->pokeblockColor, tvBlender->pokeblockSheen, + gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].language)) + { + return TRUE; + } + + return FALSE; + } + else if (sBerryBlenderData->field_1A4 == sBerryBlenderData->playersNo - 1 && sheen <= 20) + { + StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[0]].name); + tvBlender->pokeblockFlavour = GetPokeblocksFlavour(pokeblock); + if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavour, + tvBlender->pokeblockColor, tvBlender->pokeblockSheen, + gLinkPlayers[sBerryBlenderData->playerPlaces[0]].language)) + { + return TRUE; + } + + return FALSE; + } + } + + return FALSE; +} + +static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId) +{ + struct TextColor txtColor; + u32 letterSpacing = 0; + + switch (caseId) + { + case 0: + case 3: + txtColor.fgColor = 1; + txtColor.bgColor = 2; + txtColor.shadowColor = 3; + break; + case 1: + txtColor.fgColor = 0; + txtColor.bgColor = 2; + txtColor.shadowColor = 3; + break; + case 2: + txtColor.fgColor = 0; + txtColor.bgColor = 4; + txtColor.shadowColor = 5; + break; + } + + if (caseId != 3) + { + FillWindowPixelBuffer(windowId, txtColor.fgColor | (txtColor.fgColor << 4)); + } + + AddTextPrinterParametrized2(windowId, 1, x, y, letterSpacing, 1, &txtColor, speed, string); +} + +static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed) +{ + switch (*textState) + { + case 0: + sub_8197B1C(4, FALSE, 0x14, 0xF); + Blender_AddTextPrinter(4, string, 0, 1, textSpeed, 0); + PutWindowTilemap(4); + CopyWindowToVram(4, 3); + (*textState)++; + break; + case 1: + if (!IsTextPrinterActive(4)) + { + *textState = 0; + return TRUE; + } + break; + } + + return FALSE; +} diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c index eca20af9d..bba39c3eb 100644 --- a/src/berry_fix_program.c +++ b/src/berry_fix_program.c @@ -1,5 +1,3 @@ - -// Includes #include "global.h" #include "gpu_regs.h" #include "multiboot.h" @@ -10,6 +8,7 @@ #include "task.h" #include "unknown_task.h" #include "window.h" +#include "text.h" #include "menu.h" #include "m4a.h" diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 3192e0e11..d5e173ee8 100755 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -1,7 +1,7 @@ #include "global.h" #include "task.h" -#include "menu.h" #include "text.h" +#include "menu.h" #include "sound.h" #include "main.h" #include "save.h" diff --git a/src/decoration.c b/src/decoration.c index adcdc583b..8093825f4 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1,6 +1,7 @@ #include "global.h" #include "decompress.h" #include "malloc.h" +#include "text.h" #include "string_util.h" #include "international_string_util.h" #include "script.h" diff --git a/src/egg_hatch.c b/src/egg_hatch.c index a3f7c2ab0..d9d77d2e9 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -57,8 +57,6 @@ extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle extern const u8 gText_HatchedFromEgg[]; extern const u8 gText_NickHatchPrompt[]; -extern u8* GetMonNick(struct Pokemon* mon, u8* dst); -extern u8* GetBoxMonNick(struct BoxPokemon* boxMon, u8* dst); extern u8 sav1_map_get_name(void); extern s8 sub_8198C58(void); extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8); @@ -75,7 +73,6 @@ extern void play_some_sound(void); extern void copy_decompressed_tile_data_to_vram_autofree(u8 bg_id, const void* src, u16 size, u16 offset, u8 mode); extern void CreateYesNoMenu(const struct WindowTemplate*, u16, u8, u8); extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback); -extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str); extern u16 sub_80D22D0(void); extern u8 CountPartyAliveNonEggMonsExcept(u8); diff --git a/src/international_string_util.c b/src/international_string_util.c index 81985d614..89b4a7a69 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -1,6 +1,6 @@ #include "global.h" -#include "international_string_util.h" #include "text.h" +#include "international_string_util.h" extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu diff --git a/src/mail.c b/src/mail.c index 1ceb1be1a..dddc06feb 100644 --- a/src/mail.c +++ b/src/mail.c @@ -1,14 +1,12 @@ - -// Includes #include "global.h" #include "main.h" #include "overworld.h" #include "task.h" #include "unknown_task.h" #include "palette.h" +#include "text.h" #include "menu.h" #include "menu_helpers.h" -#include "text.h" #include "text_window.h" #include "string_util.h" #include "international_string_util.h" diff --git a/src/region_map.c b/src/region_map.c index da96475c0..8c8f64df9 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1,7 +1,6 @@ - -// Includes #include "global.h" #include "main.h" +#include "text.h" #include "menu.h" #include "malloc.h" #include "gpu_regs.h" @@ -17,7 +16,6 @@ #include "string_util.h" #include "international_string_util.h" #include "strings.h" -#include "text.h" #include "text_window.h" #include "songs.h" #include "m4a.h" diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 3f49b89e6..ef01f0293 100755 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -13,8 +13,6 @@ #define MSG_WIN_TOP 12 #define CLOCK_WIN_TOP (MSG_WIN_TOP - 4) -extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str); - extern void (*gGameContinueCallback)(void); extern u32 gDamagedSaveSectors; diff --git a/src/text.c b/src/text.c index 8108a6867..7d688801c 100644 --- a/src/text.c +++ b/src/text.c @@ -190,7 +190,7 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca gTempTextPrinter.japanese = 0; GenerateFontHalfRowLookupTable(textSubPrinter->fontColor_h, textSubPrinter->bgColor, textSubPrinter->shadowColor); - if (speed != 0xFF && speed != 0x0) + if (speed != TEXT_SPEED_FF && speed != 0x0) { --gTempTextPrinter.text_speed; gTextPrinters[textSubPrinter->windowId] = gTempTextPrinter; @@ -204,7 +204,7 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca break; } - if (speed != 0xFF) + if (speed != TEXT_SPEED_FF) CopyWindowToVram(gTempTextPrinter.subPrinter.windowId, 2); gTextPrinters[textSubPrinter->windowId].sub_union.sub.active = 0; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 088ca2746..ce0e1055b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -570,18 +570,8 @@ gUnknown_0203229C: @ 203229C gUnknown_020322A0: @ 20322A0 .space 0x4 - -sBerryBlenderData: @ 20322A4 - .space 0x4 - -gUnknown_020322A8: @ 20322A8 - .space 0x14 - -gUnknown_020322BC: @ 20322BC - .space 0x14 - -gUnknown_020322D0: @ 20322D0 - .space 0x4 + + .include "src/berry_blender.o" gDifferentSaveFile: @ 20322D4 .space 0x1 @@ -1242,7 +1232,7 @@ gUnknown_0203AB6F: @ 203AB6F gUnknown_0203AB70: @ 203AB70 .space 0x4 -gUnknown_0203AB74: @ 203AB74 +gResultsWindowId: @ 203AB74 .space 0x4 gUnknown_0203AB78: @ 203AB78 -- cgit v1.2.3 From 4e25ef10f2883ef228b7d6c26162d2b00dc3c291 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 20 Nov 2017 16:40:02 +0100 Subject: wild encounter review changes --- constants/flags.inc | 2 +- constants/variables.inc | 2 +- data/scripts/maps/SeafloorCavern_Room9.inc | 2 +- data/scripts/maps/SootopolisCity.inc | 4 +- src/wild_encounter.c | 71 ++++++++++++++++-------------- 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/constants/flags.inc b/constants/flags.inc index 2e4b60d73..66663cb65 100644 --- a/constants/flags.inc +++ b/constants/flags.inc @@ -80,7 +80,7 @@ .equiv FLAG_0x050, 0x50 .equiv FLAG_0x051, 0x51 .equiv FLAG_0x052, 0x52 - .equiv FLAG_0x053, 0x53 + .equiv FLAG_LEGENDARIES_IN_SOOTOPOLIS, 0x53 .equiv FLAG_0x054, 0x54 .equiv FLAG_0x055, 0x55 .equiv FLAG_0x056, 0x56 diff --git a/constants/variables.inc b/constants/variables.inc index e2719e10c..47748891b 100644 --- a/constants/variables.inc +++ b/constants/variables.inc @@ -60,7 +60,7 @@ .equiv VAR_0x403B, 0x403B .equiv VAR_0x403C, 0x403C .equiv VAR_0x403D, 0x403D - .equiv VAR_0x403E, 0x403E + .equiv VAR_ALTERING_CAVE_WILD_SET, 0x403E .equiv VAR_0x403F, 0x403F .equiv VAR_DAYS, 0x4040 .equiv VAR_0x4041, 0x4041 diff --git a/data/scripts/maps/SeafloorCavern_Room9.inc b/data/scripts/maps/SeafloorCavern_Room9.inc index 6f968b4d0..984d53295 100644 --- a/data/scripts/maps/SeafloorCavern_Room9.inc +++ b/data/scripts/maps/SeafloorCavern_Room9.inc @@ -127,7 +127,7 @@ SeafloorCavern_Room9_EventScript_234DC9:: @ 8234DC9 clearflag FLAG_0x3E6 clearflag FLAG_0x3E5 setflag FLAG_0x347 - setflag FLAG_0x053 + setflag FLAG_LEGENDARIES_IN_SOOTOPOLIS clearflag FLAG_0x3B0 clearflag FLAG_0x3B1 setflag FLAG_SYS_WEATHER_CTRL diff --git a/data/scripts/maps/SootopolisCity.inc b/data/scripts/maps/SootopolisCity.inc index 33b65714b..d9eaee6eb 100644 --- a/data/scripts/maps/SootopolisCity.inc +++ b/data/scripts/maps/SootopolisCity.inc @@ -545,7 +545,7 @@ SootopolisCity_EventScript_1E5C1E:: @ 81E5C1E waitstate clearflag FLAG_SYS_WEATHER_CTRL setvar VAR_0x40CA, 3 - clearflag FLAG_0x053 + clearflag FLAG_LEGENDARIES_IN_SOOTOPOLIS fadenewbgm BGM_RUNECITY delay 120 clearflag FLAG_SPECIAL_FLAG_0x4000 @@ -598,7 +598,7 @@ SootopolisCity_EventScript_1E5CCE:: @ 81E5CCE waitstate clearflag FLAG_SYS_WEATHER_CTRL setvar VAR_0x40CA, 2 - clearflag FLAG_0x053 + clearflag FLAG_LEGENDARIES_IN_SOOTOPOLIS fadenewbgm BGM_NAMINORI delay 120 clearflag FLAG_SPECIAL_FLAG_0x4000 diff --git a/src/wild_encounter.c b/src/wild_encounter.c index b4095aa17..ce1e02e5e 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -81,7 +81,7 @@ static bool8 CheckFeebas(void) u16 feebasSpots[NUM_FEEBAS_SPOTS]; s16 x; s16 y; - u8 route119section = 0; + u8 route119Section = 0; u16 waterTileNum; if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_ROUTE119 @@ -93,16 +93,16 @@ static bool8 CheckFeebas(void) #ifdef NONMATCHING if (y >= gRoute119WaterTileData[3 * 1 + 0] && y <= gRoute119WaterTileData[3 * 1 + 1]) - route119section = 1; + route119Section = 1; if (y >= gRoute119WaterTileData[3 * 2 + 0] && y <= gRoute119WaterTileData[3 * 2 + 1]) - route119section = 2; + route119Section = 2; #else { register const u16 *arr asm("r0"); if (y >= (arr = gRoute119WaterTileData)[3 * 1 + 0] && y <= arr[3 * 1 + 1]) - route119section = 1; + route119Section = 1; if (y >= arr[3 * 2 + 0] && y <= arr[3 * 2 + 1]) - route119section = 2; + route119Section = 2; } #endif @@ -118,7 +118,7 @@ static bool8 CheckFeebas(void) if (feebasSpots[i] < 1 || feebasSpots[i] >= 4) i++; } - waterTileNum = GetRoute119WaterTileNum(x, y, route119section); + waterTileNum = GetRoute119WaterTileNum(x, y, route119Section); for (i = 0; i < NUM_FEEBAS_SPOTS; i++) { if (waterTileNum == feebasSpots[i]) @@ -128,9 +128,12 @@ static bool8 CheckFeebas(void) return FALSE; } +// The number 1103515245 comes from the example implementation of rand and srand +// in the ISO C standard. + static u16 FeebasRandom(void) { - sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue; + sFeebasRngValue = (1103515245 * sFeebasRngValue) + 12345; return sFeebasRngValue >> 16; } @@ -145,25 +148,25 @@ static u8 ChooseWildMonIndex_Land(void) if (rand < 20) // 20% chance return 0; - if (rand >= 20 && rand < 40) // 20% chance + else if (rand >= 20 && rand < 40) // 20% chance return 1; - if (rand >= 40 && rand < 50) // 10% chance + else if (rand >= 40 && rand < 50) // 10% chance return 2; - if (rand >= 50 && rand < 60) // 10% chance + else if (rand >= 50 && rand < 60) // 10% chance return 3; - if (rand >= 60 && rand < 70) // 10% chance + else if (rand >= 60 && rand < 70) // 10% chance return 4; - if (rand >= 70 && rand < 80) // 10% chance + else if (rand >= 70 && rand < 80) // 10% chance return 5; - if (rand >= 80 && rand < 85) // 5% chance + else if (rand >= 80 && rand < 85) // 5% chance return 6; - if (rand >= 85 && rand < 90) // 5% chance + else if (rand >= 85 && rand < 90) // 5% chance return 7; - if (rand >= 90 && rand < 94) // 4% chance + else if (rand >= 90 && rand < 94) // 4% chance return 8; - if (rand >= 94 && rand < 98) // 4% chance + else if (rand >= 94 && rand < 98) // 4% chance return 9; - if (rand == 98) // 1% chance + else if (rand == 98) // 1% chance return 10; else // 1% chance return 11; @@ -175,11 +178,11 @@ static u8 ChooseWildMonIndex_WaterRock(void) if (rand < 60) // 60% chance return 0; - if (rand >= 60 && rand < 90) // 30% chance + else if (rand >= 60 && rand < 90) // 30% chance return 1; - if (rand >= 90 && rand < 95) // 5% chance + else if (rand >= 90 && rand < 95) // 5% chance return 2; - if (rand >= 95 && rand < 99) // 4% chance + else if (rand >= 95 && rand < 99) // 4% chance return 3; else // 1% chance return 4; @@ -535,11 +538,11 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi headerId = GetBattlePikeWildMonHeaderId(); if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) return FALSE; - if (DoWildEncounterRateTest(gBattlePikeWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (DoWildEncounterRateTest(gBattlePikeWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + else if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) return FALSE; - if (!TryGenerateBattlePikeWildMon(TRUE)) + else if (!TryGenerateBattlePikeWildMon(TRUE)) return FALSE; BattleSetup_StartBattlePikeWildBattle(); @@ -550,9 +553,9 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi headerId = gSaveBlock2Ptr->battlePyramidWildHeaderId; if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) return FALSE; - if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + else if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) return FALSE; GenerateBattlePyramidWildMon(); @@ -566,9 +569,9 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi { if (gWildMonHeaders[headerId].landMonsInfo == NULL) return FALSE; - if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + else if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) return FALSE; - if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; if (TryStartRoamerEncounter() == TRUE) @@ -603,11 +606,11 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi { if (AreLegendariesInSootopolisPreventingEncounters() == TRUE) return FALSE; - if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + else if (gWildMonHeaders[headerId].waterMonsInfo == NULL) return FALSE; - if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) + else if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll()) return FALSE; - if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) + else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; if (TryStartRoamerEncounter() == TRUE) @@ -783,10 +786,10 @@ u16 GetLocalWildMon(bool8 *isWaterMon) if (landMonsInfo == NULL && waterMonsInfo == NULL) return SPECIES_NONE; // Land Pokemon - if (landMonsInfo != NULL && waterMonsInfo == NULL) + else if (landMonsInfo != NULL && waterMonsInfo == NULL) return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; // Water Pokemon - if (landMonsInfo == NULL && waterMonsInfo != NULL) + else if (landMonsInfo == NULL && waterMonsInfo != NULL) { *isWaterMon = TRUE; return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; @@ -907,9 +910,9 @@ static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildM { if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)) return FALSE; - if (GetMonAbility(&gPlayerParty[0]) != ability) + else if (GetMonAbility(&gPlayerParty[0]) != ability) return FALSE; - if (Random() % 2 != 0) + else if (Random() % 2 != 0) return FALSE; return TryGetRandomWildMonIndexByType(wildMon, type, LAND_WILD_COUNT, monIndex); -- cgit v1.2.3 From 161a37809bab3ab646c503a63d9ef258d9d518af Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 21 Nov 2017 21:25:01 -0500 Subject: nonmatching MoveSaveBlocks_ResetHeap (i tried...) --- asm/load_save.s | 96 ----------------------------------- src/load_save.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 139 insertions(+), 110 deletions(-) diff --git a/asm/load_save.s b/asm/load_save.s index 2b4be8e67..ca0d9e0e1 100644 --- a/asm/load_save.s +++ b/asm/load_save.s @@ -5,102 +5,6 @@ .text - - thumb_func_start MoveSaveBlocks_ResetHeap -MoveSaveBlocks_ResetHeap: @ 8076C2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r5, =gMain - ldr r0, [r5, 0xC] - str r0, [sp] - ldr r1, [r5, 0x10] - str r1, [sp, 0x4] - movs r0, 0 - str r0, [r5, 0xC] - str r0, [r5, 0x10] - ldr r1, =gUnknown_0203CF5C - str r0, [r1] - ldr r4, =0x02000000 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r6, =0x00000f2c - adds r0, r4, 0 - adds r2, r6, 0 - bl memcpy - ldr r1, =gSaveBlock1Ptr - mov r10, r1 - ldr r1, [r1] - ldr r7, =0x00003d88 - ldr r0, =0x02000f2c - adds r2, r7, 0 - bl memcpy - ldr r0, =gPokemonStoragePtr - mov r8, r0 - ldr r1, [r0] - ldr r0, =0x000083d0 - mov r9, r0 - ldr r0, =0x02004cb4 - mov r2, r9 - bl memcpy - ldrb r1, [r4, 0xA] - ldrb r0, [r4, 0xB] - adds r1, r0 - ldrb r0, [r4, 0xC] - adds r1, r0 - ldrb r0, [r4, 0xD] - adds r0, r1 - bl SetSaveBlocksPointers - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - adds r1, r4, 0 - adds r2, r6, 0 - bl memcpy - mov r1, r10 - ldr r0, [r1] - ldr r1, =0x02000f2c - adds r2, r7, 0 - bl memcpy - mov r1, r8 - ldr r0, [r1] - ldr r1, =0x02004cb4 - mov r2, r9 - bl memcpy - movs r1, 0xE0 - lsls r1, 9 - adds r0, r4, 0 - bl InitHeap - ldr r0, [sp, 0x4] - str r0, [r5, 0x10] - ldr r1, [sp] - str r1, [r5, 0xC] - bl Random - adds r4, r0, 0 - bl Random - lsls r4, 16 - lsls r0, 16 - lsrs r0, 16 - adds r4, r0 - adds r0, r4, 0 - bl ApplyNewEncyprtionKeyToAllEncryptedData - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - adds r0, 0xAC - str r4, [r0] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end MoveSaveBlocks_ResetHeap - thumb_func_start sav2_x1_query_bit1 sav2_x1_query_bit1: @ 8076D24 ldr r0, =gSaveBlock2Ptr diff --git a/src/load_save.c b/src/load_save.c index 68d978e3d..d59a7c13e 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -4,7 +4,6 @@ #include "main.h" #include "pokemon.h" #include "rng.h" -#include "malloc.h" extern void* gUnknown_0203CF5C; @@ -25,6 +24,8 @@ EWRAM_DATA u8 gSaveblock1_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; EWRAM_DATA u8 gSaveblock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; +extern void InitHeap(void *pointer, u32 size); + void CheckForFlashMemory(void) { if (!IdentifyFlash()) @@ -60,18 +61,45 @@ void SetSaveBlocksPointers(u16 offset) SetDecorationInventoriesPointers(); } +// stuff i used to try and match MoveSaveBlocks_ResetHeap struct SaveBlocksInOne { struct SaveBlock2 sav2; struct SaveBlock1 sav1; struct PokemonStorage sav3; }; + +extern struct SaveBlocksInOne gHeap; + +#define ewram_addr 0x02000000 // oh no... +#define ewram_addr2 0x02000f2c +#define ewram_addr3 0x02004cb4 + +#define eSaveBlockCopy (*(struct SaveBlocksInOne *)(ewram_addr + 0x0)) +#define eSaveBlock2Copy (*(struct SaveBlock2 *)((void*)(ewram_addr + 0x0))) +#define eSaveBlock1Copy (*(struct SaveBlock1 *)((void*)(ewram_addr + sizeof(struct SaveBlock2)))) +#define eSaveBlock3Copy (*(struct PokemonStorage *)((void*)(ewram_addr + sizeof(struct SaveBlock2) + sizeof(struct SaveBlock1)))) + +#ifdef NONMATCHING // this is one devil of a motherfucker /* + The reason MoveSaveBlocks_ResetHeap mismatches is due to incorrect memcpys. Various + things have been tried, such as: direct struct copys, ewram casts, use of defining + the addresses manually, using memcpy anyway, delayed allocation of pointers at + the start of function, as seen above and below. Scope declaration has been used to try and + reproduce the correct macro thought to be used, but nothing has worked. It is worth + noting that at this point that the compiler will delay the allocation of the save block + pointers at the beginningto be allocated later: which might matter for matching this. + Due to loading shared ewram heap areas directly, it is very likely emerald used ewram + defines for this function, but there is no known example of a matching define. + In addition, dead code might be present in the form of a runtime variable used + to fix the address of the save blocks. This has been tested and is shown to affect + the registers as well. +*/ void MoveSaveBlocks_ResetHeap(void) { void *vblankCB, *hblankCB; u32 encryptionKey; - struct SaveBlocksInOne* copiedSavs; + struct SaveBlock1 **sav1Copy = &gSaveBlock1Ptr; // r10; // save interrupt functions and turn them off vblankCB = gMain.vblankCallback; @@ -80,24 +108,22 @@ void MoveSaveBlocks_ResetHeap(void) gMain.hblankCallback = NULL; gUnknown_0203CF5C = NULL; - copiedSavs = (void*)(gHeap); - - // copy saveblocks' content - copiedSavs->sav2 = *gSaveBlock2Ptr; - copiedSavs->sav1 = *gSaveBlock1Ptr; - copiedSavs->sav3 = *gPokemonStoragePtr; + // backup the saves. + eSaveBlock1Copy = **sav1Copy; + eSaveBlock2Copy = *gSaveBlock2Ptr; + eSaveBlock3Copy = *gPokemonStoragePtr; // change saveblocks' pointers // argument is a sum of the individual trainerId bytes - SetSaveBlocksPointers(copiedSavs->sav2.playerTrainerId[0] + copiedSavs->sav2.playerTrainerId[1] + copiedSavs->sav2.playerTrainerId[2] + copiedSavs->sav2.playerTrainerId[3]); + SetSaveBlocksPointers(eSaveBlock2Copy.playerTrainerId[0] + eSaveBlock2Copy.playerTrainerId[1] + eSaveBlock2Copy.playerTrainerId[2] + eSaveBlock2Copy.playerTrainerId[3]); // restore saveblock data since the pointers changed - *gSaveBlock2Ptr = copiedSavs->sav2; - *gSaveBlock1Ptr = copiedSavs->sav1; - *gPokemonStoragePtr = copiedSavs->sav3; + **sav1Copy = eSaveBlock1Copy; + *gSaveBlock2Ptr = eSaveBlock2Copy; + *gPokemonStoragePtr = eSaveBlock3Copy; // heap was destroyed in the copying process, so reset it - InitHeap(gHeap, sizeof(gHeap)); + InitHeap((void*)(0x02000000), 0x1C000); // restore interrupt functions gMain.hblankCallback = hblankCB; @@ -107,4 +133,103 @@ void MoveSaveBlocks_ResetHeap(void) encryptionKey = (Random() << 0x10) + (Random()); ApplyNewEncyprtionKeyToAllEncryptedData(encryptionKey); gSaveBlock2Ptr->encryptionKey = encryptionKey; -}*/ +} +#else +__attribute__((naked)) +void MoveSaveBlocks_ResetHeap(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + ldr r5, =gMain\n\ + ldr r0, [r5, 0xC]\n\ + str r0, [sp]\n\ + ldr r1, [r5, 0x10]\n\ + str r1, [sp, 0x4]\n\ + movs r0, 0\n\ + str r0, [r5, 0xC]\n\ + str r0, [r5, 0x10]\n\ + ldr r1, =gUnknown_0203CF5C\n\ + str r0, [r1]\n\ + ldr r4, =0x02000000\n\ + ldr r0, =gSaveBlock2Ptr\n\ + ldr r1, [r0]\n\ + ldr r6, =0x00000f2c\n\ + adds r0, r4, 0\n\ + adds r2, r6, 0\n\ + bl memcpy\n\ + ldr r1, =gSaveBlock1Ptr\n\ + mov r10, r1\n\ + ldr r1, [r1]\n\ + ldr r7, =0x00003d88\n\ + ldr r0, =0x02000f2c\n\ + adds r2, r7, 0\n\ + bl memcpy\n\ + ldr r0, =gPokemonStoragePtr\n\ + mov r8, r0\n\ + ldr r1, [r0]\n\ + ldr r0, =0x000083d0\n\ + mov r9, r0\n\ + ldr r0, =0x02004cb4\n\ + mov r2, r9\n\ + bl memcpy\n\ + ldrb r1, [r4, 0xA]\n\ + ldrb r0, [r4, 0xB]\n\ + adds r1, r0\n\ + ldrb r0, [r4, 0xC]\n\ + adds r1, r0\n\ + ldrb r0, [r4, 0xD]\n\ + adds r0, r1\n\ + bl SetSaveBlocksPointers\n\ + ldr r1, =gSaveBlock2Ptr\n\ + ldr r0, [r1]\n\ + adds r1, r4, 0\n\ + adds r2, r6, 0\n\ + bl memcpy\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + ldr r1, =0x02000f2c\n\ + adds r2, r7, 0\n\ + bl memcpy\n\ + mov r1, r8\n\ + ldr r0, [r1]\n\ + ldr r1, =0x02004cb4\n\ + mov r2, r9\n\ + bl memcpy\n\ + movs r1, 0xE0\n\ + lsls r1, 9\n\ + adds r0, r4, 0\n\ + bl InitHeap\n\ + ldr r0, [sp, 0x4]\n\ + str r0, [r5, 0x10]\n\ + ldr r1, [sp]\n\ + str r1, [r5, 0xC]\n\ + bl Random\n\ + adds r4, r0, 0\n\ + bl Random\n\ + lsls r4, 16\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + bl ApplyNewEncyprtionKeyToAllEncryptedData\n\ + ldr r1, =gSaveBlock2Ptr\n\ + ldr r0, [r1]\n\ + adds r0, 0xAC\n\ + str r4, [r0]\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + .syntax divided\n"); +} +#endif -- cgit v1.2.3 From 9644f4498296040f8fba68ccd8fcc75758dbed2c Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 22 Nov 2017 21:06:30 -0500 Subject: finish load_save.c --- asm/load_save.s | 573 -------------------------------------------------------- ld_script.txt | 1 - src/load_save.c | 186 +++++++++++++++++- sym_ewram.txt | 6 - 4 files changed, 183 insertions(+), 583 deletions(-) delete mode 100644 asm/load_save.s diff --git a/asm/load_save.s b/asm/load_save.s deleted file mode 100644 index ca0d9e0e1..000000000 --- a/asm/load_save.s +++ /dev/null @@ -1,573 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sav2_x1_query_bit1 -sav2_x1_query_bit1: @ 8076D24 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - ands r0, r1 - bx lr - .pool - thumb_func_end sav2_x1_query_bit1 - - thumb_func_start sav2_x9_clear_bit1 -sav2_x9_clear_bit1: @ 8076D34 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0xFE - ands r0, r1 - strb r0, [r2, 0x9] - bx lr - .pool - thumb_func_end sav2_x9_clear_bit1 - - thumb_func_start sub_8076D48 -sub_8076D48: @ 8076D48 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - bx lr - .pool - thumb_func_end sub_8076D48 - - thumb_func_start sub_8076D5C -sub_8076D5C: @ 8076D5C - push {lr} - movs r0, 0 - bl sub_8084FAC - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8076D5C - - thumb_func_start sav2_gender2_inplace_and_xFE -sav2_gender2_inplace_and_xFE: @ 8076D78 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r1, [r2, 0x9] - movs r0, 0xFE - ands r0, r1 - strb r0, [r2, 0x9] - bx lr - .pool - thumb_func_end sav2_gender2_inplace_and_xFE - - thumb_func_start copy_player_party_to_sav1 -@ void copy_player_party_to_sav1() -copy_player_party_to_sav1: @ 8076D8C - push {r4,lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =gPlayerPartyCount - ldrb r1, [r1] - movs r2, 0x8D - lsls r2, 2 - adds r0, r2 - strb r1, [r0] - movs r4, 0 -_08076DA0: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x64 - muls r1, r4 - adds r0, r1 - movs r2, 0x8E - lsls r2, 2 - adds r0, r2 - ldr r2, =gPlayerParty - adds r1, r2 - movs r2, 0x64 - bl memcpy - adds r4, 0x1 - cmp r4, 0x5 - ble _08076DA0 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end copy_player_party_to_sav1 - - thumb_func_start copy_player_party_from_sav1 -copy_player_party_from_sav1: @ 8076DD4 - push {r4,r5,lr} - ldr r1, =gPlayerPartyCount - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0x8D - lsls r2, 2 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - movs r4, 0 - ldr r5, =gPlayerParty -_08076DEA: - movs r0, 0x64 - adds r2, r4, 0 - muls r2, r0 - adds r0, r2, r5 - ldr r1, =gSaveBlock1Ptr - ldr r1, [r1] - adds r1, r2 - movs r2, 0x8E - lsls r2, 2 - adds r1, r2 - movs r2, 0x64 - bl memcpy - adds r4, 0x1 - cmp r4, 0x5 - ble _08076DEA - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end copy_player_party_from_sav1 - - thumb_func_start save_serialize_npcs -save_serialize_npcs: @ 8076E1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gSaveBlock1Ptr - mov r12, r0 - movs r5, 0xA3 - lsls r5, 4 - mov r8, r5 - ldr r4, =gMapObjects - movs r3, 0 - movs r2, 0xF -_08076E32: - mov r6, r12 - ldr r1, [r6] - adds r1, r3 - add r1, r8 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r4, 0x24 - adds r3, 0x24 - subs r2, 0x1 - cmp r2, 0 - bge _08076E32 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end save_serialize_npcs - - thumb_func_start save_deserialize_npcs -save_deserialize_npcs: @ 8076E64 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gSaveBlock1Ptr - mov r12, r0 - movs r5, 0xA3 - lsls r5, 4 - mov r8, r5 - ldr r4, =gMapObjects - movs r3, 0 - movs r2, 0xF -_08076E7A: - mov r6, r12 - ldr r1, [r6] - adds r1, r3 - adds r0, r4, 0 - add r1, r8 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - adds r4, 0x24 - adds r3, 0x24 - subs r2, 0x1 - cmp r2, 0 - bge _08076E7A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end save_deserialize_npcs - - thumb_func_start SaveSerializedGame -SaveSerializedGame: @ 8076EAC - push {lr} - bl copy_player_party_to_sav1 - bl save_serialize_npcs - pop {r0} - bx r0 - thumb_func_end SaveSerializedGame - - thumb_func_start LoadSerializedGame -LoadSerializedGame: @ 8076EBC - push {lr} - bl copy_player_party_from_sav1 - bl save_deserialize_npcs - pop {r0} - bx r0 - thumb_func_end LoadSerializedGame - - thumb_func_start copy_bags_and_unk_data_from_save_blocks -copy_bags_and_unk_data_from_save_blocks: @ 8076ECC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r2, 0 - ldr r0, =gUnknown_02032180 - mov r12, r0 - ldr r1, =gSaveBlock2Ptr - mov r10, r1 - ldr r5, =gSaveBlock1Ptr - movs r3, 0xAC - lsls r3, 3 - ldr r4, =gUnknown_02031C58 -_08076EE8: - lsls r0, r2, 2 - ldr r1, [r5] - adds r1, r3 - adds r1, r0 - ldr r0, [r1] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0x1D - ble _08076EE8 - movs r2, 0 - ldr r0, =gUnknown_02031C58 - ldr r5, =gSaveBlock1Ptr - movs r3, 0xBB - lsls r3, 3 - adds r4, r0, 0 - adds r4, 0x78 -_08076F08: - lsls r0, r2, 2 - ldr r1, [r5] - adds r1, r3 - adds r1, r0 - ldr r0, [r1] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0x1D - ble _08076F08 - movs r2, 0 - ldr r0, =gUnknown_02031C58 - ldr r5, =gSaveBlock1Ptr - movs r3, 0xCA - lsls r3, 3 - adds r4, r0, 0 - adds r4, 0xF0 -_08076F28: - lsls r0, r2, 2 - ldr r1, [r5] - adds r1, r3 - adds r1, r0 - ldr r0, [r1] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0xF - ble _08076F28 - movs r2, 0 - ldr r0, =gUnknown_02031C58 - ldr r5, =gSaveBlock1Ptr - movs r6, 0x98 - lsls r6, 1 - adds r4, r0, r6 - movs r3, 0xD2 - lsls r3, 3 -_08076F4A: - lsls r0, r2, 2 - ldr r1, [r5] - adds r1, r3 - adds r1, r0 - ldr r0, [r1] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0x3F - ble _08076F4A - movs r2, 0 - ldr r0, =gUnknown_02031C58 - ldr r5, =gSaveBlock1Ptr - movs r7, 0x8C - lsls r7, 2 - adds r4, r0, r7 - movs r3, 0xF2 - lsls r3, 3 -_08076F6C: - lsls r0, r2, 2 - ldr r1, [r5] - adds r1, r3 - adds r1, r0 - ldr r0, [r1] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0x2D - ble _08076F6C - ldr r0, =gUnknown_02031C58 - ldr r1, =gSaveBlock1Ptr - mov r8, r1 - movs r5, 0xBA - lsls r5, 2 - adds r4, r0, r5 - movs r3, 0 - ldr r6, =0x00002be0 - mov r9, r6 - movs r2, 0xF -_08076F92: - mov r7, r8 - ldr r1, [r7] - adds r1, r3 - adds r0, r4, 0 - add r1, r9 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - adds r4, 0x24 - adds r3, 0x24 - subs r2, 0x1 - cmp r2, 0 - bge _08076F92 - mov r1, r10 - ldr r0, [r1] - adds r0, 0xAC - ldr r0, [r0] - mov r5, r12 - str r0, [r5] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end copy_bags_and_unk_data_from_save_blocks - - thumb_func_start copy_bags_and_unk_data_to_save_blocks -copy_bags_and_unk_data_to_save_blocks: @ 8076FE0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r2, 0 - ldr r0, =gSaveBlock2Ptr - mov r8, r0 - ldr r1, =gUnknown_02032180 - mov r12, r1 - ldr r5, =gSaveBlock1Ptr - movs r3, 0xAC - lsls r3, 3 - ldr r4, =gUnknown_02031C58 -_08076FFC: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r3 - adds r0, r1 - ldm r4!, {r1} - str r1, [r0] - adds r2, 0x1 - cmp r2, 0x1D - ble _08076FFC - movs r2, 0 - ldr r5, =gSaveBlock1Ptr - movs r4, 0xBB - lsls r4, 3 - ldr r0, =gUnknown_02031C58 - adds r3, r0, 0 - adds r3, 0x78 -_0807701C: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - ldm r3!, {r1} - str r1, [r0] - adds r2, 0x1 - cmp r2, 0x1D - ble _0807701C - movs r2, 0 - ldr r5, =gSaveBlock1Ptr - movs r4, 0xCA - lsls r4, 3 - ldr r0, =gUnknown_02031C58 - adds r3, r0, 0 - adds r3, 0xF0 -_0807703C: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - ldm r3!, {r1} - str r1, [r0] - adds r2, 0x1 - cmp r2, 0xF - ble _0807703C - movs r2, 0 - ldr r5, =gSaveBlock1Ptr - movs r4, 0xD2 - lsls r4, 3 - ldr r0, =gUnknown_02031C58 - movs r6, 0x98 - lsls r6, 1 - adds r3, r0, r6 -_0807705E: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - ldm r3!, {r1} - str r1, [r0] - adds r2, 0x1 - cmp r2, 0x3F - ble _0807705E - movs r2, 0 - ldr r5, =gSaveBlock1Ptr - movs r4, 0xF2 - lsls r4, 3 - ldr r0, =gUnknown_02031C58 - movs r7, 0x8C - lsls r7, 2 - adds r3, r0, r7 -_08077080: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - ldm r3!, {r1} - str r1, [r0] - adds r2, 0x1 - cmp r2, 0x2D - ble _08077080 - ldr r0, =gSaveBlock1Ptr - mov r9, r0 - ldr r1, =0x00002be0 - mov r10, r1 - ldr r4, =gUnknown_02031C58 - movs r3, 0 - movs r2, 0xF -_080770A0: - mov r5, r9 - ldr r1, [r5] - adds r1, r3 - add r1, r10 - movs r6, 0xBA - lsls r6, 2 - adds r0, r4, r6 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r4, 0x24 - adds r3, 0x24 - subs r2, 0x1 - cmp r2, 0 - bge _080770A0 - mov r7, r8 - ldr r0, [r7] - adds r0, 0xAC - ldr r4, [r0] - mov r2, r12 - ldr r1, [r2] - str r1, [r0] - adds r0, r4, 0 - bl ApplyNewEncyprtionKeyToBagItems - ldr r0, [r7] - adds r0, 0xAC - str r4, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end copy_bags_and_unk_data_to_save_blocks - - thumb_func_start ApplyNewEncyprtionKeyToHword -ApplyNewEncyprtionKeyToHword: @ 8077100 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - adds r2, 0xAC - ldr r2, [r2] - ldrh r3, [r0] - eors r2, r3 - eors r2, r1 - strh r2, [r0] - bx lr - .pool - thumb_func_end ApplyNewEncyprtionKeyToHword - - thumb_func_start ApplyNewEncyprtionKeyToWord -ApplyNewEncyprtionKeyToWord: @ 8077118 - ldr r2, =gSaveBlock2Ptr - ldr r3, [r2] - adds r3, 0xAC - ldr r2, [r0] - ldr r3, [r3] - eors r2, r3 - eors r2, r1 - str r2, [r0] - bx lr - .pool - thumb_func_end ApplyNewEncyprtionKeyToWord - - thumb_func_start ApplyNewEncyprtionKeyToAllEncryptedData -ApplyNewEncyprtionKeyToAllEncryptedData: @ 8077130 - push {r4,r5,lr} - adds r4, r0, 0 - bl ApplyNewEncyprtionKeyToGameStats - adds r0, r4, 0 - bl ApplyNewEncyprtionKeyToBagItems_ - adds r0, r4, 0 - bl ApplyNewEncyprtionKeyToBerryPowder - ldr r5, =gSaveBlock1Ptr - ldr r0, [r5] - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - adds r1, r4, 0 - bl ApplyNewEncyprtionKeyToWord - ldr r0, [r5] - ldr r1, =0x00000494 - adds r0, r1 - adds r1, r4, 0 - bl ApplyNewEncyprtionKeyToHword - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ApplyNewEncyprtionKeyToAllEncryptedData - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index e9c810adc..976940f1f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -83,7 +83,6 @@ SECTIONS { asm/smokescreen.o(.text); asm/pokeball.o(.text); src/load_save.o(.text); - asm/load_save.o(.text); asm/trade.o(.text); src/berry_blender.o(.text); asm/berry_blender.o(.text); diff --git a/src/load_save.c b/src/load_save.c index d59a7c13e..5eb160e5a 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "global.h" #include "gba/flash_internal.h" #include "load_save.h" #include "main.h" @@ -10,11 +10,27 @@ extern void* gUnknown_0203CF5C; extern bool16 IdentifyFlash(void); extern void SetBagItemsPointers(void); extern void SetDecorationInventoriesPointers(void); +extern void ApplyNewEncyprtionKeyToGameStats(u32 key); +extern void ApplyNewEncyprtionKeyToBagItems(u32 newKey); +extern void ApplyNewEncyprtionKeyToBagItems_(u32 key); +extern void ApplyNewEncyprtionKeyToBerryPowder(u32 key); +extern void sub_8084FAC(int unused); -void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey); +// this is probably wrong or misleading due to it being used in ResetHeap... +extern void InitHeap(void *pointer, u32 size); #define SAVEBLOCK_MOVE_RANGE 128 +struct LoadedSaveData +{ + /*0x0000*/ struct ItemSlot items[30]; + /*0x0078*/ struct ItemSlot keyItems[30]; + /*0x00F0*/ struct ItemSlot pokeBalls[16]; + /*0x0130*/ struct ItemSlot TMsHMs[64]; + /*0x0230*/ struct ItemSlot berries[46]; + /*0x02E8*/ struct MailStruct mail[16]; +}; + EWRAM_DATA struct SaveBlock2 gSaveblock2 = {0}; EWRAM_DATA u8 gSaveblock2_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; @@ -24,7 +40,10 @@ EWRAM_DATA u8 gSaveblock1_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; EWRAM_DATA u8 gSaveblock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; -extern void InitHeap(void *pointer, u32 size); +EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; +EWRAM_DATA u32 gLastEncryptionKey = {0}; + +void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey); void CheckForFlashMemory(void) { @@ -233,3 +252,164 @@ void MoveSaveBlocks_ResetHeap(void) .syntax divided\n"); } #endif + +u8 sav2_x1_query_bit1(void) +{ + return gSaveBlock2Ptr->specialSaveWarp & 1; +} + +void sav2_x9_clear_bit1(void) +{ + gSaveBlock2Ptr->specialSaveWarp &= ~1; +} + +void sub_8076D48(void) +{ + gSaveBlock2Ptr->specialSaveWarp |= 1; +} + +void sub_8076D5C(void) +{ + sub_8084FAC(0); + gSaveBlock2Ptr->specialSaveWarp |= 1; +} + +void sav2_gender2_inplace_and_xFE(void) +{ + gSaveBlock2Ptr->specialSaveWarp &= ~1; +} + +void copy_player_party_to_sav1(void) // SavePlayerParty +{ + int i; + + gSaveBlock1Ptr->playerPartyCount = gPlayerPartyCount; + + for (i = 0; i < 6; i++) + gSaveBlock1Ptr->playerParty[i] = gPlayerParty[i]; +} + +void copy_player_party_from_sav1(void) // LoadPlayerParty +{ + int i; + + gPlayerPartyCount = gSaveBlock1Ptr->playerPartyCount; + + for (i = 0; i < 6; i++) + gPlayerParty[i] = gSaveBlock1Ptr->playerParty[i]; +} + +void save_serialize_npcs(void) // SaveMapObjects +{ + int i; + + for (i = 0; i < 16; i++) + gSaveBlock1Ptr->mapObjects[i] = gMapObjects[i]; +} + +void save_deserialize_npcs(void) // LoadMapObjects +{ + int i; + + for (i = 0; i < 16; i++) + gMapObjects[i] = gSaveBlock1Ptr->mapObjects[i]; +} + +void SaveSerializedGame(void) +{ + copy_player_party_to_sav1(); + save_serialize_npcs(); +} + +void LoadSerializedGame(void) +{ + copy_player_party_from_sav1(); + save_deserialize_npcs(); +} + +void copy_bags_and_unk_data_from_save_blocks(void) +{ + int i; + + // load player items. + for (i = 0; i < 30; i++) + gLoadedSaveData.items[i] = gSaveBlock1Ptr->bagPocket_Items[i]; + + // load player key items. + for (i = 0; i < 30; i++) + gLoadedSaveData.keyItems[i] = gSaveBlock1Ptr->bagPocket_KeyItems[i]; + + // load player pokeballs. + for (i = 0; i < 16; i++) + gLoadedSaveData.pokeBalls[i] = gSaveBlock1Ptr->bagPocket_PokeBalls[i]; + + // load player TMs and HMs. + for (i = 0; i < 64; i++) + gLoadedSaveData.TMsHMs[i] = gSaveBlock1Ptr->bagPocket_TMHM[i]; + + // load player berries. + for (i = 0; i < 46; i++) + gLoadedSaveData.berries[i] = gSaveBlock1Ptr->bagPocket_Berries[i]; + + // load mail. + for (i = 0; i < 16; i++) + gLoadedSaveData.mail[i] = gSaveBlock1Ptr->mail[i]; + + gLastEncryptionKey = gSaveBlock2Ptr->encryptionKey; +} + +void copy_bags_and_unk_data_to_save_blocks(void) +{ + int i; + u32 encryptionKeyBackup; + + // save player items. + for (i = 0; i < 30; i++) + gSaveBlock1Ptr->bagPocket_Items[i] = gLoadedSaveData.items[i]; + + // save player key items. + for (i = 0; i < 30; i++) + gSaveBlock1Ptr->bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i]; + + // save player pokeballs. + for (i = 0; i < 16; i++) + gSaveBlock1Ptr->bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i]; + + // save player TMs and HMs. + for (i = 0; i < 64; i++) + gSaveBlock1Ptr->bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i]; + + // save player berries. + for (i = 0; i < 46; i++) + gSaveBlock1Ptr->bagPocket_Berries[i] = gLoadedSaveData.berries[i]; + + // save mail. + for (i = 0; i < 16; i++) + gSaveBlock1Ptr->mail[i] = gLoadedSaveData.mail[i]; + + encryptionKeyBackup = gSaveBlock2Ptr->encryptionKey; + gSaveBlock2Ptr->encryptionKey = gLastEncryptionKey; + ApplyNewEncyprtionKeyToBagItems(encryptionKeyBackup); + gSaveBlock2Ptr->encryptionKey = encryptionKeyBackup; // updated twice? +} + +void ApplyNewEncyprtionKeyToHword(u16 *hWord, u32 newKey) +{ + *hWord ^= gSaveBlock2Ptr->encryptionKey; + *hWord ^= newKey; +} + +void ApplyNewEncyprtionKeyToWord(u32 *word, u32 newKey) +{ + *word ^= gSaveBlock2Ptr->encryptionKey; + *word ^= newKey; +} + +void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey) +{ + ApplyNewEncyprtionKeyToGameStats(encryptionKey); + ApplyNewEncyprtionKeyToBagItems_(encryptionKey); + ApplyNewEncyprtionKeyToBerryPowder(encryptionKey); + ApplyNewEncyprtionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey); + ApplyNewEncyprtionKeyToHword(&gSaveBlock1Ptr->coins, encryptionKey); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index cfe686a7c..7d5d4cf46 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -547,12 +547,6 @@ gUnknown_020249B4: @ 20249B4 .include "src/daycare.o" .include "src/load_save.o" -gUnknown_02031C58: @ 2031C58 - .space 0x528 - -gUnknown_02032180: @ 2032180 - .space 0x4 - gUnknown_02032184: @ 2032184 .space 0x4 -- cgit v1.2.3 From ef18d3b8ec2ec0e0c0d7f4c48c9da921e34c5b02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 23 Nov 2017 11:23:05 -0500 Subject: Decompile asm/unk_text_util.s --- asm/easy_chat.s | 8 ++-- asm/link.s | 96 +++++++++++++++++++++--------------------- asm/pokemon_storage_system.s | 8 ++-- asm/pokemon_summary_screen.s | 8 ++-- asm/pokenav.s | 12 +++--- asm/unk_text_util.s | 99 -------------------------------------------- include/unk_text_util.h | 9 ++++ ld_script.txt | 2 +- src/pokemon_summary_screen.c | 61 ++++++++++++++------------- src/text.c | 4 +- src/unk_text_util.c | 56 +++++++++++++++++++++++++ sym_ewram.txt | 3 +- 12 files changed, 165 insertions(+), 201 deletions(-) delete mode 100755 asm/unk_text_util.s create mode 100644 include/unk_text_util.h create mode 100644 src/unk_text_util.c diff --git a/asm/easy_chat.s b/asm/easy_chat.s index eb20e68fa..602e7b3e7 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -3691,7 +3691,7 @@ sub_811BDF0: @ 811BDF0 adds r6, r0, 0 ldr r0, =gSaveBlock1Ptr ldr r4, [r0] - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r0, =0x00003b70 adds r5, r4, r0 adds r0, r5, 0 @@ -3707,17 +3707,17 @@ sub_811BDF0: @ 811BDF0 bl TVShowConvertInternationalString movs r0, 0 mov r1, sp - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI b _0811BE3C .pool _0811BE34: ldr r1, =gText_Lady movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI _0811BE3C: ldr r1, =gText_F700sQuiz adds r0, r6, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders add sp, 0x20 pop {r4-r6} pop {r0} diff --git a/asm/link.s b/asm/link.s index d2dc05630..acf24716e 100644 --- a/asm/link.s +++ b/asm/link.s @@ -28007,14 +28007,14 @@ _08017F8A: lsls r0, r4, 24 lsrs r0, 24 adds r1, r5, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI adds r5, 0x10 adds r4, 0x1 cmp r4, 0x3 ble _08017F8A ldr r1, =gUnknown_082EE47C adds r0, r7, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders b _08017FB4 .pool _08017FAC: @@ -28379,7 +28379,7 @@ sub_8018220: @ 8018220 ldr r0, =gUnknown_02039B58 adds r1, r0 mov r8, r1 - bl sub_81AFBF0 + bl UnkTextUtil_Reset mov r6, r9 adds r6, 0xC0 bl sub_8068BB0 @@ -28393,11 +28393,11 @@ sub_8018220: @ 8018220 bl StringCopy movs r0, 0 adds r1, r6, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI mov r1, r8 adds r1, 0x30 movs r0, 0x1 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r4, 0xBA lsls r4, 1 add r4, r9 @@ -28411,7 +28411,7 @@ sub_8018220: @ 8018220 bl StringCopy movs r0, 0x2 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI mov r5, r9 adds r5, 0xDE mov r0, r8 @@ -28422,7 +28422,7 @@ sub_8018220: @ 8018220 bl ConvertIntToDecimalStringN movs r0, 0x3 adds r1, r5, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r2, 0xED add r2, r9 mov r10, r2 @@ -28442,16 +28442,16 @@ sub_8018220: @ 8018220 bl ConvertIntToDecimalStringN movs r0, 0x4 mov r1, r10 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r0, 0x5 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r4, 0xD2 lsls r4, 1 add r4, r9 ldr r1, =gUnknown_082EFF64 adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldr r0, =gStringVar4 adds r1, r4, 0 bl StringCopy @@ -28468,7 +28468,7 @@ _0801830C: bl ConvertIntToDecimalStringN movs r0, 0 adds r1, r6, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI mov r2, r8 ldrh r1, [r2, 0x16] cmp r1, r4 @@ -28483,7 +28483,7 @@ _08018328: bl ConvertIntToDecimalStringN movs r0, 0x2 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI mov r0, r8 ldrh r1, [r0, 0x20] adds r0, r5, 0 @@ -28492,7 +28492,7 @@ _08018328: bl ConvertIntToDecimalStringN movs r0, 0x3 adds r1, r5, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r7, 0 movs r6, 0x80 lsls r6, 19 @@ -28505,7 +28505,7 @@ _08018360: bl CopyEasyChatWord lsrs r0, r6, 24 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r2, 0x80 lsls r2, 17 adds r6, r2 @@ -28519,7 +28519,7 @@ _08018360: add r4, r9 ldr r1, =gUnknown_082EFFA4 adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldr r5, =gStringVar4 adds r0, r5, 0 adds r1, r4, 0 @@ -28529,7 +28529,7 @@ _08018360: bne _080183D0 ldr r1, =gUnknown_082F0020 adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders adds r0, r5, 0 adds r1, r4, 0 bl StringAppend @@ -28546,7 +28546,7 @@ _080183D0: adds r1, r0 ldr r1, [r1] adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders adds r0, r5, 0 adds r1, r4, 0 bl StringAppend @@ -32659,7 +32659,7 @@ sub_801A43C: @ 801A43C bl LoadPalette movs r0, 0xF0 bl sub_81978B0 - bl sub_81AFBF0 + bl UnkTextUtil_Reset movs r0, 0x20 str r0, [sp] str r0, [sp, 0x4] @@ -41936,10 +41936,10 @@ _0801F020: ldrb r1, [r4, 0x8] cmp r0, r1 beq _0801F0A8 - bl sub_81AFBF0 + bl UnkTextUtil_Reset movs r0, 0 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r1, =gText_F700JoinedChat b _0801F094 .pool @@ -41976,14 +41976,14 @@ _0801F07A: ldrb r5, [r5] cmp r0, r5 beq _0801F0A8 - bl sub_81AFBF0 + bl UnkTextUtil_Reset movs r0, 0 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r1, =gText_F700LeftChat _0801F094: adds r0, r6, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x1 b _0801F0AA .pool @@ -43456,11 +43456,11 @@ sub_801FBF8: @ 801FBF8 beq _0801FC38 b _0801FC42 _0801FC08: - bl sub_81AFBF0 + bl UnkTextUtil_Reset bl sub_801F1D0 adds r1, r0, 0 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r0, 0x5 movs r1, 0 bl sub_801FF18 @@ -43617,11 +43617,11 @@ sub_801FD30: @ 801FD30 beq _0801FD74 b _0801FD7E _0801FD40: - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r0, =gSaveBlock2Ptr ldr r1, [r0] movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r0, 0x9 movs r1, 0 bl sub_801FF18 @@ -43925,7 +43925,7 @@ _0801FF98: adds r0, r1, 0 adds r0, 0x22 ldr r1, [r4] - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldr r0, [r5] adds r6, r0, 0 adds r6, 0x22 @@ -47204,7 +47204,7 @@ _08021A92: lsls r4, 2 str r4, [sp, 0x24] _08021A98: - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r0, [sp, 0x10] cmp r0, 0x1 beq _08021B48 @@ -47463,10 +47463,10 @@ _08021CC8: ldr r0, [sp, 0xC] adds r1, r0, r1 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r0, =gStringVar4 adds r1, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldr r1, [sp, 0xC] movs r2, 0xDD lsls r2, 1 @@ -63514,7 +63514,7 @@ _08029DA0: movs r1, 0x1 adds r2, r5, 0 bl PrintTextOnWindow - bl sub_81AFBF0 + bl UnkTextUtil_Reset bl sub_802762C lsls r0, 16 lsrs r0, 16 @@ -63523,11 +63523,11 @@ _08029DA0: bl CopyItemName movs r0, 0 adds r1, r5, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r7, =gStringVar4 ldr r1, =gText_FirstPlacePrize adds r0, r7, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldr r0, [r4] add r0, r10 ldrb r0, [r0] @@ -63548,7 +63548,7 @@ _08029DA0: beq _08029EC8 cmp r4, 0x3 beq _08029EC8 - bl sub_81AFBF0 + bl UnkTextUtil_Reset bl sub_802762C lsls r0, 16 lsrs r0, 16 @@ -63556,12 +63556,12 @@ _08029DA0: bl CopyItemName movs r0, 0 adds r1, r5, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI cmp r4, 0x2 bne _08029E9C ldr r1, =gText_CantHoldAnyMore adds r0, r7, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders b _08029EA8 .pool _08029E9C: @@ -63569,7 +63569,7 @@ _08029E9C: bne _08029EA8 ldr r1, =gText_FilledStorageSpace adds r0, r7, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders _08029EA8: ldr r0, =gUnknown_02022CF8 ldr r0, [r0] @@ -70729,19 +70729,19 @@ sub_802D7E8: @ 802D7E8 movs r2, 0 movs r3, 0x1 bl ConvertIntToDecimalStringN - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r1, [r5] adds r1, 0x26 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r1, [r5] adds r1, 0x66 movs r0, 0x1 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r0, [r5] adds r0, 0xA6 ldr r1, =gText_AwesomeWonF701F700 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x4 movs r1, 0x8 movs r2, 0x16 @@ -70786,15 +70786,15 @@ sub_802D884: @ 802D884 ldr r1, [r4] adds r1, 0x26 bl CopyItemName - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r1, [r4] adds r1, 0x26 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r0, [r4] adds r0, 0xA6 ldr r1, =gText_FilledStorageSpace2 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x4 movs r1, 0x8 movs r2, 0x16 @@ -70839,15 +70839,15 @@ sub_802D8FC: @ 802D8FC ldr r1, [r4] adds r1, 0x26 bl CopyItemName - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r1, [r4] adds r1, 0x26 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r0, [r4] adds r0, 0xA6 ldr r1, =gText_CantHoldMore - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x4 movs r1, 0x9 movs r2, 0x16 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 94245f93b..c30cd7c28 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -6737,7 +6737,7 @@ sub_80CAC58: @ 80CAC58 sub sp, 0xC lsls r0, 24 lsrs r6, r0, 24 - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r1, =gUnknown_0857276C lsls r0, r6, 3 adds r0, r1 @@ -6774,7 +6774,7 @@ _080CACB8: adds r1, r2 _080CACC0: movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI b _080CAD30 .pool _080CACD0: @@ -6817,7 +6817,7 @@ _080CAD16: ldr r0, =0x000021eb adds r1, r0 movs r0, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI _080CAD30: ldr r5, =gUnknown_02039D08 ldr r0, [r5] @@ -6827,7 +6827,7 @@ _080CAD30: lsls r1, r6, 3 adds r1, r2 ldr r1, [r1] - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x1 movs r1, 0x11 bl FillWindowPixelBuffer diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index d30c6b4ee..9aed72097 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -212,17 +212,17 @@ _081C3FEC: movs r2, 0x1 movs r3, 0x2 bl ConvertIntToDecimalStringN - bl sub_81AFBF0 + bl UnkTextUtil_Reset movs r0, 0 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r0, 0x1 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r4, =gStringVar4 ldr r1, =gUnknown_0861CE97 adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders movs r0, 0x1 adds r1, r4, 0 movs r2, 0x2C diff --git a/asm/pokenav.s b/asm/pokenav.s index 6da267d78..0f4ab7fec 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -16941,17 +16941,17 @@ sub_81CF7F4: @ 81CF7F4 mov r8, r0 bl sub_81CF0F0 adds r7, r0, 0 - bl sub_81AFBF0 + bl UnkTextUtil_Reset ldr r4, =gStringVar1 movs r0, 0 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI movs r0, 0xFF strb r0, [r4] ldr r5, =gStringVar2 ldr r1, =gText_NumberF700 adds r0, r5, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders mov r1, r8 ldrb r0, [r1, 0x8] movs r1, 0x1 @@ -19854,14 +19854,14 @@ sub_81D0E84: @ 81D0E84 movs r2, 0 movs r3, 0x2 bl ConvertIntToDecimalStringN - bl sub_81AFBF0 + bl UnkTextUtil_Reset movs r0, 0 adds r1, r4, 0 - bl sub_81AFC0C + bl UnkTextUtil_SetPtrI ldr r4, =gStringVar4 ldr r1, =gText_RibbonsF700 adds r0, r4, 0 - bl sub_81AFC28 + bl UnkTextUtil_StringExpandPlaceholders ldrb r0, [r5, 0xA] movs r1, 0x44 bl FillWindowPixelBuffer diff --git a/asm/unk_text_util.s b/asm/unk_text_util.s deleted file mode 100755 index f8dabb5b7..000000000 --- a/asm/unk_text_util.s +++ /dev/null @@ -1,99 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81AFBF0 -sub_81AFBF0: @ 81AFBF0 - push {lr} - ldr r1, =gUnknown_0203CE9C - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x1C -_081AFBFA: - str r2, [r0] - subs r0, 0x4 - cmp r0, r1 - bge _081AFBFA - pop {r0} - bx r0 - .pool - thumb_func_end sub_81AFBF0 - - thumb_func_start sub_81AFC0C -sub_81AFC0C: @ 81AFC0C - push {lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bhi _081AFC20 - ldr r1, =gUnknown_0203CE9C - lsls r0, 2 - adds r0, r1 - str r2, [r0] -_081AFC20: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81AFC0C - - thumb_func_start sub_81AFC28 -sub_81AFC28: @ 81AFC28 - push {r4,r5,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - beq _081AFC68 - ldr r5, =gUnknown_0203CE9C -_081AFC38: - cmp r1, 0xF7 - beq _081AFC48 - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - b _081AFC60 - .pool -_081AFC48: - adds r4, 0x1 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - cmp r1, 0 - beq _081AFC5E - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 -_081AFC5E: - adds r4, 0x1 -_081AFC60: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081AFC38 -_081AFC68: - movs r0, 0xFF - strb r0, [r2] - adds r0, r2, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81AFC28 - - thumb_func_start sub_81AFC74 -sub_81AFC74: @ 81AFC74 - lsls r0, 24 - ldr r1, =gUnknown_0203CE9C - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - bx lr - .pool - thumb_func_end sub_81AFC74 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/unk_text_util.h b/include/unk_text_util.h new file mode 100644 index 000000000..72243a90e --- /dev/null +++ b/include/unk_text_util.h @@ -0,0 +1,9 @@ +#ifndef GUARD_UNK_TEXT_UTIL_H +#define GUARD_UNK_TEXT_UTIL_H + +void UnkTextUtil_Reset(void); +void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr); +u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src); +const u8 *UnkTextUtil_GetPtrI(u8 idx); + +#endif //GUARD_UNK_TEXT_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index e9c810adc..9a03db633 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -244,7 +244,7 @@ SECTIONS { asm/item_menu.o(.text); asm/list_menu.o(.text); asm/menu_indicators.o(.text); - asm/unk_text_util.o(.text); + src/unk_text_util.o(.text); src/save_location.o(.text); asm/item_icon.o(.text); asm/party_menu.o(.text); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index d09cbc407..e9cd3e215 100755 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -15,6 +15,7 @@ #include "sound.h" #include "species.h" #include "sprite.h" +#include "unk_text_util.h" #include "string_util.h" #include "task.h" #include "text.h" @@ -166,9 +167,7 @@ extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth); extern bool8 sub_81A6BF4(); extern bool8 sub_81B9E94(); -extern void sub_81AFBF0(); -extern u8 sub_81AFC0C(u8 a, u8 *b); -extern void sub_81AFC28(u8 *a, u8 *b); +extern void UnkTextUtil_Reset(); extern void sub_8124610(u8 *a, u8 b); extern int GetPlayerIDAsU32(); extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b); @@ -2993,12 +2992,12 @@ void sub_81C307C() { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 *text; - sub_81AFBF0(); - sub_81AFC0C(0, gUnknown_0861CE74); - sub_81AFC0C(1, gUnknown_0861CE7B); + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, gUnknown_0861CE74); + UnkTextUtil_SetPtrI(1, gUnknown_0861CE7B); sub_81C31C0(); if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE) - sub_81AFC28(gStringVar4, gText_XNature); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gText_XNature); else { u8 *alloced1 = Alloc(32); @@ -3007,7 +3006,7 @@ void sub_81C307C() if (sum->metLocation <= 0xD4) { sub_8124610(alloced2, sum->metLocation); - sub_81AFC0C(4, alloced2); + UnkTextUtil_SetPtrI(4, alloced2); } if (sub_81C3220() == 1) { @@ -3022,7 +3021,7 @@ void sub_81C307C() text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; else text = gText_XNatureObtainedInTrade; - sub_81AFC28(gStringVar4, text); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, text); Free(alloced1); Free(alloced2); } @@ -3036,8 +3035,8 @@ void sub_81C3194() void sub_81C31C0() { struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; - sub_81AFC0C(2, gNatureNamePointers[sumStruct->summary.nature]); - sub_81AFC0C(5, gText_EmptyString5); + UnkTextUtil_SetPtrI(2, gNatureNamePointers[sumStruct->summary.nature]); + UnkTextUtil_SetPtrI(5, gText_EmptyString5); } void sub_81C31F0(u8 *a) @@ -3046,7 +3045,7 @@ void sub_81C31F0(u8 *a) if (level == 0) level = 5; ConvertIntToDecimalStringN(a, level, 0, 3); - sub_81AFC0C(3, a); + UnkTextUtil_SetPtrI(3, a); } u8 sub_81C3220() @@ -3301,12 +3300,12 @@ void sub_81C3710() ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3); ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7); ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7); - sub_81AFBF0(); - sub_81AFC0C(0, alloced1); - sub_81AFC0C(1, alloced2); - sub_81AFC0C(2, alloced3); - sub_81AFC0C(3, alloced4); - sub_81AFC28(gStringVar4, gUnknown_0861CE82); + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, alloced1); + UnkTextUtil_SetPtrI(1, alloced2); + UnkTextUtil_SetPtrI(2, alloced3); + UnkTextUtil_SetPtrI(3, alloced4); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE82); Free(alloced1); Free(alloced2); Free(alloced3); @@ -3323,11 +3322,11 @@ void sub_81C3808() ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3); - sub_81AFBF0(); - sub_81AFC0C(0, gStringVar1); - sub_81AFC0C(1, gStringVar2); - sub_81AFC0C(2, gStringVar3); - sub_81AFC28(gStringVar4, gUnknown_0861CE8E); + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, gStringVar2); + UnkTextUtil_SetPtrI(2, gStringVar3); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); } void sub_81C3890() @@ -3436,10 +3435,10 @@ void sub_81C3B08(u8 a) sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1); ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2); ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2); - sub_81AFBF0(); - sub_81AFC0C(0, gStringVar1); - sub_81AFC0C(1, gStringVar2); - sub_81AFC28(gStringVar4, gUnknown_0861CE97); + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, gStringVar2); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE97); text = gStringVar4; r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9; offset = GetStringRightAlignXOffset(1, text, 0x2C); @@ -3531,17 +3530,17 @@ void sub_81C3B08(u8 a) movs r2, 0x1\n\ movs r3, 0x2\n\ bl ConvertIntToDecimalStringN\n\ - bl sub_81AFBF0\n\ + bl UnkTextUtil_Reset\n\ movs r0, 0\n\ mov r1, r8\n\ - bl sub_81AFC0C\n\ + bl UnkTextUtil_SetPtrI\n\ movs r0, 0x1\n\ adds r1, r4, 0\n\ - bl sub_81AFC0C\n\ + bl UnkTextUtil_SetPtrI\n\ ldr r4, =gStringVar4\n\ ldr r1, =gUnknown_0861CE97\n\ adds r0, r4, 0\n\ - bl sub_81AFC28\n\ + bl UnkTextUtil_StringExpandPlaceholders\n\ adds r7, r4, 0\n\ ldrb r0, [r5]\n\ adds r1, r6, 0\n\ diff --git a/src/text.c b/src/text.c index 8108a6867..4ebe5a422 100644 --- a/src/text.c +++ b/src/text.c @@ -13,7 +13,7 @@ extern void CopyWindowToVram(u8 windowId, u8 mode); extern u16 Font6Func(struct TextPrinter *textPrinter); extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); extern void PlaySE(u16 songNum); -extern u8* sub_81AFC74(u8 a1); +extern u8* UnkTextUtil_GetPtrI(u8 a1); EWRAM_DATA struct TextPrinter gTempTextPrinter = {0}; EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0}; @@ -2932,7 +2932,7 @@ u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) } case 0xF7: if (bufferPointer == NULL) - bufferPointer = sub_81AFC74(*++str); + bufferPointer = UnkTextUtil_GetPtrI(*++str); while (*bufferPointer != 0xFF) { glyphWidth = func(*bufferPointer++, isJapanese); diff --git a/src/unk_text_util.c b/src/unk_text_util.c new file mode 100644 index 000000000..825b333bb --- /dev/null +++ b/src/unk_text_util.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "text.h" +#include "unk_text_util.h" +#include "string_util.h" + +static EWRAM_DATA const u8 *sStringPointers[8] = {}; + +void UnkTextUtil_Reset(void) +{ + const u8 **ptr; + u8 *fillval; + const u8 **ptr2; + + ptr = sStringPointers; + fillval = NULL; + ptr2 = ptr + (ARRAY_COUNT(sStringPointers) - 1); + do + { + *ptr2-- = fillval; + } while ((int)ptr2 >= (int)ptr); +} + +void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr) +{ + if (idx < ARRAY_COUNT(sStringPointers)) + { + sStringPointers[idx] = ptr; + } +} + +u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src) +{ + while (*src != EOS) + { + if (*src != 0xF7) + { + *dest++ = *src++; + } + else + { + src++; + if (sStringPointers[*src] != NULL) + { + dest = StringCopy(dest, sStringPointers[*src]); + } + src++; + } + } + *dest = EOS; + return dest; +} + +const u8 *UnkTextUtil_GetPtrI(u8 idx) +{ + return sStringPointers[idx]; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index cfe686a7c..889b89823 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1545,8 +1545,7 @@ gUnknown_0203CE84: @ 203CE84 gUnknown_0203CE8C: @ 203CE8C .space 0x10 -gUnknown_0203CE9C: @ 203CE9C - .space 0x20 + .include "src/unk_text_util.o" gUnknown_0203CEBC: @ 203CEBC .space 0x4 -- cgit v1.2.3 From e8b1059345c87b15c74262b2a761e5c7be526a5f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 23 Nov 2017 13:29:11 -0500 Subject: CHAR_SPECIAL_F7 constant Preface for string decompilation --- include/text.h | 1 + src/unk_text_util.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/text.h b/include/text.h index 594661717..1da5141aa 100644 --- a/include/text.h +++ b/include/text.h @@ -65,6 +65,7 @@ #define CHAR_x 0xEC #define CHAR_y 0xED #define CHAR_z 0xEE +#define CHAR_SPECIAL_F7 0xF7 #define CHAR_SPECIAL_F9 0xF9 #define CHAR_COLON 0xF0 #define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog diff --git a/src/unk_text_util.c b/src/unk_text_util.c index 825b333bb..2773522b2 100644 --- a/src/unk_text_util.c +++ b/src/unk_text_util.c @@ -32,7 +32,7 @@ u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src) { while (*src != EOS) { - if (*src != 0xF7) + if (*src != CHAR_SPECIAL_F7) { *dest++ = *src++; } -- cgit v1.2.3 From 9151a6d0942c5211f648154bbc675ce4d3a495a7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 25 Nov 2017 18:42:31 +0100 Subject: dump battlescripts, rename battlescripts --- asm/macros/battle_script.inc | 1232 +++++++ constants/battle_constants.inc | 170 + constants/battle_script_constants.inc | 170 + constants/battle_text.inc | 375 +++ data/battle_scripts_1.s | 5184 +++++++++++++++++++++++++---- data/battle_scripts_2.s | 258 +- include/battle.h | 4 +- include/battle_controllers.h | 4 +- include/battle_move_effects.h | 2 +- include/battle_script_commands.h | 6 +- include/battle_scripts.h | 640 ++++ src/battle_2.c | 48 +- src/battle_controller_link_opponent.c | 12 +- src/battle_controller_link_partner.c | 12 +- src/battle_controller_opponent.c | 12 +- src/battle_controller_player.c | 12 +- src/battle_controller_player_partner.c | 12 +- src/battle_controller_recorded_opponent.c | 12 +- src/battle_controller_recorded_player.c | 12 +- src/battle_controller_safari.c | 12 +- src/battle_controller_wally.c | 12 +- src/battle_controllers.c | 6 +- src/battle_script_commands.c | 733 ++-- src/battle_util.c | 198 +- 24 files changed, 7828 insertions(+), 1310 deletions(-) create mode 100644 asm/macros/battle_script.inc create mode 100644 constants/battle_constants.inc create mode 100644 constants/battle_script_constants.inc create mode 100644 constants/battle_text.inc create mode 100644 include/battle_scripts.h diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc new file mode 100644 index 000000000..3a8e99a94 --- /dev/null +++ b/asm/macros/battle_script.inc @@ -0,0 +1,1232 @@ +@ commands + .macro attackcanceler + .byte 0x0 + .endm + + .macro accuracycheck param0, param1 + .byte 0x1 + .4byte \param0 + .2byte \param1 + .endm + + .macro attackstring + .byte 0x2 + .endm + + .macro ppreduce + .byte 0x3 + .endm + + .macro critcalc + .byte 0x4 + .endm + + .macro damagecalc + .byte 0x5 + .endm + + .macro typecalc + .byte 0x6 + .endm + + .macro adjustnormaldamage + .byte 0x7 + .endm + + .macro adjustnormaldamage2 + .byte 0x8 + .endm + + .macro attackanimation + .byte 0x9 + .endm + + .macro waitanimation + .byte 0xa + .endm + + .macro healthbarupdate bank + .byte 0xb + .byte \bank + .endm + + .macro datahpupdate bank + .byte 0xc + .byte \bank + .endm + + .macro critmessage + .byte 0xd + .endm + + .macro effectivenesssound + .byte 0xe + .endm + + .macro resultmessage + .byte 0xf + .endm + + .macro printstring param0 + .byte 0x10 + .2byte \param0 + .endm + + .macro printselectionstring param0 + .byte 0x11 + .2byte \param0 + .endm + + .macro waitmessage param0 + .byte 0x12 + .2byte \param0 + .endm + + .macro printfromtable param0 + .byte 0x13 + .4byte \param0 + .endm + + .macro printselectionstringfromtable param0 + .byte 0x14 + .4byte \param0 + .endm + + .macro seteffectwithchance + .byte 0x15 + .endm + + .macro seteffectprimary + .byte 0x16 + .endm + + .macro seteffectsecondary + .byte 0x17 + .endm + + .macro clearstatusfromeffect bank + .byte 0x18 + .byte \bank + .endm + + .macro tryfaintmon bank, param1, param2 + .byte 0x19 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro dofaintanimation bank + .byte 0x1a + .byte \bank + .endm + + .macro cleareffectsonfaint bank + .byte 0x1b + .byte \bank + .endm + + .macro jumpifstatus bank, status1, param2 + .byte 0x1c + .byte \bank + .4byte \status1 + .4byte \param2 + .endm + + .macro jumpifstatus2 bank, status2, param2 + .byte 0x1d + .byte \bank + .4byte \status2 + .4byte \param2 + .endm + + .macro jumpifability param0, ability, param2 + .byte 0x1e + .byte \param0 + .byte \ability + .4byte \param2 + .endm + + .macro jumpifsideaffecting bank, sidestatus, param2 + .byte 0x1f + .byte \bank + .2byte \sidestatus + .4byte \param2 + .endm + + .macro jumpifstat bank, ifflag, stat, param3, param4 + .byte 0x20 + .byte \bank + .byte \ifflag + .byte \stat + .byte \param3 + .4byte \param4 + .endm + + .macro jumpifstatus3 bank, status3, param2, param3 + .byte 0x21 + .byte \bank + .4byte \status3 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpiftype bank, type, param2 + .byte 0x22 + .byte \bank + .byte \type + .4byte \param2 + .endm + + .macro getexp bank + .byte 0x23 + .byte \bank + .endm + + .macro atk24 param0 + .byte 0x24 + .4byte \param0 + .endm + + .macro movevaluescleanup + .byte 0x25 + .endm + + .macro setmultihit param0 + .byte 0x26 + .byte \param0 + .endm + + .macro decrementmultihit param0 + .byte 0x27 + .4byte \param0 + .endm + + .macro goto param0 + .byte 0x28 + .4byte \param0 + .endm + + .macro jumpifbyte ifflag, param1, param2, param3 + .byte 0x29 + .byte \ifflag + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifhalfword ifflag, param1, param2, param3 + .byte 0x2a + .byte \ifflag + .4byte \param1 + .2byte \param2 + .4byte \param3 + .endm + + .macro jumpifword ifflag, param1, param2, param3 + .byte 0x2b + .byte \ifflag + .4byte \param1 + .4byte \param2 + .4byte \param3 + .endm + + .macro jumpifarrayequal param0, param1, param2, param3 + .byte 0x2c + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifarraynotequal param0, param1, param2, param3 + .byte 0x2d + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro setbyte param0, param1 + .byte 0x2e + .4byte \param0 + .byte \param1 + .endm + + .macro addbyte param0, param1 + .byte 0x2f + .4byte \param0 + .byte \param1 + .endm + + .macro subbyte param0, param1 + .byte 0x30 + .4byte \param0 + .byte \param1 + .endm + + .macro copyarray param0, param1, param2 + .byte 0x31 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro copyarraywithindex param0, param1, param2, param3 + .byte 0x32 + .4byte \param0 + .4byte \param1 + .4byte \param2 + .byte \param3 + .endm + + .macro orbyte param0, param1 + .byte 0x33 + .4byte \param0 + .byte \param1 + .endm + + .macro orhalfword param0, param1 + .byte 0x34 + .4byte \param0 + .2byte \param1 + .endm + + .macro orword param0, param1 + .byte 0x35 + .4byte \param0 + .4byte \param1 + .endm + + .macro bicbyte param0, param1 + .byte 0x36 + .4byte \param0 + .byte \param1 + .endm + + .macro bichalfword param0, param1 + .byte 0x37 + .4byte \param0 + .2byte \param1 + .endm + + .macro bicword param0, param1 + .byte 0x38 + .4byte \param0 + .4byte \param1 + .endm + + .macro pause param0 + .byte 0x39 + .2byte \param0 + .endm + + .macro waitstate + .byte 0x3a + .endm + + .macro healthbar_update bank + .byte 0x3b + .byte \bank + .endm + + .macro return + .byte 0x3c + .endm + + .macro end + .byte 0x3d + .endm + + .macro end2 + .byte 0x3e + .endm + + .macro end3 + .byte 0x3f + .endm + + .macro jumpifaffectedbyprotect param0 + .byte 0x40 + .4byte \param0 + .endm + + .macro call param0 + .byte 0x41 + .4byte \param0 + .endm + + .macro jumpiftype2 bank, type, param2 + .byte 0x42 + .byte \bank + .byte \type + .4byte \param2 + .endm + + .macro jumpifabilitypresent ability, param1 + .byte 0x43 + .byte \ability + .4byte \param1 + .endm + + .macro endselectionscript + .byte 0x44 + .endm + + .macro playanimation bank, param1, param2 + .byte 0x45 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro playanimation2 bank, param1, param2 + .byte 0x46 + .byte \bank + .4byte \param1 + .4byte \param2 + .endm + + .macro setgraphicalstatchangevalues + .byte 0x47 + .endm + + .macro playstatchangeanimation bank, param1, param2 + .byte 0x48 + .byte \bank + .byte \param1 + .byte \param2 + .endm + + .macro moveend param0, param1 + .byte 0x49 + .byte \param0 + .byte \param1 + .endm + + .macro typecalc2 + .byte 0x4a + .endm + + .macro returnatktoball + .byte 0x4b + .endm + + .macro getswitchedmondata bank + .byte 0x4c + .byte \bank + .endm + + .macro switchindataupdate bank + .byte 0x4d + .byte \bank + .endm + + .macro switchinanim bank, param1 + .byte 0x4e + .byte \bank + .byte \param1 + .endm + + .macro jumpifcantswitch bank, param1 + .byte 0x4f + .byte \bank + .4byte \param1 + .endm + + .macro openpartyscreen param0, param1 + .byte 0x50 + .byte \param0 + .4byte \param1 + .endm + + .macro switchhandleorder bank, param1 + .byte 0x51 + .byte \bank + .byte \param1 + .endm + + .macro switchineffects bank + .byte 0x52 + .byte \bank + .endm + + .macro trainerslidein bank + .byte 0x53 + .byte \bank + .endm + + .macro playse param0 + .byte 0x54 + .2byte \param0 + .endm + + .macro fanfare param0 + .byte 0x55 + .2byte \param0 + .endm + + .macro playfaintcry bank + .byte 0x56 + .byte \bank + .endm + + .macro atk57 + .byte 0x57 + .endm + + .macro returntoball bank + .byte 0x58 + .byte \bank + .endm + + .macro handlelearnnewmove param0, param1, param2 + .byte 0x59 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro yesnoboxlearnmove param0 + .byte 0x5a + .4byte \param0 + .endm + + .macro yesnoboxstoplearningmove param0 + .byte 0x5b + .4byte \param0 + .endm + + .macro hitanimation bank + .byte 0x5c + .byte \bank + .endm + + .macro getmoneyreward + .byte 0x5d + .endm + + .macro atk5E bank + .byte 0x5e + .byte \bank + .endm + + .macro atk5F + .byte 0x5f + .endm + + .macro incrementgamestat param0 + .byte 0x60 + .byte \param0 + .endm + + .macro drawpartystatussummary bank + .byte 0x61 + .byte \bank + .endm + + .macro atk62 bank + .byte 0x62 + .byte \bank + .endm + + .macro jumptorandomattack param0 + .byte 0x63 + .byte \param0 + .endm + + .macro statusanimation bank + .byte 0x64 + .byte \bank + .endm + + .macro status2animation bank, status2 + .byte 0x65 + .byte \bank + .4byte \status2 + .endm + + .macro chosenstatusanimation bank, param1, param2 + .byte 0x66 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro yesnobox + .byte 0x67 + .endm + + .macro cancelallactions + .byte 0x68 + .endm + + .macro adjustsetdamage + .byte 0x69 + .endm + + .macro removeitem bank + .byte 0x6a + .byte \bank + .endm + + .macro atknameinbuff1 + .byte 0x6b + .endm + + .macro drawlvlupbox + .byte 0x6c + .endm + + .macro resetsentmonsvalue + .byte 0x6d + .endm + + .macro setatktoplayer0 + .byte 0x6e + .endm + + .macro makevisible bank + .byte 0x6f + .byte \bank + .endm + + .macro recordlastability bank + .byte 0x70 + .byte \bank + .endm + + .macro buffermovetolearn + .byte 0x71 + .endm + + .macro jumpifplayerran param0 + .byte 0x72 + .4byte \param0 + .endm + + .macro hpthresholds bank + .byte 0x73 + .byte \bank + .endm + + .macro hpthresholds2 bank + .byte 0x74 + .byte \bank + .endm + + .macro useitemonopponent + .byte 0x75 + .endm + + .macro various bank, param1 + .byte 0x76 + .byte \bank + .byte \param1 + .endm + + .macro setprotectlike + .byte 0x77 + .endm + + .macro faintifabilitynotdamp + .byte 0x78 + .endm + + .macro setatkhptozero + .byte 0x79 + .endm + + .macro jumpifnexttargetvalid param0 + .byte 0x7a + .4byte \param0 + .endm + + .macro tryhealhalfhealth param0, bank + .byte 0x7b + .4byte \param0 + .byte \bank + .endm + + .macro trymirrormove + .byte 0x7c + .endm + + .macro setrain + .byte 0x7d + .endm + + .macro setreflect + .byte 0x7e + .endm + + .macro setseeded + .byte 0x7f + .endm + + .macro manipulatedamage param0 + .byte 0x80 + .byte \param0 + .endm + + .macro trysetrest param0 + .byte 0x81 + .4byte \param0 + .endm + + .macro jumpifnotfirstturn param0 + .byte 0x82 + .4byte \param0 + .endm + + .macro nop + .byte 0x83 + .endm + + .macro jumpifcantmakeasleep param0 + .byte 0x84 + .4byte \param0 + .endm + + .macro stockpile + .byte 0x85 + .endm + + .macro stockpiletobasedamage param0 + .byte 0x86 + .4byte \param0 + .endm + + .macro stockpiletohpheal param0 + .byte 0x87 + .4byte \param0 + .endm + + .macro negativedamage + .byte 0x88 + .endm + + .macro statbuffchange param0, param1 + .byte 0x89 + .byte \param0 + .4byte \param1 + .endm + + .macro normalisebuffs + .byte 0x8a + .endm + + .macro setbide + .byte 0x8b + .endm + + .macro confuseifrepeatingattackends + .byte 0x8c + .endm + + .macro setmultihitcounter param0 + .byte 0x8d + .byte \param0 + .endm + + .macro initmultihitstring + .byte 0x8e + .endm + + .macro forcerandomswitch param0 + .byte 0x8f + .4byte \param0 + .endm + + .macro tryconversiontypechange param0 + .byte 0x90 + .4byte \param0 + .endm + + .macro givepaydaymoney + .byte 0x91 + .endm + + .macro setlightscreen + .byte 0x92 + .endm + + .macro tryKO param0 + .byte 0x93 + .4byte \param0 + .endm + + .macro damagetohalftargethp + .byte 0x94 + .endm + + .macro setsandstorm + .byte 0x95 + .endm + + .macro weatherdamage + .byte 0x96 + .endm + + .macro tryinfatuating param0 + .byte 0x97 + .4byte \param0 + .endm + + .macro updatestatusicon bank + .byte 0x98 + .byte \bank + .endm + + .macro setmist + .byte 0x99 + .endm + + .macro setfocusenergy + .byte 0x9a + .endm + + .macro transformdataexecution + .byte 0x9b + .endm + + .macro setsubstitute + .byte 0x9c + .endm + + .macro mimicattackcopy param0 + .byte 0x9d + .4byte \param0 + .endm + + .macro metronome + .byte 0x9e + .endm + + .macro dmgtolevel + .byte 0x9f + .endm + + .macro psywavedamageeffect + .byte 0xa0 + .endm + + .macro counterdamagecalculator param0 + .byte 0xa1 + .4byte \param0 + .endm + + .macro mirrorcoatdamagecalculator param0 + .byte 0xa2 + .4byte \param0 + .endm + + .macro disablelastusedattack param0 + .byte 0xa3 + .4byte \param0 + .endm + + .macro trysetencore param0 + .byte 0xa4 + .4byte \param0 + .endm + + .macro painsplitdmgcalc param0 + .byte 0xa5 + .4byte \param0 + .endm + + .macro settypetorandomresistance param0 + .byte 0xa6 + .4byte \param0 + .endm + + .macro setalwayshitflag + .byte 0xa7 + .endm + + .macro copymovepermanently param0 + .byte 0xa8 + .4byte \param0 + .endm + + .macro sleeptalk_choose_move param0 + .byte 0xa9 + .4byte \param0 + .endm + + .macro setdestinybond + .byte 0xaa + .endm + + .macro trysetdestinybondtohappen + .byte 0xab + .endm + + .macro remaininghptopower + .byte 0xac + .endm + + .macro tryspiteppreduce param0 + .byte 0xad + .4byte \param0 + .endm + + .macro healpartystatus + .byte 0xae + .endm + + .macro cursetarget param0 + .byte 0xaf + .4byte \param0 + .endm + + .macro trysetspikes param0 + .byte 0xb0 + .4byte \param0 + .endm + + .macro setforesight + .byte 0xb1 + .endm + + .macro trysetperishsong param0 + .byte 0xb2 + .4byte \param0 + .endm + + .macro rolloutdamagecalculation + .byte 0xb3 + .endm + + .macro jumpifconfusedandstatmaxed stat, param1 + .byte 0xb4 + .byte \stat + .4byte \param1 + .endm + + .macro furycuttercalc + .byte 0xb5 + .endm + + .macro happinesstodamagecalculation + .byte 0xb6 + .endm + + .macro presentdamagecalculation + .byte 0xb7 + .endm + + .macro setsafeguard + .byte 0xb8 + .endm + + .macro magnitudedamagecalculation + .byte 0xb9 + .endm + + .macro jumpifnopursuitswitchdmg param0 + .byte 0xba + .4byte \param0 + .endm + + .macro setsunny + .byte 0xbb + .endm + + .macro maxattackhalvehp param0 + .byte 0xbc + .4byte \param0 + .endm + + .macro copyfoestats param0 + .byte 0xbd + .4byte \param0 + .endm + + .macro rapidspinfree + .byte 0xbe + .endm + + .macro setdefensecurlbit + .byte 0xbf + .endm + + .macro recoverbasedonsunlight param0 + .byte 0xc0 + .4byte \param0 + .endm + + .macro hiddenpowercalc + .byte 0xc1 + .endm + + .macro selectfirstvalidtarget + .byte 0xc2 + .endm + + .macro trysetfutureattack param0 + .byte 0xc3 + .4byte \param0 + .endm + + .macro trydobeatup param0, param1 + .byte 0xc4 + .4byte \param0 + .4byte \param1 + .endm + + .macro setsemiinvulnerablebit + .byte 0xc5 + .endm + + .macro clearsemiinvulnerablebit + .byte 0xc6 + .endm + + .macro setminimize + .byte 0xc7 + .endm + + .macro sethail + .byte 0xc8 + .endm + + .macro jumpifattackandspecialattackcannotfall param0 + .byte 0xc9 + .4byte \param0 + .endm + + .macro setforcedtarget + .byte 0xca + .endm + + .macro setcharge + .byte 0xcb + .endm + + .macro callterrainattack + .byte 0xcc + .endm + + .macro cureifburnedparalysedorpoisoned param0 + .byte 0xcd + .4byte \param0 + .endm + + .macro settorment param0 + .byte 0xce + .4byte \param0 + .endm + + .macro jumpifnodamage param0 + .byte 0xcf + .4byte \param0 + .endm + + .macro settaunt param0 + .byte 0xd0 + .4byte \param0 + .endm + + .macro trysethelpinghand param0 + .byte 0xd1 + .4byte \param0 + .endm + + .macro tryswapitems param0 + .byte 0xd2 + .4byte \param0 + .endm + + .macro trycopyability param0 + .byte 0xd3 + .4byte \param0 + .endm + + .macro trywish param0, param1 + .byte 0xd4 + .byte \param0 + .4byte \param1 + .endm + + .macro trysetroots param0 + .byte 0xd5 + .4byte \param0 + .endm + + .macro doubledamagedealtifdamaged + .byte 0xd6 + .endm + + .macro setyawn param0 + .byte 0xd7 + .4byte \param0 + .endm + + .macro setdamagetohealthdifference param0 + .byte 0xd8 + .4byte \param0 + .endm + + .macro scaledamagebyhealthratio + .byte 0xd9 + .endm + + .macro tryswapabilities param0 + .byte 0xda + .4byte \param0 + .endm + + .macro tryimprision param0 + .byte 0xdb + .4byte \param0 + .endm + + .macro trysetgrudge param0 + .byte 0xdc + .4byte \param0 + .endm + + .macro weightdamagecalculation + .byte 0xdd + .endm + + .macro asistattackselect param0 + .byte 0xde + .4byte \param0 + .endm + + .macro trysetmagiccoat param0 + .byte 0xdf + .4byte \param0 + .endm + + .macro trysetsnatch param0 + .byte 0xe0 + .4byte \param0 + .endm + + .macro trygetintimidatetarget param0 + .byte 0xe1 + .4byte \param0 + .endm + + .macro switchoutabilities bank + .byte 0xe2 + .byte \bank + .endm + + .macro jumpifhasnohp bank, param1 + .byte 0xe3 + .byte \bank + .4byte \param1 + .endm + + .macro getsecretpowereffect + .byte 0xe4 + .endm + + .macro pickup + .byte 0xe5 + .endm + + .macro docastformchangeanimation + .byte 0xe6 + .endm + + .macro trycastformdatachange + .byte 0xe7 + .endm + + .macro settypebasedhalvers param0 + .byte 0xe8 + .4byte \param0 + .endm + + .macro setweatherballtype + .byte 0xe9 + .endm + + .macro tryrecycleitem param0 + .byte 0xea + .4byte \param0 + .endm + + .macro settypetoterrain param0 + .byte 0xeb + .4byte \param0 + .endm + + .macro pursuitrelated param0 + .byte 0xec + .4byte \param0 + .endm + + .macro snatchsetbanks + .byte 0xed + .endm + + .macro removelightscreenreflect + .byte 0xee + .endm + + .macro pokeball_catch_calculation + .byte 0xef + .endm + + .macro givecaughtmon + .byte 0xf0 + .endm + + .macro trysetcaughtmondexflags param0 + .byte 0xf1 + .4byte \param0 + .endm + + .macro displaydexinfo + .byte 0xf2 + .endm + + .macro trygivecaughtmonnick param0 + .byte 0xf3 + .4byte \param0 + .endm + + .macro subattackerhpbydmg + .byte 0xf4 + .endm + + .macro removeattackerstatus1 + .byte 0xf5 + .endm + + .macro finishaction + .byte 0xf6 + .endm + + .macro finishturn + .byte 0xf7 + .endm + + .macro trainerslideout param0 + .byte 0xf8 + .byte \param0 + .endm + +@ helpful macros + .macro setstatchanger stat, stages, down + setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 + .endm + + .macro setmoveeffect effect + setbyte cEFFECT_CHOOSER \effect + .endm + + .macro chosenstatus1animation bank, status + chosenstatusanimation \bank 0x0 \status + .endm + + .macro chosenstatus2animation bank, status + chosenstatusanimation \bank 0x1 \status + .endm diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc new file mode 100644 index 000000000..34f16a8c9 --- /dev/null +++ b/constants/battle_constants.inc @@ -0,0 +1,170 @@ +@ battle types + .set BATTLE_TYPE_DOUBLE , 0x0001 + .set BATTLE_TYPE_LINK, 0x0002 + .set BATTLE_TYPE_WILD, 0x0004 + .set BATTLE_TYPE_TRAINER, 0x0008 + .set BATTLE_TYPE_FIRST_BATTLE, 0x0010 + .set BATTLE_TYPE_20, 0x0020 + .set BATTLE_TYPE_MULTI, 0x0040 + .set BATTLE_TYPE_SAFARI, 0x0080 + .set BATTLE_TYPE_BATTLE_TOWER, 0x0100 + .set BATTLE_TYPE_WALLY_TUTORIAL, 0x0200 + .set BATTLE_TYPE_ROAMER, 0x0400 + .set BATTLE_TYPE_EREADER_TRAINER, 0x0800 + .set BATTLE_TYPE_KYOGRE_GROUDON, 0x1000 + .set BATTLE_TYPE_LEGENDARY, 0x2000 + .set BATTLE_TYPE_REGI, 0x4000 + .set BATTLE_TYPE_TWO_OPPONENTS, 0x8000 + .set BATTLE_TYPE_DOME, 0x10000 + .set BATTLE_TYPE_PALACE, 0x20000 + .set BATTLE_TYPE_ARENA, 0x40000 + .set BATTLE_TYPE_FACTORY, 0x80000 + .set BATTLE_TYPE_x100000, 0x100000 + .set BATTLE_TYPE_PYRAMID, 0x200000 + .set BATTLE_TYPE_INGAME_PARTNER, 0x400000 + .set BATTLE_TYPE_x800000, 0x800000 + .set BATTLE_TYPE_RECORDED, 0x1000000 + .set BATTLE_TYPE_x2000000, 0x2000000 + .set BATTLE_TYPE_x4000000, 0x4000000 + .set BATTLE_TYPE_SECRET_BASE, 0x8000000 + .set BATTLE_TYPE_GROUDON, 0x10000000 + .set BATTLE_TYPE_KYORGE, 0x20000000 + .set BATTLE_TYPE_RAYQUAZA, 0x40000000 + .set BATTLE_TYPE_x80000000, 0x80000000 + +@ battle outcomes + .set WON, 0x1 + .set LOST, 0x2 + .set DREW, 0x3 + .set RAN, 0x4 + .set PLAYER_TELEPORTED, 0x5 + .set MON_FLED, 0x6 + .set CAUGHT, 0x7 + .set OUT_OF_BALLS, 0x8 + .set FORFEITED, 0x9 + .set OPPONENT_TELEPORTED, 0xA + +@ identities + .set IDENTITY_PLAYER_MON1, 0 + .set IDENTITY_OPPONENT_MON1, 1 + .set IDENTITY_PLAYER_MON2, 2 + .set IDENTITY_OPPONENT_MON2, 3 + +@ status 1 + .set STATUS_SLEEP, 0x7 + .set STATUS_POISON, 0x8 + .set STATUS_BURN, 0x10 + .set STATUS_FREEZE, 0x20 + .set STATUS_PARALYSIS, 0x40 + .set STATUS_TOXIC_POISON, 0x80 + .set STATUS_TOXIC_COUNTER, 0xF00 + + .set STATUS_ANY, STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON + +@ status 2 + .set STATUS2_CONFUSION, 0x00000007 + .set STATUS2_FLINCHED, 0x00000008 + .set STATUS2_UPROAR, 0x00000070 + .set STATUS2_BIDE, 0x00000300 + .set STATUS2_LOCK_CONFUSE, 0x00000C00 + .set STATUS2_MULTIPLETURNS, 0x00001000 + .set STATUS2_WRAPPED, 0x0000E000 + .set STATUS2_INFATUATION, 0x000F0000 + .set STATUS2_FOCUS_ENERGY, 0x00100000 + .set STATUS2_TRANSFORMED, 0x00200000 + .set STATUS2_RECHARGE, 0x00400000 + .set STATUS2_RAGE, 0x00800000 + .set STATUS2_SUBSTITUTE, 0x01000000 + .set STATUS2_DESTINY_BOND, 0x02000000 + .set STATUS2_ESCAPE_PREVENTION, 0x04000000 + .set STATUS2_NIGHTMARE, 0x08000000 + .set STATUS2_CURSED, 0x10000000 + .set STATUS2_FORESIGHT, 0x20000000 + .set STATUS2_DEFENSE_CURL, 0x40000000 + .set STATUS2_TORMENT, 0x80000000 + +@ status 3 + .set STATUS3_LEECHSEED_BANK, 0x3 + .set STATUS3_LEECHSEED, 0x4 + .set STATUS3_ALWAYS_HITS, 0x18 + .set STATUS3_PERISH_SONG, 0x20 + .set STATUS3_ON_AIR, 0x40 + .set STATUS3_UNDERGROUND, 0x80 + .set STATUS3_MINIMIZED, 0x100 + .set STATUS3_ROOTED, 0x400 + .set STATUS3_CHARGED_UP, 0x200 + .set STATUS3_YAWN, 0x1800 + .set STATUS3_IMPRISONED_OTHERS, 0x2000 + .set STATUS3_GRUDGE, 0x4000 + .set STATUS3_CANT_SCORE_A_CRIT, 0x8000 + .set STATUS3_MUDSPORT, 0x10000 + .set STATUS3_WATERSPORT, 0x20000 + .set STATUS3_UNDERWATER, 0x40000 + .set STATUS3_INTIMIDATE_POKES, 0x80000 + .set STATUS3_TRACE, 0x100000 + +@ side status + .set SIDE_STATUS_REFLECT, 0x1 + .set SIDE_STATUS_LIGHTSCREEN, 0x2 + .set SIDE_STATUS_X4, 0x4 + .set SIDE_STATUS_SPIKES, 0x10 + .set SIDE_STATUS_SAFEGUARD, 0x20 + .set SIDE_STATUS_FUTUREATTACK, 0x40 + .set SIDE_STATUS_MIST, 0x100 + .set SIDE_STATUS_SPIKES_DAMAGED, 0x200 + +@ stats + .set HP, 0x0 + .set ATK, 0x1 + .set DEF, 0x2 + .set SPEED, 0x3 + .set SPATK, 0x4 + .set SPDEF, 0x5 + .set ACC, 0x6 + .set EVASION, 0x7 + +@ weather flags + .set WEATHER_RAIN_TEMPORARY, 0x01 + .set WEATHER_RAIN_DOWNPOUR, 0x02 + .set WEATHER_RAIN_PERMANENT, 0x04 + .set WEATHER_SANDSTORM_TEMPORARY, 0x08 + .set WEATHER_SANDSTORM_PERMANENT, 0x10 + .set WEATHER_SUN_TEMPORARY, 0x20 + .set WEATHER_SUN_PERMANENT, 0x40 + .set WEATHER_HAIL, 0x80 + +@ hitmarker + .set HITMARKER_x10, 0x00000010 + .set HITMARKER_x20, 0x00000020 + .set HITMARKER_DESTINYBOND, 0x00000040 + .set HITMARKER_NO_ANIMATIONS, 0x00000080 + .set HITMARKER_IGNORE_SUBSTITUTE, 0x00000100 + .set HITMARKER_NO_ATTACKSTRING, 0x00000200 + .set HITMARKER_ATTACKSTRING_PRINTED, 0x00000400 + .set HITMARKER_NO_PPDEDUCT, 0x00000800 + .set HITMARKER_PURSUIT_TRAP, 0x00001000 + .set HITMARKER_IGNORE_SAFEGUARD, 0x00002000 + .set HITMARKER_SYNCHRONISE_EFFECT, 0x00004000 + .set HITMARKER_RUN, 0x00008000 + .set HITMARKER_IGNORE_ON_AIR, 0x00010000 + .set HITMARKER_IGNORE_UNDERGROUND, 0x00020000 + .set HITMARKER_IGNORE_UNDERWATER, 0x00040000 + .set HITMARKER_UNABLE_TO_USE_MOVE, 0x00080000 + .set HITMARKER_x100000, 0x00100000 + .set HITMARKER_x200000, 0x00200000 + .set HITMARKER_x400000, 0x00400000 + .set HITMARKER_x800000, 0x00800000 + .set HITMARKER_GRUDGE, 0x01000000 + .set HITMARKER_OBEYS, 0x02000000 + .set HITMARKER_x4000000, 0x04000000 + .set HITMARKER_x8000000, 0x08000000 + +@ move flags + .set MOVESTATUS_MISSED, 0x1 + .set MOVESTATUS_SUPEREFFECTIVE, 0x2 + .set MOVESTATUS_NOTVERYEFFECTIVE, 0x4 + .set MOVESTATUS_NOTAFFECTED, 0x8 + .set MOVESTATUS_ONEHITKO, 0x10 + .set MOVESTATUS_FAILED, 0x20 + .set MOVESTATUS_ENDURED, 0x40 + .set MOVESTATUS_HUNGON, 0x80 diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc new file mode 100644 index 000000000..106bffd03 --- /dev/null +++ b/constants/battle_script_constants.inc @@ -0,0 +1,170 @@ +@ animation ids + .set ANIM_CASTFORM_CHANGE, 0x0 + .set ANIM_STATS_CHANGE, 0x1 + .set ANIM_SUBSTITUTE_FADE, 0x2 + .set ANIM_SUBSTITUTE_APPEAR, 0x3 + .set ANIM_x4, 0x4 + .set ANIM_ITEM_KNOCKOFF, 0x5 + .set ANIM_TURN_TRAP, 0x6 + .set ANIM_ITEM_EFFECT, 0x7 + .set ANIM_SMOKEBALL_ESCAPE, 0x8 + .set ANIM_HANGED_ON, 0x9 + .set ANIM_RAIN_CONTINUES, 0xA + .set ANIM_SUN_CONTINUES, 0xB + .set ANIM_SANDSTORM_CONTINUES, 0xC + .set ANIM_HAIL_CONTINUES, 0xD + .set ANIM_LEECH_SEED_DRAIN, 0xE + .set ANIM_MON_HIT, 0xF + .set ANIM_ITEM_STEAL, 0x10 + .set ANIM_SNATCH_MOVE, 0x11 + .set ANIM_FUTURE_SIGHT_HIT, 0x12 + .set ANIM_x13, 0x13 + .set ANIM_x14, 0x14 + .set ANIM_INGRAIN_HEAL, 0x15 + .set ANIM_WISH_HEAL, 0x16 + +@ atk 80 + .set ATK80_DMG_CHANGE_SIGN, 0x0 + .set ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP, 0x1 + .set ATK80_DMG_DOUBLED, 0x2 + +@ compare operands + .set EQUAL, 0x0 + .set NOT_EQUAL, 0x1 + .set GREATER_THAN, 0x2 + .set LESS_THAN, 0x3 + .set COMMON_BITS, 0x4 + .set NO_COMMON_BITS, 0x5 + +@ move effects + .set EFFECT_SLEEP, 0x1 + .set EFFECT_POISON, 0x2 + .set EFFECT_BURN, 0x3 + .set EFFECT_FREEZE, 0x4 + .set EFFECT_PARALYSIS, 0x5 + .set EFFECT_TOXIC, 0x6 + .set EFFECT_CONFUSION, 0x7 + .set EFFECT_FLINCH, 0x8 + .set EFFECT_TRI_ATTACK, 0x9 + .set EFFECT_UPROAR, 0xA + .set EFFECT_PAYDAY, 0xB + .set EFFECT_CHARGING, 0xC + .set EFFECT_WRAP, 0xD + .set EFFECT_RECOIL_25, 0xE + .set EFFECT_ATK_PLUS_1, 0xF + .set EFFECT_DEF_PLUS_1, 0x10 + .set EFFECT_SPD_PLUS_1, 0x11 + .set EFFECT_SP_ATK_PLUS_1, 0x12 + .set EFFECT_SP_DEF_PLUS_1, 0x13 + .set EFFECT_ACC_PLUS_1, 0x14 + .set EFFECT_EVS_PLUS_1, 0x15 + .set EFFECT_ATK_MINUS_1, 0x16 + .set EFFECT_DEF_MINUS_1, 0x17 + .set EFFECT_SPD_MINUS_1, 0x18 + .set EFFECT_SP_ATK_MINUS_1, 0x19 + .set EFFECT_SP_DEF_MINUS_1, 0x1A + .set EFFECT_ACC_MINUS_1, 0x1B + .set EFFECT_EVS_MINUS_1, 0x1C + .set EFFECT_RECHARGE, 0x1D + .set EFFECT_RAGE, 0x1E + .set EFFECT_STEAL_ITEM, 0x1F + .set EFFECT_PREVENT_ESCAPE, 0x20 + .set EFFECT_NIGHTMARE, 0x21 + .set EFFECT_ALL_STATS_UP, 0x22 + .set EFFECT_RAPIDSPIN, 0x23 + .set EFFECT_REMOVE_PARALYSIS, 0x24 + .set EFFECT_ATK_DEF_DOWN, 0x25 + .set EFFECT_RECOIL_33_PARALYSIS, 0x26 + .set EFFECT_ATK_PLUS_2, 0x27 + .set EFFECT_DEF_PLUS_2, 0x28 + .set EFFECT_SPD_PLUS_2, 0x29 + .set EFFECT_SP_ATK_PLUS_2, 0x2A + .set EFFECT_SP_DEF_PLUS_2, 0x2B + .set EFFECT_ACC_PLUS_2, 0x2C + .set EFFECT_EVS_PLUS_2, 0x2D + .set EFFECT_ATK_MINUS_2, 0x2E + .set EFFECT_DEF_MINUS_2, 0x2F + .set EFFECT_SPD_MINUS_2, 0x30 + .set EFFECT_SP_ATK_MINUS_2, 0x31 + .set EFFECT_SP_DEF_MINUS_2, 0x32 + .set EFFECT_ACC_MINUS_2, 0x33 + .set EFFECT_EVS_MINUS_2, 0x34 + .set EFFECT_THRASH, 0x35 + .set EFFECT_KNOCK_OFF, 0x36 + .set EFFECT_NOTHING_37, 0x37 + .set EFFECT_NOTHING_38, 0x38 + .set EFFECT_NOTHING_39, 0x39 + .set EFFECT_NOTHING_3A, 0x3A + .set EFFECT_SP_ATK_TWO_DOWN, 0x3B + .set EFFECT_NOTHING_3C, 0x3C + .set EFFECT_NOTHING_3D, 0x3D + .set EFFECT_NOTHING_3E, 0x3E + .set EFFECT_NOTHING_3F, 0x3F + + .set AFFECTS_USER, 0x40 + .set CERTAIN, 0x80 + +@ accuracy calc + .set NO_ACC_CALC, 0xFFFE + .set NO_ACC_CALC_CHECK_LOCK_ON, 0xFFFF + .set ACC_CURR_MOVE, 0x0 + +@ bank values + .set TARGET, 0x0 + .set ATTACKER, 0x1 + .set EFFECT_BANK, 0x2 + .set GBANK_1, 0x3 + .set ATTACKER_WITH_PARTNER, 0x4 @ only for cmd98 + .set BANK0, 0x7 + .set SCRIPTING_BANK, 0xA + .set OPPONENT1, 0xC + +@ various + .set VARIOUS_CANCEL_MULTI_TURN_MOVES, 0 + .set VARIOUS_SET_MAGIC_COAT_TARGET, 1 + .set VARIOUS_IS_RUNNING_IMPOSSIBLE, 2 + .set VARIOUS_GET_MOVE_TARGET, 3 + .set VARIOUS_RESET_INTIMIDATE_TRACE_BITS, 5 + .set VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP, 6 + .set VARIOUS_EMIT_YESNOBOX, 13 + .set VARIOUS_WAIT_CRY, 18 + .set VARIOUS_RETURN_OPPONENT_MON1, 19 + .set VARIOUS_RETURN_OPPONENT_MON2, 20 + .set VARIOUS_SET_TELEPORT_OUTCOME, 25 + .set VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC, 26 + +@ jumpifcant switch flag argument + .set ATK4F_DONT_CHECK_STATUSES, 0x80 + +@ battle scripting struct + .equiv sPAINSPLIT_HP, gBattleScripting + .equiv sBIDE_DMG, gBattleScripting + 4 + .equiv sMULTIHIT_STRING, gBattleScripting + 8 + .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE + .equiv sFIELD_F, gBattleScripting + 0xF + .equiv sANIM_ARG1, gBattleScripting + 0x10 + .equiv sANIM_ARG2, gBattleScripting + 0x11 + .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12 + .equiv sFIELD_13, gBattleScripting + 0x13 + .equiv sMOVEEND_STATE, gBattleScripting + 0x14 + .equiv sFIELD_15, gBattleScripting + 0x15 + .equiv sFIELD_16, gBattleScripting + 0x16 + .equiv sBANK, gBattleScripting + 0x17 + .equiv sANIM_TURN, gBattleScripting + 0x18 + .equiv sANIM_TARGETS_HIT, gBattleScripting + 0x19 + .equiv sSTATCHANGER, gBattleScripting + 0x1A + .equiv sFIELD_1B, gBattleScripting + 0x1B + .equiv sGIVEEXP_STATE, gBattleScripting + 0x1C + .equiv sBATTLE_STYLE, gBattleScripting + 0x1D + .equiv sLVLBOX_STATE, gBattleScripting + 0x1E + .equiv sLEARNMOVE_STATE, gBattleScripting + 0x1F + .equiv sFIELD_20, gBattleScripting + 0x20 + .equiv sRESHOW_MAIN_STATE, gBattleScripting + 0x21 + .equiv sRESHOW_HELPER_STATE, gBattleScripting + 0x22 + .equiv sFIELD_23, gBattleScripting + 0x23 + .equiv sFIELD_24, gBattleScripting + 0x24 + .equiv sMULTIPLAYER_ID, gBattleScripting + 0x25 + +@ battle communication struct + .equiv cEFFECT_CHOOSER, gBattleCommunication + 3 + .equiv cMULTISTRING_CHOOSER, gBattleCommunication + 5 diff --git a/constants/battle_text.inc b/constants/battle_text.inc new file mode 100644 index 000000000..1d3a5f346 --- /dev/null +++ b/constants/battle_text.inc @@ -0,0 +1,375 @@ + .set STRINGID_INTROMSG, 0 + .set STRINGID_INTROSENDOUT, 1 + .set STRINGID_RETURNMON, 2 + .set STRINGID_SWITCHINMON, 3 + .set STRINGID_USEDMOVE, 4 + .set STRINGID_BATTLEEND, 5 + .set STRINGID_TRAINER1LOSETEXT, 12 + .set STRINGID_PKMNGAINEDEXP, 13 + .set STRINGID_PKMNGREWTOLV, 14 + .set STRINGID_PKMNLEARNEDMOVE, 15 + .set STRINGID_TRYTOLEARNMOVE1, 16 + .set STRINGID_TRYTOLEARNMOVE2, 17 + .set STRINGID_TRYTOLEARNMOVE3, 18 + .set STRINGID_PKMNFORGOTMOVE, 19 + .set STRINGID_STOPLEARNINGMOVE, 20 + .set STRINGID_DIDNOTLEARNMOVE, 21 + .set STRINGID_PKMNLEARNEDMOVE2, 22 + .set STRINGID_ATTACKMISSED, 23 + .set STRINGID_PKMNPROTECTEDITSELF, 24 + .set STRINGID_STATSWONTINCREASE2, 25 + .set STRINGID_AVOIDEDDAMAGE, 26 + .set STRINGID_ITDOESNTAFFECT, 27 + .set STRINGID_ATTACKERFAINTED, 28 + .set STRINGID_TARGETFAINTED, 29 + .set STRINGID_PLAYERGOTMONEY, 30 + .set STRINGID_PLAYERWHITEOUT, 31 + .set STRINGID_PLAYERWHITEOUT2, 32 + .set STRINGID_PREVENTSESCAPE, 33 + .set STRINGID_HITXTIMES, 34 + .set STRINGID_PKMNFELLASLEEP, 35 + .set STRINGID_PKMNMADESLEEP, 36 + .set STRINGID_PKMNALREADYASLEEP, 37 + .set STRINGID_PKMNALREADYASLEEP2, 38 + .set STRINGID_PKMNWASNTAFFECTED, 39 + .set STRINGID_PKMNWASPOISONED, 40 + .set STRINGID_PKMNPOISONEDBY, 41 + .set STRINGID_PKMNHURTBYPOISON, 42 + .set STRINGID_PKMNALREADYPOISONED, 43 + .set STRINGID_PKMNBADLYPOISONED, 44 + .set STRINGID_PKMNENERGYDRAINED, 45 + .set STRINGID_PKMNWASBURNED, 46 + .set STRINGID_PKMNBURNEDBY, 47 + .set STRINGID_PKMNHURTBYBURN, 48 + .set STRINGID_PKMNWASFROZEN, 49 + .set STRINGID_PKMNFROZENBY, 50 + .set STRINGID_PKMNISFROZEN, 51 + .set STRINGID_PKMNWASDEFROSTED, 52 + .set STRINGID_PKMNWASDEFROSTED2, 53 + .set STRINGID_PKMNWASDEFROSTEDBY, 54 + .set STRINGID_PKMNWASPARALYZED, 55 + .set STRINGID_PKMNWASPARALYZEDBY, 56 + .set STRINGID_PKMNISPARALYZED, 57 + .set STRINGID_PKMNISALREADYPARALYZED, 58 + .set STRINGID_PKMNHEALEDPARALYSIS, 59 + .set STRINGID_PKMNDREAMEATEN, 60 + .set STRINGID_STATSWONTINCREASE, 61 + .set STRINGID_STATSWONTDECREASE, 62 + .set STRINGID_TEAMSTOPPEDWORKING, 63 + .set STRINGID_FOESTOPPEDWORKING, 64 + .set STRINGID_PKMNISCONFUSED, 65 + .set STRINGID_PKMNHEALEDCONFUSION, 66 + .set STRINGID_PKMNWASCONFUSED, 67 + .set STRINGID_PKMNALREADYCONFUSED, 68 + .set STRINGID_PKMNFELLINLOVE, 69 + .set STRINGID_PKMNINLOVE, 70 + .set STRINGID_PKMNIMMOBILIZEDBYLOVE, 71 + .set STRINGID_PKMNBLOWNAWAY, 72 + .set STRINGID_PKMNCHANGEDTYPE, 73 + .set STRINGID_PKMNFLINCHED, 74 + .set STRINGID_PKMNREGAINEDHEALTH, 75 + .set STRINGID_PKMNHPFULL, 76 + .set STRINGID_PKMNRAISEDSPDEF, 77 + .set STRINGID_PKMNRAISEDDEF, 78 + .set STRINGID_PKMNCOVEREDBYVEIL, 79 + .set STRINGID_PKMNUSEDSAFEGUARD, 80 + .set STRINGID_PKMNSAFEGUARDEXPIRED, 81 + .set STRINGID_PKMNWENTTOSLEEP, 82 + .set STRINGID_PKMNSLEPTHEALTHY, 83 + .set STRINGID_PKMNWHIPPEDWHIRLWIND, 84 + .set STRINGID_PKMNTOOKSUNLIGHT, 85 + .set STRINGID_PKMNLOWEREDHEAD, 86 + .set STRINGID_PKMNISGLOWING, 87 + .set STRINGID_PKMNFLEWHIGH, 88 + .set STRINGID_PKMNDUGHOLE, 89 + .set STRINGID_PKMNSQUEEZEDBYBIND, 90 + .set STRINGID_PKMNTRAPPEDINVORTEX, 91 + .set STRINGID_PKMNWRAPPEDBY, 92 + .set STRINGID_PKMNCLAMPED, 93 + .set STRINGID_PKMNHURTBY, 94 + .set STRINGID_PKMNFREEDFROM, 95 + .set STRINGID_PKMNCRASHED, 96 + .set STRINGID_PKMNSHROUDEDINMIST, 97 + .set STRINGID_PKMNPROTECTEDBYMIST, 98 + .set STRINGID_PKMNGETTINGPUMPED, 99 + .set STRINGID_PKMNHITWITHRECOIL, 100 + .set STRINGID_PKMNPROTECTEDITSELF2, 101 + .set STRINGID_PKMNBUFFETEDBYSANDSTORM, 102 + .set STRINGID_PKMNPELTEDBYHAIL, 103 + .set STRINGID_PKMNSEEDED, 104 + .set STRINGID_PKMNEVADEDATTACK, 105 + .set STRINGID_PKMNSAPPEDBYLEECHSEED, 106 + .set STRINGID_PKMNFASTASLEEP, 107 + .set STRINGID_PKMNWOKEUP, 108 + .set STRINGID_PKMNUPROARKEPTAWAKE, 109 + .set STRINGID_PKMNWOKEUPINUPROAR, 110 + .set STRINGID_PKMNCAUSEDUPROAR, 111 + .set STRINGID_PKMNMAKINGUPROAR, 112 + .set STRINGID_PKMNCALMEDDOWN, 113 + .set STRINGID_PKMNCANTSLEEPINUPROAR, 114 + .set STRINGID_PKMNSTOCKPILED, 115 + .set STRINGID_PKMNCANTSTOCKPILE, 116 + .set STRINGID_PKMNCANTSLEEPINUPROAR2, 117 + .set STRINGID_UPROARKEPTPKMNAWAKE, 118 + .set STRINGID_PKMNSTAYEDAWAKEUSING, 119 + .set STRINGID_PKMNSTORINGENERGY, 120 + .set STRINGID_PKMNUNLEASHEDENERGY, 121 + .set STRINGID_PKMNFATIGUECONFUSION, 122 + .set STRINGID_PKMNPICKEDUPITEM, 123 + .set STRINGID_PKMNUNAFFECTED, 124 + .set STRINGID_PKMNTRANSFORMEDINTO, 125 + .set STRINGID_PKMNMADESUBSTITUTE, 126 + .set STRINGID_PKMNHASSUBSTITUTE, 127 + .set STRINGID_SUBSTITUTEDAMAGED, 128 + .set STRINGID_PKMNSUBSTITUTEFADED, 129 + .set STRINGID_PKMNMUSTRECHARGE, 130 + .set STRINGID_PKMNRAGEBUILDING, 131 + .set STRINGID_PKMNMOVEWASDISABLED, 132 + .set STRINGID_PKMNMOVEISDISABLED, 133 + .set STRINGID_PKMNMOVEDISABLEDNOMORE, 134 + .set STRINGID_PKMNGOTENCORE, 135 + .set STRINGID_PKMNENCOREENDED, 136 + .set STRINGID_PKMNTOOKAIM, 137 + .set STRINGID_PKMNSKETCHEDMOVE, 138 + .set STRINGID_PKMNTRYINGTOTAKEFOE, 139 + .set STRINGID_PKMNTOOKFOE, 140 + .set STRINGID_PKMNREDUCEDPP, 141 + .set STRINGID_PKMNSTOLEITEM, 142 + .set STRINGID_TARGETCANTESCAPENOW, 143 + .set STRINGID_PKMNFELLINTONIGHTMARE, 144 + .set STRINGID_PKMNLOCKEDINNIGHTMARE, 145 + .set STRINGID_PKMNLAIDCURSE, 146 + .set STRINGID_PKMNAFFLICTEDBYCURSE, 147 + .set STRINGID_SPIKESSCATTERED, 148 + .set STRINGID_PKMNHURTBYSPIKES, 149 + .set STRINGID_PKMNIDENTIFIED, 150 + .set STRINGID_PKMNPERISHCOUNTFELL, 151 + .set STRINGID_PKMNBRACEDITSELF, 152 + .set STRINGID_PKMNENDUREDHIT, 153 + .set STRINGID_MAGNITUDESTRENGTH, 154 + .set STRINGID_PKMNCUTHPMAXEDATTACK, 155 + .set STRINGID_PKMNCOPIEDSTATCHANGES, 156 + .set STRINGID_PKMNGOTFREE, 157 + .set STRINGID_PKMNSHEDLEECHSEED, 158 + .set STRINGID_PKMNBLEWAWAYSPIKES, 159 + .set STRINGID_PKMNFLEDFROMBATTLE, 160 + .set STRINGID_PKMNFORESAWATTACK, 161 + .set STRINGID_PKMNTOOKATTACK, 162 + .set STRINGID_PKMNATTACK, 163 + .set STRINGID_PKMNCENTERATTENTION, 164 + .set STRINGID_PKMNCHARGINGPOWER, 165 + .set STRINGID_NATUREPOWERTURNEDINTO, 166 + .set STRINGID_PKMNSTATUSNORMAL, 167 + .set STRINGID_PKMNHASNOMOVESLEFT, 168 + .set STRINGID_PKMNSUBJECTEDTOTORMENT, 169 + .set STRINGID_PKMNCANTUSEMOVETORMENT, 170 + .set STRINGID_PKMNTIGHTENINGFOCUS, 171 + .set STRINGID_PKMNFELLFORTAUNT, 172 + .set STRINGID_PKMNCANTUSEMOVETAUNT, 173 + .set STRINGID_PKMNREADYTOHELP, 174 + .set STRINGID_PKMNSWITCHEDITEMS, 175 + .set STRINGID_PKMNCOPIEDFOE, 176 + .set STRINGID_PKMNMADEWISH, 177 + .set STRINGID_PKMNWISHCAMETRUE, 178 + .set STRINGID_PKMNPLANTEDROOTS, 179 + .set STRINGID_PKMNABSORBEDNUTRIENTS, 180 + .set STRINGID_PKMNANCHOREDITSELF, 181 + .set STRINGID_PKMNWASMADEDROWSY, 182 + .set STRINGID_PKMNKNOCKEDOFF, 183 + .set STRINGID_PKMNSWAPPEDABILITIES, 184 + .set STRINGID_PKMNSEALEDOPPONENTMOVE, 185 + .set STRINGID_PKMNCANTUSEMOVESEALED, 186 + .set STRINGID_PKMNWANTSGRUDGE, 187 + .set STRINGID_PKMNLOSTPPGRUDGE, 188 + .set STRINGID_PKMNSHROUDEDITSELF, 189 + .set STRINGID_PKMNMOVEBOUNCED, 190 + .set STRINGID_PKMNWAITSFORTARGET, 191 + .set STRINGID_PKMNSNATCHEDMOVE, 192 + .set STRINGID_PKMNMADEITRAIN, 193 + .set STRINGID_PKMNRAISEDSPEED, 194 + .set STRINGID_PKMNPROTECTEDBY, 195 + .set STRINGID_PKMNPREVENTSUSAGE, 196 + .set STRINGID_PKMNRESTOREDHPUSING, 197 + .set STRINGID_PKMNCHANGEDTYPEWITH, 198 + .set STRINGID_PKMNPREVENTSPARALYSISWITH, 199 + .set STRINGID_PKMNPREVENTSROMANCEWITH, 200 + .set STRINGID_PKMNPREVENTSPOISONINGWITH, 201 + .set STRINGID_PKMNPREVENTSCONFUSIONWITH, 202 + .set STRINGID_PKMNRAISEDFIREPOWERWITH, 203 + .set STRINGID_PKMNANCHORSITSELFWITH, 204 + .set STRINGID_PKMNCUTSATTACKWITH, 205 + .set STRINGID_PKMNPREVENTSSTATLOSSWITH, 206 + .set STRINGID_PKMNHURTSWITH, 207 + .set STRINGID_PKMNTRACED, 208 + .set STRINGID_STATSHARPLY, 209 + .set STRINGID_STATROSE, 210 + .set STRINGID_STATHARSHLY, 211 + .set STRINGID_STATFELL, 212 + .set STRINGID_PKMNSSTATCHANGED, 213 + .set STRINGID_PKMNSSTATCHANGED2, 214 + .set STRINGID_PKMNSSTATCHANGED3, 215 + .set STRINGID_PKMNSSTATCHANGED4, 216 + .set STRINGID_CRITICALHIT, 217 + .set STRINGID_ONEHITKO, 218 + .set STRINGID_123POOF, 219 + .set STRINGID_ANDELLIPSIS, 220 + .set STRINGID_NOTVERYEFFECTIVE, 221 + .set STRINGID_SUPEREFFECTIVE, 222 + .set STRINGID_GOTAWAYSAFELY, 223 + .set STRINGID_WILDPKMNFLED, 224 + .set STRINGID_NORUNNINGFROMTRAINERS, 225 + .set STRINGID_CANTESCAPE, 226 + .set STRINGID_DONTLEAVEBIRCH, 227 + .set STRINGID_BUTNOTHINGHAPPENED, 228 + .set STRINGID_BUTITFAILED, 229 + .set STRINGID_ITHURTCONFUSION, 230 + .set STRINGID_MIRRORMOVEFAILED, 231 + .set STRINGID_STARTEDTORAIN, 232 + .set STRINGID_DOWNPOURSTARTED, 233 + .set STRINGID_RAINCONTINUES, 234 + .set STRINGID_DOWNPOURCONTINUES, 235 + .set STRINGID_RAINSTOPPED, 236 + .set STRINGID_SANDSTORMBREWED, 237 + .set STRINGID_SANDSTORMRAGES, 238 + .set STRINGID_SANDSTORMSUBSIDED, 239 + .set STRINGID_SUNLIGHTGOTBRIGHT, 240 + .set STRINGID_SUNLIGHTSTRONG, 241 + .set STRINGID_SUNLIGHTFADED, 242 + .set STRINGID_STARTEDHAIL, 243 + .set STRINGID_HAILCONTINUES, 244 + .set STRINGID_HAILSTOPPED, 245 + .set STRINGID_FAILEDTOSPITUP, 246 + .set STRINGID_FAILEDTOSWALLOW, 247 + .set STRINGID_WINDBECAMEHEATWAVE, 248 + .set STRINGID_STATCHANGESGONE, 249 + .set STRINGID_COINSSCATTERED, 250 + .set STRINGID_TOOWEAKFORSUBSTITUTE, 251 + .set STRINGID_SHAREDPAIN, 252 + .set STRINGID_BELLCHIMED, 253 + .set STRINGID_FAINTINTHREE, 254 + .set STRINGID_NOPPLEFT, 255 + .set STRINGID_BUTNOPPLEFT, 256 + .set STRINGID_PLAYERUSEDITEM, 257 + .set STRINGID_WALLYUSEDITEM, 258 + .set STRINGID_TRAINERBLOCKEDBALL, 259 + .set STRINGID_DONTBEATHIEF, 260 + .set STRINGID_ITDODGEDBALL, 261 + .set STRINGID_YOUMISSEDPKMN, 262 + .set STRINGID_PKMNBROKEFREE, 263 + .set STRINGID_ITAPPEAREDCAUGHT, 264 + .set STRINGID_AARGHALMOSTHADIT, 265 + .set STRINGID_SHOOTSOCLOSE, 266 + .set STRINGID_GOTCHAPKMNCAUGHT, 267 + .set STRINGID_GOTCHAPKMNCAUGHT2, 268 + .set STRINGID_GIVENICKNAMECAPTURED, 269 + .set STRINGID_PKMNSENTTOPC, 270 + .set STRINGID_PKMNDATAADDEDTODEX, 271 + .set STRINGID_ITISRAINING, 272 + .set STRINGID_SANDSTORMISRAGING, 273 + .set STRINGID_CANTESCAPE2, 274 + .set STRINGID_PKMNIGNORESASLEEP, 275 + .set STRINGID_PKMNIGNOREDORDERS, 276 + .set STRINGID_PKMNBEGANTONAP, 277 + .set STRINGID_PKMNLOAFING, 278 + .set STRINGID_PKMNWONTOBEY, 279 + .set STRINGID_PKMNTURNEDAWAY, 280 + .set STRINGID_PKMNPRETENDNOTNOTICE, 281 + .set STRINGID_ENEMYABOUTTOSWITCHPKMN, 282 + .set STRINGID_CREPTCLOSER, 283 + .set STRINGID_CANTGETCLOSER, 284 + .set STRINGID_PKMNWATCHINGCAREFULLY, 285 + .set STRINGID_PKMNCURIOUSABOUTX, 286 + .set STRINGID_PKMNENTHRALLEDBYX, 287 + .set STRINGID_PKMNIGNOREDX, 288 + .set STRINGID_THREWPOKEBLOCKATPKMN, 289 + .set STRINGID_OUTOFSAFARIBALLS, 290 + .set STRINGID_PKMNSITEMCUREDPARALYSIS, 291 + .set STRINGID_PKMNSITEMCUREDPOISON, 292 + .set STRINGID_PKMNSITEMHEALEDBURN, 293 + .set STRINGID_PKMNSITEMDEFROSTEDIT, 294 + .set STRINGID_PKMNSITEMWOKEIT, 295 + .set STRINGID_PKMNSITEMSNAPPEDOUT, 296 + .set STRINGID_PKMNSITEMCUREDPROBLEM, 297 + .set STRINGID_PKMNSITEMRESTOREDHEALTH, 298 + .set STRINGID_PKMNSITEMRESTOREDPP, 299 + .set STRINGID_PKMNSITEMRESTOREDSTATUS, 300 + .set STRINGID_PKMNSITEMRESTOREDHPALITTLE, 301 + .set STRINGID_ITEMALLOWSONLYYMOVE, 302 + .set STRINGID_PKMNHUNGONWITHX, 303 + .set STRINGID_EMPTYSTRING3, 304 + .set STRINGID_PKMNSXPREVENTSBURNS, 305 + .set STRINGID_PKMNSXBLOCKSY, 306 + .set STRINGID_PKMNSXRESTOREDHPALITTLE2, 307 + .set STRINGID_PKMNSXWHIPPEDUPSANDSTORM, 308 + .set STRINGID_PKMNSXPREVENTSYLOSS, 309 + .set STRINGID_PKMNSXINFATUATEDY, 310 + .set STRINGID_PKMNSXMADEYINEFFECTIVE, 311 + .set STRINGID_PKMNSXCUREDYPROBLEM, 312 + .set STRINGID_ITSUCKEDLIQUIDOOZE, 313 + .set STRINGID_PKMNTRANSFORMED, 314 + .set STRINGID_ELECTRICITYWEAKENED, 315 + .set STRINGID_FIREWEAKENED, 316 + .set STRINGID_PKMNHIDUNDERWATER, 317 + .set STRINGID_PKMNSPRANGUP, 318 + .set STRINGID_HMMOVESCANTBEFORGOTTEN, 319 + .set STRINGID_XFOUNDONEY, 320 + .set STRINGID_PLAYERDEFEATEDTRAINER1, 321 + .set STRINGID_SOOTHINGAROMA, 322 + .set STRINGID_ITEMSCANTBEUSEDNOW, 323 + .set STRINGID_FORXCOMMAYZ, 324 + .set STRINGID_USINGXTHEYOFZN, 325 + .set STRINGID_PKMNUSEDXTOGETPUMPED, 326 + .set STRINGID_PKMNSXMADEYUSELESS, 327 + .set STRINGID_PKMNTRAPPEDBYSANDTOMB, 328 + .set STRINGID_EMPTYSTRING4, 329 + .set STRINGID_ABOOSTED, 330 + .set STRINGID_PKMNSXINTENSIFIEDSUN, 331 + .set STRINGID_PKMNMAKESGROUNDMISS, 332 + .set STRINGID_YOUTHROWABALLNOWRIGHT, 333 + .set STRINGID_PKMNSXTOOKATTACK, 334 + .set STRINGID_PKMNCHOSEXASDESTINY, 335 + .set STRINGID_PKMNLOSTFOCUS, 336 + .set STRINGID_USENEXTPKMN, 337 + .set STRINGID_PKMNFLEDUSINGITS, 338 + .set STRINGID_PKMNFLEDUSING, 339 + .set STRINGID_PKMNWASDRAGGEDOUT, 340 + .set STRINGID_PREVENTEDFROMWORKING, 341 + .set STRINGID_PKMNSITEMNORMALIZEDSTATUS, 342 + .set STRINGID_TRAINER1USEDITEM, 343 + .set STRINGID_BOXISFULL, 344 + .set STRINGID_PKMNAVOIDEDATTACK, 345 + .set STRINGID_PKMNSXMADEITINEFFECTIVE, 346 + .set STRINGID_PKMNSXPREVENTSFLINCHING, 347 + .set STRINGID_PKMNALREADYHASBURN, 348 + .set STRINGID_STATSWONTDECREASE2, 349 + .set STRINGID_PKMNSXBLOCKSY2, 350 + .set STRINGID_PKMNSXWOREOFF, 351 + .set STRINGID_PKMNRAISEDDEFALITTLE, 352 + .set STRINGID_PKMNRAISEDSPDEFALITTLE, 353 + .set STRINGID_THEWALLSHATTERED, 354 + .set STRINGID_PKMNSXPREVENTSYSZ, 355 + .set STRINGID_PKMNSXCUREDITSYPROBLEM, 356 + .set STRINGID_ATTACKERCANTESCAPE, 357 + .set STRINGID_PKMNOBTAINEDX, 358 + .set STRINGID_PKMNOBTAINEDX2, 359 + .set STRINGID_PKMNOBTAINEDXYOBTAINEDZ, 360 + .set STRINGID_BUTNOEFFECT, 361 + .set STRINGID_PKMNSXHADNOEFFECTONY, 362 + .set STRINGID_TWOENEMIESDEFEATED, 363 + .set STRINGID_TRAINER2LOSETEXT, 364 + .set STRINGID_PKMNINCAPABLEOFPOWER, 365 + .set STRINGID_GLINTAPPEARSINEYE, 366 + .set STRINGID_PKMNGETTINGINTOPOSITION, 367 + .set STRINGID_PKMNBEGANGROWLINGDEEPLY, 368 + .set STRINGID_PKMNEAGERFORMORE, 369 + .set STRINGID_DEFEATEDOPPONENTBYREFEREE, 370 + .set STRINGID_LOSTTOOPPONENTBYREFEREE, 371 + .set STRINGID_TIEDOPPONENTBYREFEREE, 372 + .set STRINGID_QUESTIONFORFEITMATCH, 373 + .set STRINGID_FORFEITEDMATCH, 374 + .set STRINGID_PKMNTRANSFERREDSOMEONESPC, 375 + .set STRINGID_PKMNTRANSFERREDLANETTESPC, 376 + .set STRINGID_PKMNBOXSOMEONESPCFULL, 377 + .set STRINGID_PKMNBOXLANETTESPCFULL, 378 + .set STRINGID_TRAINER1WINTEXT, 379 + .set STRINGID_TRAINER2WINTEXT, 380 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b2dfec5d8..1f6be1390 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,586 +1,4610 @@ .include "asm/macros.inc" + .include "asm/macros/battle_script.inc" .include "constants/constants.inc" + .include "constants/battle_constants.inc" + .include "constants/battle_script_constants.inc" + .include "constants/battle_text.inc" .section script_data, "aw", %progbits gBattleScriptsForMoveEffects:: @ 82D86A8 - .incbin "baserom.gba", 0x2d86a8, 0x388 - -BattleScript_PresentDamageTarget:: @ 82D8A30 - .incbin "baserom.gba", 0x2d8a30, 0x1e - -BattleScript_MoveEnd:: @ 82D8A4E - .incbin "baserom.gba", 0x2d8a4e, 0x12 - -BattleScript_PauseEffectivenessSoundResultMsgEndMove:: @ 82D8A60 - .incbin "baserom.gba", 0x2d8a60, 0x274 - -BattleScript_StatUp:: @ 82D8CD4 - .incbin "baserom.gba", 0x2d8cd4, 0x91 - -BattleScript_StatDown:: @ 82D8D65 - .incbin "baserom.gba", 0x2d8d65, 0x6fd - -BattleScript_MoveUsedMustRecharge:: @ 82D9462 - .incbin "baserom.gba", 0x2d9462, 0xa7f - -BattleScript_PresentHealTarget:: @ 82D9EE1 - .incbin "baserom.gba", 0x2d9ee1, 0x1a - -BattleScript_AlreadyAtFullHp:: @ 82D9EFB - .incbin "baserom.gba", 0x2d9efb, 0x21 - -BattleScript_ButItFailed:: @ 82D9F1C - .incbin "baserom.gba", 0x2d9f1c, 0x88e - -BattleScript_FaintAttacker:: @ 82DA7AA - .incbin "baserom.gba", 0x2da7aa, 0xd - -BattleScript_FaintTarget:: @ 82DA7B7 - .incbin "baserom.gba", 0x2da7b7, 0xd - -gUnknown_082DA7C4:: @ 82DA7C4 - .incbin "baserom.gba", 0x2da7c4, 0x9 - -gUnknown_082DA7CD:: @ 82DA7CD - .incbin "baserom.gba", 0x2da7cd, 0x160 - -BattleScript_LocalTrainerBattleWon:: @ 82DA92D - .incbin "baserom.gba", 0x2da92d, 0x3d - -BattleScript_PayDayMoneyAndPickUpItems:: @ 82DA96A - .incbin "baserom.gba", 0x2da96a, 0x3 - -BattleScript_LocalBattleLost:: @ 82DA96D - .incbin "baserom.gba", 0x2da96d, 0x9e - -gUnknown_082DAA0B:: @ 82DAA0B - .incbin "baserom.gba", 0x2daa0b, 0x2a - -BattleScript_LinkBattleWonOrLost:: @ 82DAA35 - .incbin "baserom.gba", 0x2daa35, 0x52 - -BattleScript_FrontierTrainerBattleWon:: @ 82DAA87 - .incbin "baserom.gba", 0x2daa87, 0x54 - -BattleScript_SmokeBallEscape:: @ 82DAADB - .incbin "baserom.gba", 0x2daadb, 0xe - -BattleScript_RanAwayUsingMonAbility:: @ 82DAAE9 - .incbin "baserom.gba", 0x2daae9, 0x7 - -BattleScript_GotAwaySafely:: @ 82DAAF0 - .incbin "baserom.gba", 0x2daaf0, 0x7 - -BattleScript_WildMonFled:: @ 82DAAF7 - .incbin "baserom.gba", 0x2daaf7, 0x7 - -gUnknown_082DAAFE:: @ 82DAAFE - .incbin "baserom.gba", 0x2daafe, 0x4 - -BattleScript_PrintFailedToRunString:: @ 82DAB02 - .incbin "baserom.gba", 0x2dab02, 0x9 - -gUnknown_082DAB0B:: @ 82DAB0B - .incbin "baserom.gba", 0x2dab0b, 0x6 - -gUnknown_082DAB11:: @ 82DAB11 - .incbin "baserom.gba", 0x2dab11, 0x4 - -BattleScript_ActionSwitch:: @ 82DAB15 - .incbin "baserom.gba", 0x2dab15, 0xa4 - -BattleScript_Pausex20:: @ 82DABB9 - .incbin "baserom.gba", 0x2dabb9, 0x4 - -BattleScript_LevelUp:: @ 82DABBD - .incbin "baserom.gba", 0x2dabbd, 0x6f - -gUnknown_082DAC2C:: @ 82DAC2C - .incbin "baserom.gba", 0x2dac2c, 0x1b - -gUnknown_082DAC47:: @ 82DAC47 - .incbin "baserom.gba", 0x2dac47, 0x82 - -gUnknown_082DACC9:: @ 82DACC9 - .incbin "baserom.gba", 0x2dacc9, 0x9 - -gUnknown_082DACD2:: @ 82DACD2 - .incbin "baserom.gba", 0x2dacd2, 0xe - -gUnknown_082DACE0:: @ 82DACE0 - .incbin "baserom.gba", 0x2dace0, 0x7 - -gUnknown_082DACE7:: @ 82DACE7 - .incbin "baserom.gba", 0x2dace7, 0x13 - -gUnknown_082DACFA:: @ 82DACFA - .incbin "baserom.gba", 0x2dacfa, 0x11 - -gUnknown_082DAD0B:: @ 82DAD0B - .incbin "baserom.gba", 0x2dad0b, 0xa - -BattleScript_LeechSeedTurnDrain:: @ 82DAD15 - .incbin "baserom.gba", 0x2dad15, 0x5c - -BattleScript_BideStoringEnergy:: @ 82DAD71 - .incbin "baserom.gba", 0x2dad71, 0xb - -BattleScript_BideAttack:: @ 82DAD7C - .incbin "baserom.gba", 0x2dad7c, 0x48 - -BattleScript_BideNoEnergyToAttack:: @ 82DADC4 - .incbin "baserom.gba", 0x2dadc4, 0x14 - -gUnknown_082DADD8:: @ 82DADD8 - .incbin "baserom.gba", 0x2dadd8, 0x2b - -BattleScript_MistProtected:: @ 82DAE03 - .incbin "baserom.gba", 0x2dae03, 0xa - -BattleScript_RageIsBuilding:: @ 82DAE0D - .incbin "baserom.gba", 0x2dae0d, 0x7 - -BattleScript_MoveUsedIsDisabled:: @ 82DAE14 - .incbin "baserom.gba", 0x2dae14, 0xb - -gUnknown_082DAE1F:: @ 82DAE1F - .incbin "baserom.gba", 0x2dae1f, 0x4 - -BattleScript_DisabledNoMore:: @ 82DAE23 - .incbin "baserom.gba", 0x2dae23, 0x7 - -gUnknown_082DAE2A:: @ 82DAE2A - .incbin "baserom.gba", 0x2dae2a, 0xd - -BattleScript_EncoredNoMore:: @ 82DAE37 - .incbin "baserom.gba", 0x2dae37, 0x7 - -BattleScript_DestinyBondTakesLife:: @ 82DAE3E - .incbin "baserom.gba", 0x2dae3e, 0x1b - -gUnknown_082DAE59:: @ 82DAE59 - .incbin "baserom.gba", 0x2dae59, 0x37 - -gUnknown_082DAE90:: @ 82DAE90 - .incbin "baserom.gba", 0x2dae90, 0x37 - -gUnknown_082DAEC7:: @ 82DAEC7 - .incbin "baserom.gba", 0x2daec7, 0x3e - -gUnknown_082DAF05:: @ 82DAF05 - .incbin "baserom.gba", 0x2daf05, 0x1b - -gUnknown_082DAF20:: @ 82DAF20 - .incbin "baserom.gba", 0x2daf20, 0x7 - -BattleScript_AllStatsUp:: @ 82DAF27 - .incbin "baserom.gba", 0x2daf27, 0x9c - -BattleScript_RapidSpinAway:: @ 82DAFC3 - .incbin "baserom.gba", 0x2dafc3, 0x2 - -BattleScript_WrapFree:: @ 82DAFC5 - .incbin "baserom.gba", 0x2dafc5, 0x11 - -BattleScript_LeechSeedFree:: @ 82DAFD6 - .incbin "baserom.gba", 0x2dafd6, 0x7 - -BattleScript_SpikesFree:: @ 82DAFDD - .incbin "baserom.gba", 0x2dafdd, 0x7 - -gUnknown_082DAFE4:: @ 82DAFE4 - .incbin "baserom.gba", 0x2dafe4, 0x8e - -BattleScript_NoMovesLeft:: @ 82DB072 - .incbin "baserom.gba", 0x2db072, 0x4 - -gUnknown_082DB076:: @ 82DB076 - .incbin "baserom.gba", 0x2db076, 0x4 - -BattleScript_NoPPForMove:: @ 82DB07A - .incbin "baserom.gba", 0x2db07a, 0xf - -gUnknown_082DB089:: @ 82DB089 - .incbin "baserom.gba", 0x2db089, 0xf - -gUnknown_082DB098:: @ 82DB098 - .incbin "baserom.gba", 0x2db098, 0x8 - -gUnknown_082DB0A0:: @ 82DB0A0 - .incbin "baserom.gba", 0x2db0a0, 0x4 - -BattleScript_MoveUsedIsTaunted:: @ 82DB0A4 - .incbin "baserom.gba", 0x2db0a4, 0xb - -gUnknown_082DB0AF:: @ 82DB0AF - .incbin "baserom.gba", 0x2db0af, 0x8 - -BattleScript_WishComesTrue:: @ 82DB0B7 - .incbin "baserom.gba", 0x2db0b7, 0x37 - -BattleScript_IngrainTurnHeal:: @ 82DB0EE - .incbin "baserom.gba", 0x2db0ee, 0x29 - -BattleScript_AtkDefDown:: @ 82DB117 - .incbin "baserom.gba", 0x2db117, 0x51 - -BattleScript_KnockedOff:: @ 82DB168 - .incbin "baserom.gba", 0x2db168, 0xe - -BattleScript_MoveUsedIsImprisoned:: @ 82DB176 - .incbin "baserom.gba", 0x2db176, 0xb - -gUnknown_082DB181:: @ 82DB181 - .incbin "baserom.gba", 0x2db181, 0x4 - -gUnknown_082DB185:: @ 82DB185 - .incbin "baserom.gba", 0x2db185, 0x8 - -BattleScript_GrudgeTakesPp:: @ 82DB18D - .incbin "baserom.gba", 0x2db18d, 0x7 - -BattleScript_MagicCoatBounce:: @ 82DB194 - .incbin "baserom.gba", 0x2db194, 0x18 - -BattleScript_SnatchedMove:: @ 82DB1AC - .incbin "baserom.gba", 0x2db1ac, 0x1b - -BattleScript_EnduredMsg:: @ 82DB1C7 - .incbin "baserom.gba", 0x2db1c7, 0x7 - -BattleScript_OneHitKOMsg:: @ 82DB1CE - .incbin "baserom.gba", 0x2db1ce, 0x7 - -BattleScript_SAtkDown2:: @ 82DB1D5 - .incbin "baserom.gba", 0x2db1d5, 0x2a - -BattleScript_FocusPunchSetUp:: @ 82DB1FF - .incbin "baserom.gba", 0x2db1ff, 0x14 - -BattleScript_MoveUsedIsAsleep:: @ 82DB213 - .incbin "baserom.gba", 0x2db213, 0xd - -BattleScript_MoveUsedWokeUp:: @ 82DB220 - .incbin "baserom.gba", 0x2db220, 0x14 - -gUnknown_082DB234:: @ 82DB234 - .incbin "baserom.gba", 0x2db234, 0x9 - -BattleScript_PoisonTurnDmg:: @ 82DB23D - .incbin "baserom.gba", 0x2db23d, 0x22 - -BattleScript_BurnTurnDmg:: @ 82DB25F - .incbin "baserom.gba", 0x2db25f, 0xb - -BattleScript_MoveUsedIsFrozen:: @ 82DB26A - .incbin "baserom.gba", 0x2db26a, 0xd - -BattleScript_MoveUsedUnfroze:: @ 82DB277 - .incbin "baserom.gba", 0x2db277, 0xb - -BattleScript_DefrostedViaFireMove:: @ 82DB282 - .incbin "baserom.gba", 0x2db282, 0x9 - -BattleScript_MoveUsedIsParalyzed:: @ 82DB28B - .incbin "baserom.gba", 0x2db28b, 0x10 - -BattleScript_MoveUsedFlinched:: @ 82DB29B - .incbin "baserom.gba", 0x2db29b, 0xb - -gUnknown_082DB2A6:: @ 82DB2A6 - .incbin "baserom.gba", 0x2db2a6, 0x9 - -BattleScript_ThrashConfuses:: @ 82DB2AF - .incbin "baserom.gba", 0x2db2af, 0xe - -BattleScript_MoveUsedIsConfused:: @ 82DB2BD - .incbin "baserom.gba", 0x2db2bd, 0x43 - -BattleScript_MoveUsedIsConfusedNoMore:: @ 82DB300 - .incbin "baserom.gba", 0x2db300, 0x7 - -BattleScript_PrintPayDayMoneyString:: @ 82DB307 - .incbin "baserom.gba", 0x2db307, 0x7 - -BattleScript_WrapTurnDmg:: @ 82DB30E - .incbin "baserom.gba", 0x2db30e, 0x12 - -BattleScript_WrapEnds:: @ 82DB320 - .incbin "baserom.gba", 0x2db320, 0x7 - -BattleScript_MoveUsedIsInLove:: @ 82DB327 - .incbin "baserom.gba", 0x2db327, 0xd - -BattleScript_MoveUsedIsParalyzedCantAttack:: @ 82DB334 - .incbin "baserom.gba", 0x2db334, 0xb - -BattleScript_NightmareTurnDmg:: @ 82DB33F - .incbin "baserom.gba", 0x2db33f, 0x11 - -BattleScript_CurseTurnDmg:: @ 82DB350 - .incbin "baserom.gba", 0x2db350, 0x11 - -BattleScript_TargetPRLZHeal:: @ 82DB361 - .incbin "baserom.gba", 0x2db361, 0x9 - -BattleScript_MoveEffectSleep:: @ 82DB36A - .incbin "baserom.gba", 0x2db36A, 0xE - -BattleScript_YawnMakesAsleep:: @ 82DB378 - .incbin "baserom.gba", 0x2db378, 0xE - -BattleScript_MoveEffectPoison:: @ 82DB386 - .incbin "baserom.gba", 0x2db386, 0xF - -BattleScript_MoveEffectBurn:: @ 82DB395 - .incbin "baserom.gba", 0x2db395, 0xF - -BattleScript_MoveEffectFreeze:: @ 82DB3A4 - .incbin "baserom.gba", 0x2db3A4, 0xF - -BattleScript_MoveEffectParalysis:: @ 82DB3B3 - .incbin "baserom.gba", 0x2db3B3, 0xF - -BattleScript_MoveEffectUproar:: @ 82DB3C2 - .incbin "baserom.gba", 0x2db3C2, 0x7 - -BattleScript_MoveEffectToxic:: @ 82DB3C9 - .incbin "baserom.gba", 0x2db3C9, 0xD - -BattleScript_MoveEffectPayDay:: @ 82DB3D6 - .incbin "baserom.gba", 0x2db3D6, 0x7 - -BattleScript_MoveEffectWrap:: @ 82DB3DD - .incbin "baserom.gba", 0x2db3DD, 0x9 - -BattleScript_MoveEffectConfusion:: @ 82DB3E6 - .incbin "baserom.gba", 0x2db3E6, 0xE - -BattleScript_MoveEffectRecoil33:: @ 82DB3F4 - .incbin "baserom.gba", 0x2db3F4, 0x2e - -BattleScript_ItemSteal:: @ 82DB422 - .incbin "baserom.gba", 0x2db422, 0xe - -BattleScript_DrizzleActivates:: @ 82DB430 - .incbin "baserom.gba", 0x2db430, 0x14 - -BattleScript_SpeedBoostActivates:: @ 82DB444 - .incbin "baserom.gba", 0x2db444, 0xe - -BattleScript_TraceActivates:: @ 82DB452 - .incbin "baserom.gba", 0x2db452, 0xa - -BattleScript_RainDishActivates:: @ 82DB45C - .incbin "baserom.gba", 0x2db45c, 0x14 - -BattleScript_SandstreamActivates:: @ 82DB470 - .incbin "baserom.gba", 0x2db470, 0x14 - -BattleScript_ShedSkinActivates:: @ 82DB484 - .incbin "baserom.gba", 0x2db484, 0x25 - -BattleScript_CastformChange:: @ 82DB4A9 - .incbin "baserom.gba", 0x2db4a9, 0xf - -gUnknown_082DB4B8:: @ 82DB4B8 - .incbin "baserom.gba", 0x2db4b8, 0x9 - -gUnknown_082DB4C1:: @ 82DB4C1 - .incbin "baserom.gba", 0x2db4c1, 0x69 - -BattleScript_DroughtActivates:: @ 82DB52A - .incbin "baserom.gba", 0x2db52a, 0x14 - -BattleScript_TookAttack:: @ 82DB53E - .incbin "baserom.gba", 0x2db53e, 0x14 - -BattleScript_SturdyPreventsOHKO:: @ 82DB552 - .incbin "baserom.gba", 0x2db552, 0xe - -BattleScript_DampStopsExplosion:: @ 82DB560 - .incbin "baserom.gba", 0x2db560, 0xe - -BattleScript_MoveHPDrain_PPLoss:: @ 82DB56E - .incbin "baserom.gba", 0x2db56e, 0x1 - -BattleScript_MoveHPDrain:: @ 82DB56F - .incbin "baserom.gba", 0x2db56f, 0x22 - -gUnknown_082DB591:: @ 82DB591 - .incbin "baserom.gba", 0x2db591, 0x1 - -gUnknown_082DB592:: @ 82DB592 - .incbin "baserom.gba", 0x2db592, 0x15 - -BattleScript_FlashFireBoost_PPLoss:: @ 82DB5A7 - .incbin "baserom.gba", 0x2db5a7, 0x1 - -BattleScript_FlashFireBoost:: @ 82DB5A8 - .incbin "baserom.gba", 0x2db5a8, 0x1f - -BattleScript_AbilityNoStatLoss:: @ 82DB5C7 - .incbin "baserom.gba", 0x2db5c7, 0xa - -BattleScript_BRNPrevention:: @ 82DB5D1 - .incbin "baserom.gba", 0x2db5d1, 0xc - -BattleScript_PRLZPrevention:: @ 82DB5DD - .incbin "baserom.gba", 0x2db5dd, 0xc - -BattleScript_PSNPrevention:: @ 82DB5E9 - .incbin "baserom.gba", 0x2db5e9, 0xc - -BattleScript_ObliviousPreventsAttraction:: @ 82DB5F5 - .incbin "baserom.gba", 0x2db5f5, 0xe - -BattleScript_FlinchPrevention:: @ 82DB603 - .incbin "baserom.gba", 0x2db603, 0x1c - -BattleScript_SoundproofProtected:: @ 82DB61F - .incbin "baserom.gba", 0x2db61f, 0x10 - -BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F - .incbin "baserom.gba", 0x2db62f, 0x10 - -BattleScript_StickyHoldActivates:: @ 82DB63F - .incbin "baserom.gba", 0x2db63f, 0xe - -BattleScript_ColorChangeActivates:: @ 82DB64D - .incbin "baserom.gba", 0x2db64d, 0x7 - -BattleScript_RoughSkinActivates:: @ 82DB654 - .incbin "baserom.gba", 0x2db654, 0x1b - -BattleScript_CuteCharmActivates:: @ 82DB66F - .incbin "baserom.gba", 0x2db66f, 0xd - -BattleScript_ApplySecondaryEffect:: @ 82DB67C - .incbin "baserom.gba", 0x2db67c, 0x3 - -BattleScript_SynchronizeActivates:: @ 82DB67F - .incbin "baserom.gba", 0x2db67f, 0x3 - -BattleScript_NoItemSteal:: @ 82DB682 - .incbin "baserom.gba", 0x2db682, 0xa - -gUnknown_082DB68C:: @ 82DB68C - .incbin "baserom.gba", 0x2db68c, 0x9 - -gUnknown_082DB695:: @ 82DB695 - .incbin "baserom.gba", 0x2db695, 0x10 - -gUnknown_082DB6A5:: @ 82DB6A5 - .incbin "baserom.gba", 0x2db6a5, 0x8 - -BattleScript_MoveUsedLoafingAround:: @ 82DB6AD - .incbin "baserom.gba", 0x2db6ad, 0x2c - -gUnknown_082DB6D9:: @ 82DB6D9 - .incbin "baserom.gba", 0x2db6d9, 0x17 - -gUnknown_082DB6F0:: @ 82DB6F0 - .incbin "baserom.gba", 0x2db6f0, 0xb - -BattleScript_SubstituteFade:: @ 82DB6FB - .incbin "baserom.gba", 0x2db6fb, 0xb - -BattleScript_BerryCurePrlzEnd2:: @ 82DB706 - .incbin "baserom.gba", 0x2db706, 0x6 - -BattleScript_BerryCureParRet:: @ 82DB70C - .incbin "baserom.gba", 0x2db70c, 0x12 - -BattleScript_BerryCurePsnEnd2:: @ 82DB71E - .incbin "baserom.gba", 0x2db71e, 0x6 - -BattleScript_BerryCurePsnRet:: @ 82DB724 - .incbin "baserom.gba", 0x2db724, 0x12 - -BattleScript_BerryCureBrnEnd2:: @ 82DB736 - .incbin "baserom.gba", 0x2db736, 0x6 - -BattleScript_BerryCureBrnRet:: @ 82DB73C - .incbin "baserom.gba", 0x2db73c, 0x12 - -BattleScript_BerryCureFrzEnd2:: @ 82DB74E - .incbin "baserom.gba", 0x2db74e, 0x6 - -BattleScript_BerryCureFrzRet:: @ 82DB754 - .incbin "baserom.gba", 0x2db754, 0x12 - -BattleScript_BerryCureSlpEnd2:: @ 82DB766 - .incbin "baserom.gba", 0x2db766, 0x6 - -BattleScript_BerryCureSlpRet:: @ 82DB76C - .incbin "baserom.gba", 0x2db76c, 0x12 - -BattleScript_BerryCureConfusionEnd2:: @ 82DB77E - .incbin "baserom.gba", 0x2db77e, 0x6 - -BattleScript_BerryCureConfusionRet:: @ 82DB784 - .incbin "baserom.gba", 0x2db784, 0x10 - -BattleScript_BerryCureChosenStatusEnd2:: @ 82DB794 - .incbin "baserom.gba", 0x2db794, 0x6 - -BattleScript_BerryCureChosenStatusRet:: @ 82DB79A - .incbin "baserom.gba", 0x2db79a, 0x14 - -BattleScript_WhiteHerbEnd2:: @ 82DB7AE - .incbin "baserom.gba", 0x2db7ae, 0x6 - -BattleScript_WhiteHerbRet:: @ 82DB7B4 - .incbin "baserom.gba", 0x2db7b4, 0x10 - -BattleScript_ItemHealHP_RemoveItem:: @ 82DB7C4 - .incbin "baserom.gba", 0x2db7c4, 0x1d - -BattleScript_BerryPPHealEnd2:: @ 82DB7E1 - .incbin "baserom.gba", 0x2db7e1, 0x10 - -BattleScript_ItemHealHP_End2:: @ 82DB7F1 - .incbin "baserom.gba", 0x2db7f1, 0x6 - -BattleScript_ItemHealHP_Ret:: @ 82DB7F7 - .incbin "baserom.gba", 0x2db7f7, 0x1b - -gUnknown_082DB812:: @ 82DB812 - .incbin "baserom.gba", 0x2db812, 0x4 - -BattleScript_HangedOnMsg:: @ 82DB816 - .incbin "baserom.gba", 0x2db816, 0xe - -BattleScript_BerryConfuseHealEnd2:: @ 82DB824 - .incbin "baserom.gba", 0x2db824, 0x2a - -BattleScript_BerryStatRaiseEnd2:: @ 82DB84E - .incbin "baserom.gba", 0x2db84e, 0x1b - -BattleScript_BerryFocusEnergyEnd2:: @ 82DB869 - .incbin "baserom.gba", 0x2db869, 0x10 - -BattleScript_ActionSelectionItemsCantBeUsed:: @ 82DB879 - .incbin "baserom.gba", 0x2db879, 0x4 - -gUnknown_082DB87D:: @ 82DB87D - .incbin "baserom.gba", 0x2db87d, 0x4 - -gUnknown_082DB881:: @ 82DB881 - .incbin "baserom.gba", 0x2db881, 0x3d - -gUnknown_082DB8BE:: @ 82DB8BE - .incbin "baserom.gba", 0x2db8be, 0x35 - -gUnknown_082DB8F3:: @ 82DB8F3 - .incbin "baserom.gba", 0x2db8f3, 0xc7 - -gUnknown_082DB9BA:: @ 82DB9BA - .incbin "baserom.gba", 0x2db9ba, 0x7 - -gUnknown_082DB9C1:: @ 82DB9C1 - .incbin "baserom.gba", 0x2db9c1, 0x7 - -gUnknown_082DB9C8:: @ 82DB9C8 - .incbin "baserom.gba", 0x2db9c8, 0xc + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSleep + .4byte BattleScript_EffectPoisonHit + .4byte BattleScript_EffectAbsorb + .4byte BattleScript_EffectBurnHit + .4byte BattleScript_EffectFreezeHit + .4byte BattleScript_EffectParalyzeHit + .4byte BattleScript_EffectExplosion + .4byte BattleScript_EffectDreamEater + .4byte BattleScript_EffectMirrorMove + .4byte BattleScript_EffectAttackUp + .4byte BattleScript_EffectDefenseUp + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialAttackUp + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectEvasionUp + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAttackDown + .4byte BattleScript_EffectDefenseDown + .4byte BattleScript_EffectSpeedDown + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAccuracyDown + .4byte BattleScript_EffectEvasionDown + .4byte BattleScript_EffectHaze + .4byte BattleScript_EffectBide + .4byte BattleScript_EffectRampage + .4byte BattleScript_EffectRoar + .4byte BattleScript_EffectMultiHit + .4byte BattleScript_EffectConversion + .4byte BattleScript_EffectFlinchHit + .4byte BattleScript_EffectRestoreHp + .4byte BattleScript_EffectToxic + .4byte BattleScript_EffectPayDay + .4byte BattleScript_EffectLightScreen + .4byte BattleScript_EffectTriAttack + .4byte BattleScript_EffectRest + .4byte BattleScript_EffectOhko + .4byte BattleScript_EffectRazorWind + .4byte BattleScript_EffectSuperFang + .4byte BattleScript_EffectDragonRage + .4byte BattleScript_EffectTrap + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectDoubleHit + .4byte BattleScript_EffectRecoilIfMiss + .4byte BattleScript_EffectMist + .4byte BattleScript_EffectFocusEnergy + .4byte BattleScript_EffectRecoil + .4byte BattleScript_EffectConfuse + .4byte BattleScript_EffectAttackUp2 + .4byte BattleScript_EffectDefenseUp2 + .4byte BattleScript_EffectSpeedUp2 + .4byte BattleScript_EffectSpecialAttackUp2 + .4byte BattleScript_EffectSpecialDefenseUp2 + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectTransform + .4byte BattleScript_EffectAttackDown2 + .4byte BattleScript_EffectDefenseDown2 + .4byte BattleScript_EffectSpeedDown2 + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialDefenseDown2 + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectReflect + .4byte BattleScript_EffectPoison + .4byte BattleScript_EffectParalyze + .4byte BattleScript_EffectAttackDownHit + .4byte BattleScript_EffectDefenseDownHit + .4byte BattleScript_EffectSpeedDownHit + .4byte BattleScript_EffectSpecialAttackDownHit + .4byte BattleScript_EffectSpecialDefenseDownHit + .4byte BattleScript_EffectAccuracyDownHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSkyAttack + .4byte BattleScript_EffectConfuseHit + .4byte BattleScript_EffectTwineedle + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSubstitute + .4byte BattleScript_EffectRecharge + .4byte BattleScript_EffectRage + .4byte BattleScript_EffectMimic + .4byte BattleScript_EffectMetronome + .4byte BattleScript_EffectLeechSeed + .4byte BattleScript_EffectSplash + .4byte BattleScript_EffectDisable + .4byte BattleScript_EffectLevelDamage + .4byte BattleScript_EffectPsywave + .4byte BattleScript_EffectCounter + .4byte BattleScript_EffectEncore + .4byte BattleScript_EffectPainSplit + .4byte BattleScript_EffectSnore + .4byte BattleScript_EffectConversion2 + .4byte BattleScript_EffectLockOn + .4byte BattleScript_EffectSketch + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSleepTalk + .4byte BattleScript_EffectDestinyBond + .4byte BattleScript_EffectFlail + .4byte BattleScript_EffectSpite + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHealBell + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectTripleKick + .4byte BattleScript_EffectThief + .4byte BattleScript_EffectMeanLook + .4byte BattleScript_EffectNightmare + .4byte BattleScript_EffectMinimize + .4byte BattleScript_EffectCurse + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectProtect + .4byte BattleScript_EffectSpikes + .4byte BattleScript_EffectForesight + .4byte BattleScript_EffectPerishSong + .4byte BattleScript_EffectSandstorm + .4byte BattleScript_EffectProtect + .4byte BattleScript_EffectRollout + .4byte BattleScript_EffectSwagger + .4byte BattleScript_EffectFuryCutter + .4byte BattleScript_EffectAttract + .4byte BattleScript_EffectReturn + .4byte BattleScript_EffectPresent + .4byte BattleScript_EffectReturn + .4byte BattleScript_EffectSafeguard + .4byte BattleScript_EffectThawHit + .4byte BattleScript_EffectMagnitude + .4byte BattleScript_EffectBatonPass + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectRapidSpin + .4byte BattleScript_EffectSonicboom + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectHiddenPower + .4byte BattleScript_EffectRainDance + .4byte BattleScript_EffectSunnyDay + .4byte BattleScript_EffectDefenseUpHit + .4byte BattleScript_EffectAttackUpHit + .4byte BattleScript_EffectAllStatsUpHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectBellyDrum + .4byte BattleScript_EffectPsychUp + .4byte BattleScript_EffectMirrorCoat + .4byte BattleScript_EffectSkullBash + .4byte BattleScript_EffectTwister + .4byte BattleScript_EffectEarthquake + .4byte BattleScript_EffectFutureSight + .4byte BattleScript_EffectGust + .4byte BattleScript_EffectStomp + .4byte BattleScript_EffectSolarbeam + .4byte BattleScript_EffectThunder + .4byte BattleScript_EffectTeleport + .4byte BattleScript_EffectBeatUp + .4byte BattleScript_EffectFly + .4byte BattleScript_EffectDefenseCurl + .4byte BattleScript_EffectSoftboiled + .4byte BattleScript_EffectFakeOut + .4byte BattleScript_EffectUproar + .4byte BattleScript_EffectStockpile + .4byte BattleScript_EffectSpitUp + .4byte BattleScript_EffectSwallow + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHail + .4byte BattleScript_EffectTorment + .4byte BattleScript_EffectFlatter + .4byte BattleScript_EffectWillOWisp + .4byte BattleScript_EffectMemento + .4byte BattleScript_EffectFacade + .4byte BattleScript_EffectFocusPunch + .4byte BattleScript_EffectSmellingsalt + .4byte BattleScript_EffectFollowMe + .4byte BattleScript_EffectNaturePower + .4byte BattleScript_EffectCharge + .4byte BattleScript_EffectTaunt + .4byte BattleScript_EffectHelpingHand + .4byte BattleScript_EffectTrick + .4byte BattleScript_EffectRolePlay + .4byte BattleScript_EffectWish + .4byte BattleScript_EffectAssist + .4byte BattleScript_EffectIngrain + .4byte BattleScript_EffectSuperpower + .4byte BattleScript_EffectMagicCoat + .4byte BattleScript_EffectRecycle + .4byte BattleScript_EffectRevenge + .4byte BattleScript_EffectBrickBreak + .4byte BattleScript_EffectYawn + .4byte BattleScript_EffectKnockOff + .4byte BattleScript_EffectEndeavor + .4byte BattleScript_EffectEruption + .4byte BattleScript_EffectSkillSwap + .4byte BattleScript_EffectImprison + .4byte BattleScript_EffectRefresh + .4byte BattleScript_EffectGrudge + .4byte BattleScript_EffectSnatch + .4byte BattleScript_EffectLowKick + .4byte BattleScript_EffectSecretPower + .4byte BattleScript_EffectDoubleEdge + .4byte BattleScript_EffectTeeterDance + .4byte BattleScript_EffectBurnHit + .4byte BattleScript_EffectMudSport + .4byte BattleScript_EffectPoisonFang + .4byte BattleScript_EffectWeatherBall + .4byte BattleScript_EffectOverheat + .4byte BattleScript_EffectTickle + .4byte BattleScript_EffectCosmicPower + .4byte BattleScript_EffectSkyUppercut + .4byte BattleScript_EffectBulkUp + .4byte BattleScript_EffectPoisonHit + .4byte BattleScript_EffectMudSport + .4byte BattleScript_EffectCalmMind + .4byte BattleScript_EffectDragonDance + .4byte BattleScript_EffectCamouflage + +BattleScript_EffectHit:: + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SURF, BattleScript_HitFromAtkCanceler + jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_HitFromAtkCanceler + orword gHitMarker, HITMARKER_IGNORE_UNDERWATER + setbyte sDMG_MULTIPLIER, 0x2 +BattleScript_HitFromAtkCanceler:: + attackcanceler +BattleScript_HitFromAccCheck:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE +BattleScript_HitFromAtkString:: + attackstring + ppreduce +BattleScript_HitFromCritCalc:: + critcalc + damagecalc + typecalc + adjustnormaldamage +BattleScript_HitFromAtkAnimation:: + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + seteffectwithchance + tryfaintmon TARGET, FALSE, NULL +BattleScript_MoveEnd:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + end + +BattleScript_MakeMoveMissed:: + orbyte gBattleMoveFlags, MOVESTATUS_MISSED +BattleScript_PrintMoveMissed:: + attackstring + ppreduce +BattleScript_MoveMissedPause:: + pause 0x20 +BattleScript_MoveMissed:: + effectivenesssound + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSleep:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8AB0 + jumpifcantmakeasleep BattleScript_82D8ACF + jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_SLEEP + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_82D8AB0:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNALREADYASLEEP + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D8AC1:: + pause 0x20 + printstring STRINGID_PKMNWASNTAFFECTED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D8ACF:: + pause 0x20 + printfromtable 0x85CC896 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPoisonHit:: + setmoveeffect EFFECT_POISON + goto BattleScript_EffectHit + +BattleScript_EffectAbsorb:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + negativedamage + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_82D8B26 + setbyte cMULTISTRING_CHOOSER, 0x0 + goto BattleScript_82D8B2E + +BattleScript_82D8B26:: + manipulatedamage ATK80_DMG_CHANGE_SIGN + setbyte cMULTISTRING_CHOOSER, 0x1 +BattleScript_82D8B2E:: + healthbarupdate ATTACKER + datahpupdate ATTACKER + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8B45 + printfromtable 0x85CC8FC + waitmessage 0x40 +BattleScript_82D8B45:: + tryfaintmon ATTACKER, FALSE, NULL + tryfaintmon TARGET, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectBurnHit:: + setmoveeffect EFFECT_BURN + goto BattleScript_EffectHit + +BattleScript_EffectFreezeHit:: + setmoveeffect EFFECT_FREEZE + goto BattleScript_EffectHit + +BattleScript_EffectParalyzeHit:: + setmoveeffect EFFECT_PARALYSIS + goto BattleScript_EffectHit + +BattleScript_EffectExplosion:: + attackcanceler + attackstring + ppreduce + faintifabilitynotdamp + setatkhptozero + waitstate + jumpifbyte NO_COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED, BattleScript_82D8B94 + call BattleScript_82D8BEA + goto BattleScript_82D8B96 + +BattleScript_82D8B94:: + attackanimation + waitanimation +BattleScript_82D8B96:: + movevaluescleanup + critcalc + damagecalc + typecalc + adjustnormaldamage + accuracycheck BattleScript_82D8BCF, ACC_CURR_MOVE + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifnexttargetvalid BattleScript_82D8B96 + tryfaintmon ATTACKER, FALSE, NULL + end + +BattleScript_82D8BCF:: + effectivenesssound + resultmessage + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifnexttargetvalid BattleScript_82D8B96 + tryfaintmon ATTACKER, FALSE, NULL + end + +BattleScript_82D8BEA:: + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED + attackanimation + waitanimation + orbyte gBattleMoveFlags, MOVESTATUS_MISSED + return + +BattleScript_EffectDreamEater:: + attackcanceler + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E + jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8C18 +BattleScript_82D8C0E:: + attackstring + ppreduce + waitmessage 0x40 + goto BattleScript_82D8AC1 + +BattleScript_82D8C18:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + negativedamage + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8C56 + printstring STRINGID_PKMNDREAMEATEN + waitmessage 0x40 +BattleScript_82D8C56:: + tryfaintmon TARGET, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectMirrorMove:: + attackcanceler + attackstring + pause 0x40 + trymirrormove + ppreduce + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + printstring STRINGID_MIRRORMOVEFAILED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackUp:: + setstatchanger ATK, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectDefenseUp:: + setstatchanger DEF, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialAttackUp:: + setstatchanger SPATK, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectEvasionUp:: + setstatchanger EVASION, 1, FALSE +BattleScript_EffectStatUp:: + attackcanceler +BattleScript_EffectStatUpAfterAtkCanceler:: + attackstring + ppreduce + statbuffchange 0x41, BattleScript_82D8CCF + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8CBD + pause 0x20 + goto BattleScript_82D8CC7 + +BattleScript_82D8CBD:: + attackanimation + waitanimation +BattleScript_82D8CBF:: + setgraphicalstatchangevalues + playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 +BattleScript_82D8CC7:: + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82D8CCF:: + goto BattleScript_MoveEnd + +BattleScript_StatUp:: + playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 + printfromtable 0x85CC89C + waitmessage 0x40 + return + +BattleScript_EffectAttackDown:: + setstatchanger ATK, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectDefenseDown:: + setstatchanger DEF, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpeedDown:: + setstatchanger SPEED, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectAccuracyDown:: + setstatchanger ACC, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectEvasionDown:: + setstatchanger EVASION, 1, TRUE +BattleScript_EffectStatDown:: + attackcanceler + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + statbuffchange 0x1, BattleScript_82D8D60 + jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8D4E + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_82D8D60 + pause 0x20 + goto BattleScript_82D8D58 + +BattleScript_82D8D4E:: + attackanimation + waitanimation + setgraphicalstatchangevalues + playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 +BattleScript_82D8D58:: + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82D8D60:: + goto BattleScript_MoveEnd + +BattleScript_StatDown:: + playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 + printfromtable 0x85CC8A8 + waitmessage 0x40 + return + +BattleScript_EffectHaze:: + attackcanceler + attackstring + ppreduce + attackanimation + waitanimation + normalisebuffs + printstring STRINGID_STATCHANGESGONE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectBide:: + attackcanceler + attackstring + ppreduce + attackanimation + waitanimation + orword gHitMarker, HITMARKER_x8000000 + setbide + goto BattleScript_MoveEnd + +BattleScript_EffectRampage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE + ppreduce +BattleScript_82D8DAE:: + confuseifrepeatingattackends + goto BattleScript_HitFromCritCalc + +BattleScript_EffectRoar:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_82DB5B9 + jumpifstatus3 TARGET, STATUS3_ROOTED, 0x0, BattleScript_82DB109 + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed + forcerandomswitch BattleScript_ButItFailed + +BattleScript_EffectMultiHit:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setmultihitcounter 0x0 + initmultihitstring + setbyte sFIELD_16, 0x0 +BattleScript_82D8DFD:: + jumpifhasnohp ATTACKER, BattleScript_82D8E93 + jumpifhasnohp TARGET, BattleScript_82D8E74 + jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D8E1F + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74 +BattleScript_82D8E1F:: + movevaluescleanup + copyarray cEFFECT_CHOOSER, sFIELD_16, 0x1 + critcalc + damagecalc + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8E71 + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 0x1 + addbyte sMULTIHIT_STRING + 4, 0x1 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D8E74 + decrementmultihit BattleScript_82D8DFD + goto BattleScript_82D8E74 + +BattleScript_82D8E71:: + pause 0x20 +BattleScript_82D8E74:: + resultmessage + waitmessage 0x40 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8E93 + copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 + printstring STRINGID_HITXTIMES + waitmessage 0x40 +BattleScript_82D8E93:: + seteffectwithchance + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0x2 + moveend 0x1, 0x0 + setbyte sMOVEEND_STATE, 0x4 + moveend 0x0, 0x0 + end + +BattleScript_EffectConversion:: + attackcanceler + attackstring + ppreduce + tryconversiontypechange BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCHANGEDTYPE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFlinchHit:: + setmoveeffect EFFECT_FLINCH + goto BattleScript_EffectHit + +BattleScript_EffectRestoreHp:: + attackcanceler + attackstring + ppreduce + tryhealhalfhealth BattleScript_AlreadyAtFullHp, ATTACKER + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectToxic:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_82D8F63 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed + jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected + jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_TOXIC + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyPoisoned:: + various ATTACKER, 0x17 + pause 0x40 + printstring STRINGID_PKMNALREADYPOISONED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D8F63:: + copyarray gEffectBank, gBankTarget, 0x1 + setbyte cMULTISTRING_CHOOSER, 0x0 + call BattleScript_PSNPrevention + goto BattleScript_MoveEnd + +BattleScript_EffectPayDay:: + setmoveeffect EFFECT_PAYDAY + goto BattleScript_EffectHit + +BattleScript_EffectLightScreen:: + attackcanceler + attackstring + ppreduce + setlightscreen + goto BattleScript_82D928C + +BattleScript_EffectTriAttack:: + setmoveeffect EFFECT_TRI_ATTACK + goto BattleScript_EffectHit + +BattleScript_EffectRest:: + attackcanceler + attackstring + ppreduce + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8FD6 + jumpifcantmakeasleep BattleScript_82D8FC6 + trysetrest BattleScript_AlreadyAtFullHp + pause 0x20 + printfromtable 0x85CC882 + waitmessage 0x40 + updatestatusicon ATTACKER + waitstate + goto BattleScript_PresentHealTarget + +BattleScript_82D8FC6:: + pause 0x40 + printfromtable 0x85CC896 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D8FD6:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNALREADYASLEEP2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectOhko:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_HitFromAtkAnimation + tryKO BattleScript_82D9008 + trysetdestinybondtohappen + goto BattleScript_HitFromAtkAnimation + +BattleScript_82D9008:: + pause 0x40 + printfromtable 0x85CC8F4 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRazorWind:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + setbyte sFIELD_F, 0x0 + call BattleScript_82D906F + goto BattleScript_MoveEnd + +BattleScript_82D9040:: + attackcanceler + setmoveeffect EFFECT_CHARGING + setbyte sANIM_TURN, 0x1 + clearstatusfromeffect ATTACKER + orword gHitMarker, HITMARKER_NO_PPDEDUCT + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck + setmoveeffect EFFECT_FLINCH + goto BattleScript_HitFromAccCheck + +BattleScript_82D906F:: + attackcanceler + printstring STRINGID_EMPTYSTRING3 + ppreduce + attackanimation + waitanimation + orword gHitMarker, HITMARKER_x8000000 + setmoveeffect EFFECT_CHARGING | AFFECTS_USER + seteffectprimary + copyarray cMULTISTRING_CHOOSER, sFIELD_F, 0x1 + printfromtable 0x85CC8B0 + waitmessage 0x40 + return + +BattleScript_EffectSuperFang:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + damagetohalftargethp + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectDragonRage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + setbyte gBattleMoveDamage, 0x28 + setbyte gBattleMoveDamage + 1, 0x0 + setbyte gBattleMoveDamage + 2, 0x0 + setbyte gBattleMoveDamage + 3, 0x0 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectTrap:: + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_WHIRLPOOL, BattleScript_82D9105 + jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_82D9105 + orword gHitMarker, HITMARKER_IGNORE_UNDERWATER + setbyte sDMG_MULTIPLIER, 0x2 +BattleScript_82D9105:: + setmoveeffect EFFECT_WRAP + goto BattleScript_EffectHit + +BattleScript_EffectDoubleHit:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setmultihitcounter 0x2 + initmultihitstring + setbyte sFIELD_16, 0x0 + goto BattleScript_82D8DFD + +BattleScript_EffectRecoilIfMiss:: + attackcanceler + accuracycheck BattleScript_82D9135, ACC_CURR_MOVE + goto BattleScript_HitFromAtkString + +BattleScript_82D9135:: + attackstring + ppreduce + pause 0x40 + resultmessage + waitmessage 0x40 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_MoveEnd + printstring STRINGID_PKMNCRASHED + waitmessage 0x40 + damagecalc + typecalc + adjustnormaldamage + manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + orbyte gBattleMoveFlags, MOVESTATUS_MISSED + goto BattleScript_MoveEnd + +BattleScript_EffectMist:: + attackcanceler + attackstring + ppreduce + setmist + attackanimation + waitanimation + printfromtable 0x85CC8CC + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFocusEnergy:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed + setfocusenergy + attackanimation + waitanimation + printfromtable 0x85CC8D0 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRecoil:: + setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_EffectHit + incrementgamestat 0x1B + goto BattleScript_EffectHit + +BattleScript_EffectConfuse:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82D9201 + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_CONFUSION + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D9201:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNALREADYCONFUSED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackUp2:: + setstatchanger ATK, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectDefenseUp2:: + setstatchanger DEF, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpeedUp2:: + setstatchanger SPEED, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialAttackUp2:: + setstatchanger SPATK, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialDefenseUp2:: + setstatchanger SPDEF, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectTransform:: + attackcanceler + attackstring + ppreduce + transformdataexecution + attackanimation + waitanimation + printfromtable 0x85CC8D4 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackDown2:: + setstatchanger ATK, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectDefenseDown2:: + setstatchanger DEF, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpeedDown2:: + setstatchanger SPEED, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpecialDefenseDown2:: + setstatchanger SPDEF, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectReflect:: + attackcanceler + attackstring + ppreduce + setreflect +BattleScript_82D928C:: + attackanimation + waitanimation + printfromtable 0x85CC86C + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPoison:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_82D8F63 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected + jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected + jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_POISON + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectParalyze:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_LIMBER, BattleScript_82D9362 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_82D9351 + jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_PARALYSIS + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D9351:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNISALREADYPARALYZED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D9362:: + copyarray gEffectBank, gBankTarget, 0x1 + setbyte cMULTISTRING_CHOOSER, 0x0 + call BattleScript_PRLZPrevention + goto BattleScript_MoveEnd + +BattleScript_EffectAttackDownHit:: + setmoveeffect EFFECT_ATK_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectDefenseDownHit:: + setmoveeffect EFFECT_DEF_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpeedDownHit:: + setmoveeffect EFFECT_SPD_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpecialAttackDownHit:: + setmoveeffect EFFECT_SP_ATK_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpecialDefenseDownHit:: + setmoveeffect EFFECT_SP_DEF_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectAccuracyDownHit:: + setmoveeffect EFFECT_ACC_MINUS_1 + goto BattleScript_EffectHit + + +BattleScript_EffectSkyAttack:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + setbyte sFIELD_F, 0x3 + call BattleScript_82D906F + goto BattleScript_MoveEnd + +BattleScript_EffectConfuseHit:: + setmoveeffect EFFECT_CONFUSION + goto BattleScript_EffectHit + +BattleScript_EffectTwineedle:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setbyte sFIELD_16, 0x2 + attackstring + ppreduce + setmultihitcounter 0x2 + initmultihitstring + goto BattleScript_82D8DFD + +BattleScript_EffectSubstitute:: + attackcanceler + ppreduce + attackstring + waitstate + jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_82D943E + setsubstitute + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D942B + pause 0x20 + goto BattleScript_82D9431 + +BattleScript_82D942B:: + attackanimation + waitanimation + healthbarupdate ATTACKER + datahpupdate ATTACKER +BattleScript_82D9431:: + printfromtable 0x85CC8D8 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D943E:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNHASSUBSTITUTE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRecharge:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setmoveeffect EFFECT_RECHARGE | AFFECTS_USER | CERTAIN + goto BattleScript_HitFromAtkString + +BattleScript_MoveUsedMustRecharge:: + printstring STRINGID_PKMNMUSTRECHARGE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRage:: + attackcanceler + accuracycheck BattleScript_82D9487, ACC_CURR_MOVE + setmoveeffect EFFECT_RAGE + seteffectprimary + setmoveeffect 0 + goto BattleScript_HitFromAtkString + +BattleScript_82D9487:: + setmoveeffect EFFECT_RAGE + clearstatusfromeffect ATTACKER + goto BattleScript_PrintMoveMissed + +BattleScript_EffectMimic:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + mimicattackcopy BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNLEARNEDMOVE2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMetronome:: + attackcanceler + attackstring + pause 0x20 + attackanimation + waitanimation + setbyte sANIM_TURN, 0x0 + setbyte sANIM_TARGETS_HIT, 0x0 + metronome +BattleScript_EffectLeechSeed:: + attackcanceler + attackstring + pause 0x20 + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_82D94E5, ACC_CURR_MOVE +BattleScript_82D94E5:: + setseeded + attackanimation + waitanimation + printfromtable 0x85CC878 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSplash:: + attackcanceler + attackstring + ppreduce + attackanimation + waitanimation + incrementgamestat 0x1A + printstring STRINGID_BUTNOTHINGHAPPENED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectDisable:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + disablelastusedattack BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNMOVEWASDISABLED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectLevelDamage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + dmgtolevel + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectPsywave:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + psywavedamageeffect + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectCounter:: + attackcanceler + counterdamagecalculator BattleScript_ButItFailedAtkStringPpReduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc2 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectEncore:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + trysetencore BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNGOTENCORE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPainSplit:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + painsplitdmgcalc BattleScript_ButItFailed + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + copyarray gBattleMoveDamage, sPAINSPLIT_HP, 0x4 + healthbarupdate TARGET + datahpupdate TARGET + printstring STRINGID_SHAREDPAIN + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSnore:: + attackcanceler + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D95CE + attackstring + ppreduce + goto BattleScript_ButItFailed + +BattleScript_82D95CE:: + jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D95E2 + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation ATTACKER +BattleScript_82D95E2:: + attackstring + ppreduce + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + setmoveeffect EFFECT_FLINCH + goto BattleScript_HitFromCritCalc + +BattleScript_EffectConversion2:: + attackcanceler + attackstring + ppreduce + settypetorandomresistance BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCHANGEDTYPE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectLockOn:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + setalwayshitflag + attackanimation + waitanimation + printstring STRINGID_PKMNTOOKAIM + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSketch:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + copymovepermanently BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSKETCHEDMOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSleepTalk:: + attackcanceler + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D965E + attackstring + ppreduce + goto BattleScript_ButItFailed + +BattleScript_82D965E:: + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation ATTACKER + attackstring + ppreduce + orword gHitMarker, HITMARKER_NO_PPDEDUCT + sleeptalk_choose_move BattleScript_82D967E + pause 0x40 + goto BattleScript_ButItFailed + +BattleScript_82D967E:: + attackanimation + waitanimation + setbyte sANIM_TURN, 0x0 + setbyte sANIM_TARGETS_HIT, 0x0 + jumptorandomattack 0x1 + +BattleScript_EffectDestinyBond:: + attackcanceler + attackstring + ppreduce + setdestinybond + attackanimation + waitanimation + printstring STRINGID_PKMNTRYINGTOTAKEFOE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFlail:: + remaininghptopower + goto BattleScript_EffectHit + +BattleScript_EffectSpite:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + tryspiteppreduce BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNREDUCEDPP + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectHealBell:: + attackcanceler + attackstring + ppreduce + healpartystatus + waitstate + attackanimation + waitanimation + printfromtable 0x85CC904 + waitmessage 0x40 + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_HEAL_BELL, BattleScript_82D96FE + jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED + printstring STRINGID_PKMNSXBLOCKSY + waitmessage 0x40 +BattleScript_82D96ED:: + jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D96FE + printstring STRINGID_PKMNSXBLOCKSY2 + waitmessage 0x40 +BattleScript_82D96FE:: + updatestatusicon ATTACKER_WITH_PARTNER + waitstate + goto BattleScript_MoveEnd + +BattleScript_EffectTripleKick:: + attackcanceler + attackstring + ppreduce + setbyte sTRIPLE_KICK_POWER, 0x0 + setbyte sFIELD_13, 0x0 + initmultihitstring + setmultihit 0x3 +BattleScript_82D9718:: + jumpifhasnohp ATTACKER, BattleScript_82D97D7 + jumpifhasnohp TARGET, BattleScript_82D9799 + jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D973A + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D9799 +BattleScript_82D973A:: + accuracycheck BattleScript_82D9799, ACC_CURR_MOVE + movevaluescleanup + addbyte sTRIPLE_KICK_POWER, 0xA + addbyte sMULTIHIT_STRING + 4, 0x1 + copyarray gDynamicBasePower, sTRIPLE_KICK_POWER, 0x2 + critcalc + damagecalc + typecalc + adjustnormaldamage + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D9799 + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 0x1 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D97AD + decrementmultihit BattleScript_82D9718 + goto BattleScript_82D97AD + +BattleScript_82D9799:: + pause 0x20 + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97AD + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED +BattleScript_82D97AD:: + resultmessage + waitmessage 0x40 + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97D7 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_82D97D7 + copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 + printstring STRINGID_HITXTIMES + waitmessage 0x40 +BattleScript_82D97D7:: + seteffectwithchance + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0xE + moveend 0x0, 0x0 + end + +BattleScript_EffectThief:: + setmoveeffect EFFECT_STEAL_ITEM + goto BattleScript_EffectHit + +BattleScript_EffectMeanLook:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC + jumpifstatus2 TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + attackanimation + waitanimation + setmoveeffect EFFECT_PREVENT_ESCAPE + seteffectprimary + printstring STRINGID_TARGETCANTESCAPENOW + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectNightmare:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_SLEEP, BattleScript_NightmareWorked + goto BattleScript_ButItFailed + +BattleScript_NightmareWorked:: + attackanimation + waitanimation + setmoveeffect EFFECT_NIGHTMARE + seteffectprimary + printstring STRINGID_PKMNFELLINTONIGHTMARE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMinimize:: + attackcanceler + setminimize + setstatchanger EVASION, 1, FALSE + goto BattleScript_EffectStatUpAfterAtkCanceler + +BattleScript_EffectCurse:: + jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_82D98E5 + attackcanceler + attackstring + ppreduce + jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_82D9892 + jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_82D9892 + jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed +BattleScript_82D9892:: + copyarray gBankTarget, gBankAttacker, 0x1 + setbyte sANIM_TURN, 0x1 + attackanimation + waitanimation + setstatchanger SPEED, 1, TRUE + statbuffchange 0x41, BattleScript_82D98B8 + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82D98B8:: + setstatchanger ATK, 1, FALSE + statbuffchange 0x41, BattleScript_82D98CC + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82D98CC:: + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82D98E0 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82D98E0:: + goto BattleScript_MoveEnd + +BattleScript_82D98E5:: + jumpifarraynotequal gBankAttacker, gBankTarget, 0x1, BattleScript_82D98F6 + various ATTACKER, VARIOUS_GET_MOVE_TARGET +BattleScript_82D98F6:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + cursetarget BattleScript_ButItFailed + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + setbyte sANIM_TURN, 0x0 + attackanimation + waitanimation + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNLAIDCURSE + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectProtect:: + attackcanceler + attackstring + ppreduce + setprotectlike + attackanimation + waitanimation + printfromtable 0x85CC866 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSpikes:: + attackcanceler + trysetspikes BattleScript_ButItFailedAtkStringPpReduce + attackstring + ppreduce + attackanimation + waitanimation + printstring STRINGID_SPIKESSCATTERED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectForesight:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setforesight + attackanimation + waitanimation + printstring STRINGID_PKMNIDENTIFIED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPerishSong:: + attackcanceler + attackstring + ppreduce + trysetperishsong BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_FAINTINTHREE + waitmessage 0x40 + setbyte sBANK, 0x0 +BattleScript_PerishSongLoop:: + jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected +BattleScript_PerishSongLoopIncrement:: + addbyte sBANK, 0x1 + jumpifarraynotequal sBANK, gNoOfAllBanks, 0x1, BattleScript_PerishSongLoop + goto BattleScript_MoveEnd + +BattleScript_PerishSongNotAffected:: + printstring STRINGID_PKMNSXBLOCKSY2 + waitmessage 0x40 + goto BattleScript_PerishSongLoopIncrement + +BattleScript_EffectSandstorm:: + attackcanceler + attackstring + ppreduce + setsandstorm + goto BattleScript_82D9B41 + +BattleScript_EffectRollout:: + attackcanceler + attackstring + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D99CD + ppreduce +BattleScript_82D99CD:: + accuracycheck BattleScript_82D99D4, ACC_CURR_MOVE +BattleScript_82D99D4:: + typecalc2 + rolloutdamagecalculation + goto BattleScript_HitFromCritCalc + +BattleScript_EffectSwagger:: + attackcanceler + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + jumpifconfusedandstatmaxed ATK, BattleScript_ButItFailed + attackanimation + waitanimation + setstatchanger ATK, 2, FALSE + statbuffchange 0x1, BattleScript_82D9A1E + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9A1E + setgraphicalstatchangevalues + playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82D9A1E:: + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + setmoveeffect EFFECT_CONFUSION + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_EffectFuryCutter:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_82D9A43, ACC_CURR_MOVE +BattleScript_82D9A43:: + furycuttercalc + critcalc + damagecalc + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D9A43 + adjustnormaldamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectAttract:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + tryinfatuating BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNFELLINLOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectReturn:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + happinesstodamagecalculation + goto BattleScript_HitFromAtkString + +BattleScript_EffectPresent:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + presentdamagecalculation +BattleScript_EffectSafeguard:: + attackcanceler + attackstring + ppreduce + setsafeguard + goto BattleScript_82D928C + +BattleScript_EffectThawHit:: + setmoveeffect EFFECT_BURN + goto BattleScript_EffectHit + +BattleScript_EffectMagnitude:: + attackcanceler + attackstring + ppreduce + selectfirstvalidtarget + magnitudedamagecalculation + pause 0x20 + printstring STRINGID_MAGNITUDESTRENGTH + waitmessage 0x40 + goto BattleScript_82D9C44 + +BattleScript_EffectBatonPass:: + attackcanceler + attackstring + ppreduce + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed + jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | ATTACKER, BattleScript_ButItFailed + attackanimation + waitanimation + openpartyscreen 0x1, BattleScript_ButItFailed + switchoutabilities ATTACKER + waitstate + switchhandleorder ATTACKER, 0x2 + returntoball ATTACKER + getswitchedmondata ATTACKER + switchindataupdate ATTACKER + hpthresholds ATTACKER + printstring STRINGID_SWITCHINMON + switchinanim ATTACKER, 0x1 + waitstate + switchineffects ATTACKER + goto BattleScript_MoveEnd + +BattleScript_EffectRapidSpin:: + setmoveeffect EFFECT_RAPIDSPIN | AFFECTS_USER | CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectSonicboom:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + setbyte gBattleMoveDamage, 0x14 + setbyte gBattleMoveDamage + 1, 0x0 + setbyte gBattleMoveDamage + 2, 0x0 + setbyte gBattleMoveDamage + 3, 0x0 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectMorningSun:: + attackcanceler + attackstring + ppreduce + recoverbasedonsunlight BattleScript_AlreadyAtFullHp + goto BattleScript_PresentHealTarget + +BattleScript_EffectHiddenPower:: + hiddenpowercalc + goto BattleScript_EffectHit + +BattleScript_EffectRainDance:: + attackcanceler + attackstring + ppreduce + setrain +BattleScript_82D9B41:: + attackanimation + waitanimation + printfromtable 0x85CC848 + waitmessage 0x40 + call BattleScript_82DB48D + goto BattleScript_MoveEnd + +BattleScript_EffectSunnyDay:: + attackcanceler + attackstring + ppreduce + setsunny + goto BattleScript_82D9B41 + +BattleScript_EffectDefenseUpHit:: + setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectAttackUpHit:: + setmoveeffect EFFECT_ATK_PLUS_1 | AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectAllStatsUpHit:: + setmoveeffect EFFECT_ALL_STATS_UP | AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectBellyDrum:: + attackcanceler + attackstring + ppreduce + maxattackhalvehp BattleScript_ButItFailed + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + attackanimation + waitanimation + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNCUTHPMAXEDATTACK + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPsychUp:: + attackcanceler + attackstring + ppreduce + copyfoestats BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCOPIEDSTATCHANGES + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMirrorCoat:: + attackcanceler + mirrorcoatdamagecalculator BattleScript_ButItFailedAtkStringPpReduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc2 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectSkullBash:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + setbyte sFIELD_F, 0x2 + call BattleScript_82D906F + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82D9C16 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16 + setgraphicalstatchangevalues + playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82D9C16:: + goto BattleScript_MoveEnd + +BattleScript_EffectTwister:: + jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_82D9C35 + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + setbyte sDMG_MULTIPLIER, 0x2 +BattleScript_82D9C35:: + setmoveeffect EFFECT_FLINCH + goto BattleScript_EffectHit + +BattleScript_EffectEarthquake:: + attackcanceler + attackstring + ppreduce + selectfirstvalidtarget +BattleScript_82D9C44:: + movevaluescleanup + jumpifstatus3 TARGET, STATUS3_UNDERGROUND, 0x1, BattleScript_82D9C64 + orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_82D9C73 + +BattleScript_82D9C64:: + bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 0x1 +BattleScript_82D9C73:: + accuracycheck BattleScript_82D9CAC, ACC_CURR_MOVE + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 0x1 + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifnexttargetvalid BattleScript_82D9C44 + end + +BattleScript_82D9CAC:: + pause 0x20 + typecalc + effectivenesssound + resultmessage + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifnexttargetvalid BattleScript_82D9C44 + end + +BattleScript_EffectFutureSight:: + attackcanceler + attackstring + ppreduce + trysetfutureattack BattleScript_ButItFailed + attackanimation + waitanimation + printfromtable 0x85CC90E + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectGust:: + jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_EffectHit + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_EffectHit + +BattleScript_EffectStomp:: + jumpifstatus3 TARGET, STATUS3_MINIMIZED, 0x1, BattleScript_82D9C35 + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_82D9C35 + +BattleScript_EffectSolarbeam:: + jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_82D9D28 + jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_82D9D28 + jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_82D9D50 +BattleScript_82D9D28:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + setbyte sFIELD_F, 0x1 + call BattleScript_82D906F + goto BattleScript_MoveEnd + +BattleScript_82D9D50:: + orword gHitMarker, HITMARKER_x8000000 + setmoveeffect EFFECT_CHARGING | AFFECTS_USER + seteffectprimary + ppreduce + goto BattleScript_82D9040 + +BattleScript_EffectThunder:: + setmoveeffect EFFECT_PARALYSIS + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + goto BattleScript_EffectHit + +BattleScript_EffectTeleport:: + attackcanceler + attackstring + ppreduce + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_ButItFailed + various ATTACKER, VARIOUS_IS_RUNNING_IMPOSSIBLE + jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed + jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_82DA382 + attackanimation + waitanimation + printstring STRINGID_PKMNFLEDFROMBATTLE + waitmessage 0x40 + various ATTACKER, VARIOUS_SET_TELEPORT_OUTCOME + goto BattleScript_MoveEnd + +BattleScript_EffectBeatUp:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + pause 0x20 + ppreduce + setbyte gBattleCommunication, 0x0 +BattleScript_BeatUpLoop:: + movevaluescleanup + trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed + printstring STRINGID_PKMNATTACK + critcalc + jumpifbyte NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack + manipulatedamage ATK80_DMG_DOUBLED +BattleScript_BeatUpAttack:: + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + goto BattleScript_BeatUpLoop + +BattleScript_BeatUpEnd:: + end + +BattleScript_EffectFly:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9E79 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9E79 + jumpifhalfword EQUAL, gCurrentMove, MOVE_FLY, BattleScript_82D9E68 + jumpifhalfword EQUAL, gCurrentMove, MOVE_DIVE, BattleScript_82D9E5D + jumpifhalfword EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9E52 + setbyte sFIELD_F, 0x5 + goto BattleScript_82D9E6E + +BattleScript_82D9E52:: + setbyte sFIELD_F, 0x7 + goto BattleScript_82D9E6E + +BattleScript_82D9E5D:: + setbyte sFIELD_F, 0x6 + goto BattleScript_82D9E6E + +BattleScript_82D9E68:: + setbyte sFIELD_F, 0x4 +BattleScript_82D9E6E:: + call BattleScript_82D906F + setsemiinvulnerablebit + goto BattleScript_MoveEnd + +BattleScript_82D9E79:: + attackcanceler + setmoveeffect EFFECT_CHARGING + setbyte sANIM_TURN, 0x1 + clearstatusfromeffect ATTACKER + orword gHitMarker, HITMARKER_NO_PPDEDUCT + jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9EA3 + setmoveeffect EFFECT_PARALYSIS +BattleScript_82D9EA3:: + accuracycheck BattleScript_82D9EB0, ACC_CURR_MOVE + clearsemiinvulnerablebit + goto BattleScript_HitFromAtkString + +BattleScript_82D9EB0:: + clearsemiinvulnerablebit + goto BattleScript_PrintMoveMissed + +BattleScript_EffectDefenseCurl:: + attackcanceler + attackstring + ppreduce + setdefensecurlbit + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82D9ED3 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8CC7 + attackanimation + waitanimation +BattleScript_82D9ED3:: + goto BattleScript_82D8CBF + +BattleScript_EffectSoftboiled:: + attackcanceler + attackstring + ppreduce + tryhealhalfhealth BattleScript_AlreadyAtFullHp, TARGET +BattleScript_PresentHealTarget:: + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate TARGET + datahpupdate TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyAtFullHp:: + pause 0x20 + printstring STRINGID_PKMNHPFULL + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFakeOut:: + attackcanceler + jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce + setmoveeffect EFFECT_FLINCH | CERTAIN + goto BattleScript_EffectHit + +BattleScript_ButItFailedAtkStringPpReduce:: + attackstring +BattleScript_ButItFailedPpReduce:: + ppreduce +BattleScript_ButItFailed:: + pause 0x20 + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_NotAffected:: + pause 0x20 + orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectUproar:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setmoveeffect EFFECT_UPROAR | AFFECTS_USER + attackstring + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9F5A + ppreduce +BattleScript_82D9F5A:: + nop + goto BattleScript_HitFromCritCalc + +BattleScript_EffectStockpile:: + attackcanceler + attackstring + ppreduce + stockpile + attackanimation + waitanimation + printfromtable 0x85CC88A + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSpitUp:: + attackcanceler + jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2 + attackstring + ppreduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + stockpiletobasedamage BattleScript_SpitUpFail + typecalc + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_SpitUpFail:: + pause 0x20 + printstring STRINGID_FAILEDTOSPITUP + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82D9FA2:: + attackstring + ppreduce + pause 0x40 + stockpiletobasedamage BattleScript_SpitUpFail + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSwallow:: + attackcanceler + attackstring + ppreduce + stockpiletohpheal BattleScript_SwallowFail + goto BattleScript_PresentHealTarget + +BattleScript_SwallowFail:: + pause 0x20 + printfromtable 0x85CC892 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectHail:: + attackcanceler + attackstring + ppreduce + sethail + goto BattleScript_82D9B41 + +BattleScript_EffectTorment:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + settorment BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSUBJECTEDTOTORMENT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFlatter:: + attackcanceler + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + jumpifconfusedandstatmaxed SPATK, BattleScript_ButItFailed + attackanimation + waitanimation + setstatchanger SPATK, 1, FALSE + statbuffchange 0x1, BattleScript_82DA03A + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA03A + setgraphicalstatchangevalues + playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA03A:: + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + setmoveeffect EFFECT_CONFUSION + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_EffectWillOWisp:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_BURN, BattleScript_82DA0BB + jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected + jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_82DA0A1 + jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + attackanimation + waitanimation + setmoveeffect EFFECT_BURN + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_82DA0A1:: + copyarray gEffectBank, gBankTarget, 0x1 + setbyte cMULTISTRING_CHOOSER, 0x0 + call BattleScript_BRNPrevention + goto BattleScript_MoveEnd + +BattleScript_82DA0BB:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNALREADYHASBURN + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMemento:: + attackcanceler + jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153 + attackstring + ppreduce + jumpifattackandspecialattackcannotfall BattleScript_ButItFailed + setatkhptozero + attackanimation + waitanimation + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148 + setbyte sFIELD_1B, 0x0 + playstatchangeanimation TARGET, 0x12, 0x7 + playstatchangeanimation TARGET, 0x2, 0x3 + setstatchanger ATK, 2, TRUE + statbuffchange 0x1, BattleScript_82DA119 + jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119 + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DA119:: + playstatchangeanimation TARGET, 0x10, 0x3 + setstatchanger SPATK, 2, TRUE + statbuffchange 0x1, BattleScript_82DA13C + jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DA13C:: + tryfaintmon ATTACKER, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_82DA148:: + printstring STRINGID_BUTNOEFFECT + waitmessage 0x40 + goto BattleScript_82DA13C + +BattleScript_82DA153:: + attackstring + ppreduce + jumpifattackandspecialattackcannotfall BattleScript_82DA15A +BattleScript_82DA15A:: + setatkhptozero + pause 0x40 + effectivenesssound + resultmessage + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectFacade:: + jumpifstatus ATTACKER, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON, BattleScript_FacadeDoubleDmg + goto BattleScript_EffectHit + +BattleScript_FacadeDoubleDmg:: + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_EffectHit + +BattleScript_EffectFocusPunch:: + attackcanceler + jumpifnodamage BattleScript_HitFromAccCheck + ppreduce + printstring STRINGID_PKMNLOSTFOCUS + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSmellingsalt:: + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit + setmoveeffect EFFECT_REMOVE_PARALYSIS | CERTAIN + jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_82DA1BA + goto BattleScript_EffectHit + +BattleScript_82DA1BA:: + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_EffectHit + +BattleScript_EffectFollowMe:: + attackcanceler + attackstring + ppreduce + setforcedtarget + attackanimation + waitanimation + printstring STRINGID_PKMNCENTERATTENTION + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectNaturePower:: + attackcanceler + attackstring + pause 0x20 + callterrainattack + printstring STRINGID_NATUREPOWERTURNEDINTO + waitmessage 0x40 + return + +BattleScript_EffectCharge:: + attackcanceler + attackstring + ppreduce + setcharge + attackanimation + waitanimation + printstring STRINGID_PKMNCHARGINGPOWER + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectTaunt:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + settaunt BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNFELLFORTAUNT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectHelpingHand:: + attackcanceler + attackstring + ppreduce + trysethelpinghand BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNREADYTOHELP + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectTrick:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + tryswapitems BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSWITCHEDITEMS + waitmessage 0x40 + printfromtable 0x85CC970 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRolePlay:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + trycopyability BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCOPIEDFOE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectWish:: + attackcanceler + attackstring + ppreduce + trywish 0x0, BattleScript_ButItFailed + attackanimation + waitanimation + goto BattleScript_MoveEnd + +BattleScript_EffectAssist:: + attackcanceler + attackstring + asistattackselect BattleScript_ButItFailedPpReduce + attackanimation + waitanimation + setbyte sANIM_TURN, 0x0 + setbyte sANIM_TARGETS_HIT, 0x0 + jumptorandomattack 0x1 + +BattleScript_EffectIngrain:: + attackcanceler + attackstring + ppreduce + trysetroots BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNPLANTEDROOTS + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSuperpower:: + setmoveeffect EFFECT_ATK_DEF_DOWN | AFFECTS_USER | CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectMagicCoat:: + attackcanceler + trysetmagiccoat BattleScript_ButItFailedAtkStringPpReduce + attackstring + ppreduce + attackanimation + waitanimation + printstring STRINGID_PKMNSHROUDEDITSELF + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRecycle:: + attackcanceler + attackstring + ppreduce + tryrecycleitem BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_XFOUNDONEY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRevenge:: + doubledamagedealtifdamaged + goto BattleScript_EffectHit + +BattleScript_EffectBrickBreak:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + removelightscreenreflect + critcalc + damagecalc + typecalc + adjustnormaldamage + jumpifbyte EQUAL, sANIM_TURN, 0x0, BattleScript_82DA306 + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED +BattleScript_82DA306:: + attackanimation + waitanimation + jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_82DA319 + printstring STRINGID_THEWALLSHATTERED + waitmessage 0x40 +BattleScript_82DA319:: + typecalc2 + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + seteffectwithchance + tryfaintmon TARGET, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectYawn:: + attackcanceler + attackstring + ppreduce + jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_82DA378 + jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_82DA378 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + jumpifcantmakeasleep BattleScript_ButItFailed + setyawn BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNWASMADEDROWSY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DA378:: + copyarray sBANK, sFIELD_15, 0x1 +BattleScript_82DA382:: + pause 0x20 + printstring STRINGID_PKMNSXMADEITINEFFECTIVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectKnockOff:: + setmoveeffect EFFECT_KNOCK_OFF + goto BattleScript_EffectHit + +BattleScript_EffectEndeavor:: + attackcanceler + attackstring + ppreduce + setdamagetohealthdifference BattleScript_ButItFailed + copyarray gHpDealt, gBattleMoveDamage, 0x4 + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_HitFromAtkAnimation + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + copyarray gBattleMoveDamage, gHpDealt, 0x4 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectEruption:: + scaledamagebyhealthratio + goto BattleScript_EffectHit + + + + +BattleScript_EffectSkillSwap:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + tryswapabilities BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSWAPPEDABILITIES + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectImprison:: + attackcanceler + attackstring + ppreduce + tryimprision BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSEALEDOPPONENTMOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRefresh:: + attackcanceler + attackstring + ppreduce + cureifburnedparalysedorpoisoned BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSTATUSNORMAL + waitmessage 0x40 + updatestatusicon ATTACKER + goto BattleScript_MoveEnd + +BattleScript_EffectGrudge:: + attackcanceler + attackstring + ppreduce + trysetgrudge BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNWANTSGRUDGE + waitmessage 0x40 + goto BattleScript_MoveEnd + + +BattleScript_EffectSnatch:: + attackcanceler + trysetsnatch BattleScript_ButItFailedAtkStringPpReduce + attackstring + ppreduce + attackanimation + waitanimation + pause 0x20 + printstring STRINGID_PKMNWAITSFORTARGET + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectLowKick:: + attackcanceler + attackstring + ppreduce + weightdamagecalculation + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + goto BattleScript_HitFromCritCalc + +BattleScript_EffectSecretPower:: + getsecretpowereffect + goto BattleScript_EffectHit + +BattleScript_EffectDoubleEdge:: + setmoveeffect EFFECT_RECOIL_33_PARALYSIS | AFFECTS_USER | CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectTeeterDance:: + attackcanceler + attackstring + ppreduce + setbyte gBankTarget, 0x0 +BattleScript_82DA47B:: + movevaluescleanup + setmoveeffect EFFECT_CONFUSION + jumpifarrayequal gBankAttacker, gBankTarget, 0x1, BattleScript_82DA4D0 + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DA4E5 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA501 + jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82DA50F + jumpifhasnohp TARGET, BattleScript_82DA4D0 + accuracycheck BattleScript_82DA520, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DA4F3 + attackanimation + waitanimation + seteffectprimary + resultmessage + waitmessage 0x40 +BattleScript_82DA4C7:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 +BattleScript_82DA4D0:: + addbyte gBankTarget, 0x1 + jumpifarraynotequal gBankTarget, gNoOfAllBanks, 0x1, BattleScript_82DA47B + end + +BattleScript_82DA4E5:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA4F3:: + pause 0x20 + printstring STRINGID_PKMNUSEDSAFEGUARD + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA501:: + pause 0x20 + printstring STRINGID_BUTITFAILED + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA50F:: + various ATTACKER, 0x17 + pause 0x20 + printstring STRINGID_PKMNALREADYCONFUSED + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA520:: + resultmessage + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_EffectMudSport:: + attackcanceler + attackstring + ppreduce + settypebasedhalvers BattleScript_ButItFailed + attackanimation + waitanimation + printfromtable 0x85CC900 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPoisonFang:: + setmoveeffect EFFECT_TOXIC + goto BattleScript_EffectHit + + +BattleScript_EffectWeatherBall:: + setweatherballtype + goto BattleScript_EffectHit + +BattleScript_EffectOverheat:: + setmoveeffect EFFECT_SP_ATK_TWO_DOWN | AFFECTS_USER | CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectTickle:: + attackcanceler + attackstring + ppreduce + jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_82DA571 + jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_82DA5CF +BattleScript_82DA571:: + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + attackanimation + waitanimation + setbyte sFIELD_1B, 0x0 + playstatchangeanimation TARGET, 0x6, 0x5 + playstatchangeanimation TARGET, 0x2, 0x1 + setstatchanger ATK, 1, TRUE + statbuffchange 0x1, BattleScript_82DA5A7 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5A7 + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DA5A7:: + playstatchangeanimation TARGET, 0x4, 0x1 + setstatchanger DEF, 1, TRUE + statbuffchange 0x1, BattleScript_82DA5CA + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5CA + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DA5CA:: + goto BattleScript_MoveEnd + + +BattleScript_82DA5CF:: + pause 0x20 + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + printstring STRINGID_STATSWONTDECREASE2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectCosmicPower:: + attackcanceler + attackstring + ppreduce + jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_82DA5F8 + jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats +BattleScript_82DA5F8:: + attackanimation + waitanimation + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x24, 0x0 + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DA623 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA623:: + setstatchanger SPDEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DA642 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA642:: + goto BattleScript_MoveEnd + +BattleScript_EffectSkyUppercut:: + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + goto BattleScript_EffectHit + +BattleScript_EffectBulkUp:: + attackcanceler + attackstring + ppreduce + jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_82DA66A + jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats +BattleScript_82DA66A:: + attackanimation + waitanimation + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x6, 0x0 + setstatchanger ATK, 1, FALSE + statbuffchange 0x41, BattleScript_82DA695 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA695:: + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DA6B4 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA6B4:: + goto BattleScript_MoveEnd + +BattleScript_EffectCalmMind:: + attackcanceler + attackstring + ppreduce + jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_82DA6CE + jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats +BattleScript_82DA6CE:: + attackanimation + waitanimation + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x30, 0x0 + setstatchanger SPATK, 1, FALSE + statbuffchange 0x41, BattleScript_82DA6F9 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA6F9:: + setstatchanger SPDEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DA718 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA718:: + goto BattleScript_MoveEnd + +BattleScript_CantRaiseMultipleStats:: + pause 0x20 + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + printstring STRINGID_STATSWONTINCREASE2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectDragonDance:: + attackcanceler + attackstring + ppreduce + jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_82DA746 + jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats +BattleScript_82DA746:: + attackanimation + waitanimation + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0xA, 0x0 + setstatchanger ATK, 1, FALSE + statbuffchange 0x41, BattleScript_82DA771 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA771:: + setstatchanger SPEED, 1, FALSE + statbuffchange 0x41, BattleScript_82DA790 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DA790:: + goto BattleScript_MoveEnd + +BattleScript_EffectCamouflage:: + attackcanceler + attackstring + ppreduce + settypetoterrain BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCHANGEDTYPE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_FaintAttacker:: + playfaintcry ATTACKER + pause 0x40 + dofaintanimation ATTACKER + cleareffectsonfaint ATTACKER + printstring STRINGID_ATTACKERFAINTED + return + +BattleScript_FaintTarget:: + playfaintcry TARGET + pause 0x40 + dofaintanimation TARGET + cleareffectsonfaint TARGET + printstring STRINGID_TARGETFAINTED + return + +BattleScript_82DA7C4:: + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET + end2 + +BattleScript_82DA7CD:: + atk24 BattleScript_82DA8F6 + jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_82DA8F5 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA816 + jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_82DA816 + printstring STRINGID_USENEXTPKMN + setbyte gBattleCommunication, 0x0 + yesnobox + jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_82DA816 + jumpifplayerran BattleScript_82DA8F5 + printstring STRINGID_CANTESCAPE2 +BattleScript_82DA816:: + openpartyscreen 0x3, BattleScript_82DA8F5 + switchhandleorder GBANK_1, 0x2 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_LINK, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x2000000, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_82DA8D0 + jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_82DA8D0 + jumpifcantswitch 11, BattleScript_82DA8D0 + printstring STRINGID_ENEMYABOUTTOSWITCHPKMN + setbyte gBattleCommunication, 0x0 + yesnobox + jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_82DA8D0 + setatktoplayer0 + openpartyscreen 0x81, BattleScript_82DA8D0 + switchhandleorder ATTACKER, 0x2 + jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_82DA8D0 + atknameinbuff1 + various ATTACKER, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + hpthresholds2 ATTACKER + printstring STRINGID_RETURNMON + switchoutabilities ATTACKER + waitstate + returnatktoball + waitstate + drawpartystatussummary ATTACKER + getswitchedmondata ATTACKER + switchindataupdate ATTACKER + hpthresholds ATTACKER + printstring STRINGID_SWITCHINMON + atk62 ATTACKER + switchinanim ATTACKER, 0x0 + waitstate + switchineffects ATTACKER + resetsentmonsvalue +BattleScript_82DA8D0:: + drawpartystatussummary GBANK_1 + getswitchedmondata GBANK_1 + switchindataupdate GBANK_1 + hpthresholds GBANK_1 + printstring STRINGID_SWITCHINMON + atk62 GBANK_1 + switchinanim GBANK_1, 0x0 + waitstate + various ATTACKER, 0x7 + switchineffects GBANK_1 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DA8F5 + cancelallactions +BattleScript_82DA8F5:: + end2 + +BattleScript_82DA8F6:: + openpartyscreen 0x5, BattleScript_82DA8FC +BattleScript_82DA8FC:: + switchhandleorder GBANK_1, 0x0 + openpartyscreen 0x6, BattleScript_82DA92C + switchhandleorder GBANK_1, 0x0 +BattleScript_82DA908:: + switchhandleorder GBANK_1, 0x3 + drawpartystatussummary GBANK_1 + getswitchedmondata GBANK_1 + switchindataupdate GBANK_1 + hpthresholds GBANK_1 + printstring STRINGID_SWITCHINMON + atk62 GBANK_1 + switchinanim GBANK_1, 0x0 + waitstate + switchineffects 5 + jumpifarraynotequal gBank1, gNoOfAllBanks, 0x1, BattleScript_82DA908 +BattleScript_82DA92C:: + end2 + +BattleScript_LocalTrainerBattleWon:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DA943 + printstring STRINGID_PLAYERDEFEATEDTRAINER1 + goto BattleScript_82DA946 + +BattleScript_82DA943:: + printstring STRINGID_TWOENEMIESDEFEATED +BattleScript_82DA946:: + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1LOSETEXT + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DA963 + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT +BattleScript_82DA963:: + getmoneyreward + printstring STRINGID_PLAYERGOTMONEY + waitmessage 0x40 +BattleScript_PayDayMoneyAndPickUpItems:: + givepaydaymoney + pickup + end2 + +BattleScript_LocalBattleLost:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOME, BattleScript_82DA9BE + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_82DA9C9 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x4000000, BattleScript_82DA9C9 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_EREADER_TRAINER, BattleScript_82DA9BD + jumpifhalfword EQUAL, 0x2038BCA, 0x400, BattleScript_82DA9BD +BattleScript_82DA9B1:: + printstring STRINGID_PLAYERWHITEOUT + waitmessage 0x40 + printstring STRINGID_PLAYERWHITEOUT2 + waitmessage 0x40 +BattleScript_82DA9BD:: + end2 + +BattleScript_82DA9BE:: + jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_82DAA0A +BattleScript_82DA9C9:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA9B1 + various ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 + waitstate + various ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 + waitstate + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1WINTEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x800000, BattleScript_82DAA01 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAA0A +BattleScript_82DAA01:: + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2WINTEXT +BattleScript_82DAA0A:: + end2 + +BattleScript_82DAA0B:: + various ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 + waitstate + various ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 + waitstate + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1WINTEXT + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2WINTEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA31 + atk57 +BattleScript_82DAA31:: + waitmessage 0x40 + end2 + +BattleScript_LinkBattleWonOrLost:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER, BattleScript_82DAA5C + printstring STRINGID_BATTLEEND + waitmessage 0x40 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA58 + atk57 +BattleScript_82DAA58:: + waitmessage 0x40 + end2 + +BattleScript_82DAA5C:: + various ATTACKER, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + printstring STRINGID_BATTLEEND + waitmessage 0x40 + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1LOSETEXT + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA83 + atk57 +BattleScript_82DAA83:: + waitmessage 0x40 + end2 + +BattleScript_FrontierTrainerBattleWon:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_PayDayMoneyAndPickUpItems + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAAAB + printstring STRINGID_PLAYERDEFEATEDTRAINER1 + goto BattleScript_82DAAAE + +BattleScript_82DAAAB:: + printstring STRINGID_TWOENEMIESDEFEATED +BattleScript_82DAAAE:: + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1LOSETEXT + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT +BattleScript_82DAACB:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_PYRAMID, BattleScript_82DAADA + pickup +BattleScript_82DAADA:: + end2 + +BattleScript_SmokeBallEscape:: + playanimation ATTACKER, ANIM_SMOKEBALL_ESCAPE, NULL + printstring STRINGID_PKMNFLEDUSINGITS + waitmessage 0x40 + end2 + +BattleScript_RanAwayUsingMonAbility:: + printstring STRINGID_PKMNFLEDUSING + waitmessage 0x40 + end2 + +BattleScript_GotAwaySafely:: + printstring STRINGID_GOTAWAYSAFELY + waitmessage 0x40 + end2 + +BattleScript_WildMonFled:: + printstring STRINGID_WILDPKMNFLED + waitmessage 0x40 + end2 + +BattleScript_82DAAFE:: + printstring STRINGID_NORUNNINGFROMTRAINERS + end2 + +BattleScript_PrintFailedToRunString:: + printfromtable 0x85CC83E + waitmessage 0x40 + end2 + +BattleScript_82DAB0B:: + printselectionstringfromtable 0x85CC83E + endselectionscript + +BattleScript_82DAB11:: + printselectionstring STRINGID_BOXISFULL + endselectionscript + +BattleScript_ActionSwitch:: + hpthresholds2 ATTACKER + printstring STRINGID_RETURNMON + setbyte sDMG_MULTIPLIER, 0x2 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DAB35 + setmultihit 0x1 + goto BattleScript_82DAB37 + +BattleScript_82DAB35:: + setmultihit 0x2 +BattleScript_82DAB37:: + jumpifnopursuitswitchdmg BattleScript_82DAB44 + atk5F + trysetdestinybondtohappen + call BattleScript_82DAB77 + atk5F +BattleScript_82DAB44:: + decrementmultihit BattleScript_82DAB37 + switchoutabilities ATTACKER + waitstate + returnatktoball + waitstate + drawpartystatussummary ATTACKER + switchhandleorder ATTACKER, 0x1 + getswitchedmondata ATTACKER + switchindataupdate ATTACKER + hpthresholds ATTACKER + printstring STRINGID_SWITCHINMON + atk62 ATTACKER + switchinanim ATTACKER, 0x0 + waitstate + switchineffects ATTACKER + setbyte sMOVEEND_STATE, 0x4 + moveend 0x1, 0x0 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + end2 + +BattleScript_82DAB77:: + pause 0x20 + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + setbyte sMOVEEND_STATE, 0x3 + moveend 0x2, 0x6 + various TARGET, 0x4 + jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_82DABB8 + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET +BattleScript_82DABB8:: + return + +BattleScript_Pausex20:: + pause 0x20 + return + +BattleScript_LevelUp:: + fanfare BGM_FANFA1 + printstring STRINGID_PKMNGREWTOLV + setbyte sLVLBOX_STATE, 0x0 + drawlvlupbox + handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, TRUE + goto BattleScript_AskToLearnMove + +BattleScript_TryLearnMoveLoop:: + handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, FALSE +BattleScript_AskToLearnMove:: + buffermovetolearn + printstring STRINGID_TRYTOLEARNMOVE1 + printstring STRINGID_TRYTOLEARNMOVE2 + printstring STRINGID_TRYTOLEARNMOVE3 + waitstate + setbyte sLEARNMOVE_STATE, 0x0 + yesnoboxlearnmove BattleScript_ForgotAndLearnedNewMove + printstring STRINGID_STOPLEARNINGMOVE + waitstate + setbyte sLEARNMOVE_STATE, 0x0 + yesnoboxstoplearningmove BattleScript_AskToLearnMove + printstring STRINGID_DIDNOTLEARNMOVE + goto BattleScript_TryLearnMoveLoop + +BattleScript_ForgotAndLearnedNewMove:: + printstring STRINGID_123POOF + printstring STRINGID_PKMNFORGOTMOVE + printstring STRINGID_ANDELLIPSIS +BattleScript_LearnedNewMove:: + buffermovetolearn + fanfare BGM_FANFA1 + printstring STRINGID_PKMNLEARNEDMOVE + waitmessage 0x40 + various ATTACKER, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + goto BattleScript_TryLearnMoveLoop + +BattleScript_LearnMoveReturn:: + return + +BattleScript_82DAC2C:: + printfromtable 0x85CC860 + waitmessage 0x40 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DAC46 + playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL +BattleScript_82DAC46:: + end2 + +BattleScript_82DAC47:: + printfromtable 0x85CC854 + waitmessage 0x40 + playanimation2 ATTACKER, sANIM_ARG1, NULL + setbyte gBattleCommunication, 0x0 +BattleScript_82DAC5F:: + copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1 + weatherdamage + jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_82DACA0 + printfromtable 0x85CC858 + waitmessage 0x40 + orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE + effectivenesssound + hitanimation ATTACKER + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + atk24 BattleScript_82DACA0 +BattleScript_82DACA0:: + jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_82DACBF + addbyte gBattleCommunication, 0x1 + jumpifarraynotequal gBattleCommunication, gNoOfAllBanks, 0x1, BattleScript_82DAC5F +BattleScript_82DACBF:: + bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE + end2 + +BattleScript_82DACC9:: + printfromtable 0x85CC85C + waitmessage 0x40 + end2 + +BattleScript_82DACD2:: + printstring STRINGID_SUNLIGHTSTRONG + waitmessage 0x40 + playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL + end2 + +BattleScript_82DACE0:: + printstring STRINGID_SUNLIGHTFADED + waitmessage 0x40 + end2 + +BattleScript_82DACE7:: + printfromtable 0x85CC91A + waitmessage 0x40 + playanimation2 ATTACKER, sANIM_ARG1, NULL + end3 + +BattleScript_82DACFA:: + printstring STRINGID_PKMNSXWOREOFF + waitmessage 0x40 + end2 + +BattleScript_82DAD01:: + pause 0x20 + printstring STRINGID_PKMNUSEDSAFEGUARD + waitmessage 0x40 + end2 + +BattleScript_82DAD0B:: + pause 0x20 + printstring STRINGID_PKMNSAFEGUARDEXPIRED + waitmessage 0x40 + end2 + +BattleScript_LeechSeedTurnDrain:: + playanimation ATTACKER, ANIM_LEECH_SEED_DRAIN, sANIM_ARG1 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + copyarray gBattleMoveDamage, gHpDealt, 0x4 + jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_82DAD47 + manipulatedamage ATK80_DMG_CHANGE_SIGN + setbyte cMULTISTRING_CHOOSER, 0x3 + goto BattleScript_82DAD4D + +BattleScript_82DAD47:: + setbyte cMULTISTRING_CHOOSER, 0x4 +BattleScript_82DAD4D:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate TARGET + datahpupdate TARGET + printfromtable 0x85CC878 + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL + tryfaintmon TARGET, FALSE, NULL + end2 + +BattleScript_BideStoringEnergy:: + printstring STRINGID_PKMNSTORINGENERGY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_BideAttack:: + attackcanceler + setmoveeffect EFFECT_CHARGING + clearstatusfromeffect ATTACKER + printstring STRINGID_PKMNUNLEASHEDENERGY + waitmessage 0x40 + accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + copyarray gBattleMoveDamage, sBIDE_DMG, 0x4 + adjustsetdamage + setbyte sANIM_TURN, 0x1 + attackanimation + waitanimation + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_BideNoEnergyToAttack:: + attackcanceler + setmoveeffect EFFECT_CHARGING + clearstatusfromeffect ATTACKER + printstring STRINGID_PKMNUNLEASHEDENERGY + waitmessage 0x40 + goto BattleScript_ButItFailed + +BattleScript_82DADD8:: + attackanimation + waitanimation + switchoutabilities TARGET + returntoball TARGET + waitstate + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DADF1 + various ATTACKER, VARIOUS_SET_TELEPORT_OUTCOME + finishaction + +BattleScript_82DADF1:: + getswitchedmondata TARGET + switchindataupdate TARGET + switchinanim TARGET, 0x0 + waitstate + printstring STRINGID_PKMNWASDRAGGEDOUT + switchineffects TARGET + goto BattleScript_MoveEnd + +BattleScript_MistProtected:: + pause 0x20 + printstring STRINGID_PKMNPROTECTEDBYMIST + waitmessage 0x40 + return + +BattleScript_RageIsBuilding:: + printstring STRINGID_PKMNRAGEBUILDING + waitmessage 0x40 + return + +BattleScript_MoveUsedIsDisabled:: + printstring STRINGID_PKMNMOVEISDISABLED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DAE1F:: + printselectionstring STRINGID_PKMNMOVEISDISABLED + endselectionscript + +BattleScript_DisabledNoMore:: + printstring STRINGID_PKMNMOVEDISABLEDNOMORE + waitmessage 0x40 + end2 + +BattleScript_82DAE2A:: + printstring STRINGID_PKMNMOVEISDISABLED +BattleScript_82DAE2D:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + end + +BattleScript_EncoredNoMore:: + printstring STRINGID_PKMNENCOREENDED + waitmessage 0x40 + end2 + +BattleScript_DestinyBondTakesLife:: + printstring STRINGID_PKMNTOOKFOE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + return + +BattleScript_SpikesOnAttacker:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + call BattleScript_82DAEFE + tryfaintmon ATTACKER, FALSE, NULL + tryfaintmon ATTACKER, TRUE, BattleScript_82DAE7A + return + +BattleScript_82DAE7A:: + setbyte sGIVEEXP_STATE, 0x0 + getexp ATTACKER + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_SpikesOnTarget:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate TARGET + datahpupdate TARGET + call BattleScript_82DAEFE + tryfaintmon TARGET, FALSE, NULL + tryfaintmon TARGET, TRUE, BattleScript_82DAEB1 + return + +BattleScript_82DAEB1:: + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_SpikesOngBank1:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate GBANK_1 + datahpupdate GBANK_1 + call BattleScript_82DAEFE + tryfaintmon GBANK_1, FALSE, NULL + tryfaintmon GBANK_1, TRUE, BattleScript_82DAEE8 + return + +BattleScript_82DAEE8:: + setbyte sGIVEEXP_STATE, 0x0 + getexp GBANK_1 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_82DAEFE:: + printstring STRINGID_PKMNHURTBYSPIKES + waitmessage 0x40 + return + +BattleScript_82DAF05:: + printstring STRINGID_PKMNPERISHCOUNTFELL + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + end2 + +BattleScript_82DAF20:: + printstring STRINGID_PKMNPERISHCOUNTFELL + waitmessage 0x40 + end2 + +BattleScript_AllStatsUp:: + jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_82DAFC2 +BattleScript_82DAF54:: + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x3E, 0x0 + setstatchanger ATK, 1, FALSE + statbuffchange 0x41, BattleScript_82DAF72 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DAF72:: + setstatchanger DEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DAF86 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DAF86:: + setstatchanger SPEED, 1, FALSE + statbuffchange 0x41, BattleScript_82DAF9A + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DAF9A:: + setstatchanger SPATK, 1, FALSE + statbuffchange 0x41, BattleScript_82DAFAE + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DAFAE:: + setstatchanger SPDEF, 1, FALSE + statbuffchange 0x41, BattleScript_82DAFC2 + printfromtable 0x85CC89C + waitmessage 0x40 +BattleScript_82DAFC2:: + return + +BattleScript_RapidSpinAway:: + rapidspinfree + return + +BattleScript_WrapFree:: + printstring STRINGID_PKMNGOTFREE + waitmessage 0x40 + copyarray gBankTarget, sBANK, 0x1 + return + +BattleScript_LeechSeedFree:: + printstring STRINGID_PKMNSHEDLEECHSEED + waitmessage 0x40 + return + +BattleScript_SpikesFree:: + printstring STRINGID_PKMNBLEWAWAYSPIKES + waitmessage 0x40 + return + +BattleScript_82DAFE4:: + printstring STRINGID_PKMNTOOKATTACK + waitmessage 0x40 + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB001 + accuracycheck BattleScript_82DB058, MOVE_FUTURE_SIGHT + goto BattleScript_82DB008 + +BattleScript_82DB001:: + accuracycheck BattleScript_82DB058, MOVE_DOOM_DESIRE +BattleScript_82DB008:: + adjustnormaldamage2 + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB020 + playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL + goto BattleScript_82DB027 + +BattleScript_82DB020:: + playanimation ATTACKER, ANIM_x13, NULL +BattleScript_82DB027:: + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + atk24 BattleScript_82DB03F +BattleScript_82DB03F:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x1, 0x0 + setbyte sMOVEEND_STATE, 0xB + moveend 0x2, 0xE + setbyte gBattleMoveFlags, 0 + end2 + +BattleScript_82DB058:: + pause 0x20 + setbyte gBattleMoveFlags, 0 + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + resultmessage + waitmessage 0x40 + setbyte gBattleMoveFlags, 0 + end2 + +BattleScript_NoMovesLeft:: + printselectionstring STRINGID_PKMNHASNOMOVESLEFT + endselectionscript + +BattleScript_82DB076:: + printselectionstring STRINGID_NOPPLEFT + endselectionscript + +BattleScript_NoPPForMove:: + attackstring + pause 0x20 + printstring STRINGID_BUTNOPPLEFT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB089:: + printselectionstring STRINGID_PKMNCANTUSEMOVETORMENT + endselectionscript + +BattleScript_82DB08D:: + printstring STRINGID_PKMNCANTUSEMOVETORMENT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB098:: + printstring STRINGID_PKMNCANTUSEMOVETORMENT + goto BattleScript_82DAE2D + +BattleScript_82DB0A0:: + printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT + endselectionscript + +BattleScript_MoveUsedIsTaunted:: + printstring STRINGID_PKMNCANTUSEMOVETAUNT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB0AF:: + printstring STRINGID_PKMNCANTUSEMOVETAUNT + goto BattleScript_82DAE2D + +BattleScript_WishComesTrue:: + trywish 0x1, BattleScript_82DB0DE + playanimation TARGET, ANIM_WISH_HEAL, NULL + printstring STRINGID_PKMNWISHCAMETRUE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate TARGET + datahpupdate TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage 0x40 + end2 + +BattleScript_82DB0DE:: + printstring STRINGID_PKMNWISHCAMETRUE + waitmessage 0x40 + pause 0x20 + printstring STRINGID_PKMNHPFULL + waitmessage 0x40 + end2 + +BattleScript_IngrainTurnHeal:: + playanimation ATTACKER, ANIM_INGRAIN_HEAL, NULL + printstring STRINGID_PKMNABSORBEDNUTRIENTS + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + end2 + +BattleScript_82DB109:: + pause 0x20 + printstring STRINGID_PKMNANCHOREDITSELF + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AtkDefDown:: + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x6, 0xD + playstatchangeanimation ATTACKER, 0x2, 0x9 + setstatchanger ATK, 1, TRUE + statbuffchange 0xC1, BattleScript_82DB144 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144 + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DB144:: + playstatchangeanimation ATTACKER, 0x4, 0x9 + setstatchanger DEF, 1, TRUE + statbuffchange 0xC1, BattleScript_82DB167 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167 + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DB167:: + return + +BattleScript_KnockedOff:: + playanimation TARGET, ANIM_ITEM_KNOCKOFF, NULL + printstring STRINGID_PKMNKNOCKEDOFF + waitmessage 0x40 + return + +BattleScript_MoveUsedIsImprisoned:: + printstring STRINGID_PKMNCANTUSEMOVESEALED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB181:: + printselectionstring STRINGID_PKMNCANTUSEMOVESEALED + endselectionscript + +BattleScript_82DB185:: + printstring STRINGID_PKMNCANTUSEMOVESEALED + goto BattleScript_82DAE2D + +BattleScript_GrudgeTakesPp:: + printstring STRINGID_PKMNLOSTPPGRUDGE + waitmessage 0x40 + return + +BattleScript_MagicCoatBounce:: + attackstring + ppreduce + pause 0x20 + printstring STRINGID_PKMNMOVEBOUNCED + waitmessage 0x40 + orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 + various ATTACKER, VARIOUS_SET_MAGIC_COAT_TARGET + return + +BattleScript_SnatchedMove:: + attackstring + ppreduce + snatchsetbanks + playanimation TARGET, ANIM_SNATCH_MOVE, NULL + printstring STRINGID_PKMNSNATCHEDMOVE + waitmessage 0x40 + orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 + atk5F + return + +BattleScript_EnduredMsg:: + printstring STRINGID_PKMNENDUREDHIT + waitmessage 0x40 + return + +BattleScript_OneHitKOMsg:: + printstring STRINGID_ONEHITKO + waitmessage 0x40 + return + +BattleScript_SAtkDown2:: + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x10, 0xB + setstatchanger SPATK, 2, TRUE + statbuffchange 0xC1, BattleScript_82DB1FE + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE + printfromtable 0x85CC8A8 + waitmessage 0x40 +BattleScript_82DB1FE:: + return + +BattleScript_FocusPunchSetUp:: + printstring STRINGID_EMPTYSTRING3 + waitmessage 0x1 + playanimation ATTACKER, ANIM_x14, NULL + printstring STRINGID_PKMNTIGHTENINGFOCUS + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsAsleep:: + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation ATTACKER + goto BattleScript_MoveEnd + +BattleScript_MoveUsedWokeUp:: + bicword gHitMarker, HITMARKER_x10 + printfromtable 0x85CC88E + waitmessage 0x40 + updatestatusicon ATTACKER + return + +BattleScript_82DB234:: + printstring STRINGID_PKMNWOKEUPINUPROAR + waitmessage 0x40 + updatestatusicon ATTACKER + end2 + +BattleScript_PoisonTurnDmg:: + printstring STRINGID_PKMNHURTBYPOISON + waitmessage 0x40 +BattleScript_82DB243:: + statusanimation ATTACKER +BattleScript_82DB245:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + atk24 BattleScript_82DB25E +BattleScript_82DB25E:: + end2 + +BattleScript_BurnTurnDmg:: + printstring STRINGID_PKMNHURTBYBURN + waitmessage 0x40 + goto BattleScript_82DB243 + +BattleScript_MoveUsedIsFrozen:: + printstring STRINGID_PKMNISFROZEN + waitmessage 0x40 + statusanimation ATTACKER + goto BattleScript_MoveEnd + +BattleScript_MoveUsedUnfroze:: + printfromtable 0x85CC8F0 + waitmessage 0x40 + updatestatusicon ATTACKER + return + +BattleScript_DefrostedViaFireMove:: + printstring STRINGID_PKMNWASDEFROSTED + waitmessage 0x40 + updatestatusicon TARGET + return + +BattleScript_MoveUsedIsParalyzed:: + printstring STRINGID_PKMNISPARALYZED + waitmessage 0x40 + statusanimation ATTACKER + various ATTACKER, VARIOUS_CANCEL_MULTI_TURN_MOVES + goto BattleScript_MoveEnd + +BattleScript_MoveUsedFlinched:: + printstring STRINGID_PKMNFLINCHED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB2A6:: + printfromtable 0x85CC886 + waitmessage 0x40 + end2 + +BattleScript_ThrashConfuses:: + chosenstatus2animation ATTACKER, STATUS2_CONFUSION + printstring STRINGID_PKMNFATIGUECONFUSION + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsConfused:: + printstring STRINGID_PKMNISCONFUSED + waitmessage 0x40 + status2animation ATTACKER, STATUS2_CONFUSION + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB2FF +BattleScript_82DB2D4:: + various ATTACKER, VARIOUS_CANCEL_MULTI_TURN_MOVES + adjustnormaldamage2 + printstring STRINGID_ITHURTCONFUSION + waitmessage 0x40 + effectivenesssound + hitanimation ATTACKER + waitstate + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + resultmessage + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_82DB2FF:: + return + +BattleScript_MoveUsedIsConfusedNoMore:: + printstring STRINGID_PKMNHEALEDCONFUSION + waitmessage 0x40 + return + +BattleScript_PrintPayDayMoneyString:: + printstring STRINGID_PKMNPICKEDUPITEM + waitmessage 0x40 + return + +BattleScript_WrapTurnDmg:: + playanimation ATTACKER, ANIM_TURN_TRAP, sANIM_ARG1 + printstring STRINGID_PKMNHURTBY + waitmessage 0x40 + goto BattleScript_82DB245 + +BattleScript_WrapEnds:: + printstring STRINGID_PKMNFREEDFROM + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsInLove:: + printstring STRINGID_PKMNINLOVE + waitmessage 0x40 + status2animation ATTACKER, STATUS2_INFATUATION + return + +BattleScript_MoveUsedIsParalyzedCantAttack:: + printstring STRINGID_PKMNIMMOBILIZEDBYLOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_NightmareTurnDmg:: + printstring STRINGID_PKMNLOCKEDINNIGHTMARE + waitmessage 0x40 + status2animation ATTACKER, STATUS2_NIGHTMARE + goto BattleScript_82DB245 + +BattleScript_CurseTurnDmg:: + printstring STRINGID_PKMNAFFLICTEDBYCURSE + waitmessage 0x40 + status2animation ATTACKER, STATUS2_CURSED + goto BattleScript_82DB245 + +BattleScript_TargetPRLZHeal:: + printstring STRINGID_PKMNHEALEDPARALYSIS + waitmessage 0x40 + updatestatusicon TARGET + return + +BattleScript_MoveEffectSleep:: + statusanimation EFFECT_BANK + printfromtable 0x85CC8E4 + waitmessage 0x40 +BattleScript_82DB374:: + updatestatusicon EFFECT_BANK + waitstate + return + +BattleScript_YawnMakesAsleep:: + statusanimation EFFECT_BANK + printstring STRINGID_PKMNFELLASLEEP + waitmessage 0x40 + updatestatusicon EFFECT_BANK + waitstate + makevisible EFFECT_BANK + end2 + +BattleScript_MoveEffectPoison:: + statusanimation EFFECT_BANK + printfromtable 0x85CC8DC + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectBurn:: + statusanimation EFFECT_BANK + printfromtable 0x85CC8E8 + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectFreeze:: + statusanimation EFFECT_BANK + printfromtable 0x85CC8EC + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectParalysis:: + statusanimation EFFECT_BANK + printfromtable 0x85CC8E0 + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectUproar:: + printstring STRINGID_PKMNCAUSEDUPROAR + waitmessage 0x40 + return + +BattleScript_MoveEffectToxic:: + statusanimation EFFECT_BANK + printstring STRINGID_PKMNBADLYPOISONED + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectPayDay:: + printstring STRINGID_COINSSCATTERED + waitmessage 0x40 + return + +BattleScript_MoveEffectWrap:: + printfromtable 0x85CC8C0 + waitmessage 0x40 + return + +BattleScript_MoveEffectConfusion:: + chosenstatus2animation EFFECT_BANK, STATUS2_CONFUSION + printstring STRINGID_PKMNWASCONFUSED + waitmessage 0x40 + return + +BattleScript_MoveEffectRecoil33:: + jumpifhalfword EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_82DB407 + jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_82DB421 +BattleScript_82DB407:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNHITWITHRECOIL + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL +BattleScript_82DB421:: + return + +BattleScript_ItemSteal:: + playanimation TARGET, ANIM_ITEM_STEAL, NULL + printstring STRINGID_PKMNSTOLEITEM + waitmessage 0x40 + return + +BattleScript_DrizzleActivates:: + pause 0x20 + printstring STRINGID_PKMNMADEITRAIN + waitstate + playanimation BANK0, ANIM_RAIN_CONTINUES, NULL + call BattleScript_82DB48D + end3 + +BattleScript_SpeedBoostActivates:: + playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 + printstring STRINGID_PKMNRAISEDSPEED + waitmessage 0x40 + end3 + +BattleScript_TraceActivates:: + pause 0x20 + printstring STRINGID_PKMNTRACED + waitmessage 0x40 + end3 + +BattleScript_RainDishActivates:: + printstring STRINGID_PKMNSXRESTOREDHPALITTLE2 + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + end3 + +BattleScript_SandstreamActivates:: + pause 0x20 + printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM + waitstate + playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL + call BattleScript_82DB48D + end3 + +BattleScript_ShedSkinActivates:: + printstring STRINGID_PKMNSXCUREDYPROBLEM + waitmessage 0x40 + updatestatusicon ATTACKER + end3 + +BattleScript_82DB48D:: + setbyte sBANK, 0x0 +BattleScript_82DB493:: + trycastformdatachange + addbyte sBANK, 0x1 + jumpifarraynotequal sBANK, gNoOfAllBanks, 0x1, BattleScript_82DB493 + return + +BattleScript_CastformChange:: + call BattleScript_82DB4AF + end3 + +BattleScript_82DB4AF:: + docastformchangeanimation + waitstate + printstring STRINGID_PKMNTRANSFORMED + waitmessage 0x40 + return + +BattleScript_82DB4B8:: + call BattleScript_82DB4BE + end3 + +BattleScript_82DB4BE:: + pause 0x20 +BattleScript_82DB4C1:: + setbyte gBankTarget, 0x0 + setstatchanger ATK, 1, TRUE +BattleScript_82DB4CD:: + trygetintimidatetarget BattleScript_82DB51B + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510 + jumpifability TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C + jumpifability TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C + jumpifability TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C + statbuffchange 0x21, BattleScript_82DB510 + jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510 + setgraphicalstatchangevalues + playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 + printstring STRINGID_PKMNCUTSATTACKWITH + waitmessage 0x40 +BattleScript_82DB510:: + addbyte gBankTarget, 0x1 + goto BattleScript_82DB4CD +BattleScript_82DB51B:: + return + +BattleScript_82DB51C:: + pause 0x20 + printstring STRINGID_PREVENTEDFROMWORKING + waitmessage 0x40 + goto BattleScript_82DB510 + +BattleScript_DroughtActivates:: + pause 0x20 + printstring STRINGID_PKMNSXINTENSIFIEDSUN + waitstate + playanimation BANK0, ANIM_SUN_CONTINUES, NULL + call BattleScript_82DB48D + end3 + +BattleScript_TookAttack:: + attackstring + pause 0x20 + printstring STRINGID_PKMNSXTOOKATTACK + waitmessage 0x40 + orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED + return + +BattleScript_SturdyPreventsOHKO:: + pause 0x20 + printstring STRINGID_PKMNPROTECTEDBY + pause 0x40 + goto BattleScript_MoveEnd + +BattleScript_DampStopsExplosion:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSUSAGE + pause 0x40 + goto BattleScript_MoveEnd + +BattleScript_MoveHPDrain_PPLoss:: + ppreduce +BattleScript_MoveHPDrain:: + attackstring + pause 0x20 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate TARGET + datahpupdate TARGET + printstring STRINGID_PKMNRESTOREDHPUSING + waitmessage 0x40 + orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + goto BattleScript_MoveEnd + +BattleScript_82DB591:: + ppreduce +BattleScript_82DB592:: + attackstring + pause 0x20 + printstring STRINGID_PKMNSXMADEYUSELESS + waitmessage 0x40 + orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + goto BattleScript_MoveEnd + +BattleScript_FlashFireBoost_PPLoss:: + ppreduce +BattleScript_FlashFireBoost:: + attackstring + pause 0x20 + printfromtable 0x85CC976 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB5B9:: + pause 0x20 + printstring STRINGID_PKMNANCHORSITSELFWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AbilityNoStatLoss:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSSTATLOSSWITH + waitmessage 0x40 + return + +BattleScript_BRNPrevention:: + pause 0x20 + printfromtable 0x85CC95E + waitmessage 0x40 + return + +BattleScript_PRLZPrevention:: + pause 0x20 + printfromtable 0x85CC964 + waitmessage 0x40 + return + +BattleScript_PSNPrevention:: + pause 0x20 + printfromtable 0x85CC96A + waitmessage 0x40 + return + +BattleScript_ObliviousPreventsAttraction:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSROMANCEWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_FlinchPrevention:: + pause 0x20 + printstring STRINGID_PKMNSXPREVENTSFLINCHING + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB611:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_SoundproofProtected:: + attackstring + ppreduce + pause 0x20 + printstring STRINGID_PKMNSXBLOCKSY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AbilityNoSpecificStatLoss:: + pause 0x20 + printstring STRINGID_PKMNSXPREVENTSYLOSS + waitmessage 0x40 + setbyte cMULTISTRING_CHOOSER, 0x3 + return + +BattleScript_StickyHoldActivates:: + pause 0x20 + printstring STRINGID_PKMNSXMADEYINEFFECTIVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_ColorChangeActivates:: + printstring STRINGID_PKMNCHANGEDTYPEWITH + waitmessage 0x40 + return + +BattleScript_RoughSkinActivates:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNHURTSWITH + waitmessage 0x40 + tryfaintmon ATTACKER, FALSE, NULL + return + +BattleScript_CuteCharmActivates:: + status2animation ATTACKER, STATUS2_INFATUATION + printstring STRINGID_PKMNSXINFATUATEDY + waitmessage 0x40 + return + +BattleScript_ApplySecondaryEffect:: + waitstate + seteffectsecondary + return + +BattleScript_SynchronizeActivates:: + waitstate + seteffectprimary + return + +BattleScript_NoItemSteal:: + pause 0x20 + printstring STRINGID_PKMNSXMADEYINEFFECTIVE + waitmessage 0x40 + return + +BattleScript_82DB68C:: + printstring STRINGID_PKMNSXCUREDITSYPROBLEM + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + return + +BattleScript_82DB695:: + printstring STRINGID_PKMNIGNORESASLEEP + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + end + +BattleScript_82DB6A5:: + printstring STRINGID_PKMNIGNOREDORDERS + waitmessage 0x40 + jumptorandomattack 0x0 + +BattleScript_MoveUsedLoafingAround:: + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7 + setbyte gBattleCommunication, 0x0 + various ATTACKER, 0x18 + setbyte cMULTISTRING_CHOOSER, 0x4 +BattleScript_82DB6C7:: + printfromtable 0x85CC93A + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + end + +BattleScript_82DB6D9:: + printstring STRINGID_PKMNBEGANTONAP + waitmessage 0x40 + setmoveeffect EFFECT_SLEEP | AFFECTS_USER + seteffectprimary + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + end + +BattleScript_82DB6F0:: + printstring STRINGID_PKMNWONTOBEY + waitmessage 0x40 + goto BattleScript_82DB2D4 + +BattleScript_SubstituteFade:: + playanimation TARGET, ANIM_SUBSTITUTE_FADE, NULL + printstring STRINGID_PKMNSUBSTITUTEFADED + return + +BattleScript_BerryCurePrlzEnd2:: + call BattleScript_BerryCureParRet + end2 + +BattleScript_BerryCureParRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMCUREDPARALYSIS + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCurePsnEnd2:: + call BattleScript_BerryCurePsnRet + end2 + +BattleScript_BerryCurePsnRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMCUREDPOISON + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCureBrnEnd2:: + call BattleScript_BerryCureBrnRet + end2 + +BattleScript_BerryCureBrnRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMHEALEDBURN + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCureFrzEnd2:: + call BattleScript_BerryCureFrzRet + end2 + +BattleScript_BerryCureFrzRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMDEFROSTEDIT + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCureSlpEnd2:: + call BattleScript_BerryCureSlpRet + end2 + +BattleScript_BerryCureSlpRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMWOKEIT + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCureConfusionEnd2:: + call BattleScript_BerryCureConfusionRet + end2 + +BattleScript_BerryCureConfusionRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMSNAPPEDOUT + waitmessage 0x40 + removeitem SCRIPTING_BANK + return + +BattleScript_BerryCureChosenStatusEnd2:: + call BattleScript_BerryCureChosenStatusRet + end2 + +BattleScript_BerryCureChosenStatusRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printfromtable 0x85CC95A + waitmessage 0x40 + updatestatusicon SCRIPTING_BANK + removeitem SCRIPTING_BANK + return + +BattleScript_WhiteHerbEnd2:: + call BattleScript_WhiteHerbRet + end2 + +BattleScript_WhiteHerbRet:: + playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDSTATUS + waitmessage 0x40 + removeitem SCRIPTING_BANK + return + +BattleScript_ItemHealHP_RemoveItem:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + removeitem ATTACKER + end2 + +BattleScript_BerryPPHealEnd2:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDPP + waitmessage 0x40 + removeitem ATTACKER + end2 + +BattleScript_ItemHealHP_End2:: + call BattleScript_ItemHealHP_Ret + end2 + +BattleScript_ItemHealHP_Ret:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + return + +BattleScript_82DB812:: + printselectionstring STRINGID_ITEMALLOWSONLYYMOVE + endselectionscript + +BattleScript_HangedOnMsg:: + playanimation TARGET, ANIM_HANGED_ON, NULL + printstring STRINGID_PKMNHUNGONWITHX + waitmessage 0x40 + return + +BattleScript_BerryConfuseHealEnd2:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_FORXCOMMAYZ + waitmessage 0x40 + setmoveeffect EFFECT_CONFUSION | AFFECTS_USER + seteffectprimary + removeitem ATTACKER + end2 + +BattleScript_BerryStatRaiseEnd2:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + statbuffchange 0x41, BattleScript_82DB85B +BattleScript_82DB85B:: + setbyte cMULTISTRING_CHOOSER, 0x4 + call BattleScript_StatUp + removeitem ATTACKER + end2 + +BattleScript_BerryFocusEnergyEnd2:: + playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNUSEDXTOGETPUMPED + waitmessage 0x40 + removeitem ATTACKER + end2 + +BattleScript_ActionSelectionItemsCantBeUsed:: + printselectionstring STRINGID_ITEMSCANTBEUSEDNOW + endselectionscript + +BattleScript_82DB87D:: + printstring STRINGID_EMPTYSTRING3 + return + +BattleScript_82DB881:: + setbyte gBattleCommunication + 1, 0x0 +BattleScript_82DB887:: + various ATTACKER, 0x8 + jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D + printfromtable 0x85CCF0A + waitmessage 0x40 +BattleScript_82DB89D:: + addbyte gBattleCommunication + 1, 0x1 + jumpifarraynotequal gBattleCommunication + 1, gNoOfAllBanks, 0x1, BattleScript_82DB887 + setbyte gBattleCommunication, 0x0 + setbyte gBattleCommunication + 1, 0x0 + end2 + +BattleScript_82DB8BE:: + various ATTACKER, VARIOUS_WAIT_CRY + various ATTACKER, 0x15 + playse 0x109 + pause 0x8 + playse 0x109 + various ATTACKER, 0xE + various 8, 0x10 + various 8, 0x11 + pause 0x40 + various ATTACKER, 0xF + various ATTACKER, 0x16 + end2 + +BattleScript_82DB8E0:: + playse SE_PINPON + various ATTACKER, 0xE + various TARGET, 0x10 + various TARGET, 0x11 + pause 0x40 + various ATTACKER, 0xF + end2 + +BattleScript_82DB8F3:: + makevisible 11 + waitstate + makevisible OPPONENT1 + waitstate + various ATTACKER, 0x15 + playse 0x109 + pause 0x8 + playse 0x109 + pause 0x40 + various ATTACKER, 0xE + various ATTACKER, 0x10 + various ATTACKER, 0x11 + pause 0x40 + setbyte gBattleCommunication, 0x0 + various ATTACKER, 0x9 + pause 0x40 + various ATTACKER, 0x9 + various EFFECT_BANK, 0x10 + various EFFECT_BANK, 0x11 + various ATTACKER, 0x9 + various GBANK_1, 0x10 + various GBANK_1, 0x11 + various ATTACKER, 0x9 + various 4, 0x10 + various 4, 0x11 + various ATTACKER, 0x9 + jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973 + jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992 + various 5, 0x10 + various 5, 0x11 + various ATTACKER, 0x9 + various ATTACKER, 0xF + printstring STRINGID_DEFEATEDOPPONENTBYREFEREE + waitmessage 0x40 + playfaintcry OPPONENT1 + various ATTACKER, VARIOUS_WAIT_CRY + dofaintanimation OPPONENT1 + cleareffectsonfaint OPPONENT1 + various ATTACKER, 0xA + end2 + +BattleScript_82DB973:: + various 6, 0x10 + various 6, 0x11 + various ATTACKER, 0x9 + various ATTACKER, 0xF + printstring STRINGID_LOSTTOOPPONENTBYREFEREE + waitmessage 0x40 + playfaintcry 11 + various ATTACKER, VARIOUS_WAIT_CRY + dofaintanimation 11 + cleareffectsonfaint 11 + various ATTACKER, 0xB + end2 + +BattleScript_82DB992:: + various BANK0, 0x10 + various BANK0, 0x11 + various ATTACKER, 0x9 + various ATTACKER, 0xF + printstring STRINGID_TIEDOPPONENTBYREFEREE + waitmessage 0x40 + playfaintcry 11 + various ATTACKER, VARIOUS_WAIT_CRY + dofaintanimation 11 + cleareffectsonfaint 11 + playfaintcry OPPONENT1 + various ATTACKER, VARIOUS_WAIT_CRY + dofaintanimation OPPONENT1 + cleareffectsonfaint OPPONENT1 + various ATTACKER, 0xC + end2 + +BattleScript_82DB9BA:: + printselectionstring STRINGID_QUESTIONFORFEITMATCH + various ATTACKER, VARIOUS_EMIT_YESNOBOX + endselectionscript + +BattleScript_82DB9C1:: + printstring STRINGID_FORFEITEDMATCH + waitmessage 0x40 + end2 + +BattleScript_82DB9C8:: + printstring STRINGID_FORFEITEDMATCH + waitmessage 0x40 + atk57 + waitmessage 0x40 + end2 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 4a4dc4665..6f6ea084b 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -1,32 +1,36 @@ .include "asm/macros.inc" + .include "asm/macros/battle_script.inc" .include "constants/constants.inc" + .include "constants/battle_constants.inc" + .include "constants/battle_script_constants.inc" + .include "constants/battle_text.inc" .section script_data, "aw", %progbits .align 2 gBattlescriptsForBallThrow:: @ 82DBD08 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD7E - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD7E + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 + .4byte BattleScript_82DBD68 .align 2 gUnknown_082DBD3C:: @ 82DBD3C - .4byte gUnknown_082DBE12 - .4byte gUnknown_082DBE1C - .4byte gUnknown_082DBE1C - .4byte gUnknown_082DBE4B - .4byte gUnknown_082DBE6F - .4byte gUnknown_082DBE91 + .4byte BattleScript_82DBE12 + .4byte BattleScript_82DBE1C + .4byte BattleScript_82DBE1C + .4byte BattleScript_82DBE4B + .4byte BattleScript_82DBE6F + .4byte BattleScript_82DBE91 .align 2 gBattlescriptsForRunningByItem:: @ 82DBD54 @@ -34,55 +38,167 @@ gBattlescriptsForRunningByItem:: @ 82DBD54 .align 2 gBattlescriptsForSafariActions:: @ 82DBD58 - .4byte gUnknown_082DBEBD - .4byte gUnknown_082DBEC4 - .4byte gUnknown_082DBECD - .4byte gUnknown_082DBEE3 - -gUnknown_082DBD68:: @ 82DBD68 - .incbin "baserom.gba", 0x2dbd68, 0x16 - -gUnknown_082DBD7E:: @ 82DBD7E - .incbin "baserom.gba", 0x2dbd7e, 0x6 - -BattleScript_SuccessBallThrow:: @ 82DBD84 - .incbin "baserom.gba", 0x2dbd84, 0x46 - -BattleScript_WallyBallThrow:: @ 82DBDCA - .incbin "baserom.gba", 0x2dbdca, 0xa - -BattleScript_ShakeBallThrow:: @ 82DBDD4 - .incbin "baserom.gba", 0x2dbdd4, 0x2e - -BattleScript_TrainerBallBlock:: @ 82DBE02 - .incbin "baserom.gba", 0x2dbe02, 0x10 - -gUnknown_082DBE12:: @ 82DBE12 - .incbin "baserom.gba", 0x2dbe12, 0xa - -gUnknown_082DBE1C:: @ 82DBE1C - .incbin "baserom.gba", 0x2dbe1c, 0x2f - -gUnknown_082DBE4B:: @ 82DBE4B - .incbin "baserom.gba", 0x2dbe4b, 0x24 - -gUnknown_082DBE6F:: @ 82DBE6F - .incbin "baserom.gba", 0x2dbe6f, 0x22 - -gUnknown_082DBE91:: @ 82DBE91 - .incbin "baserom.gba", 0x2dbe91, 0x22 - -BattleScript_RunByUsingItem:: @ 82DBEB3 - .incbin "baserom.gba", 0x2dbeb3, 0xA - -gUnknown_082DBEBD:: @ 82DBEBD - .incbin "baserom.gba", 0x2dbebd, 0x7 - -gUnknown_082DBEC4:: @ 82DBEC4 - .incbin "baserom.gba", 0x2dbec4, 0x9 - -gUnknown_082DBECD:: @ 82DBECD - .incbin "baserom.gba", 0x2dbecd, 0x16 - -gUnknown_082DBEE3:: @ 82DBEE3 - .incbin "baserom.gba", 0x2dbee3, 0x15 + .4byte BattleScript_82DBEBD + .4byte BattleScript_82DBEC4 + .4byte BattleScript_82DBECD + .4byte BattleScript_82DBEE3 + +BattleScript_82DBD68:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_82DBD7A + printstring STRINGID_PLAYERUSEDITEM + pokeball_catch_calculation + +BattleScript_82DBD7A:: + printstring STRINGID_WALLYUSEDITEM + pokeball_catch_calculation + +BattleScript_82DBD7E:: + printstring STRINGID_PLAYERUSEDITEM + updatestatusicon ATTACKER + pokeball_catch_calculation + +BattleScript_SuccessBallThrow:: + jumpifhalfword EQUAL, gLastUsedItem, 0x5, BattleScript_82DBD92 + incrementgamestat 0xB +BattleScript_82DBD92:: + printstring STRINGID_GOTCHAPKMNCAUGHT + trysetcaughtmondexflags BattleScript_82DBDA5 + printstring STRINGID_PKMNDATAADDEDTODEX + waitstate + setbyte gBattleCommunication, 0x0 + displaydexinfo +BattleScript_82DBDA5:: + printstring STRINGID_GIVENICKNAMECAPTURED + waitstate + setbyte gBattleCommunication, 0x0 + trygivecaughtmonnick BattleScript_82DBDC2 + givecaughtmon + printfromtable 0x85CC97A + waitmessage 0x40 + goto BattleScript_82DBDC3 + +BattleScript_82DBDC2:: + givecaughtmon +BattleScript_82DBDC3:: + setbyte gBattleOutcome, CAUGHT + finishturn + +BattleScript_WallyBallThrow:: + printstring STRINGID_GOTCHAPKMNCAUGHT2 + setbyte gBattleOutcome, CAUGHT + finishturn + +BattleScript_ShakeBallThrow:: + printfromtable 0x85CC912 + waitmessage 0x40 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_82DBE01 + jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_82DBE01 + printstring STRINGID_OUTOFSAFARIBALLS + waitmessage 0x40 + setbyte gBattleOutcome, OUT_OF_BALLS +BattleScript_82DBE01:: + finishaction + +BattleScript_TrainerBallBlock:: + waitmessage 0x40 + printstring STRINGID_TRAINERBLOCKEDBALL + waitmessage 0x40 + printstring STRINGID_DONTBEATHIEF + waitmessage 0x40 + finishaction + +BattleScript_82DBE12:: + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + end + +BattleScript_82DBE1C:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse 0x1 + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + updatestatusicon ATTACKER + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE4B:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse 0x1 + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable 0x85CC94E + waitmessage 0x40 + updatestatusicon ATTACKER + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE6F:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse 0x1 + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable 0x85CC89C + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE91:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse 0x1 + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable 0x85CC8CC + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_RunByUsingItem:: + playse 0x11 + setbyte gBattleOutcome, RAN + finishturn + +BattleScript_82DBEBD:: + printstring STRINGID_PKMNWATCHINGCAREFULLY + waitmessage 0x40 + end2 + +BattleScript_82DBEC4:: + printfromtable 0x85CC944 + waitmessage 0x40 + end2 + +BattleScript_82DBECD:: + printstring STRINGID_THREWPOKEBLOCKATPKMN + waitmessage 0x40 + playanimation ATTACKER, ANIM_x4, NULL + printfromtable 0x85CC948 + waitmessage 0x40 + end2 + +BattleScript_82DBEE3:: + printstring STRINGID_RETURNMON + waitmessage 0x40 + returnatktoball + waitstate + trainerslidein TARGET + waitstate + printstring STRINGID_YOUTHROWABALLNOWRIGHT + waitmessage 0x40 + end2 diff --git a/include/battle.h b/include/battle.h index 0939c92b6..ada5282dc 100644 --- a/include/battle.h +++ b/include/battle.h @@ -272,6 +272,8 @@ #define BS_GET_TARGET 0 #define BS_GET_ATTACKER 1 #define BS_GET_EFFECT_BANK 2 +#define BS_GET_gBank1 3 +#define BS_GET_BANK_0 7 #define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update #define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability @@ -847,7 +849,7 @@ struct BattleScripting u8 field_F; u8 animArg1; u8 animArg2; - u8 field_12; + u8 tripleKickPower; u8 field_13; u8 atk49_state; u8 field_15; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 973a723e0..c69cb1017 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -198,7 +198,7 @@ void EmitBallThrowAnim(u8 bufferId, u8 caseId); void EmitPause(u8 bufferId, u8 toWait, void *data); // unused void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); void EmitPrintString(u8 bufferId, u16 stringId); -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); +void EmitPrintSelectionString(u8 bufferId, u16 stringId); void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); void EmitUnknownYesNoBox(u8 bufferId); void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); @@ -224,7 +224,7 @@ void EmitCmd39(u8 bufferId); // unused void EmitCmd40(u8 bufferId); // unused void EmitHitAnimation(u8 bufferId); void EmitCmd42(u8 bufferId); -void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPlaySE(u8 bufferId, u16 songId); void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); void EmitFaintingCry(u8 bufferId); void EmitIntroSlide(u8 bufferId, u8 terrainId); diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h index 4a9415379..003913380 100644 --- a/include/battle_move_effects.h +++ b/include/battle_move_effects.h @@ -153,7 +153,7 @@ enum EFFECT_EARTHQUAKE, EFFECT_FUTURE_SIGHT, EFFECT_GUST, - EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM + EFFECT_STOMP, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM EFFECT_SOLARBEAM, EFFECT_THUNDER, EFFECT_TELEPORT, diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index ebfeabccc..80fabaa64 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -1,6 +1,10 @@ #ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H #define GUARD_BATTLE_SCRIPT_COMMANDS_H +#define NO_ACC_CALC 0xFFFE +#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 @@ -21,7 +25,7 @@ #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_CAN_RUN_FROM_BATTLE 2 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 diff --git a/include/battle_scripts.h b/include/battle_scripts.h new file mode 100644 index 000000000..b04a82673 --- /dev/null +++ b/include/battle_scripts.h @@ -0,0 +1,640 @@ +#ifndef GUARD_BATTLE_SCRIPTS_H +#define GUARD_BATTLE_SCRIPTS_H + +extern const u8 BattleScript_EffectHit[]; +extern const u8 BattleScript_HitFromAtkCanceler[]; +extern const u8 BattleScript_HitFromAccCheck[]; +extern const u8 BattleScript_HitFromAtkString[]; +extern const u8 BattleScript_HitFromCritCalc[]; +extern const u8 BattleScript_HitFromAtkAnimation[]; +extern const u8 BattleScript_MoveEnd[]; +extern const u8 BattleScript_MakeMoveMissed[]; +extern const u8 BattleScript_PrintMoveMissed[]; +extern const u8 BattleScript_MoveMissedPause[]; +extern const u8 BattleScript_MoveMissed[]; +extern const u8 BattleScript_EffectSleep[]; +extern const u8 BattleScript_82D8AB0[]; +extern const u8 BattleScript_82D8AC1[]; +extern const u8 BattleScript_82D8ACF[]; +extern const u8 BattleScript_EffectPoisonHit[]; +extern const u8 BattleScript_EffectAbsorb[]; +extern const u8 BattleScript_82D8B26[]; +extern const u8 BattleScript_82D8B2E[]; +extern const u8 BattleScript_82D8B45[]; +extern const u8 BattleScript_EffectBurnHit[]; +extern const u8 BattleScript_EffectFreezeHit[]; +extern const u8 BattleScript_EffectParalyzeHit[]; +extern const u8 BattleScript_EffectExplosion[]; +extern const u8 BattleScript_82D8B94[]; +extern const u8 BattleScript_82D8B96[]; +extern const u8 BattleScript_82D8BCF[]; +extern const u8 BattleScript_82D8BEA[]; +extern const u8 BattleScript_EffectDreamEater[]; +extern const u8 BattleScript_82D8C0E[]; +extern const u8 BattleScript_82D8C18[]; +extern const u8 BattleScript_82D8C56[]; +extern const u8 BattleScript_EffectMirrorMove[]; +extern const u8 BattleScript_EffectAttackUp[]; +extern const u8 BattleScript_EffectDefenseUp[]; +extern const u8 BattleScript_EffectSpecialAttackUp[]; +extern const u8 BattleScript_EffectEvasionUp[]; +extern const u8 BattleScript_EffectStatUp[]; +extern const u8 BattleScript_EffectStatUpAfterAtkCanceler[]; +extern const u8 BattleScript_82D8CBD[]; +extern const u8 BattleScript_82D8CBF[]; +extern const u8 BattleScript_82D8CC7[]; +extern const u8 BattleScript_82D8CCF[]; +extern const u8 BattleScript_StatUp[]; +extern const u8 BattleScript_EffectAttackDown[]; +extern const u8 BattleScript_EffectDefenseDown[]; +extern const u8 BattleScript_EffectSpeedDown[]; +extern const u8 BattleScript_EffectAccuracyDown[]; +extern const u8 BattleScript_EffectEvasionDown[]; +extern const u8 BattleScript_EffectStatDown[]; +extern const u8 BattleScript_82D8D4E[]; +extern const u8 BattleScript_82D8D58[]; +extern const u8 BattleScript_82D8D60[]; +extern const u8 BattleScript_StatDown[]; +extern const u8 BattleScript_EffectHaze[]; +extern const u8 BattleScript_EffectBide[]; +extern const u8 BattleScript_EffectRampage[]; +extern const u8 BattleScript_82D8DAE[]; +extern const u8 BattleScript_EffectRoar[]; +extern const u8 BattleScript_EffectMultiHit[]; +extern const u8 BattleScript_82D8DFD[]; +extern const u8 BattleScript_82D8E1F[]; +extern const u8 BattleScript_82D8E71[]; +extern const u8 BattleScript_82D8E74[]; +extern const u8 BattleScript_82D8E93[]; +extern const u8 BattleScript_EffectConversion[]; +extern const u8 BattleScript_EffectFlinchHit[]; +extern const u8 BattleScript_EffectRestoreHp[]; +extern const u8 BattleScript_EffectToxic[]; +extern const u8 BattleScript_AlreadyPoisoned[]; +extern const u8 BattleScript_82D8F63[]; +extern const u8 BattleScript_EffectPayDay[]; +extern const u8 BattleScript_EffectLightScreen[]; +extern const u8 BattleScript_EffectTriAttack[]; +extern const u8 BattleScript_EffectRest[]; +extern const u8 BattleScript_82D8FC6[]; +extern const u8 BattleScript_82D8FD6[]; +extern const u8 BattleScript_EffectOhko[]; +extern const u8 BattleScript_82D9008[]; +extern const u8 BattleScript_EffectRazorWind[]; +extern const u8 BattleScript_82D9040[]; +extern const u8 BattleScript_82D906F[]; +extern const u8 BattleScript_EffectSuperFang[]; +extern const u8 BattleScript_EffectDragonRage[]; +extern const u8 BattleScript_EffectTrap[]; +extern const u8 BattleScript_82D9105[]; +extern const u8 BattleScript_EffectDoubleHit[]; +extern const u8 BattleScript_EffectRecoilIfMiss[]; +extern const u8 BattleScript_82D9135[]; +extern const u8 BattleScript_EffectMist[]; +extern const u8 BattleScript_EffectFocusEnergy[]; +extern const u8 BattleScript_EffectRecoil[]; +extern const u8 BattleScript_EffectConfuse[]; +extern const u8 BattleScript_82D9201[]; +extern const u8 BattleScript_EffectAttackUp2[]; +extern const u8 BattleScript_EffectDefenseUp2[]; +extern const u8 BattleScript_EffectSpeedUp2[]; +extern const u8 BattleScript_EffectSpecialAttackUp2[]; +extern const u8 BattleScript_EffectSpecialDefenseUp2[]; +extern const u8 BattleScript_EffectTransform[]; +extern const u8 BattleScript_EffectAttackDown2[]; +extern const u8 BattleScript_EffectDefenseDown2[]; +extern const u8 BattleScript_EffectSpeedDown2[]; +extern const u8 BattleScript_EffectSpecialDefenseDown2[]; +extern const u8 BattleScript_EffectReflect[]; +extern const u8 BattleScript_82D928C[]; +extern const u8 BattleScript_EffectPoison[]; +extern const u8 BattleScript_EffectParalyze[]; +extern const u8 BattleScript_82D9351[]; +extern const u8 BattleScript_82D9362[]; +extern const u8 BattleScript_EffectAttackDownHit[]; +extern const u8 BattleScript_EffectDefenseDownHit[]; +extern const u8 BattleScript_EffectSpeedDownHit[]; +extern const u8 BattleScript_EffectSpecialAttackDownHit[]; +extern const u8 BattleScript_EffectSpecialDefenseDownHit[]; +extern const u8 BattleScript_EffectAccuracyDownHit[]; +extern const u8 BattleScript_EffectSkyAttack[]; +extern const u8 BattleScript_EffectConfuseHit[]; +extern const u8 BattleScript_EffectTwineedle[]; +extern const u8 BattleScript_EffectSubstitute[]; +extern const u8 BattleScript_82D942B[]; +extern const u8 BattleScript_82D9431[]; +extern const u8 BattleScript_82D943E[]; +extern const u8 BattleScript_EffectRecharge[]; +extern const u8 BattleScript_MoveUsedMustRecharge[]; +extern const u8 BattleScript_EffectRage[]; +extern const u8 BattleScript_82D9487[]; +extern const u8 BattleScript_EffectMimic[]; +extern const u8 BattleScript_EffectMetronome[]; +extern const u8 BattleScript_EffectLeechSeed[]; +extern const u8 BattleScript_82D94E5[]; +extern const u8 BattleScript_EffectSplash[]; +extern const u8 BattleScript_EffectDisable[]; +extern const u8 BattleScript_EffectLevelDamage[]; +extern const u8 BattleScript_EffectPsywave[]; +extern const u8 BattleScript_EffectCounter[]; +extern const u8 BattleScript_EffectEncore[]; +extern const u8 BattleScript_EffectPainSplit[]; +extern const u8 BattleScript_EffectSnore[]; +extern const u8 BattleScript_82D95CE[]; +extern const u8 BattleScript_82D95E2[]; +extern const u8 BattleScript_EffectConversion2[]; +extern const u8 BattleScript_EffectLockOn[]; +extern const u8 BattleScript_EffectSketch[]; +extern const u8 BattleScript_EffectSleepTalk[]; +extern const u8 BattleScript_82D965E[]; +extern const u8 BattleScript_82D967E[]; +extern const u8 BattleScript_EffectDestinyBond[]; +extern const u8 BattleScript_EffectFlail[]; +extern const u8 BattleScript_EffectSpite[]; +extern const u8 BattleScript_EffectHealBell[]; +extern const u8 BattleScript_82D96ED[]; +extern const u8 BattleScript_82D96FE[]; +extern const u8 BattleScript_EffectTripleKick[]; +extern const u8 BattleScript_82D9718[]; +extern const u8 BattleScript_82D973A[]; +extern const u8 BattleScript_82D9799[]; +extern const u8 BattleScript_82D97AD[]; +extern const u8 BattleScript_82D97D7[]; +extern const u8 BattleScript_EffectThief[]; +extern const u8 BattleScript_EffectMeanLook[]; +extern const u8 BattleScript_EffectNightmare[]; +extern const u8 BattleScript_NightmareWorked[]; +extern const u8 BattleScript_EffectMinimize[]; +extern const u8 BattleScript_EffectCurse[]; +extern const u8 BattleScript_82D9892[]; +extern const u8 BattleScript_82D98B8[]; +extern const u8 BattleScript_82D98CC[]; +extern const u8 BattleScript_82D98E0[]; +extern const u8 BattleScript_82D98E5[]; +extern const u8 BattleScript_82D98F6[]; +extern const u8 BattleScript_EffectProtect[]; +extern const u8 BattleScript_EffectSpikes[]; +extern const u8 BattleScript_EffectForesight[]; +extern const u8 BattleScript_EffectPerishSong[]; +extern const u8 BattleScript_PerishSongLoop[]; +extern const u8 BattleScript_PerishSongLoopIncrement[]; +extern const u8 BattleScript_PerishSongNotAffected[]; +extern const u8 BattleScript_EffectSandstorm[]; +extern const u8 BattleScript_EffectRollout[]; +extern const u8 BattleScript_82D99CD[]; +extern const u8 BattleScript_82D99D4[]; +extern const u8 BattleScript_EffectSwagger[]; +extern const u8 BattleScript_82D9A1E[]; +extern const u8 BattleScript_EffectFuryCutter[]; +extern const u8 BattleScript_82D9A43[]; +extern const u8 BattleScript_EffectAttract[]; +extern const u8 BattleScript_EffectReturn[]; +extern const u8 BattleScript_EffectPresent[]; +extern const u8 BattleScript_EffectSafeguard[]; +extern const u8 BattleScript_EffectThawHit[]; +extern const u8 BattleScript_EffectMagnitude[]; +extern const u8 BattleScript_EffectBatonPass[]; +extern const u8 BattleScript_EffectRapidSpin[]; +extern const u8 BattleScript_EffectSonicboom[]; +extern const u8 BattleScript_EffectMorningSun[]; +extern const u8 BattleScript_EffectHiddenPower[]; +extern const u8 BattleScript_EffectRainDance[]; +extern const u8 BattleScript_82D9B41[]; +extern const u8 BattleScript_EffectSunnyDay[]; +extern const u8 BattleScript_EffectDefenseUpHit[]; +extern const u8 BattleScript_EffectAttackUpHit[]; +extern const u8 BattleScript_EffectAllStatsUpHit[]; +extern const u8 BattleScript_EffectBellyDrum[]; +extern const u8 BattleScript_EffectPsychUp[]; +extern const u8 BattleScript_EffectMirrorCoat[]; +extern const u8 BattleScript_EffectSkullBash[]; +extern const u8 BattleScript_82D9C16[]; +extern const u8 BattleScript_EffectTwister[]; +extern const u8 BattleScript_82D9C35[]; +extern const u8 BattleScript_EffectEarthquake[]; +extern const u8 BattleScript_82D9C44[]; +extern const u8 BattleScript_82D9C64[]; +extern const u8 BattleScript_82D9C73[]; +extern const u8 BattleScript_82D9CAC[]; +extern const u8 BattleScript_EffectFutureSight[]; +extern const u8 BattleScript_EffectGust[]; +extern const u8 BattleScript_EffectStomp[]; +extern const u8 BattleScript_EffectSolarbeam[]; +extern const u8 BattleScript_82D9D28[]; +extern const u8 BattleScript_82D9D50[]; +extern const u8 BattleScript_EffectThunder[]; +extern const u8 BattleScript_EffectTeleport[]; +extern const u8 BattleScript_EffectBeatUp[]; +extern const u8 BattleScript_BeatUpLoop[]; +extern const u8 BattleScript_BeatUpAttack[]; +extern const u8 BattleScript_BeatUpEnd[]; +extern const u8 BattleScript_EffectFly[]; +extern const u8 BattleScript_82D9E52[]; +extern const u8 BattleScript_82D9E5D[]; +extern const u8 BattleScript_82D9E68[]; +extern const u8 BattleScript_82D9E6E[]; +extern const u8 BattleScript_82D9E79[]; +extern const u8 BattleScript_82D9EA3[]; +extern const u8 BattleScript_82D9EB0[]; +extern const u8 BattleScript_EffectDefenseCurl[]; +extern const u8 BattleScript_82D9ED3[]; +extern const u8 BattleScript_EffectSoftboiled[]; +extern const u8 BattleScript_PresentHealTarget[]; +extern const u8 BattleScript_AlreadyAtFullHp[]; +extern const u8 BattleScript_EffectFakeOut[]; +extern const u8 BattleScript_ButItFailedAtkStringPpReduce[]; +extern const u8 BattleScript_ButItFailedPpReduce[]; +extern const u8 BattleScript_ButItFailed[]; +extern const u8 BattleScript_NotAffected[]; +extern const u8 BattleScript_EffectUproar[]; +extern const u8 BattleScript_82D9F5A[]; +extern const u8 BattleScript_EffectStockpile[]; +extern const u8 BattleScript_EffectSpitUp[]; +extern const u8 BattleScript_SpitUpFail[]; +extern const u8 BattleScript_82D9FA2[]; +extern const u8 BattleScript_EffectSwallow[]; +extern const u8 BattleScript_SwallowFail[]; +extern const u8 BattleScript_EffectHail[]; +extern const u8 BattleScript_EffectTorment[]; +extern const u8 BattleScript_EffectFlatter[]; +extern const u8 BattleScript_82DA03A[]; +extern const u8 BattleScript_EffectWillOWisp[]; +extern const u8 BattleScript_82DA0A1[]; +extern const u8 BattleScript_82DA0BB[]; +extern const u8 BattleScript_EffectMemento[]; +extern const u8 BattleScript_82DA119[]; +extern const u8 BattleScript_82DA13C[]; +extern const u8 BattleScript_82DA148[]; +extern const u8 BattleScript_82DA153[]; +extern const u8 BattleScript_82DA15A[]; +extern const u8 BattleScript_EffectFacade[]; +extern const u8 BattleScript_FacadeDoubleDmg[]; +extern const u8 BattleScript_EffectFocusPunch[]; +extern const u8 BattleScript_EffectSmellingsalt[]; +extern const u8 BattleScript_82DA1BA[]; +extern const u8 BattleScript_EffectFollowMe[]; +extern const u8 BattleScript_EffectNaturePower[]; +extern const u8 BattleScript_EffectCharge[]; +extern const u8 BattleScript_EffectTaunt[]; +extern const u8 BattleScript_EffectHelpingHand[]; +extern const u8 BattleScript_EffectTrick[]; +extern const u8 BattleScript_EffectRolePlay[]; +extern const u8 BattleScript_EffectWish[]; +extern const u8 BattleScript_EffectAssist[]; +extern const u8 BattleScript_EffectIngrain[]; +extern const u8 BattleScript_EffectSuperpower[]; +extern const u8 BattleScript_EffectMagicCoat[]; +extern const u8 BattleScript_EffectRecycle[]; +extern const u8 BattleScript_EffectRevenge[]; +extern const u8 BattleScript_EffectBrickBreak[]; +extern const u8 BattleScript_82DA306[]; +extern const u8 BattleScript_82DA319[]; +extern const u8 BattleScript_EffectYawn[]; +extern const u8 BattleScript_82DA378[]; +extern const u8 BattleScript_82DA382[]; +extern const u8 BattleScript_EffectKnockOff[]; +extern const u8 BattleScript_EffectEndeavor[]; +extern const u8 BattleScript_EffectEruption[]; +extern const u8 BattleScript_EffectSkillSwap[]; +extern const u8 BattleScript_EffectImprison[]; +extern const u8 BattleScript_EffectRefresh[]; +extern const u8 BattleScript_EffectGrudge[]; +extern const u8 BattleScript_EffectSnatch[]; +extern const u8 BattleScript_EffectLowKick[]; +extern const u8 BattleScript_EffectSecretPower[]; +extern const u8 BattleScript_EffectDoubleEdge[]; +extern const u8 BattleScript_EffectTeeterDance[]; +extern const u8 BattleScript_82DA47B[]; +extern const u8 BattleScript_82DA4C7[]; +extern const u8 BattleScript_82DA4D0[]; +extern const u8 BattleScript_82DA4E5[]; +extern const u8 BattleScript_82DA4F3[]; +extern const u8 BattleScript_82DA501[]; +extern const u8 BattleScript_82DA50F[]; +extern const u8 BattleScript_82DA520[]; +extern const u8 BattleScript_EffectMudSport[]; +extern const u8 BattleScript_EffectPoisonFang[]; +extern const u8 BattleScript_EffectWeatherBall[]; +extern const u8 BattleScript_EffectOverheat[]; +extern const u8 BattleScript_EffectTickle[]; +extern const u8 BattleScript_82DA571[]; +extern const u8 BattleScript_82DA5A7[]; +extern const u8 BattleScript_82DA5CA[]; +extern const u8 BattleScript_82DA5CF[]; +extern const u8 BattleScript_EffectCosmicPower[]; +extern const u8 BattleScript_82DA5F8[]; +extern const u8 BattleScript_82DA623[]; +extern const u8 BattleScript_82DA642[]; +extern const u8 BattleScript_EffectSkyUppercut[]; +extern const u8 BattleScript_EffectBulkUp[]; +extern const u8 BattleScript_82DA66A[]; +extern const u8 BattleScript_82DA695[]; +extern const u8 BattleScript_82DA6B4[]; +extern const u8 BattleScript_EffectCalmMind[]; +extern const u8 BattleScript_82DA6CE[]; +extern const u8 BattleScript_82DA6F9[]; +extern const u8 BattleScript_82DA718[]; +extern const u8 BattleScript_CantRaiseMultipleStats[]; +extern const u8 BattleScript_EffectDragonDance[]; +extern const u8 BattleScript_82DA746[]; +extern const u8 BattleScript_82DA771[]; +extern const u8 BattleScript_82DA790[]; +extern const u8 BattleScript_EffectCamouflage[]; +extern const u8 BattleScript_FaintAttacker[]; +extern const u8 BattleScript_FaintTarget[]; +extern const u8 BattleScript_82DA7C4[]; +extern const u8 BattleScript_82DA7CD[]; +extern const u8 BattleScript_82DA816[]; +extern const u8 BattleScript_82DA8D0[]; +extern const u8 BattleScript_82DA8F5[]; +extern const u8 BattleScript_82DA8F6[]; +extern const u8 BattleScript_82DA8FC[]; +extern const u8 BattleScript_82DA908[]; +extern const u8 BattleScript_82DA92C[]; +extern const u8 BattleScript_LocalTrainerBattleWon[]; +extern const u8 BattleScript_82DA943[]; +extern const u8 BattleScript_82DA946[]; +extern const u8 BattleScript_82DA963[]; +extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; +extern const u8 BattleScript_LocalBattleLost[]; +extern const u8 BattleScript_82DA9B1[]; +extern const u8 BattleScript_82DA9BD[]; +extern const u8 BattleScript_82DA9BE[]; +extern const u8 BattleScript_82DA9C9[]; +extern const u8 BattleScript_82DAA01[]; +extern const u8 BattleScript_82DAA0A[]; +extern const u8 BattleScript_82DAA0B[]; +extern const u8 BattleScript_82DAA31[]; +extern const u8 BattleScript_LinkBattleWonOrLost[]; +extern const u8 BattleScript_82DAA58[]; +extern const u8 BattleScript_82DAA5C[]; +extern const u8 BattleScript_82DAA83[]; +extern const u8 BattleScript_FrontierTrainerBattleWon[]; +extern const u8 BattleScript_82DAAAB[]; +extern const u8 BattleScript_82DAAAE[]; +extern const u8 BattleScript_82DAACB[]; +extern const u8 BattleScript_82DAADA[]; +extern const u8 BattleScript_SmokeBallEscape[]; +extern const u8 BattleScript_RanAwayUsingMonAbility[]; +extern const u8 BattleScript_GotAwaySafely[]; +extern const u8 BattleScript_WildMonFled[]; +extern const u8 BattleScript_82DAAFE[]; +extern const u8 BattleScript_PrintFailedToRunString[]; +extern const u8 BattleScript_82DAB0B[]; +extern const u8 BattleScript_82DAB11[]; +extern const u8 BattleScript_ActionSwitch[]; +extern const u8 BattleScript_82DAB35[]; +extern const u8 BattleScript_82DAB37[]; +extern const u8 BattleScript_82DAB44[]; +extern const u8 BattleScript_82DAB77[]; +extern const u8 BattleScript_82DABB8[]; +extern const u8 BattleScript_Pausex20[]; +extern const u8 BattleScript_LevelUp[]; +extern const u8 BattleScript_TryLearnMoveLoop[]; +extern const u8 BattleScript_AskToLearnMove[]; +extern const u8 BattleScript_ForgotAndLearnedNewMove[]; +extern const u8 BattleScript_LearnedNewMove[]; +extern const u8 BattleScript_LearnMoveReturn[]; +extern const u8 BattleScript_82DAC2C[]; +extern const u8 BattleScript_82DAC46[]; +extern const u8 BattleScript_82DAC47[]; +extern const u8 BattleScript_82DAC5F[]; +extern const u8 BattleScript_82DACA0[]; +extern const u8 BattleScript_82DACBF[]; +extern const u8 BattleScript_82DACC9[]; +extern const u8 BattleScript_82DACD2[]; +extern const u8 BattleScript_82DACE0[]; +extern const u8 BattleScript_82DACE7[]; +extern const u8 BattleScript_82DACFA[]; +extern const u8 BattleScript_82DAD01[]; +extern const u8 BattleScript_82DAD0B[]; +extern const u8 BattleScript_LeechSeedTurnDrain[]; +extern const u8 BattleScript_82DAD47[]; +extern const u8 BattleScript_82DAD4D[]; +extern const u8 BattleScript_BideStoringEnergy[]; +extern const u8 BattleScript_BideAttack[]; +extern const u8 BattleScript_BideNoEnergyToAttack[]; +extern const u8 BattleScript_82DADD8[]; +extern const u8 BattleScript_82DADF1[]; +extern const u8 BattleScript_MistProtected[]; +extern const u8 BattleScript_RageIsBuilding[]; +extern const u8 BattleScript_MoveUsedIsDisabled[]; +extern const u8 BattleScript_82DAE1F[]; +extern const u8 BattleScript_DisabledNoMore[]; +extern const u8 BattleScript_82DAE2A[]; +extern const u8 BattleScript_82DAE2D[]; +extern const u8 BattleScript_EncoredNoMore[]; +extern const u8 BattleScript_DestinyBondTakesLife[]; +extern const u8 BattleScript_SpikesOnAttacker[]; +extern const u8 BattleScript_82DAE7A[]; +extern const u8 BattleScript_SpikesOnTarget[]; +extern const u8 BattleScript_82DAEB1[]; +extern const u8 BattleScript_SpikesOngBank1[]; +extern const u8 BattleScript_82DAEE8[]; +extern const u8 BattleScript_82DAEFE[]; +extern const u8 BattleScript_82DAF05[]; +extern const u8 BattleScript_82DAF20[]; +extern const u8 BattleScript_AllStatsUp[]; +extern const u8 BattleScript_82DAF54[]; +extern const u8 BattleScript_82DAF72[]; +extern const u8 BattleScript_82DAF86[]; +extern const u8 BattleScript_82DAF9A[]; +extern const u8 BattleScript_82DAFAE[]; +extern const u8 BattleScript_82DAFC2[]; +extern const u8 BattleScript_RapidSpinAway[]; +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; +extern const u8 BattleScript_82DAFE4[]; +extern const u8 BattleScript_82DB001[]; +extern const u8 BattleScript_82DB008[]; +extern const u8 BattleScript_82DB020[]; +extern const u8 BattleScript_82DB027[]; +extern const u8 BattleScript_82DB03F[]; +extern const u8 BattleScript_82DB058[]; +extern const u8 BattleScript_NoMovesLeft[]; +extern const u8 BattleScript_82DB076[]; +extern const u8 BattleScript_NoPPForMove[]; +extern const u8 BattleScript_82DB089[]; +extern const u8 BattleScript_82DB08D[]; +extern const u8 BattleScript_82DB098[]; +extern const u8 BattleScript_82DB0A0[]; +extern const u8 BattleScript_MoveUsedIsTaunted[]; +extern const u8 BattleScript_82DB0AF[]; +extern const u8 BattleScript_WishComesTrue[]; +extern const u8 BattleScript_82DB0DE[]; +extern const u8 BattleScript_IngrainTurnHeal[]; +extern const u8 BattleScript_82DB109[]; +extern const u8 BattleScript_AtkDefDown[]; +extern const u8 BattleScript_82DB144[]; +extern const u8 BattleScript_82DB167[]; +extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_MoveUsedIsImprisoned[]; +extern const u8 BattleScript_82DB181[]; +extern const u8 BattleScript_82DB185[]; +extern const u8 BattleScript_GrudgeTakesPp[]; +extern const u8 BattleScript_MagicCoatBounce[]; +extern const u8 BattleScript_SnatchedMove[]; +extern const u8 BattleScript_EnduredMsg[]; +extern const u8 BattleScript_OneHitKOMsg[]; +extern const u8 BattleScript_SAtkDown2[]; +extern const u8 BattleScript_82DB1FE[]; +extern const u8 BattleScript_FocusPunchSetUp[]; +extern const u8 BattleScript_MoveUsedIsAsleep[]; +extern const u8 BattleScript_MoveUsedWokeUp[]; +extern const u8 BattleScript_82DB234[]; +extern const u8 BattleScript_PoisonTurnDmg[]; +extern const u8 BattleScript_82DB243[]; +extern const u8 BattleScript_82DB245[]; +extern const u8 BattleScript_82DB25E[]; +extern const u8 BattleScript_BurnTurnDmg[]; +extern const u8 BattleScript_MoveUsedIsFrozen[]; +extern const u8 BattleScript_MoveUsedUnfroze[]; +extern const u8 BattleScript_DefrostedViaFireMove[]; +extern const u8 BattleScript_MoveUsedIsParalyzed[]; +extern const u8 BattleScript_MoveUsedFlinched[]; +extern const u8 BattleScript_82DB2A6[]; +extern const u8 BattleScript_ThrashConfuses[]; +extern const u8 BattleScript_MoveUsedIsConfused[]; +extern const u8 BattleScript_82DB2D4[]; +extern const u8 BattleScript_82DB2FF[]; +extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern const u8 BattleScript_PrintPayDayMoneyString[]; +extern const u8 BattleScript_WrapTurnDmg[]; +extern const u8 BattleScript_WrapEnds[]; +extern const u8 BattleScript_MoveUsedIsInLove[]; +extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern const u8 BattleScript_NightmareTurnDmg[]; +extern const u8 BattleScript_CurseTurnDmg[]; +extern const u8 BattleScript_TargetPRLZHeal[]; +extern const u8 BattleScript_MoveEffectSleep[]; +extern const u8 BattleScript_82DB374[]; +extern const u8 BattleScript_YawnMakesAsleep[]; +extern const u8 BattleScript_MoveEffectPoison[]; +extern const u8 BattleScript_MoveEffectBurn[]; +extern const u8 BattleScript_MoveEffectFreeze[]; +extern const u8 BattleScript_MoveEffectParalysis[]; +extern const u8 BattleScript_MoveEffectUproar[]; +extern const u8 BattleScript_MoveEffectToxic[]; +extern const u8 BattleScript_MoveEffectPayDay[]; +extern const u8 BattleScript_MoveEffectWrap[]; +extern const u8 BattleScript_MoveEffectConfusion[]; +extern const u8 BattleScript_MoveEffectRecoil33[]; +extern const u8 BattleScript_82DB407[]; +extern const u8 BattleScript_82DB421[]; +extern const u8 BattleScript_ItemSteal[]; +extern const u8 BattleScript_DrizzleActivates[]; +extern const u8 BattleScript_SpeedBoostActivates[]; +extern const u8 BattleScript_TraceActivates[]; +extern const u8 BattleScript_RainDishActivates[]; +extern const u8 BattleScript_SandstreamActivates[]; +extern const u8 BattleScript_ShedSkinActivates[]; +extern const u8 BattleScript_82DB48D[]; +extern const u8 BattleScript_82DB493[]; +extern const u8 BattleScript_CastformChange[]; +extern const u8 BattleScript_82DB4AF[]; +extern const u8 BattleScript_82DB4B8[]; +extern const u8 BattleScript_82DB4BE[]; +extern const u8 BattleScript_82DB4C1[]; +extern const u8 BattleScript_82DB4CD[]; +extern const u8 BattleScript_82DB510[]; +extern const u8 BattleScript_82DB51B[]; +extern const u8 BattleScript_82DB51C[]; +extern const u8 BattleScript_DroughtActivates[]; +extern const u8 BattleScript_TookAttack[]; +extern const u8 BattleScript_SturdyPreventsOHKO[]; +extern const u8 BattleScript_DampStopsExplosion[]; +extern const u8 BattleScript_MoveHPDrain_PPLoss[]; +extern const u8 BattleScript_MoveHPDrain[]; +extern const u8 BattleScript_82DB591[]; +extern const u8 BattleScript_82DB592[]; +extern const u8 BattleScript_FlashFireBoost_PPLoss[]; +extern const u8 BattleScript_FlashFireBoost[]; +extern const u8 BattleScript_82DB5B9[]; +extern const u8 BattleScript_AbilityNoStatLoss[]; +extern const u8 BattleScript_BRNPrevention[]; +extern const u8 BattleScript_PRLZPrevention[]; +extern const u8 BattleScript_PSNPrevention[]; +extern const u8 BattleScript_ObliviousPreventsAttraction[]; +extern const u8 BattleScript_FlinchPrevention[]; +extern const u8 BattleScript_82DB611[]; +extern const u8 BattleScript_SoundproofProtected[]; +extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern const u8 BattleScript_StickyHoldActivates[]; +extern const u8 BattleScript_ColorChangeActivates[]; +extern const u8 BattleScript_RoughSkinActivates[]; +extern const u8 BattleScript_CuteCharmActivates[]; +extern const u8 BattleScript_ApplySecondaryEffect[]; +extern const u8 BattleScript_SynchronizeActivates[]; +extern const u8 BattleScript_NoItemSteal[]; +extern const u8 BattleScript_82DB68C[]; +extern const u8 BattleScript_82DB695[]; +extern const u8 BattleScript_82DB6A5[]; +extern const u8 BattleScript_MoveUsedLoafingAround[]; +extern const u8 BattleScript_82DB6C7[]; +extern const u8 BattleScript_82DB6D9[]; +extern const u8 BattleScript_82DB6F0[]; +extern const u8 BattleScript_SubstituteFade[]; +extern const u8 BattleScript_BerryCurePrlzEnd2[]; +extern const u8 BattleScript_BerryCureParRet[]; +extern const u8 BattleScript_BerryCurePsnEnd2[]; +extern const u8 BattleScript_BerryCurePsnRet[]; +extern const u8 BattleScript_BerryCureBrnEnd2[]; +extern const u8 BattleScript_BerryCureBrnRet[]; +extern const u8 BattleScript_BerryCureFrzEnd2[]; +extern const u8 BattleScript_BerryCureFrzRet[]; +extern const u8 BattleScript_BerryCureSlpEnd2[]; +extern const u8 BattleScript_BerryCureSlpRet[]; +extern const u8 BattleScript_BerryCureConfusionEnd2[]; +extern const u8 BattleScript_BerryCureConfusionRet[]; +extern const u8 BattleScript_BerryCureChosenStatusEnd2[]; +extern const u8 BattleScript_BerryCureChosenStatusRet[]; +extern const u8 BattleScript_WhiteHerbEnd2[]; +extern const u8 BattleScript_WhiteHerbRet[]; +extern const u8 BattleScript_ItemHealHP_RemoveItem[]; +extern const u8 BattleScript_BerryPPHealEnd2[]; +extern const u8 BattleScript_ItemHealHP_End2[]; +extern const u8 BattleScript_ItemHealHP_Ret[]; +extern const u8 BattleScript_82DB812[]; +extern const u8 BattleScript_HangedOnMsg[]; +extern const u8 BattleScript_BerryConfuseHealEnd2[]; +extern const u8 BattleScript_BerryStatRaiseEnd2[]; +extern const u8 BattleScript_82DB85B[]; +extern const u8 BattleScript_BerryFocusEnergyEnd2[]; +extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; +extern const u8 BattleScript_82DB87D[]; +extern const u8 BattleScript_82DB881[]; +extern const u8 BattleScript_82DB887[]; +extern const u8 BattleScript_82DB89D[]; +extern const u8 BattleScript_82DB8BE[]; +extern const u8 BattleScript_82DB8E0[]; +extern const u8 BattleScript_82DB8F3[]; +extern const u8 BattleScript_82DB973[]; +extern const u8 BattleScript_82DB992[]; +extern const u8 BattleScript_82DB9BA[]; +extern const u8 BattleScript_82DB9C1[]; +extern const u8 BattleScript_82DB9C8[]; +extern const u8 BattleScript_82DBD68[]; +extern const u8 BattleScript_82DBD7A[]; +extern const u8 BattleScript_82DBD7E[]; +extern const u8 BattleScript_SuccessBallThrow[]; +extern const u8 BattleScript_82DBD92[]; +extern const u8 BattleScript_82DBDA5[]; +extern const u8 BattleScript_82DBDC2[]; +extern const u8 BattleScript_82DBDC3[]; +extern const u8 BattleScript_WallyBallThrow[]; +extern const u8 BattleScript_ShakeBallThrow[]; +extern const u8 BattleScript_82DBE01[]; +extern const u8 BattleScript_TrainerBallBlock[]; +extern const u8 BattleScript_82DBE12[]; +extern const u8 BattleScript_82DBE1C[]; +extern const u8 BattleScript_82DBE4B[]; +extern const u8 BattleScript_82DBE6F[]; +extern const u8 BattleScript_82DBE91[]; +extern const u8 BattleScript_RunByUsingItem[]; +extern const u8 BattleScript_82DBEBD[]; +extern const u8 BattleScript_82DBEC4[]; +extern const u8 BattleScript_82DBECD[]; +extern const u8 BattleScript_82DBEE3[]; + +#endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_2.c b/src/battle_2.c index 2be6f9d77..d7f051272 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -6,6 +6,7 @@ #include "gpu_regs.h" #include "unknown_task.h" #include "battle_setup.h" +#include "battle_scripts.h" #include "pokemon.h" #include "palette.h" #include "task.h" @@ -178,31 +179,6 @@ extern const u8 gText_Ice[]; extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; -// battlescripts -extern const u8 gUnknown_082DB8BE[]; -extern const u8 gUnknown_082DB881[]; -extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 gUnknown_082DAB11[]; -extern const u8 gUnknown_082DB9BA[]; -extern const u8 gUnknown_082DAAFE[]; -extern const u8 gUnknown_082DAB0B[]; -extern const u8 BattleScript_FocusPunchSetUp[]; -extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_FrontierTrainerBattleWon[]; -extern const u8 BattleScript_LocalTrainerBattleWon[]; -extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; -extern const u8 BattleScript_LocalBattleLost[]; -extern const u8 gUnknown_082DB9C8[]; -extern const u8 gUnknown_082DAA0B[]; -extern const u8 gUnknown_082DB9C1[]; -extern const u8 BattleScript_RanAwayUsingMonAbility[]; -extern const u8 BattleScript_SmokeBallEscape[]; -extern const u8 BattleScript_GotAwaySafely[]; -extern const u8 BattleScript_WildMonFled[]; -extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_ActionSwitch[]; -extern const u8 BattleScript_PrintFailedToRunString[]; - // functions extern void dp12_8087EA4(void); extern void sub_80356D0(void); @@ -3704,7 +3680,7 @@ static void TryDoEventsBeforeFirstTurn(void) if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { StopCryAndClearCrySongs(); - BattleScriptExecute(gUnknown_082DB8BE); + BattleScriptExecute(BattleScript_82DB8BE); } } @@ -3792,9 +3768,9 @@ void BattleTurnPassed(void) gRandomTurnNumber = Random(); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) - BattleScriptExecute(gUnknown_082DB881); + BattleScriptExecute(BattleScript_82DB881); else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0) - BattleScriptExecute(gUnknown_082DB8BE); + BattleScriptExecute(BattleScript_82DB8BE); } u8 IsRunningFromBattleImpossible(void) @@ -4052,7 +4028,7 @@ static void HandleTurnActionSelectionState(void) case ACTION_SAFARI_ZONE_BALL: if (IsPlayerPartyAndPokemonStorageFull()) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAB11; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4107,7 +4083,7 @@ static void HandleTurnActionSelectionState(void) && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB9BA; gBattleCommunication[gActiveBank] = 8; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4117,13 +4093,13 @@ static void HandleTurnActionSelectionState(void) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - BattleScriptExecute(gUnknown_082DAAFE); + BattleScriptExecute(BattleScript_82DAAFE); gBattleCommunication[gActiveBank] = 1; } else if (IsRunningFromBattleImpossible() != 0 && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAB0B; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4811,13 +4787,13 @@ static void HandleEndTurn_BattleLost(void) { if (gBattleOutcome & BATTLE_OUTCOME_BIT_x80) { - gBattlescriptCurrInstr = gUnknown_082DB9C8; + gBattlescriptCurrInstr = BattleScript_82DB9C8; gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); gSaveBlock2Ptr->field_CA9_b = 1; } else { - gBattlescriptCurrInstr = gUnknown_082DAA0B; + gBattlescriptCurrInstr = BattleScript_82DAA0B; gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); } } @@ -4843,13 +4819,13 @@ static void HandleEndTurn_RanFromBattle(void) if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattlescriptCurrInstr = BattleScript_82DB9C1; gBattleOutcome = BATTLE_FORFEITED; gSaveBlock2Ptr->field_CA9_b = 1; } else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) { - gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattlescriptCurrInstr = BattleScript_82DB9C1; gBattleOutcome = BATTLE_FORFEITED; } else diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 423d34d45..5758aba87 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -82,7 +82,7 @@ static void LinkOpponentHandleBallThrowAnim(void); static void LinkOpponentHandlePause(void); static void LinkOpponentHandleMoveAnimation(void); static void LinkOpponentHandlePrintString(void); -static void LinkOpponentHandlePrintStringPlayerOnly(void); +static void LinkOpponentHandlePrintSelectionString(void); static void LinkOpponentHandleChooseAction(void); static void LinkOpponentHandleUnknownYesNoBox(void); static void LinkOpponentHandleChooseMove(void); @@ -108,7 +108,7 @@ static void LinkOpponentHandleCmd39(void); static void LinkOpponentHandleCmd40(void); static void LinkOpponentHandleHitAnimation(void); static void LinkOpponentHandleCmd42(void); -static void LinkOpponentHandleEffectivenessSound(void); +static void LinkOpponentHandlePlaySE(void); static void LinkOpponentHandlePlayFanfareOrBGM(void); static void LinkOpponentHandleFaintingCry(void); static void LinkOpponentHandleIntroSlide(void); @@ -154,7 +154,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkOpponentHandlePause, LinkOpponentHandleMoveAnimation, LinkOpponentHandlePrintString, - LinkOpponentHandlePrintStringPlayerOnly, + LinkOpponentHandlePrintSelectionString, LinkOpponentHandleChooseAction, LinkOpponentHandleUnknownYesNoBox, LinkOpponentHandleChooseMove, @@ -180,7 +180,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkOpponentHandleCmd40, LinkOpponentHandleHitAnimation, LinkOpponentHandleCmd42, - LinkOpponentHandleEffectivenessSound, + LinkOpponentHandlePlaySE, LinkOpponentHandlePlayFanfareOrBGM, LinkOpponentHandleFaintingCry, LinkOpponentHandleIntroSlide, @@ -1505,7 +1505,7 @@ static void LinkOpponentHandlePrintString(void) sub_817C95C(*stringId); } -static void LinkOpponentHandlePrintStringPlayerOnly(void) +static void LinkOpponentHandlePrintSelectionString(void) { LinkOpponentBufferExecCompleted(); } @@ -1681,7 +1681,7 @@ static void LinkOpponentHandleCmd42(void) LinkOpponentBufferExecCompleted(); } -static void LinkOpponentHandleEffectivenessSound(void) +static void LinkOpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index e3bee98d9..1af6da1cd 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -78,7 +78,7 @@ static void LinkPartnerHandleBallThrowAnim(void); static void LinkPartnerHandlePause(void); static void LinkPartnerHandleMoveAnimation(void); static void LinkPartnerHandlePrintString(void); -static void LinkPartnerHandlePrintStringPlayerOnly(void); +static void LinkPartnerHandlePrintSelectionString(void); static void LinkPartnerHandleChooseAction(void); static void LinkPartnerHandleUnknownYesNoBox(void); static void LinkPartnerHandleChooseMove(void); @@ -104,7 +104,7 @@ static void LinkPartnerHandleCmd39(void); static void LinkPartnerHandleCmd40(void); static void LinkPartnerHandleHitAnimation(void); static void LinkPartnerHandleCmd42(void); -static void LinkPartnerHandleEffectivenessSound(void); +static void LinkPartnerHandlePlaySE(void); static void LinkPartnerHandlePlayFanfareOrBGM(void); static void LinkPartnerHandleFaintingCry(void); static void LinkPartnerHandleIntroSlide(void); @@ -149,7 +149,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkPartnerHandlePause, LinkPartnerHandleMoveAnimation, LinkPartnerHandlePrintString, - LinkPartnerHandlePrintStringPlayerOnly, + LinkPartnerHandlePrintSelectionString, LinkPartnerHandleChooseAction, LinkPartnerHandleUnknownYesNoBox, LinkPartnerHandleChooseMove, @@ -175,7 +175,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkPartnerHandleCmd40, LinkPartnerHandleHitAnimation, LinkPartnerHandleCmd42, - LinkPartnerHandleEffectivenessSound, + LinkPartnerHandlePlaySE, LinkPartnerHandlePlayFanfareOrBGM, LinkPartnerHandleFaintingCry, LinkPartnerHandleIntroSlide, @@ -1327,7 +1327,7 @@ static void LinkPartnerHandlePrintString(void) sub_817C95C(*stringId); } -static void LinkPartnerHandlePrintStringPlayerOnly(void) +static void LinkPartnerHandlePrintSelectionString(void) { LinkPartnerBufferExecCompleted(); } @@ -1503,7 +1503,7 @@ static void LinkPartnerHandleCmd42(void) LinkPartnerBufferExecCompleted(); } -static void LinkPartnerHandleEffectivenessSound(void) +static void LinkPartnerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 0aac4cbe4..d69de8c29 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -83,7 +83,7 @@ static void OpponentHandleBallThrow(void); static void OpponentHandlePause(void); static void OpponentHandleMoveAnimation(void); static void OpponentHandlePrintString(void); -static void OpponentHandlePrintStringPlayerOnly(void); +static void OpponentHandlePrintSelectionString(void); static void OpponentHandleChooseAction(void); static void OpponentHandleUnknownYesNoBox(void); static void OpponentHandleChooseMove(void); @@ -109,7 +109,7 @@ static void OpponentHandleCmd39(void); static void OpponentHandleCmd40(void); static void OpponentHandleHitAnimation(void); static void OpponentHandleCmd42(void); -static void OpponentHandleEffectivenessSound(void); +static void OpponentHandlePlaySE(void); static void OpponentHandlePlayFanfareOrBGM(void); static void OpponentHandleFaintingCry(void); static void OpponentHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandlePause, OpponentHandleMoveAnimation, OpponentHandlePrintString, - OpponentHandlePrintStringPlayerOnly, + OpponentHandlePrintSelectionString, OpponentHandleChooseAction, OpponentHandleUnknownYesNoBox, OpponentHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandleCmd40, OpponentHandleHitAnimation, OpponentHandleCmd42, - OpponentHandleEffectivenessSound, + OpponentHandlePlaySE, OpponentHandlePlayFanfareOrBGM, OpponentHandleFaintingCry, OpponentHandleIntroSlide, @@ -1537,7 +1537,7 @@ static void OpponentHandlePrintString(void) sub_81A57E4(gActiveBank, *stringId); } -static void OpponentHandlePrintStringPlayerOnly(void) +static void OpponentHandlePrintSelectionString(void) { OpponentBufferExecCompleted(); } @@ -1826,7 +1826,7 @@ static void OpponentHandleCmd42(void) OpponentBufferExecCompleted(); } -static void OpponentHandleEffectivenessSound(void) +static void OpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16c62c53b..7ea2abccf 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -102,7 +102,7 @@ static void PlayerHandleBallThrowAnim(void); static void PlayerHandlePause(void); static void PlayerHandleMoveAnimation(void); static void PlayerHandlePrintString(void); -static void PlayerHandlePrintStringPlayerOnly(void); +static void PlayerHandlePrintSelectionString(void); static void PlayerHandleChooseAction(void); static void PlayerHandleUnknownYesNoBox(void); static void PlayerHandleChooseMove(void); @@ -128,7 +128,7 @@ static void PlayerHandleCmd39(void); static void PlayerHandleCmd40(void); static void PlayerHandleHitAnimation(void); static void PlayerHandleCmd42(void); -static void PlayerHandleEffectivenessSound(void); +static void PlayerHandlePlaySE(void); static void PlayerHandlePlayFanfareOrBGM(void); static void PlayerHandleFaintingCry(void); static void PlayerHandleIntroSlide(void); @@ -189,7 +189,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerHandlePause, PlayerHandleMoveAnimation, PlayerHandlePrintString, - PlayerHandlePrintStringPlayerOnly, + PlayerHandlePrintSelectionString, PlayerHandleChooseAction, PlayerHandleUnknownYesNoBox, PlayerHandleChooseMove, @@ -215,7 +215,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerHandleCmd40, PlayerHandleHitAnimation, PlayerHandleCmd42, - PlayerHandleEffectivenessSound, + PlayerHandlePlaySE, PlayerHandlePlayFanfareOrBGM, PlayerHandleFaintingCry, PlayerHandleIntroSlide, @@ -2576,7 +2576,7 @@ static void PlayerHandlePrintString(void) sub_81A57E4(gActiveBank, *stringId); } -static void PlayerHandlePrintStringPlayerOnly(void) +static void PlayerHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) PlayerHandlePrintString(); @@ -2913,7 +2913,7 @@ static void PlayerHandleCmd42(void) PlayerBufferExecCompleted(); } -static void PlayerHandleEffectivenessSound(void) +static void PlayerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 0cd34442a..4cca5c002 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -78,7 +78,7 @@ static void PlayerPartnerHandleBallThrowAnim(void); static void PlayerPartnerHandlePause(void); static void PlayerPartnerHandleMoveAnimation(void); static void PlayerPartnerHandlePrintString(void); -static void PlayerPartnerHandlePrintStringPlayerOnly(void); +static void PlayerPartnerHandlePrintSelectionString(void); static void PlayerPartnerHandleChooseAction(void); static void PlayerPartnerHandleUnknownYesNoBox(void); static void PlayerPartnerHandleChooseMove(void); @@ -104,7 +104,7 @@ static void PlayerPartnerHandleCmd39(void); static void PlayerPartnerHandleCmd40(void); static void PlayerPartnerHandleHitAnimation(void); static void PlayerPartnerHandleCmd42(void); -static void PlayerPartnerHandleEffectivenessSound(void); +static void PlayerPartnerHandlePlaySE(void); static void PlayerPartnerHandlePlayFanfareOrBGM(void); static void PlayerPartnerHandleFaintingCry(void); static void PlayerPartnerHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerPartnerHandlePause, PlayerPartnerHandleMoveAnimation, PlayerPartnerHandlePrintString, - PlayerPartnerHandlePrintStringPlayerOnly, + PlayerPartnerHandlePrintSelectionString, PlayerPartnerHandleChooseAction, PlayerPartnerHandleUnknownYesNoBox, PlayerPartnerHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerPartnerHandleCmd40, PlayerPartnerHandleHitAnimation, PlayerPartnerHandleCmd42, - PlayerPartnerHandleEffectivenessSound, + PlayerPartnerHandlePlaySE, PlayerPartnerHandlePlayFanfareOrBGM, PlayerPartnerHandleFaintingCry, PlayerPartnerHandleIntroSlide, @@ -1519,7 +1519,7 @@ static void PlayerPartnerHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter2; } -static void PlayerPartnerHandlePrintStringPlayerOnly(void) +static void PlayerPartnerHandlePrintSelectionString(void) { PlayerPartnerBufferExecCompleted(); } @@ -1756,7 +1756,7 @@ static void PlayerPartnerHandleCmd42(void) PlayerPartnerBufferExecCompleted(); } -static void PlayerPartnerHandleEffectivenessSound(void) +static void PlayerPartnerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index b55d644ac..027230be4 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -81,7 +81,7 @@ static void RecordedOpponentHandleBallThrowAnim(void); static void RecordedOpponentHandlePause(void); static void RecordedOpponentHandleMoveAnimation(void); static void RecordedOpponentHandlePrintString(void); -static void RecordedOpponentHandlePrintStringPlayerOnly(void); +static void RecordedOpponentHandlePrintSelectionString(void); static void RecordedOpponentHandleChooseAction(void); static void RecordedOpponentHandleUnknownYesNoBox(void); static void RecordedOpponentHandleChooseMove(void); @@ -107,7 +107,7 @@ static void RecordedOpponentHandleCmd39(void); static void RecordedOpponentHandleCmd40(void); static void RecordedOpponentHandleHitAnimation(void); static void RecordedOpponentHandleCmd42(void); -static void RecordedOpponentHandleEffectivenessSound(void); +static void RecordedOpponentHandlePlaySE(void); static void RecordedOpponentHandlePlayFanfareOrBGM(void); static void RecordedOpponentHandleFaintingCry(void); static void RecordedOpponentHandleIntroSlide(void); @@ -153,7 +153,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void RecordedOpponentHandlePause, RecordedOpponentHandleMoveAnimation, RecordedOpponentHandlePrintString, - RecordedOpponentHandlePrintStringPlayerOnly, + RecordedOpponentHandlePrintSelectionString, RecordedOpponentHandleChooseAction, RecordedOpponentHandleUnknownYesNoBox, RecordedOpponentHandleChooseMove, @@ -179,7 +179,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void RecordedOpponentHandleCmd40, RecordedOpponentHandleHitAnimation, RecordedOpponentHandleCmd42, - RecordedOpponentHandleEffectivenessSound, + RecordedOpponentHandlePlaySE, RecordedOpponentHandlePlayFanfareOrBGM, RecordedOpponentHandleFaintingCry, RecordedOpponentHandleIntroSlide, @@ -1435,7 +1435,7 @@ static void RecordedOpponentHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void RecordedOpponentHandlePrintStringPlayerOnly(void) +static void RecordedOpponentHandlePrintSelectionString(void) { RecordedOpponentBufferExecCompleted(); } @@ -1625,7 +1625,7 @@ static void RecordedOpponentHandleCmd42(void) RecordedOpponentBufferExecCompleted(); } -static void RecordedOpponentHandleEffectivenessSound(void) +static void RecordedOpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 78e7497a5..f5f3ab3c0 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -81,7 +81,7 @@ static void RecordedPlayerHandleBallThrowAnim(void); static void RecordedPlayerHandlePause(void); static void RecordedPlayerHandleMoveAnimation(void); static void RecordedPlayerHandlePrintString(void); -static void RecordedPlayerHandlePrintStringPlayerOnly(void); +static void RecordedPlayerHandlePrintSelectionString(void); static void RecordedPlayerHandleChooseAction(void); static void RecordedPlayerHandleUnknownYesNoBox(void); static void RecordedPlayerHandleChooseMove(void); @@ -107,7 +107,7 @@ static void RecordedPlayerHandleCmd39(void); static void RecordedPlayerHandleCmd40(void); static void RecordedPlayerHandleHitAnimation(void); static void RecordedPlayerHandleCmd42(void); -static void RecordedPlayerHandleEffectivenessSound(void); +static void RecordedPlayerHandlePlaySE(void); static void RecordedPlayerHandlePlayFanfareOrBGM(void); static void RecordedPlayerHandleFaintingCry(void); static void RecordedPlayerHandleIntroSlide(void); @@ -152,7 +152,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) RecordedPlayerHandlePause, RecordedPlayerHandleMoveAnimation, RecordedPlayerHandlePrintString, - RecordedPlayerHandlePrintStringPlayerOnly, + RecordedPlayerHandlePrintSelectionString, RecordedPlayerHandleChooseAction, RecordedPlayerHandleUnknownYesNoBox, RecordedPlayerHandleChooseMove, @@ -178,7 +178,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) RecordedPlayerHandleCmd40, RecordedPlayerHandleHitAnimation, RecordedPlayerHandleCmd42, - RecordedPlayerHandleEffectivenessSound, + RecordedPlayerHandlePlaySE, RecordedPlayerHandlePlayFanfareOrBGM, RecordedPlayerHandleFaintingCry, RecordedPlayerHandleIntroSlide, @@ -1437,7 +1437,7 @@ static void RecordedPlayerHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void RecordedPlayerHandlePrintStringPlayerOnly(void) +static void RecordedPlayerHandlePrintSelectionString(void) { RecordedPlayerBufferExecCompleted(); } @@ -1644,7 +1644,7 @@ static void RecordedPlayerHandleCmd42(void) RecordedPlayerBufferExecCompleted(); } -static void RecordedPlayerHandleEffectivenessSound(void) +static void RecordedPlayerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index a4f35bed1..635f5fef1 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -66,7 +66,7 @@ static void SafariHandleBallThrowAnim(void); static void SafariHandlePause(void); static void SafariHandleMoveAnimation(void); static void SafariHandlePrintString(void); -static void SafariHandlePrintStringPlayerOnly(void); +static void SafariHandlePrintSelectionString(void); static void SafariHandleChooseAction(void); static void SafariHandleUnknownYesNoBox(void); static void SafariHandleChooseMove(void); @@ -92,7 +92,7 @@ static void SafariHandleCmd39(void); static void SafariHandleCmd40(void); static void SafariHandleHitAnimation(void); static void SafariHandleCmd42(void); -static void SafariHandleEffectivenessSound(void); +static void SafariHandlePlaySE(void); static void SafariHandlePlayFanfareOrBGM(void); static void SafariHandleFaintingCry(void); static void SafariHandleIntroSlide(void); @@ -130,7 +130,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = SafariHandlePause, SafariHandleMoveAnimation, SafariHandlePrintString, - SafariHandlePrintStringPlayerOnly, + SafariHandlePrintSelectionString, SafariHandleChooseAction, SafariHandleUnknownYesNoBox, SafariHandleChooseMove, @@ -156,7 +156,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = SafariHandleCmd40, SafariHandleHitAnimation, SafariHandleCmd42, - SafariHandleEffectivenessSound, + SafariHandlePlaySE, SafariHandlePlayFanfareOrBGM, SafariHandleFaintingCry, SafariHandleIntroSlide, @@ -449,7 +449,7 @@ static void SafariHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void SafariHandlePrintStringPlayerOnly(void) +static void SafariHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) SafariHandlePrintString(); @@ -607,7 +607,7 @@ static void SafariHandleCmd42(void) SafariBufferExecCompleted(); } -static void SafariHandleEffectivenessSound(void) +static void SafariHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 4dac1d264..442e32cca 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -86,7 +86,7 @@ static void WallyHandleBallThrowAnim(void); static void WallyHandlePause(void); static void WallyHandleMoveAnimation(void); static void WallyHandlePrintString(void); -static void WallyHandlePrintStringPlayerOnly(void); +static void WallyHandlePrintSelectionString(void); static void WallyHandleChooseAction(void); static void WallyHandleUnknownYesNoBox(void); static void WallyHandleChooseMove(void); @@ -112,7 +112,7 @@ static void WallyHandleCmd39(void); static void WallyHandleCmd40(void); static void WallyHandleHitAnimation(void); static void WallyHandleCmd42(void); -static void WallyHandleEffectivenessSound(void); +static void WallyHandlePlaySE(void); static void WallyHandlePlayFanfareOrBGM(void); static void WallyHandleFaintingCry(void); static void WallyHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) = WallyHandlePause, WallyHandleMoveAnimation, WallyHandlePrintString, - WallyHandlePrintStringPlayerOnly, + WallyHandlePrintSelectionString, WallyHandleChooseAction, WallyHandleUnknownYesNoBox, WallyHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) = WallyHandleCmd40, WallyHandleHitAnimation, WallyHandleCmd42, - WallyHandleEffectivenessSound, + WallyHandlePlaySE, WallyHandlePlayFanfareOrBGM, WallyHandleFaintingCry, WallyHandleIntroSlide, @@ -1211,7 +1211,7 @@ static void WallyHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void WallyHandlePrintStringPlayerOnly(void) +static void WallyHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) WallyHandlePrintString(); @@ -1419,7 +1419,7 @@ static void WallyHandleCmd42(void) WallyBufferExecCompleted(); } -static void WallyHandleEffectivenessSound(void) +static void WallyHandlePlaySE(void) { PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 858540a9f..ed48ec5d9 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1140,10 +1140,10 @@ void EmitPrintString(u8 bufferId, u16 stringID) PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); } -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID) +void EmitPrintSelectionString(u8 bufferId, u16 stringID) { s32 i; - struct StringInfoBattle* stringInfo; + struct StringInfoBattle *stringInfo; gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; gBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; @@ -1427,7 +1427,7 @@ void EmitCmd42(u8 bufferId) PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void EmitEffectivenessSound(u8 bufferId, u16 songId) +void EmitPlaySE(u8 bufferId, u16 songId) { gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND; gBattleBuffersTransferData[1] = songId; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6409ff56e..e0a61a612 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3,6 +3,7 @@ #include "battle_move_effects.h" #include "battle_message.h" #include "battle_ai_script_commands.h" +#include "battle_scripts.h" #include "moves.h" #include "abilities.h" #include "item.h" @@ -146,88 +147,6 @@ extern u8 sub_813B21C(void); extern u16 get_unknown_box_id(void); extern void sub_80356D0(void); -// BattleScripts -extern const u8 BattleScript_MoveEnd[]; -extern const u8 BattleScript_NoPPForMove[]; -extern const u8 BattleScript_MagicCoatBounce[]; -extern const u8 BattleScript_TookAttack[]; -extern const u8 BattleScript_SnatchedMove[]; -extern const u8 BattleScript_Pausex20[]; -extern const u8 BattleScript_SubstituteFade[]; -extern const u8 BattleScript_HangedOnMsg[]; -extern const u8 BattleScript_OneHitKOMsg[]; -extern const u8 BattleScript_EnduredMsg[]; -extern const u8 BattleScript_PSNPrevention[]; -extern const u8 BattleScript_BRNPrevention[]; -extern const u8 BattleScript_PRLZPrevention[]; -extern const u8 BattleScript_FlinchPrevention[]; -extern const u8 BattleScript_StatUp[]; -extern const u8 BattleScript_StatDown[]; -extern const u8 BattleScript_NoItemSteal[]; -extern const u8 BattleScript_ItemSteal[]; -extern const u8 BattleScript_RapidSpinAway[]; -extern const u8 BattleScript_TargetPRLZHeal[]; -extern const u8 BattleScript_KnockedOff[]; -extern const u8 BattleScript_StickyHoldActivates[]; -extern const u8 BattleScript_AllStatsUp[]; -extern const u8 BattleScript_AtkDefDown[]; -extern const u8 BattleScript_SAtkDown2[]; -extern const u8 BattleScript_LevelUp[]; -extern const u8 BattleScript_WrapFree[]; -extern const u8 BattleScript_LeechSeedFree[]; -extern const u8 BattleScript_SpikesFree[]; -extern const u8 BattleScript_ButItFailed[]; -extern const u8 BattleScript_ObliviousPreventsAttraction[]; -extern const u8 BattleScript_MistProtected[]; -extern const u8 BattleScript_AbilityNoStatLoss[]; -extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; -extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_WallyBallThrow[]; -extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_FaintAttacker[]; -extern const u8 BattleScript_FaintTarget[]; -extern const u8 BattleScript_DestinyBondTakesLife[]; -extern const u8 BattleScript_GrudgeTakesPp[]; -extern const u8 BattleScript_RageIsBuilding[]; -extern const u8 BattleScript_DefrostedViaFireMove[]; -extern const u8 gUnknown_082DB87D[]; -extern const u8 gUnknown_082DAE90[]; -extern const u8 gUnknown_082DAE59[]; -extern const u8 gUnknown_082DAEC7[]; -extern const u8 BattleScript_MoveEffectSleep[]; -extern const u8 BattleScript_MoveEffectPoison[]; -extern const u8 BattleScript_MoveEffectBurn[]; -extern const u8 BattleScript_MoveEffectFreeze[]; -extern const u8 BattleScript_MoveEffectParalysis[]; -extern const u8 BattleScript_MoveEffectToxic[]; -extern const u8 BattleScript_MoveEffectConfusion[]; -extern const u8 BattleScript_MoveEffectUproar[]; -extern const u8 BattleScript_MoveEffectPayDay[]; -extern const u8 BattleScript_MoveEffectWrap[]; -extern const u8 BattleScript_MoveEffectRecoil33[]; -extern const u8 BattleScript_DampStopsExplosion[]; -extern const u8 BattleScript_MistProtected[]; -extern const u8 BattleScript_AbilityNoStatLoss[]; -extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; -extern const u8 BattleScript_ButItFailed[]; -extern const u8 gUnknown_082DADD8[]; -extern const u8 BattleScript_PrintPayDayMoneyString[]; -extern const u8 BattleScript_SturdyPreventsOHKO[]; -extern const u8 BattleScript_ObliviousPreventsAttraction[]; -extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[]; -extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_WallyBallThrow[]; -extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_PresentDamageTarget[]; -extern const u8 BattleScript_AlreadyAtFullHp[]; -extern const u8 BattleScript_PresentHealTarget[]; -extern const u8 BattleScript_WrapFree[]; -extern const u8 BattleScript_LeechSeedFree[]; -extern const u8 BattleScript_SpikesFree[]; - // strings extern const u8 gText_BattleYesNoChoice[]; @@ -247,7 +166,7 @@ extern const u8 gText_BattleYesNoChoice[]; // this file's functions static bool8 IsTwoTurnsMove(u16 move); -static void DestinyBondFlagUpdate(void); +static void TrySetDestinyBondToHappen(void); static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); @@ -267,29 +186,29 @@ static void atk01_accuracycheck(void); static void atk02_attackstring(void); static void atk03_ppreduce(void); static void atk04_critcalc(void); -static void atk05_damagecalc1(void); +static void atk05_damagecalc(void); static void atk06_typecalc(void); -static void atk07_dmg_adjustment(void); -static void atk08_dmg_adjustment2(void); +static void atk07_adjustnormaldamage(void); +static void atk08_adjustnormaldamage2(void); static void atk09_attackanimation(void); static void atk0A_waitanimation(void); static void atk0B_healthbarupdate(void); static void atk0C_datahpupdate(void); static void atk0D_critmessage(void); -static void atk0E_effectiveness_sound(void); +static void atk0E_effectivenesssound(void); static void atk0F_resultmessage(void); static void atk10_printstring(void); -static void atk11_printstring_playeronly(void); +static void atk11_printselectionstring(void); static void atk12_waitmessage(void); static void atk13_printfromtable(void); -static void atk14_printfromtable_playeronly(void); +static void atk14_printselectionstringfromtable(void); static void atk15_seteffectwithchance(void); static void atk16_seteffectprimary(void); static void atk17_seteffectsecondary(void); -static void atk18_status_effect_clear(void); -static void atk19_faint_pokemon(void); -static void atk1A_faint_animation(void); -static void atk1B_faint_effects_clear(void); +static void atk18_clearstatusfromeffect(void); +static void atk19_tryfaintmon(void); +static void atk1A_dofaintanimation(void); +static void atk1B_cleareffectsonfaint(void); static void atk1C_jumpifstatus(void); static void atk1D_jumpifstatus2(void); static void atk1E_jumpifability(void); @@ -299,9 +218,9 @@ static void atk21_jumpifstatus3(void); static void atk22_jumpiftype(void); static void atk23_getexp(void); static void atk24(void); -static void atk25_move_values_cleanup(void); -static void atk26_set_multihit(void); -static void atk27_decrement_multihit(void); +static void atk25_movevaluescleanup(void); +static void atk26_setmultihit(void); +static void atk27_decrementmultihit(void); static void atk28_goto(void); static void atk29_jumpifbyte(void); static void atk2A_jumpifhalfword(void); @@ -312,7 +231,7 @@ static void atk2E_setbyte(void); static void atk2F_addbyte(void); static void atk30_subbyte(void); static void atk31_copyarray(void); -static void atk32_copyarray_withindex(void); +static void atk32_copyarraywithindex(void); static void atk33_orbyte(void); static void atk34_orhalfword(void); static void atk35_orword(void); @@ -326,75 +245,75 @@ static void atk3C_return(void); static void atk3D_end(void); static void atk3E_end2(void); static void atk3F_end3(void); -static void atk40_jump_if_move_affected_by_protect(void); +static void atk40_jumpifaffectedbyprotect(void); static void atk41_call(void); static void atk42_jumpiftype2(void); static void atk43_jumpifabilitypresent(void); -static void atk44_end_selection_script(void); +static void atk44_endselectionscript(void); static void atk45_playanimation(void); static void atk46_playanimation2(void); static void atk47_setgraphicalstatchangevalues(void); static void atk48_playstatchangeanimation(void); static void atk49_moveend(void); static void atk4A_typecalc2(void); -static void atk4B_return_atk_to_ball(void); -static void atk4C_get_switched_mon_data(void); -static void atk4D_switch_data_update(void); -static void atk4E_switchin_anim(void); -static void atk4F_jump_if_cannot_switch(void); +static void atk4B_returnatktoball(void); +static void atk4C_getswitchedmondata(void); +static void atk4D_switchindataupdate(void); +static void atk4E_switchinanim(void); +static void atk4F_jumpifcantswitch(void); static void atk50_openpartyscreen(void); -static void atk51_switch_handle_order(void); -static void atk52_switch_in_effects(void); -static void atk53_trainer_slide(void); -static void atk54_effectiveness_sound(void); -static void atk55_play_fanfare(void); -static void atk56_fainting_cry(void); +static void atk51_switchhandleorder(void); +static void atk52_switchineffects(void); +static void atk53_trainerslidein(void); +static void atk54_playse(void); +static void atk55_fanfare(void); +static void atk56_playfaintcry(void); static void atk57(void); -static void atk58_return_to_ball(void); -static void atk59_learnmove_inbattle(void); +static void atk58_returntoball(void); +static void atk59_handlelearnnewmove(void); static void atk5A_yesnoboxlearnmove(void); static void atk5B_yesnoboxstoplearningmove(void); static void atk5C_hitanimation(void); static void atk5D_getmoneyreward(void); -static void atk5E_8025A70(void); -static void atk5F_8025B24(void); -static void atk60_increment_gamestat(void); -static void atk61_draw_party_status_summary(void); -static void atk62_08025C6C(void); +static void atk5E(void); +static void atk5F(void); +static void atk60_incrementgamestat(void); +static void atk61_drawpartystatussummary(void); +static void atk62(void); static void atk63_jumptorandomattack(void); static void atk64_statusanimation(void); static void atk65_status2animation(void); static void atk66_chosenstatusanimation(void); static void atk67_yesnobox(void); -static void atk68_cancel_everyones_actions(void); -static void atk69_dmg_adjustment3(void); +static void atk68_cancelallactions(void); +static void atk69_adjustsetdamage(void); static void atk6A_removeitem(void); static void atk6B_atknameinbuff1(void); -static void atk6C_draw_lvlupbox(void); -static void atk6D_reset_sentpokes_value(void); -static void atk6E_set_atk_to_player0(void); -static void atk6F_set_visible(void); -static void atk70_record_last_used_ability(void); -static void atk71_buffer_move_to_learn(void); -static void atk72_jump_if_run_attempt_success(void); -static void atk73_hp_thresholds(void); -static void atk74_hp_thresholds2(void); -static void atk75_item_effect_on_opponent(void); +static void atk6C_drawlvlupbox(void); +static void atk6D_resetsentmonsvalue(void); +static void atk6E_setatktoplayer0(void); +static void atk6F_makevisible(void); +static void atk70_recordlastability(void); +static void atk71_buffermovetolearn(void); +static void atk72_jumpifplayerran(void); +static void atk73_hpthresholds(void); +static void atk74_hpthresholds2(void); +static void atk75_useitemonopponent(void); static void atk76_various(void); -static void atk77_set_protect_like(void); +static void atk77_setprotectlike(void); static void atk78_faintifabilitynotdamp(void); static void atk79_setatkhptozero(void); -static void atk7A_jumpwhiletargetvalid(void); -static void atk7B_healhalfHP_if_possible(void); +static void atk7A_jumpifnexttargetvalid(void); +static void atk7B_tryhealhalfhealth(void); static void atk7C_trymirrormove(void); -static void atk7D_set_rain(void); +static void atk7D_setrain(void); static void atk7E_setreflect(void); static void atk7F_setseeded(void); static void atk80_manipulatedamage(void); -static void atk81_setrest(void); +static void atk81_trysetrest(void); static void atk82_jumpifnotfirstturn(void); static void atk83_nop(void); -static void atk84_jump_if_cant_sleep(void); +static void atk84_jumpifcantmakeasleep(void); static void atk85_stockpile(void); static void atk86_stockpiletobasedamage(void); static void atk87_stockpiletohpheal(void); @@ -403,22 +322,22 @@ static void atk89_statbuffchange(void); static void atk8A_normalisebuffs(void); static void atk8B_setbide(void); static void atk8C_confuseifrepeatingattackends(void); -static void atk8D_setmultihit_counter(void); -static void atk8E_init_multihit_string(void); +static void atk8D_setmultihitcounter(void); +static void atk8E_initmultihitstring(void); static void atk8F_forcerandomswitch(void); -static void atk90_conversion_type_change(void); +static void atk90_tryconversiontypechange(void); static void atk91_givepaydaymoney(void); static void atk92_setlightscreen(void); -static void atk93_ko_move(void); +static void atk93_tryKO(void); static void atk94_damagetohalftargethp(void); static void atk95_setsandstorm(void); static void atk96_weatherdamage(void); -static void atk97_try_infatuation(void); -static void atk98_status_icon_update(void); +static void atk97_tryinfatuating(void); +static void atk98_updatestatusicon(void); static void atk99_setmist(void); -static void atk9A_set_focusenergy(void); +static void atk9A_setfocusenergy(void); static void atk9B_transformdataexecution(void); -static void atk9C_set_substitute(void); +static void atk9C_setsubstitute(void); static void atk9D_mimicattackcopy(void); static void atk9E_metronome(void); static void atk9F_dmgtolevel(void); @@ -426,39 +345,39 @@ static void atkA0_psywavedamageeffect(void); static void atkA1_counterdamagecalculator(void); static void atkA2_mirrorcoatdamagecalculator(void); static void atkA3_disablelastusedattack(void); -static void atkA4_setencore(void); +static void atkA4_trysetencore(void); static void atkA5_painsplitdmgcalc(void); static void atkA6_settypetorandomresistance(void); static void atkA7_setalwayshitflag(void); static void atkA8_copymovepermanently(void); static void atkA9_sleeptalk_choose_move(void); -static void atkAA_set_destinybond(void); -static void atkAB_DestinyBondFlagUpdate(void); +static void atkAA_setdestinybond(void); +static void atkAB_trysetdestinybondtohappen(void); static void atkAC_remaininghptopower(void); -static void atkAD_spite_ppreduce(void); -static void atkAE_heal_party_status(void); +static void atkAD_tryspiteppreduce(void); +static void atkAE_healpartystatus(void); static void atkAF_cursetarget(void); -static void atkB0_set_spikes(void); -static void atkB1_set_foresight(void); -static void atkB2_setperishsong(void); +static void atkB0_trysetspikes(void); +static void atkB1_setforesight(void); +static void atkB2_trysetperishsong(void); static void atkB3_rolloutdamagecalculation(void); static void atkB4_jumpifconfusedandstatmaxed(void); static void atkB5_furycuttercalc(void); static void atkB6_happinesstodamagecalculation(void); static void atkB7_presentdamagecalculation(void); -static void atkB8_set_safeguard(void); +static void atkB8_setsafeguard(void); static void atkB9_magnitudedamagecalculation(void); static void atkBA_jumpifnopursuitswitchdmg(void); static void atkBB_setsunny(void); static void atkBC_maxattackhalvehp(void); static void atkBD_copyfoestats(void); static void atkBE_rapidspinfree(void); -static void atkBF_set_defense_curl(void); +static void atkBF_setdefensecurlbit(void); static void atkC0_recoverbasedonsunlight(void); -static void atkC1_hidden_power_calc(void); -static void atkC2_selectnexttarget(void); -static void atkC3_setfutureattack(void); -static void atkC4_beat_up(void); +static void atkC1_hiddenpowercalc(void); +static void atkC2_selectfirstvalidtarget(void); +static void atkC3_trysetfutureattack(void); +static void atkC4_trydobeatup(void); static void atkC5_setsemiinvulnerablebit(void); static void atkC6_clearsemiinvulnerablebit(void); static void atkC7_setminimize(void); @@ -471,46 +390,46 @@ static void atkCD_cureifburnedparalysedorpoisoned(void); static void atkCE_settorment(void); static void atkCF_jumpifnodamage(void); static void atkD0_settaunt(void); -static void atkD1_set_helpinghand(void); -static void atkD2_swap_items(void); -static void atkD3_copy_ability(void); -static void atkD4_wish_effect(void); -static void atkD5_setroots(void); +static void atkD1_trysethelpinghand(void); +static void atkD2_tryswapitems(void); +static void atkD3_trycopyability(void); +static void atkD4_trywish(void); +static void atkD5_trysetroots(void); static void atkD6_doubledamagedealtifdamaged(void); static void atkD7_setyawn(void); static void atkD8_setdamagetohealthdifference(void); static void atkD9_scaledamagebyhealthratio(void); -static void atkDA_abilityswap(void); -static void atkDB_imprisoneffect(void); -static void atkDC_setgrudge(void); +static void atkDA_tryswapabilities(void); +static void atkDB_tryimprision(void); +static void atkDC_trysetgrudge(void); static void atkDD_weightdamagecalculation(void); static void atkDE_asistattackselect(void); -static void atkDF_setmagiccoat(void); -static void atkE0_setstealstatchange(void); -static void atkE1_intimidate_string_loader(void); -static void atkE2_switchout_abilities(void); +static void atkDF_trysetmagiccoat(void); +static void atkE0_trysetsnatch(void); +static void atkE1_trygetintimidatetarget(void); +static void atkE2_switchoutabilities(void); static void atkE3_jumpifhasnohp(void); static void atkE4_getsecretpowereffect(void); static void atkE5_pickup(void); -static void atkE6_castform_change_animation(void); -static void atkE7_castform_data_change(void); +static void atkE6_docastformchangeanimation(void); +static void atkE7_trycastformdatachange(void); static void atkE8_settypebasedhalvers(void); static void atkE9_setweatherballtype(void); -static void atkEA_recycleitem(void); +static void atkEA_tryrecycleitem(void); static void atkEB_settypetoterrain(void); -static void atkEC_pursuit_sth(void); -static void atkED_802B4B4(void); +static void atkEC_pursuitrelated(void); +static void atkEF_snatchsetbanks(void); static void atkEE_removelightscreenreflect(void); static void atkEF_pokeball_catch_calculation(void); -static void atkF0_give_caught_mon(void); -static void atkF1_set_caught_mon_dex_flags(void); -static void atkF2_display_dex_info(void); -static void atkF3_nickname_caught_poke(void); +static void atkF0_givecaughtmon(void); +static void atkF1_trysetcaughtmondexflags(void); +static void atkF2_displaydexinfo(void); +static void atkF3_trygivecaughtmonnick(void); static void atkF4_subattackerhpbydmg(void); static void atkF5_removeattackerstatus1(void); -static void atkF6_action_finished(void); -static void atkF7_turn_finished(void); -static void atkF8_trainer_slide_back(void); +static void atkF6_finishaction(void); +static void atkF7_finishturn(void); +static void atkF8_trainerslideout(void); void (* const gBattleScriptingCommandsTable[])(void) = { @@ -519,29 +438,29 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk02_attackstring, atk03_ppreduce, atk04_critcalc, - atk05_damagecalc1, + atk05_damagecalc, atk06_typecalc, - atk07_dmg_adjustment, - atk08_dmg_adjustment2, + atk07_adjustnormaldamage, + atk08_adjustnormaldamage2, atk09_attackanimation, atk0A_waitanimation, atk0B_healthbarupdate, atk0C_datahpupdate, atk0D_critmessage, - atk0E_effectiveness_sound, + atk0E_effectivenesssound, atk0F_resultmessage, atk10_printstring, - atk11_printstring_playeronly, + atk11_printselectionstring, atk12_waitmessage, atk13_printfromtable, - atk14_printfromtable_playeronly, + atk14_printselectionstringfromtable, atk15_seteffectwithchance, atk16_seteffectprimary, atk17_seteffectsecondary, - atk18_status_effect_clear, - atk19_faint_pokemon, - atk1A_faint_animation, - atk1B_faint_effects_clear, + atk18_clearstatusfromeffect, + atk19_tryfaintmon, + atk1A_dofaintanimation, + atk1B_cleareffectsonfaint, atk1C_jumpifstatus, atk1D_jumpifstatus2, atk1E_jumpifability, @@ -551,9 +470,9 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk22_jumpiftype, atk23_getexp, atk24, - atk25_move_values_cleanup, - atk26_set_multihit, - atk27_decrement_multihit, + atk25_movevaluescleanup, + atk26_setmultihit, + atk27_decrementmultihit, atk28_goto, atk29_jumpifbyte, atk2A_jumpifhalfword, @@ -564,7 +483,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk2F_addbyte, atk30_subbyte, atk31_copyarray, - atk32_copyarray_withindex, + atk32_copyarraywithindex, atk33_orbyte, atk34_orhalfword, atk35_orword, @@ -578,75 +497,75 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk3D_end, atk3E_end2, atk3F_end3, - atk40_jump_if_move_affected_by_protect, + atk40_jumpifaffectedbyprotect, atk41_call, atk42_jumpiftype2, atk43_jumpifabilitypresent, - atk44_end_selection_script, + atk44_endselectionscript, atk45_playanimation, atk46_playanimation2, atk47_setgraphicalstatchangevalues, atk48_playstatchangeanimation, atk49_moveend, atk4A_typecalc2, - atk4B_return_atk_to_ball, - atk4C_get_switched_mon_data, - atk4D_switch_data_update, - atk4E_switchin_anim, - atk4F_jump_if_cannot_switch, + atk4B_returnatktoball, + atk4C_getswitchedmondata, + atk4D_switchindataupdate, + atk4E_switchinanim, + atk4F_jumpifcantswitch, atk50_openpartyscreen, - atk51_switch_handle_order, - atk52_switch_in_effects, - atk53_trainer_slide, - atk54_effectiveness_sound, - atk55_play_fanfare, - atk56_fainting_cry, + atk51_switchhandleorder, + atk52_switchineffects, + atk53_trainerslidein, + atk54_playse, + atk55_fanfare, + atk56_playfaintcry, atk57, - atk58_return_to_ball, - atk59_learnmove_inbattle, + atk58_returntoball, + atk59_handlelearnnewmove, atk5A_yesnoboxlearnmove, atk5B_yesnoboxstoplearningmove, atk5C_hitanimation, atk5D_getmoneyreward, - atk5E_8025A70, - atk5F_8025B24, - atk60_increment_gamestat, - atk61_draw_party_status_summary, - atk62_08025C6C, + atk5E, + atk5F, + atk60_incrementgamestat, + atk61_drawpartystatussummary, + atk62, atk63_jumptorandomattack, atk64_statusanimation, atk65_status2animation, atk66_chosenstatusanimation, atk67_yesnobox, - atk68_cancel_everyones_actions, - atk69_dmg_adjustment3, + atk68_cancelallactions, + atk69_adjustsetdamage, atk6A_removeitem, atk6B_atknameinbuff1, - atk6C_draw_lvlupbox, - atk6D_reset_sentpokes_value, - atk6E_set_atk_to_player0, - atk6F_set_visible, - atk70_record_last_used_ability, - atk71_buffer_move_to_learn, - atk72_jump_if_run_attempt_success, - atk73_hp_thresholds, - atk74_hp_thresholds2, - atk75_item_effect_on_opponent, + atk6C_drawlvlupbox, + atk6D_resetsentmonsvalue, + atk6E_setatktoplayer0, + atk6F_makevisible, + atk70_recordlastability, + atk71_buffermovetolearn, + atk72_jumpifplayerran, + atk73_hpthresholds, + atk74_hpthresholds2, + atk75_useitemonopponent, atk76_various, - atk77_set_protect_like, + atk77_setprotectlike, atk78_faintifabilitynotdamp, atk79_setatkhptozero, - atk7A_jumpwhiletargetvalid, - atk7B_healhalfHP_if_possible, + atk7A_jumpifnexttargetvalid, + atk7B_tryhealhalfhealth, atk7C_trymirrormove, - atk7D_set_rain, + atk7D_setrain, atk7E_setreflect, atk7F_setseeded, atk80_manipulatedamage, - atk81_setrest, + atk81_trysetrest, atk82_jumpifnotfirstturn, atk83_nop, - atk84_jump_if_cant_sleep, + atk84_jumpifcantmakeasleep, atk85_stockpile, atk86_stockpiletobasedamage, atk87_stockpiletohpheal, @@ -655,22 +574,22 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk8A_normalisebuffs, atk8B_setbide, atk8C_confuseifrepeatingattackends, - atk8D_setmultihit_counter, - atk8E_init_multihit_string, + atk8D_setmultihitcounter, + atk8E_initmultihitstring, atk8F_forcerandomswitch, - atk90_conversion_type_change, + atk90_tryconversiontypechange, atk91_givepaydaymoney, atk92_setlightscreen, - atk93_ko_move, + atk93_tryKO, atk94_damagetohalftargethp, atk95_setsandstorm, atk96_weatherdamage, - atk97_try_infatuation, - atk98_status_icon_update, + atk97_tryinfatuating, + atk98_updatestatusicon, atk99_setmist, - atk9A_set_focusenergy, + atk9A_setfocusenergy, atk9B_transformdataexecution, - atk9C_set_substitute, + atk9C_setsubstitute, atk9D_mimicattackcopy, atk9E_metronome, atk9F_dmgtolevel, @@ -678,39 +597,39 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkA1_counterdamagecalculator, atkA2_mirrorcoatdamagecalculator, atkA3_disablelastusedattack, - atkA4_setencore, + atkA4_trysetencore, atkA5_painsplitdmgcalc, atkA6_settypetorandomresistance, atkA7_setalwayshitflag, atkA8_copymovepermanently, atkA9_sleeptalk_choose_move, - atkAA_set_destinybond, - atkAB_DestinyBondFlagUpdate, + atkAA_setdestinybond, + atkAB_trysetdestinybondtohappen, atkAC_remaininghptopower, - atkAD_spite_ppreduce, - atkAE_heal_party_status, + atkAD_tryspiteppreduce, + atkAE_healpartystatus, atkAF_cursetarget, - atkB0_set_spikes, - atkB1_set_foresight, - atkB2_setperishsong, + atkB0_trysetspikes, + atkB1_setforesight, + atkB2_trysetperishsong, atkB3_rolloutdamagecalculation, atkB4_jumpifconfusedandstatmaxed, atkB5_furycuttercalc, atkB6_happinesstodamagecalculation, atkB7_presentdamagecalculation, - atkB8_set_safeguard, + atkB8_setsafeguard, atkB9_magnitudedamagecalculation, atkBA_jumpifnopursuitswitchdmg, atkBB_setsunny, atkBC_maxattackhalvehp, atkBD_copyfoestats, atkBE_rapidspinfree, - atkBF_set_defense_curl, + atkBF_setdefensecurlbit, atkC0_recoverbasedonsunlight, - atkC1_hidden_power_calc, - atkC2_selectnexttarget, - atkC3_setfutureattack, - atkC4_beat_up, + atkC1_hiddenpowercalc, + atkC2_selectfirstvalidtarget, + atkC3_trysetfutureattack, + atkC4_trydobeatup, atkC5_setsemiinvulnerablebit, atkC6_clearsemiinvulnerablebit, atkC7_setminimize, @@ -723,46 +642,46 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkCE_settorment, atkCF_jumpifnodamage, atkD0_settaunt, - atkD1_set_helpinghand, - atkD2_swap_items, - atkD3_copy_ability, - atkD4_wish_effect, - atkD5_setroots, + atkD1_trysethelpinghand, + atkD2_tryswapitems, + atkD3_trycopyability, + atkD4_trywish, + atkD5_trysetroots, atkD6_doubledamagedealtifdamaged, atkD7_setyawn, atkD8_setdamagetohealthdifference, atkD9_scaledamagebyhealthratio, - atkDA_abilityswap, - atkDB_imprisoneffect, - atkDC_setgrudge, + atkDA_tryswapabilities, + atkDB_tryimprision, + atkDC_trysetgrudge, atkDD_weightdamagecalculation, atkDE_asistattackselect, - atkDF_setmagiccoat, - atkE0_setstealstatchange, - atkE1_intimidate_string_loader, - atkE2_switchout_abilities, + atkDF_trysetmagiccoat, + atkE0_trysetsnatch, + atkE1_trygetintimidatetarget, + atkE2_switchoutabilities, atkE3_jumpifhasnohp, atkE4_getsecretpowereffect, atkE5_pickup, - atkE6_castform_change_animation, - atkE7_castform_data_change, + atkE6_docastformchangeanimation, + atkE7_trycastformdatachange, atkE8_settypebasedhalvers, atkE9_setweatherballtype, - atkEA_recycleitem, + atkEA_tryrecycleitem, atkEB_settypetoterrain, - atkEC_pursuit_sth, - atkED_802B4B4, + atkEC_pursuitrelated, + atkEF_snatchsetbanks, atkEE_removelightscreenreflect, atkEF_pokeball_catch_calculation, - atkF0_give_caught_mon, - atkF1_set_caught_mon_dex_flags, - atkF2_display_dex_info, - atkF3_nickname_caught_poke, + atkF0_givecaughtmon, + atkF1_trysetcaughtmondexflags, + atkF2_displaydexinfo, + atkF3_trygivecaughtmonnick, atkF4_subattackerhpbydmg, atkF5_removeattackerstatus1, - atkF6_action_finished, - atkF7_turn_finished, - atkF8_trainer_slide_back + atkF6_finishaction, + atkF7_finishturn, + atkF8_trainerslideout }; struct StatFractions @@ -1208,14 +1127,14 @@ static void JumpIfMoveFailed(u8 adder, u16 move) } else { - DestinyBondFlagUpdate(); + TrySetDestinyBondToHappen(); if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move)) return; } gBattlescriptCurrInstr = BS_ptr; } -static void atk40_jump_if_move_affected_by_protect(void) +static void atk40_jumpifaffectedbyprotect(void) { if (TARGET_PROTECT_AFFECTED) { @@ -1476,7 +1395,7 @@ static void atk04_critcalc(void) gBattlescriptCurrInstr++; } -static void atk05_damagecalc1(void) +static void atk05_damagecalc(void) { u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, @@ -1843,7 +1762,7 @@ static void Unused_ApplyRandomDmgMultiplier(void) ApplyRandomDmgMultiplier(); } -static void atk07_dmg_adjustment(void) +static void atk07_adjustnormaldamage(void) { u8 holdEffect, quality; @@ -1891,7 +1810,7 @@ static void atk07_dmg_adjustment(void) gBattlescriptCurrInstr++; } -static void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect. +static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect. { u8 holdEffect, quality; @@ -2172,7 +2091,7 @@ static void atk0D_critmessage(void) } } -static void atk0E_effectiveness_sound(void) +static void atk0E_effectivenesssound(void) { if (gBattleExecBuffer) return; @@ -2183,11 +2102,11 @@ static void atk0E_effectiveness_sound(void) switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) { case MOVESTATUS_SUPEREFFECTIVE: - EmitEffectivenessSound(0, SE_KOUKA_H); + EmitPlaySE(0, SE_KOUKA_H); MarkBufferBankForExecution(gActiveBank); break; case MOVESTATUS_NOTVERYEFFECTIVE: - EmitEffectivenessSound(0, SE_KOUKA_L); + EmitPlaySE(0, SE_KOUKA_L); MarkBufferBankForExecution(gActiveBank); break; case MOVESTATUS_NOTAFFECTED: @@ -2200,17 +2119,17 @@ static void atk0E_effectiveness_sound(void) default: if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) { - EmitEffectivenessSound(0, SE_KOUKA_H); + EmitPlaySE(0, SE_KOUKA_H); MarkBufferBankForExecution(gActiveBank); } else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) { - EmitEffectivenessSound(0, SE_KOUKA_L); + EmitPlaySE(0, SE_KOUKA_L); MarkBufferBankForExecution(gActiveBank); } else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))) { - EmitEffectivenessSound(0, SE_KOUKA_M); + EmitPlaySE(0, SE_KOUKA_M); MarkBufferBankForExecution(gActiveBank); } break; @@ -2319,11 +2238,11 @@ static void atk10_printstring(void) } } -static void atk11_printstring_playeronly(void) +static void atk11_printselectionstring(void) { gActiveBank = gBankAttacker; - EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + EmitPrintSelectionString(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 3; @@ -2365,7 +2284,7 @@ static void atk13_printfromtable(void) } } -static void atk14_printfromtable_playeronly(void) +static void atk14_printselectionstringfromtable(void) { if (gBattleExecBuffer == 0) { @@ -2373,7 +2292,7 @@ static void atk14_printfromtable_playeronly(void) ptr += gBattleCommunication[MULTISTRING_CHOOSER]; gActiveBank = gBankAttacker; - EmitPrintStringPlayerOnly(0, *ptr); + EmitPrintSelectionString(0, *ptr); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 5; @@ -3134,7 +3053,7 @@ static void atk17_seteffectsecondary(void) SetMoveEffect(FALSE, 0); } -static void atk18_status_effect_clear(void) +static void atk18_clearstatusfromeffect(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -3148,7 +3067,7 @@ static void atk18_status_effect_clear(void) gBattleScripting.field_16 = 0; } -static void atk19_faint_pokemon(void) +static void atk19_tryfaintmon(void) { const u8 *BS_ptr; @@ -3235,7 +3154,7 @@ static void atk19_faint_pokemon(void) } } -static void atk1A_faint_animation(void) +static void atk1A_dofaintanimation(void) { if (gBattleExecBuffer == 0) { @@ -3246,7 +3165,7 @@ static void atk1A_faint_animation(void) } } -static void atk1B_faint_effects_clear(void) +static void atk1B_cleareffectsonfaint(void) { if (gBattleExecBuffer == 0) { @@ -4098,19 +4017,19 @@ static void MoveValuesCleanUp(void) gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); } -static void atk25_move_values_cleanup(void) +static void atk25_movevaluescleanup(void) { MoveValuesCleanUp(); gBattlescriptCurrInstr += 1; } -static void atk26_set_multihit(void) +static void atk26_setmultihit(void) { gMultiHitCounter = gBattlescriptCurrInstr[1]; gBattlescriptCurrInstr += 2; } -static void atk27_decrement_multihit(void) +static void atk27_decrementmultihit(void) { if (--gMultiHitCounter == 0) gBattlescriptCurrInstr += 5; @@ -4320,7 +4239,7 @@ static void atk31_copyarray(void) gBattlescriptCurrInstr += 10; } -static void atk32_copyarray_withindex(void) +static void atk32_copyarraywithindex(void) { u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); @@ -4470,7 +4389,7 @@ static void atk43_jumpifabilitypresent(void) gBattlescriptCurrInstr += 6; } -static void atk44_end_selection_script(void) +static void atk44_endselectionscript(void) { *(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE; } @@ -5190,7 +5109,7 @@ static void atk49_moveend(void) gBattleScripting.atk49_state = 0; MoveValuesCleanUp(); BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); - gBattlescriptCurrInstr = gUnknown_082DB87D; + gBattlescriptCurrInstr = BattleScript_82DB87D; return; } else @@ -5310,7 +5229,7 @@ static void atk4A_typecalc2(void) gBattlescriptCurrInstr++; } -static void atk4B_return_atk_to_ball(void) +static void atk4B_returnatktoball(void) { gActiveBank = gBankAttacker; if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) @@ -5321,7 +5240,7 @@ static void atk4B_return_atk_to_ball(void) gBattlescriptCurrInstr++; } -static void atk4C_get_switched_mon_data(void) +static void atk4C_getswitchedmondata(void) { if (gBattleExecBuffer) return; @@ -5336,7 +5255,7 @@ static void atk4C_get_switched_mon_data(void) gBattlescriptCurrInstr += 2; } -static void atk4D_switch_data_update(void) +static void atk4D_switchindataupdate(void) { struct BattlePokemon oldData; s32 i; @@ -5389,7 +5308,7 @@ static void atk4D_switch_data_update(void) gBattlescriptCurrInstr += 2; } -static void atk4E_switchin_anim(void) +static void atk4E_switchinanim(void) { if (gBattleExecBuffer) return; @@ -5415,7 +5334,7 @@ static void atk4E_switchin_anim(void) sub_81A56B4(); } -static void atk4F_jump_if_cannot_switch(void) +static void atk4F_jumpifcantswitch(void) { s32 val = 0; s32 compareVar = 0; @@ -5869,7 +5788,7 @@ static void atk50_openpartyscreen(void) } } -static void atk51_switch_handle_order(void) +static void atk51_switchhandleorder(void) { s32 i; if (gBattleExecBuffer) @@ -5936,7 +5855,7 @@ static void atk51_switch_handle_order(void) gBattlescriptCurrInstr += 3; } -static void atk52_switch_in_effects(void) +static void atk52_switchineffects(void) { s32 i; @@ -5967,12 +5886,12 @@ static void atk52_switch_in_effects(void) gBattleScripting.bank = gActiveBank; BattleScriptPushCursor(); - if (gBattlescriptCurrInstr[1] == 0) - gBattlescriptCurrInstr = gUnknown_082DAE90; - else if (gBattlescriptCurrInstr[1] == 1) - gBattlescriptCurrInstr = gUnknown_082DAE59; + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + gBattlescriptCurrInstr = BattleScript_SpikesOnTarget; + else if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER) + gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker; else - gBattlescriptCurrInstr = gUnknown_082DAEC7; + gBattlescriptCurrInstr = BattleScript_SpikesOngBank1; } else { @@ -6017,7 +5936,7 @@ static void atk52_switch_in_effects(void) } } -static void atk53_trainer_slide(void) +static void atk53_trainerslidein(void) { gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlide(0); @@ -6026,16 +5945,16 @@ static void atk53_trainer_slide(void) gBattlescriptCurrInstr += 2; } -static void atk54_effectiveness_sound(void) +static void atk54_playse(void) { gActiveBank = gBankAttacker; - EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + EmitPlaySE(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 3; } -static void atk55_play_fanfare(void) +static void atk55_fanfare(void) { gActiveBank = gBankAttacker; EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE); @@ -6044,7 +5963,7 @@ static void atk55_play_fanfare(void) gBattlescriptCurrInstr += 3; } -static void atk56_fainting_cry(void) +static void atk56_playfaintcry(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitFaintingCry(0); @@ -6055,14 +5974,14 @@ static void atk56_fainting_cry(void) static void atk57(void) { - gActiveBank = GetBankByIdentity(0); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); EmitCmd55(0, gBattleOutcome); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 1; } -static void atk58_return_to_ball(void) +static void atk58_returntoball(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitReturnMonToBall(0, 1); @@ -6071,7 +5990,7 @@ static void atk58_return_to_ball(void) gBattlescriptCurrInstr += 2; } -static void atk59_learnmove_inbattle(void) +static void atk59_handlelearnnewmove(void) { const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); @@ -6367,7 +6286,7 @@ static void atk5D_getmoneyreward(void) gBattlescriptCurrInstr++; } -static void atk5E_8025A70(void) +static void atk5E(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -6394,7 +6313,7 @@ static void atk5E_8025A70(void) } } -static void atk5F_8025B24(void) +static void atk5F(void) { gActiveBank = gBankAttacker; gBankAttacker = gBankTarget; @@ -6408,7 +6327,7 @@ static void atk5F_8025B24(void) gBattlescriptCurrInstr++; } -static void atk60_increment_gamestat(void) +static void atk60_incrementgamestat(void) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) IncrementGameStat(gBattlescriptCurrInstr[1]); @@ -6416,7 +6335,7 @@ static void atk60_increment_gamestat(void) gBattlescriptCurrInstr += 2; } -static void atk61_draw_party_status_summary(void) +static void atk61_drawpartystatussummary(void) { s32 i; struct Pokemon* party; @@ -6453,7 +6372,7 @@ static void atk61_draw_party_status_summary(void) gBattlescriptCurrInstr += 2; } -static void atk62_08025C6C(void) +static void atk62(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitCmd49(0); @@ -6569,7 +6488,7 @@ static void atk67_yesnobox(void) } } -static void atk68_cancel_everyones_actions(void) +static void atk68_cancelallactions(void) { s32 i; @@ -6579,7 +6498,7 @@ static void atk68_cancel_everyones_actions(void) gBattlescriptCurrInstr++; } -static void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier. +static void atk69_adjustsetdamage(void) // The same as 0x7, except there's no random damage multiplier. { u8 holdEffect, quality; @@ -6648,7 +6567,7 @@ static void atk6B_atknameinbuff1(void) gBattlescriptCurrInstr++; } -static void atk6C_draw_lvlupbox(void) +static void atk6C_drawlvlupbox(void) { if (gBattleScripting.atk6C_state == 0) { @@ -6922,19 +6841,19 @@ static bool32 IsMonGettingExpSentOut(void) return FALSE; } -static void atk6D_reset_sentpokes_value(void) +static void atk6D_resetsentmonsvalue(void) { ResetSentPokesToOpponentValue(); gBattlescriptCurrInstr++; } -static void atk6E_set_atk_to_player0(void) +static void atk6E_setatktoplayer0(void) { gBankAttacker = GetBankByIdentity(0); gBattlescriptCurrInstr++; } -static void atk6F_set_visible(void) +static void atk6F_makevisible(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitSpriteInvisibility(0, FALSE); @@ -6943,7 +6862,7 @@ static void atk6F_set_visible(void) gBattlescriptCurrInstr += 2; } -static void atk70_record_last_used_ability(void) +static void atk70_recordlastability(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); RecordAbilityBattle(gActiveBank, gLastUsedAbility); @@ -6955,13 +6874,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void) PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); } -static void atk71_buffer_move_to_learn(void) +static void atk71_buffermovetolearn(void) { BufferMoveToLearnIntoBattleTextBuff2(); gBattlescriptCurrInstr++; } -static void atk72_jump_if_run_attempt_success(void) +static void atk72_jumpifplayerran(void) { if (TryRunFromBattle(gBank1)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -6969,7 +6888,7 @@ static void atk72_jump_if_run_attempt_success(void) gBattlescriptCurrInstr += 5; } -static void atk73_hp_thresholds(void) +static void atk73_hpthresholds(void) { u8 opposingBank; s32 result; @@ -6996,7 +6915,7 @@ static void atk73_hp_thresholds(void) gBattlescriptCurrInstr += 2; } -static void atk74_hp_thresholds2(void) +static void atk74_hpthresholds2(void) { u8 opposingBank; s32 result; @@ -7022,7 +6941,7 @@ static void atk74_hp_thresholds2(void) gBattlescriptCurrInstr += 2; } -static void atk75_item_effect_on_opponent(void) +static void atk75_useitemonopponent(void) { gBankInMenu = gBankAttacker; ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); @@ -7044,13 +6963,13 @@ static void atk76_various(void) break; case VARIOUS_SET_MAGIC_COAT_TARGET: gBankAttacker = gBankTarget; - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) gBankTarget = gSideTimers[side].followmeTarget; else gBankTarget = gActiveBank; break; - case VARIOUS_CAN_RUN_FROM_BATTLE: + case VARIOUS_IS_RUNNING_IMPOSSIBLE: gBattleCommunication[0] = IsRunningFromBattleImpossible(); break; case VARIOUS_GET_MOVE_TARGET: @@ -7209,7 +7128,7 @@ static void atk76_various(void) gBattlescriptCurrInstr += 3; } -static void atk77_set_protect_like(void) // protect and endure +static void atk77_setprotectlike(void) // protect and endure { bool8 notLastTurn = TRUE; u16 lastMove = gUnknown_02024260[gBankAttacker]; @@ -7292,9 +7211,9 @@ static void atk79_setatkhptozero(void) gBattlescriptCurrInstr++; } -static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets. +static void atk7A_jumpifnexttargetvalid(void) { - const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -7312,10 +7231,12 @@ static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop throu gBattlescriptCurrInstr = jumpPtr; } else + { gBattlescriptCurrInstr += 5; + } } -static void atk7B_healhalfHP_if_possible(void) +static void atk7B_tryhealhalfhealth(void) { const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7383,7 +7304,7 @@ static void atk7C_trymirrormove(void) } } -static void atk7D_set_rain(void) +static void atk7D_setrain(void) { if (gBattleWeather & WEATHER_RAIN_ANY) { @@ -7464,9 +7385,9 @@ static void atk80_manipulatedamage(void) gBattlescriptCurrInstr += 2; } -static void atk81_setrest(void) +static void atk81_trysetrest(void) { - const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); gActiveBank = gBankTarget = gBankAttacker; gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1); @@ -7530,9 +7451,9 @@ bool8 UproarWakeUpCheck(u8 bank) return TRUE; } -static void atk84_jump_if_cant_sleep(void) +static void atk84_jumpifcantmakeasleep(void) { - const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); if (UproarWakeUpCheck(gBankTarget)) { @@ -7844,7 +7765,7 @@ static void atk8C_confuseifrepeatingattackends(void) gBattlescriptCurrInstr++; } -static void atk8D_setmultihit_counter(void) +static void atk8D_setmultihitcounter(void) { if (gBattlescriptCurrInstr[1]) { @@ -7862,7 +7783,7 @@ static void atk8D_setmultihit_counter(void) gBattlescriptCurrInstr += 2; } -static void atk8E_init_multihit_string(void) +static void atk8E_initmultihitstring(void) { PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) @@ -7886,7 +7807,7 @@ static bool8 sub_8051064(void) *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget]; } - gBattlescriptCurrInstr = gUnknown_082DADD8; + gBattlescriptCurrInstr = BattleScript_82DADD8; return TRUE; } @@ -8051,7 +7972,7 @@ static void atk8F_forcerandomswitch(void) } } -static void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type +static void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type { u8 validMoves = 0; u8 moveChecked; @@ -8155,7 +8076,7 @@ static void atk92_setlightscreen(void) gBattlescriptCurrInstr++; } -static void atk93_ko_move(void) +static void atk93_tryKO(void) { u8 holdEffect, param; @@ -8319,7 +8240,7 @@ static void atk96_weatherdamage(void) gBattlescriptCurrInstr++; } -static void atk97_try_infatuation(void) +static void atk97_tryinfatuating(void) { struct Pokemon *monAttacker, *monTarget; u16 speciesAttacker, speciesTarget; @@ -8364,7 +8285,7 @@ static void atk97_try_infatuation(void) } } -static void atk98_status_icon_update(void) +static void atk98_updatestatusicon(void) { if (gBattleExecBuffer) return; @@ -8414,7 +8335,7 @@ static void atk99_setmist(void) gBattlescriptCurrInstr++; } -static void atk9A_set_focusenergy(void) +static void atk9A_setfocusenergy(void) { if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) { @@ -8473,7 +8394,7 @@ static void atk9B_transformdataexecution(void) } } -static void atk9C_set_substitute(void) +static void atk9C_setsubstitute(void) { u32 hp = gBattleMons[gBankAttacker].maxHP / 4; if (gBattleMons[gBankAttacker].maxHP / 4 == 0) @@ -8673,7 +8594,7 @@ static void atkA3_disablelastusedattack(void) } } -static void atkA4_setencore(void) +static void atkA4_trysetencore(void) { s32 i; @@ -8937,13 +8858,13 @@ static void atkA9_sleeptalk_choose_move(void) } } -static void atkAA_set_destinybond(void) +static void atkAA_setdestinybond(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; gBattlescriptCurrInstr++; } -static void DestinyBondFlagUpdate(void) +static void TrySetDestinyBondToHappen(void) { u8 sideAttacker = GetBankSide(gBankAttacker); u8 sideTarget = GetBankSide(gBankTarget); @@ -8955,9 +8876,9 @@ static void DestinyBondFlagUpdate(void) } } -static void atkAB_DestinyBondFlagUpdate(void) +static void atkAB_trysetdestinybondtohappen(void) { - DestinyBondFlagUpdate(); + TrySetDestinyBondToHappen(); gBattlescriptCurrInstr++; } @@ -8976,7 +8897,7 @@ static void atkAC_remaininghptopower(void) gBattlescriptCurrInstr++; } -static void atkAD_spite_ppreduce(void) +static void atkAD_tryspiteppreduce(void) { if (gLastUsedMovesByBanks[gBankTarget] != 0 && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF) @@ -9027,7 +8948,7 @@ static void atkAD_spite_ppreduce(void) } } -static void atkAE_heal_party_status(void) +static void atkAE_healpartystatus(void) { u32 zero = 0; u8 toHeal = 0; @@ -9140,7 +9061,7 @@ static void atkAF_cursetarget(void) } } -static void atkB0_set_spikes(void) +static void atkB0_trysetspikes(void) { u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE; @@ -9157,13 +9078,13 @@ static void atkB0_set_spikes(void) } } -static void atkB1_set_foresight(void) +static void atkB1_setforesight(void) { gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; gBattlescriptCurrInstr++; } -static void atkB2_setperishsong(void) +static void atkB2_trysetperishsong(void) { s32 i; s32 notAffectedCount = 0; @@ -9196,7 +9117,7 @@ static void atkB3_rolloutdamagecalculation(void) if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; } else { @@ -9240,7 +9161,7 @@ static void atkB5_furycuttercalc(void) if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { gDisableStructs[gBankAttacker].furyCutterCounter = 0; - gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; } else { @@ -9286,7 +9207,7 @@ static void atkB7_presentdamagecalculation(void) gBattleMoveDamage *= -1; } if (rand < 204) - gBattlescriptCurrInstr = BattleScript_PresentDamageTarget; + gBattlescriptCurrInstr = BattleScript_HitFromCritCalc; else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp) gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp; else @@ -9296,7 +9217,7 @@ static void atkB7_presentdamagecalculation(void) } } -static void atkB8_set_safeguard(void) +static void atkB8_setsafeguard(void) { if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD) { @@ -9501,7 +9422,7 @@ static void atkBE_rapidspinfree(void) } } -static void atkBF_set_defense_curl(void) +static void atkBF_setdefensecurlbit(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; gBattlescriptCurrInstr++; @@ -9533,7 +9454,7 @@ static void atkC0_recoverbasedonsunlight(void) } #ifdef NONMATCHING -static void atkC1_hidden_power_calc(void) +static void atkC1_hiddenpowercalc(void) { u32 powerBits = 0; u32 typeBits = 0; @@ -9564,7 +9485,7 @@ static void atkC1_hidden_power_calc(void) #else __attribute__((naked)) -static void atkC1_hidden_power_calc(void) +static void atkC1_hiddenpowercalc(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -9707,7 +9628,7 @@ _080544F0:\n\ } #endif // NONMATCHING -static void atkC2_selectnexttarget(void) +static void atkC2_selectfirstvalidtarget(void) { for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) { @@ -9719,7 +9640,7 @@ static void atkC2_selectnexttarget(void) gBattlescriptCurrInstr++; } -static void atkC3_setfutureattack(void) +static void atkC3_trysetfutureattack(void) { if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) { @@ -9747,9 +9668,9 @@ static void atkC3_setfutureattack(void) } } -static void atkC4_beat_up(void) +static void atkC4_trydobeatup(void) { - struct Pokemon* party; + struct Pokemon *party; if (GetBankSide(gBankAttacker) == SIDE_PLAYER) party = gPlayerParty; @@ -9950,7 +9871,7 @@ static void atkD0_settaunt(void) } } -static void atkD1_set_helpinghand(void) +static void atkD1_trysethelpinghand(void) { gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); @@ -9968,7 +9889,7 @@ static void atkD1_set_helpinghand(void) } } -static void atkD2_swap_items(void) // trick +static void atkD2_tryswapitems(void) // trick { // opponent can't swap items with player in regular battles if (gBattleTypeFlags & BATTLE_TYPE_x4000000 @@ -10055,7 +9976,7 @@ static void atkD2_swap_items(void) // trick } } -static void atkD3_copy_ability(void) // role play +static void atkD3_trycopyability(void) // role play { if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) @@ -10070,7 +9991,7 @@ static void atkD3_copy_ability(void) // role play } } -static void atkD4_wish_effect(void) +static void atkD4_trywish(void) { switch (gBattlescriptCurrInstr[1]) { @@ -10103,7 +10024,7 @@ static void atkD4_wish_effect(void) } } -static void atkD5_setroots(void) // ingrain +static void atkD5_trysetroots(void) // ingrain { if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) { @@ -10168,7 +10089,7 @@ static void atkD9_scaledamagebyhealthratio(void) gBattlescriptCurrInstr++; } -static void atkDA_abilityswap(void) // skill swap +static void atkDA_tryswapabilities(void) // skill swap { if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0) @@ -10188,7 +10109,7 @@ static void atkDA_abilityswap(void) // skill swap } } -static void atkDB_imprisoneffect(void) +static void atkDB_tryimprision(void) { if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS)) { @@ -10230,7 +10151,7 @@ static void atkDB_imprisoneffect(void) } } -static void atkDC_setgrudge(void) +static void atkDC_trysetgrudge(void) { if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) { @@ -10313,7 +10234,7 @@ static void atkDE_asistattackselect(void) } } -static void atkDF_setmagiccoat(void) +static void atkDF_trysetmagiccoat(void) { gBankTarget = gBankAttacker; gSpecialStatuses[gBankAttacker].flag20 = 1; @@ -10328,7 +10249,7 @@ static void atkDF_setmagiccoat(void) } } -static void atkE0_setstealstatchange(void) // snatch +static void atkE0_trysetsnatch(void) // snatch { gSpecialStatuses[gBankAttacker].flag20 = 1; if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn @@ -10342,7 +10263,7 @@ static void atkE0_setstealstatchange(void) // snatch } } -static void atkE1_intimidate_string_loader(void) +static void atkE1_trygetintimidatetarget(void) { u8 side; @@ -10365,7 +10286,7 @@ static void atkE1_intimidate_string_loader(void) gBattlescriptCurrInstr += 5; } -static void atkE2_switchout_abilities(void) +static void atkE2_switchoutabilities(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -10502,7 +10423,7 @@ static void atkE5_pickup(void) gBattlescriptCurrInstr++; } -static void atkE6_castform_change_animation(void) +static void atkE6_docastformchangeanimation(void) { gActiveBank = gBattleScripting.bank; @@ -10515,7 +10436,7 @@ static void atkE6_castform_change_animation(void) gBattlescriptCurrInstr++; } -static void atkE7_castform_data_change(void) +static void atkE7_trycastformdatachange(void) { u8 form; @@ -10578,7 +10499,7 @@ static void atkE9_setweatherballtype(void) gBattlescriptCurrInstr++; } -static void atkEA_recycleitem(void) +static void atkEA_tryrecycleitem(void) { u16 *usedHeldItem; @@ -10619,7 +10540,7 @@ static void atkEB_settypetoterrain(void) } } -static void atkEC_pursuit_sth(void) +static void atkEC_pursuitrelated(void) { gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); @@ -10641,7 +10562,7 @@ static void atkEC_pursuit_sth(void) } } -static void atkED_802B4B4(void) +static void atkEF_snatchsetbanks(void) { gEffectBank = gBankAttacker; @@ -10827,7 +10748,7 @@ static void atkEF_pokeball_catch_calculation(void) } } -static void atkF0_give_caught_mon(void) +static void atkF0_givecaughtmon(void) { if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY) { @@ -10856,7 +10777,7 @@ static void atkF0_give_caught_mon(void) gBattlescriptCurrInstr++; } -static void atkF1_set_caught_mon_dex_flags(void) +static void atkF1_trysetcaughtmondexflags(void) { u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL); @@ -10872,7 +10793,7 @@ static void atkF1_set_caught_mon_dex_flags(void) } } -static void atkF2_display_dex_info(void) +static void atkF2_displaydexinfo(void) { u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); @@ -10991,7 +10912,7 @@ void BattleDestroyYesNoCursorAt(u8 cursorPosition) CopyBgTilemapBufferToVram(0); } -static void atkF3_nickname_caught_poke(void) +static void atkF3_trygivecaughtmonnick(void) { switch (gBattleCommunication[MULTIUSE_STATE]) { @@ -11079,18 +11000,18 @@ static void atkF5_removeattackerstatus1(void) gBattlescriptCurrInstr++; } -static void atkF6_action_finished(void) +static void atkF6_finishaction(void) { gCurrentActionFuncId = ACTION_FINISHED; } -static void atkF7_turn_finished(void) +static void atkF7_finishturn(void) { gCurrentActionFuncId = ACTION_FINISHED; gCurrentTurnActionNumber = gNoOfAllBanks; } -static void atkF8_trainer_slide_back(void) +static void atkF8_trainerslideout(void) { gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlideBack(0); diff --git a/src/battle_util.c b/src/battle_util.c index ed3bdef98..0ec98d125 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9,6 +9,7 @@ #include "items.h" #include "util.h" #include "battle_move_effects.h" +#include "battle_scripts.h" #include "rng.h" #include "text.h" #include "string_util.h" @@ -60,119 +61,6 @@ extern u8 gSentPokesToOpponent[2]; extern const struct BattleMove gBattleMoves[]; -// scripts -extern const u8 gUnknown_082DAE2A[]; -extern const u8 gUnknown_082DAE1F[]; -extern const u8 gUnknown_082DB089[]; -extern const u8 gUnknown_082DB098[]; -extern const u8 gUnknown_082DB0AF[]; -extern const u8 gUnknown_082DB0A0[]; -extern const u8 gUnknown_082DB185[]; -extern const u8 gUnknown_082DB181[]; -extern const u8 gUnknown_082DB812[]; -extern const u8 gUnknown_082DB076[]; -extern const u8 BattleScript_NoMovesLeft[]; -extern const u8 gUnknown_082DACFA[]; -extern const u8 gUnknown_082DAD0B[]; -extern const u8 gUnknown_082DACC9[]; -extern const u8 gUnknown_082DAC47[]; -extern const u8 gUnknown_082DACE0[]; -extern const u8 gUnknown_082DACD2[]; -extern const u8 BattleScript_WishComesTrue[]; -extern const u8 gUnknown_082DACC9[]; -extern const u8 gUnknown_082DAC2C[]; -extern const u8 BattleScript_IngrainTurnHeal[]; -extern const u8 BattleScript_LeechSeedTurnDrain[]; -extern const u8 BattleScript_PoisonTurnDmg[]; -extern const u8 BattleScript_BurnTurnDmg[]; -extern const u8 BattleScript_NightmareTurnDmg[]; -extern const u8 BattleScript_CurseTurnDmg[]; -extern const u8 BattleScript_WrapTurnDmg[]; -extern const u8 BattleScript_WrapEnds[]; -extern const u8 gUnknown_082DB234[]; -extern const u8 gUnknown_082DB2A6[]; -extern const u8 BattleScript_ThrashConfuses[]; -extern const u8 BattleScript_DisabledNoMore[]; -extern const u8 BattleScript_EncoredNoMore[]; -extern const u8 BattleScript_YawnMakesAsleep[]; -extern const u8 gUnknown_082DAFE4[]; -extern const u8 gUnknown_082DB8F3[]; -extern const u8 gUnknown_082DAF05[]; -extern const u8 gUnknown_082DAF20[]; -extern const u8 gUnknown_082DA7C4[]; -extern const u8 gUnknown_082DA7CD[]; -extern const u8 BattleScript_MoveUsedWokeUp[]; -extern const u8 BattleScript_MoveUsedIsAsleep[]; -extern const u8 BattleScript_MoveUsedIsFrozen[]; -extern const u8 BattleScript_MoveUsedUnfroze[]; -extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_MoveUsedMustRecharge[]; -extern const u8 BattleScript_MoveUsedFlinched[]; -extern const u8 BattleScript_MoveUsedIsDisabled[]; -extern const u8 BattleScript_MoveUsedIsTaunted[]; -extern const u8 BattleScript_MoveUsedIsImprisoned[]; -extern const u8 BattleScript_MoveUsedIsConfused[]; -extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; -extern const u8 BattleScript_MoveUsedIsParalyzed[]; -extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; -extern const u8 BattleScript_MoveUsedIsInLove[]; -extern const u8 BattleScript_BideStoringEnergy[]; -extern const u8 BattleScript_BideAttack[]; -extern const u8 BattleScript_BideNoEnergyToAttack[]; -extern const u8 gUnknown_082DACE7[]; -extern const u8 BattleScript_DrizzleActivates[]; -extern const u8 BattleScript_SandstreamActivates[]; -extern const u8 BattleScript_DroughtActivates[]; -extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_RainDishActivates[]; -extern const u8 BattleScript_ShedSkinActivates[]; -extern const u8 BattleScript_SpeedBoostActivates[]; -extern const u8 BattleScript_SoundproofProtected[]; -extern const u8 BattleScript_MoveHPDrain[]; -extern const u8 BattleScript_MoveHPDrain_PPLoss[]; -extern const u8 BattleScript_FlashFireBoost[]; -extern const u8 BattleScript_FlashFireBoost_PPLoss[]; -extern const u8 gUnknown_082DB592[]; -extern const u8 gUnknown_082DB591[]; -extern const u8 BattleScript_ColorChangeActivates[]; -extern const u8 BattleScript_RoughSkinActivates[]; -extern const u8 BattleScript_ApplySecondaryEffect[]; -extern const u8 BattleScript_CuteCharmActivates[]; -extern const u8 gUnknown_082DB68C[]; -extern const u8 BattleScript_SynchronizeActivates[]; -extern const u8 gUnknown_082DB4B8[]; -extern const u8 gUnknown_082DB4C1[]; -extern const u8 BattleScript_TraceActivates[]; - -extern const u8 BattleScript_WhiteHerbEnd2[]; -extern const u8 BattleScript_WhiteHerbRet[]; -extern const u8 BattleScript_ItemHealHP_RemoveItem[]; -extern const u8 BattleScript_BerryPPHealEnd2[]; -extern const u8 BattleScript_ItemHealHP_End2[]; -extern const u8 BattleScript_BerryConfuseHealEnd2[]; -extern const u8 BattleScript_BerryStatRaiseEnd2[]; -extern const u8 BattleScript_BerryFocusEnergyEnd2[]; -extern const u8 BattleScript_BerryCurePrlzEnd2[]; -extern const u8 BattleScript_BerryCurePsnEnd2[]; -extern const u8 BattleScript_BerryCureBrnEnd2[]; -extern const u8 BattleScript_BerryCureFrzEnd2[]; -extern const u8 BattleScript_BerryCureSlpEnd2[]; -extern const u8 BattleScript_BerryCureConfusionEnd2[]; -extern const u8 BattleScript_BerryCureChosenStatusEnd2[]; -extern const u8 BattleScript_BerryCureParRet[]; -extern const u8 BattleScript_BerryCurePsnRet[]; -extern const u8 BattleScript_BerryCureBrnRet[]; -extern const u8 BattleScript_BerryCureFrzRet[]; -extern const u8 BattleScript_BerryCureSlpRet[]; -extern const u8 BattleScript_BerryCureConfusionRet[]; -extern const u8 BattleScript_BerryCureChosenStatusRet[]; -extern const u8 BattleScript_ItemHealHP_Ret[]; - -extern const u8 gUnknown_082DB695[]; //disobedient while asleep -extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move -extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep -extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself - extern u8 weather_get_current(void); // rom const data @@ -196,13 +84,13 @@ u8 GetBattleBank(u8 caseId) case BS_GET_EFFECT_BANK: ret = gEffectBank; break; - case 7: + case BS_GET_BANK_0: ret = 0; break; case BS_GET_SCRIPTING_BANK: ret = gBattleScripting.bank; break; - case 3: + case BS_GET_gBank1: ret = gBank1; break; case 5: @@ -474,12 +362,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DAE2A; + gUnknown_02024230[gActiveBank] = BattleScript_82DAE2A; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAE1F; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAE1F; limitations = 1; } } @@ -489,12 +377,12 @@ u8 TrySetCantSelectMoveBattleScript(void) CancelMultiTurnMoves(gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB098; + gUnknown_02024230[gActiveBank] = BattleScript_82DB098; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB089; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB089; limitations++; } } @@ -504,12 +392,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB0AF; + gUnknown_02024230[gActiveBank] = BattleScript_82DB0AF; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB0A0; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB0A0; limitations++; } } @@ -519,12 +407,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB185; + gUnknown_02024230[gActiveBank] = BattleScript_82DB185; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB181; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB181; limitations++; } } @@ -546,7 +434,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB812; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB812; limitations++; } } @@ -559,7 +447,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB076; + gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB076; limitations++; } } @@ -694,7 +582,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].reflectTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; - BattleScriptExecute(gUnknown_082DACFA); + BattleScriptExecute(BattleScript_82DACFA); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; gBattleTextBuff1[2] = MOVE_REFLECT; @@ -723,7 +611,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].lightscreenTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; - BattleScriptExecute(gUnknown_082DACFA); + BattleScriptExecute(BattleScript_82DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -752,7 +640,7 @@ u8 UpdateTurnCounters(void) && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; - BattleScriptExecute(gUnknown_082DACFA); + BattleScriptExecute(BattleScript_82DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -781,7 +669,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].safeguardTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; - BattleScriptExecute(gUnknown_082DAD0B); + BattleScriptExecute(BattleScript_82DAD0B); effect++; } } @@ -836,7 +724,7 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; else gBattleCommunication[MULTISTRING_CHOOSER] = 0; - BattleScriptExecute(gUnknown_082DAC2C); + BattleScriptExecute(BattleScript_82DAC2C); effect++; } gBattleStruct->turncountersTracker++; @@ -847,10 +735,10 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = gUnknown_082DACC9; + gBattlescriptCurrInstr = BattleScript_82DACC9; } else - gBattlescriptCurrInstr = gUnknown_082DAC47; + gBattlescriptCurrInstr = BattleScript_82DAC47; gBattleScripting.animArg1 = 0xC; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -865,10 +753,10 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SUN_TEMPORARY; - gBattlescriptCurrInstr = gUnknown_082DACE0; + gBattlescriptCurrInstr = BattleScript_82DACE0; } else - gBattlescriptCurrInstr = gUnknown_082DACD2; + gBattlescriptCurrInstr = BattleScript_82DACD2; BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -881,10 +769,10 @@ u8 UpdateTurnCounters(void) if (--gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_HAIL; - gBattlescriptCurrInstr = gUnknown_082DACC9; + gBattlescriptCurrInstr = BattleScript_82DACC9; } else - gBattlescriptCurrInstr = gUnknown_082DAC47; + gBattlescriptCurrInstr = BattleScript_82DAC47; gBattleScripting.animArg1 = 0xD; gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -1075,7 +963,7 @@ u8 TurnBasedEffects(void) gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(gUnknown_082DB234); + BattleScriptExecute(BattleScript_82DB234); gActiveBank = gBankAttacker; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); @@ -1106,7 +994,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; CancelMultiTurnMoves(gActiveBank); } - BattleScriptExecute(gUnknown_082DB2A6); + BattleScriptExecute(BattleScript_82DB2A6); effect = 1; } } @@ -1259,7 +1147,7 @@ bool8 sub_8041364(void) gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - BattleScriptExecute(gUnknown_082DAFE4); + BattleScriptExecute(BattleScript_82DAFE4); if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0) @@ -1298,12 +1186,12 @@ bool8 sub_8041364(void) { gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG; gBattleMoveDamage = gBattleMons[gActiveBank].hp; - gBattlescriptCurrInstr = gUnknown_082DAF05; + gBattlescriptCurrInstr = BattleScript_82DAF05; } else { gDisableStructs[gActiveBank].perishSongTimer1--; - gBattlescriptCurrInstr = gUnknown_082DAF20; + gBattlescriptCurrInstr = BattleScript_82DAF20; } BattleScriptExecute(gBattlescriptCurrInstr); return 1; @@ -1326,8 +1214,8 @@ bool8 sub_8041364(void) for (i = 0; i < 2; i++) CancelMultiTurnMoves(i); - gBattlescriptCurrInstr = gUnknown_082DB8F3; - BattleScriptExecute(gUnknown_082DB8F3); + gBattlescriptCurrInstr = BattleScript_82DB8F3; + BattleScriptExecute(BattleScript_82DB8F3); gBattleStruct->field_1A0++; return 1; } @@ -1367,7 +1255,7 @@ bool8 sub_8041728(void) && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->field_4E]]) && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - BattleScriptExecute(gUnknown_082DA7C4); + BattleScriptExecute(BattleScript_82DA7C4); gBattleStruct->field_4D = 2; return TRUE; } @@ -1392,7 +1280,7 @@ bool8 sub_8041728(void) if (gBattleMons[gBattleStruct->field_4E].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - BattleScriptExecute(gUnknown_082DA7CD); + BattleScriptExecute(BattleScript_82DA7CD); gBattleStruct->field_4D = 5; return TRUE; } @@ -1961,7 +1849,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect) { gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); - BattleScriptPushCursorAndCallback(gUnknown_082DACE7); + BattleScriptPushCursorAndCallback(BattleScript_82DACE7); } break; case ABILITY_DRIZZLE: @@ -2167,9 +2055,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = gUnknown_082DB592; + gBattlescriptCurrInstr = BattleScript_82DB592; else - gBattlescriptCurrInstr = gUnknown_082DB591; + gBattlescriptCurrInstr = BattleScript_82DB591; } else { @@ -2380,7 +2268,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } BattleScriptPushCursor(); - gBattlescriptCurrInstr = gUnknown_082DB68C; + gBattlescriptCurrInstr = BattleScript_82DB68C; gBattleScripting.bank = bank; gActiveBank = bank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); @@ -2445,7 +2333,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - BattleScriptPushCursorAndCallback(gUnknown_082DB4B8); + BattleScriptPushCursorAndCallback(BattleScript_82DB4B8); gBattleStruct->intimidateBank = i; effect++; break; @@ -2517,7 +2405,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); BattleScriptPushCursor(); - gBattlescriptCurrInstr = gUnknown_082DB4C1; + gBattlescriptCurrInstr = BattleScript_82DB4C1; gBattleStruct->intimidateBank = i; effect++; break; @@ -3536,7 +3424,7 @@ u8 IsPokeDisobedient(void) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { - gBattlescriptCurrInstr = gUnknown_082DB695; + gBattlescriptCurrInstr = BattleScript_82DB695; return 1; } @@ -3559,7 +3447,7 @@ u8 IsPokeDisobedient(void) } while (gBitTable[gCurrMovePos] & calc); gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; - gBattlescriptCurrInstr = gUnknown_082DB6A5; + gBattlescriptCurrInstr = BattleScript_82DB6A5; gBankTarget = GetMoveTarget(gRandomMove, 0); gHitMarker |= HITMARKER_x200000; return 2; @@ -3581,7 +3469,7 @@ u8 IsPokeDisobedient(void) } if (i == gNoOfAllBanks) { - gBattlescriptCurrInstr = gUnknown_082DB6D9; + gBattlescriptCurrInstr = BattleScript_82DB6D9; return 1; } } @@ -3590,7 +3478,7 @@ u8 IsPokeDisobedient(void) { gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); gBankTarget = gBankAttacker; - gBattlescriptCurrInstr = gUnknown_082DB6F0; + gBattlescriptCurrInstr = BattleScript_82DB6F0; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; return 2; } -- cgit v1.2.3 From fe658cc2fd673db774ca533f8bafde7210774c42 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 25 Nov 2017 21:11:20 +0100 Subject: create setword macro --- asm/macros/battle_script.inc | 7 +++++++ data/battle_scripts_1.s | 10 ++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 3a8e99a94..0bbd1dc0b 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1230,3 +1230,10 @@ .macro chosenstatus2animation bank, status chosenstatusanimation \bank 0x1 \status .endm + + .macro setword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + setbyte \dst + 2, (\value >> 16) & 0xFF + setbyte \dst + 3, (\value >> 24) & 0xFF + .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 1f6be1390..7d1c4f8ec 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -826,10 +826,7 @@ BattleScript_EffectDragonRage:: ppreduce typecalc bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE - setbyte gBattleMoveDamage, 0x28 - setbyte gBattleMoveDamage + 1, 0x0 - setbyte gBattleMoveDamage + 2, 0x0 - setbyte gBattleMoveDamage + 3, 0x0 + setword gBattleMoveDamage, 40 adjustsetdamage goto BattleScript_HitFromAtkAnimation @@ -1740,10 +1737,7 @@ BattleScript_EffectSonicboom:: ppreduce typecalc bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE - setbyte gBattleMoveDamage, 0x14 - setbyte gBattleMoveDamage + 1, 0x0 - setbyte gBattleMoveDamage + 2, 0x0 - setbyte gBattleMoveDamage + 3, 0x0 + setword gBattleMoveDamage, 20 adjustsetdamage goto BattleScript_HitFromAtkAnimation -- cgit v1.2.3 From 847bfa15404fa8f33f3ae4f43dcd7586c3126d2c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 25 Nov 2017 21:32:17 +0100 Subject: add more battlescript macros --- asm/macros/battle_script.inc | 16 ++++++++++++++ data/battle_scripts_1.s | 52 ++++++++++++++++++++------------------------ 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 0bbd1dc0b..55ec0438e 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1237,3 +1237,19 @@ setbyte \dst + 2, (\value >> 16) & 0xFF setbyte \dst + 3, (\value >> 24) & 0xFF .endm + + .macro copybyte dst, src + copyarray \dst, \src, 0x1 + .endm + + .macro copyword dst, src + copyarray \dst, \src, 0x4 + .endm + + .macro jumpifbytenotequal byte1, byte2, jumpptr + jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifbyteequal byte1, byte2, jumpptr + jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr + .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 7d1c4f8ec..eb598dbb6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -614,7 +614,7 @@ BattleScript_82D8DFD:: jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74 BattleScript_82D8E1F:: movevaluescleanup - copyarray cEFFECT_CHOOSER, sFIELD_16, 0x1 + copybyte cEFFECT_CHOOSER, sFIELD_16 critcalc damagecalc typecalc @@ -714,7 +714,7 @@ BattleScript_AlreadyPoisoned:: goto BattleScript_MoveEnd BattleScript_82D8F63:: - copyarray gEffectBank, gBankTarget, 0x1 + copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PSNPrevention goto BattleScript_MoveEnd @@ -804,7 +804,7 @@ BattleScript_82D906F:: orword gHitMarker, HITMARKER_x8000000 setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary - copyarray cMULTISTRING_CHOOSER, sFIELD_F, 0x1 + copybyte cMULTISTRING_CHOOSER, sFIELD_F printfromtable 0x85CC8B0 waitmessage 0x40 return @@ -1036,7 +1036,7 @@ BattleScript_82D9351:: goto BattleScript_MoveEnd BattleScript_82D9362:: - copyarray gEffectBank, gBankTarget, 0x1 + copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PRLZPrevention goto BattleScript_MoveEnd @@ -1254,7 +1254,7 @@ BattleScript_EffectPainSplit:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER - copyarray gBattleMoveDamage, sPAINSPLIT_HP, 0x4 + copyword gBattleMoveDamage, sPAINSPLIT_HP healthbarupdate TARGET datahpupdate TARGET printstring STRINGID_SHAREDPAIN @@ -1503,7 +1503,7 @@ BattleScript_EffectCurse:: jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_82D9892 jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed BattleScript_82D9892:: - copyarray gBankTarget, gBankAttacker, 0x1 + copybyte gBankTarget, gBankAttacker setbyte sANIM_TURN, 0x1 attackanimation waitanimation @@ -1525,7 +1525,7 @@ BattleScript_82D98E0:: goto BattleScript_MoveEnd BattleScript_82D98E5:: - jumpifarraynotequal gBankAttacker, gBankTarget, 0x1, BattleScript_82D98F6 + jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_82D98F6 various ATTACKER, VARIOUS_GET_MOVE_TARGET BattleScript_82D98F6:: attackcanceler @@ -1593,7 +1593,7 @@ BattleScript_PerishSongLoop:: jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected BattleScript_PerishSongLoopIncrement:: addbyte sBANK, 0x1 - jumpifarraynotequal sBANK, gNoOfAllBanks, 0x1, BattleScript_PerishSongLoop + jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_PerishSongLoop goto BattleScript_MoveEnd BattleScript_PerishSongNotAffected:: @@ -1682,6 +1682,7 @@ BattleScript_EffectPresent:: ppreduce typecalc presentdamagecalculation + BattleScript_EffectSafeguard:: attackcanceler attackstring @@ -1984,7 +1985,6 @@ BattleScript_BeatUpAttack:: setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 goto BattleScript_BeatUpLoop - BattleScript_BeatUpEnd:: end @@ -2208,7 +2208,7 @@ BattleScript_EffectWillOWisp:: goto BattleScript_MoveEnd BattleScript_82DA0A1:: - copyarray gEffectBank, gBankTarget, 0x1 + copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_BRNPrevention goto BattleScript_MoveEnd @@ -2485,7 +2485,7 @@ BattleScript_EffectYawn:: goto BattleScript_MoveEnd BattleScript_82DA378:: - copyarray sBANK, sFIELD_15, 0x1 + copybyte sBANK, sFIELD_15 BattleScript_82DA382:: pause 0x20 printstring STRINGID_PKMNSXMADEITINEFFECTIVE @@ -2501,12 +2501,12 @@ BattleScript_EffectEndeavor:: attackstring ppreduce setdamagetohealthdifference BattleScript_ButItFailed - copyarray gHpDealt, gBattleMoveDamage, 0x4 + copyword gHpDealt, gBattleMoveDamage accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE typecalc jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_HitFromAtkAnimation bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE - copyarray gBattleMoveDamage, gHpDealt, 0x4 + copyword gBattleMoveDamage, gHpDealt adjustsetdamage goto BattleScript_HitFromAtkAnimation @@ -2514,9 +2514,6 @@ BattleScript_EffectEruption:: scaledamagebyhealthratio goto BattleScript_EffectHit - - - BattleScript_EffectSkillSwap:: attackcanceler attackstring @@ -2563,7 +2560,6 @@ BattleScript_EffectGrudge:: waitmessage 0x40 goto BattleScript_MoveEnd - BattleScript_EffectSnatch:: attackcanceler trysetsnatch BattleScript_ButItFailedAtkStringPpReduce @@ -2600,7 +2596,7 @@ BattleScript_EffectTeeterDance:: BattleScript_82DA47B:: movevaluescleanup setmoveeffect EFFECT_CONFUSION - jumpifarrayequal gBankAttacker, gBankTarget, 0x1, BattleScript_82DA4D0 + jumpifbyteequal gBankAttacker, gBankTarget, BattleScript_82DA4D0 jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DA4E5 jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA501 jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82DA50F @@ -2617,7 +2613,7 @@ BattleScript_82DA4C7:: moveend 0x2, 0x10 BattleScript_82DA4D0:: addbyte gBankTarget, 0x1 - jumpifarraynotequal gBankTarget, gNoOfAllBanks, 0x1, BattleScript_82DA47B + jumpifbytenotequal gBankTarget, gNoOfAllBanks, BattleScript_82DA47B end BattleScript_82DA4E5:: @@ -2665,7 +2661,6 @@ BattleScript_EffectPoisonFang:: setmoveeffect EFFECT_TOXIC goto BattleScript_EffectHit - BattleScript_EffectWeatherBall:: setweatherballtype goto BattleScript_EffectHit @@ -2702,7 +2697,6 @@ BattleScript_82DA5A7:: BattleScript_82DA5CA:: goto BattleScript_MoveEnd - BattleScript_82DA5CF:: pause 0x20 orbyte gBattleMoveFlags, MOVESTATUS_FAILED @@ -2934,7 +2928,7 @@ BattleScript_82DA908:: switchinanim GBANK_1, 0x0 waitstate switchineffects 5 - jumpifarraynotequal gBank1, gNoOfAllBanks, 0x1, BattleScript_82DA908 + jumpifbytenotequal gBank1, gNoOfAllBanks, BattleScript_82DA908 BattleScript_82DA92C:: end2 @@ -2969,7 +2963,7 @@ BattleScript_LocalBattleLost:: jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_82DA9C9 jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x4000000, BattleScript_82DA9C9 jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_EREADER_TRAINER, BattleScript_82DA9BD - jumpifhalfword EQUAL, 0x2038BCA, 0x400, BattleScript_82DA9BD + jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_82DA9BD BattleScript_82DA9B1:: printstring STRINGID_PLAYERWHITEOUT waitmessage 0x40 @@ -3249,7 +3243,7 @@ BattleScript_82DAC5F:: BattleScript_82DACA0:: jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_82DACBF addbyte gBattleCommunication, 0x1 - jumpifarraynotequal gBattleCommunication, gNoOfAllBanks, 0x1, BattleScript_82DAC5F + jumpifbytenotequal gBattleCommunication, gNoOfAllBanks, BattleScript_82DAC5F BattleScript_82DACBF:: bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE end2 @@ -3298,7 +3292,7 @@ BattleScript_LeechSeedTurnDrain:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER - copyarray gBattleMoveDamage, gHpDealt, 0x4 + copyword gBattleMoveDamage, gHpDealt jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_82DAD47 manipulatedamage ATK80_DMG_CHANGE_SIGN setbyte cMULTISTRING_CHOOSER, 0x3 @@ -3330,7 +3324,7 @@ BattleScript_BideAttack:: accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE typecalc bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE - copyarray gBattleMoveDamage, sBIDE_DMG, 0x4 + copyword gBattleMoveDamage, sBIDE_DMG adjustsetdamage setbyte sANIM_TURN, 0x1 attackanimation @@ -3528,7 +3522,7 @@ BattleScript_RapidSpinAway:: BattleScript_WrapFree:: printstring STRINGID_PKMNGOTFREE waitmessage 0x40 - copyarray gBankTarget, sBANK, 0x1 + copybyte gBankTarget, sBANK return BattleScript_LeechSeedFree:: @@ -4042,7 +4036,7 @@ BattleScript_82DB48D:: BattleScript_82DB493:: trycastformdatachange addbyte sBANK, 0x1 - jumpifarraynotequal sBANK, gNoOfAllBanks, 0x1, BattleScript_82DB493 + jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_82DB493 return BattleScript_CastformChange:: @@ -4484,7 +4478,7 @@ BattleScript_82DB887:: waitmessage 0x40 BattleScript_82DB89D:: addbyte gBattleCommunication + 1, 0x1 - jumpifarraynotequal gBattleCommunication + 1, gNoOfAllBanks, 0x1, BattleScript_82DB887 + jumpifbytenotequal gBattleCommunication + 1, gNoOfAllBanks, BattleScript_82DB887 setbyte gBattleCommunication, 0x0 setbyte gBattleCommunication + 1, 0x0 end2 -- cgit v1.2.3 From 76f4a8b195932b4fbac9945eca8d97ffbbc0f84b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 00:33:40 +0100 Subject: clean up and use names for printfromtable --- constants/battle_script_constants.inc | 2 +- data/battle_scripts_1.s | 320 ++++++++++++++++++---------------- data/battle_scripts_2.s | 27 ++- include/battle.h | 2 +- include/battle_move_effects.h | 2 +- include/battle_scripts.h | 26 +-- src/battle_message.c | 280 +++++++++++++++++++++++------ src/battle_script_commands.c | 4 +- 8 files changed, 432 insertions(+), 231 deletions(-) diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc index 106bffd03..07b7f24f8 100644 --- a/constants/battle_script_constants.inc +++ b/constants/battle_script_constants.inc @@ -141,7 +141,7 @@ .equiv sBIDE_DMG, gBattleScripting + 4 .equiv sMULTIHIT_STRING, gBattleScripting + 8 .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE - .equiv sFIELD_F, gBattleScripting + 0xF + .equiv sTWOTURN_STRINGID, gBattleScripting + 0xF .equiv sANIM_ARG1, gBattleScripting + 0x10 .equiv sANIM_ARG2, gBattleScripting + 0x11 .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index eb598dbb6..bac2f77c5 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -20,17 +20,17 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectMirrorMove .4byte BattleScript_EffectAttackUp .4byte BattleScript_EffectDefenseUp - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpeedUp .4byte BattleScript_EffectSpecialAttackUp - .4byte BattleScript_EffectHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialDefenseUp + .4byte BattleScript_EffectAccuracyUp .4byte BattleScript_EffectEvasionUp - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAlwaysHit .4byte BattleScript_EffectAttackDown .4byte BattleScript_EffectDefenseDown .4byte BattleScript_EffectSpeedDown - .4byte BattleScript_EffectHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialAttackDown + .4byte BattleScript_EffectSpecialDefenseDown .4byte BattleScript_EffectAccuracyDown .4byte BattleScript_EffectEvasionDown .4byte BattleScript_EffectHaze @@ -46,12 +46,12 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectLightScreen .4byte BattleScript_EffectTriAttack .4byte BattleScript_EffectRest - .4byte BattleScript_EffectOhko + .4byte BattleScript_EffectOHKO .4byte BattleScript_EffectRazorWind .4byte BattleScript_EffectSuperFang .4byte BattleScript_EffectDragonRage .4byte BattleScript_EffectTrap - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHighCritical .4byte BattleScript_EffectDoubleHit .4byte BattleScript_EffectRecoilIfMiss .4byte BattleScript_EffectMist @@ -63,16 +63,16 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectSpeedUp2 .4byte BattleScript_EffectSpecialAttackUp2 .4byte BattleScript_EffectSpecialDefenseUp2 - .4byte BattleScript_EffectHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAccuracyUp2 + .4byte BattleScript_EffectEvasionUp2 .4byte BattleScript_EffectTransform .4byte BattleScript_EffectAttackDown2 .4byte BattleScript_EffectDefenseDown2 .4byte BattleScript_EffectSpeedDown2 - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialAttackDown2 .4byte BattleScript_EffectSpecialDefenseDown2 - .4byte BattleScript_EffectHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAccuracyDown2 + .4byte BattleScript_EffectEvasionDown2 .4byte BattleScript_EffectReflect .4byte BattleScript_EffectPoison .4byte BattleScript_EffectParalyze @@ -82,11 +82,11 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectSpecialAttackDownHit .4byte BattleScript_EffectSpecialDefenseDownHit .4byte BattleScript_EffectAccuracyDownHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectEvasionDownHit .4byte BattleScript_EffectSkyAttack .4byte BattleScript_EffectConfuseHit .4byte BattleScript_EffectTwineedle - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectVitalThrow .4byte BattleScript_EffectSubstitute .4byte BattleScript_EffectRecharge .4byte BattleScript_EffectRage @@ -104,52 +104,52 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectConversion2 .4byte BattleScript_EffectLockOn .4byte BattleScript_EffectSketch - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectUnused60//Thaw .4byte BattleScript_EffectSleepTalk .4byte BattleScript_EffectDestinyBond .4byte BattleScript_EffectFlail .4byte BattleScript_EffectSpite - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectFalseSwipe .4byte BattleScript_EffectHealBell - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectQuickAttack .4byte BattleScript_EffectTripleKick .4byte BattleScript_EffectThief .4byte BattleScript_EffectMeanLook .4byte BattleScript_EffectNightmare .4byte BattleScript_EffectMinimize .4byte BattleScript_EffectCurse - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectUnused6e .4byte BattleScript_EffectProtect .4byte BattleScript_EffectSpikes .4byte BattleScript_EffectForesight .4byte BattleScript_EffectPerishSong .4byte BattleScript_EffectSandstorm - .4byte BattleScript_EffectProtect + .4byte BattleScript_EffectEndure .4byte BattleScript_EffectRollout .4byte BattleScript_EffectSwagger .4byte BattleScript_EffectFuryCutter .4byte BattleScript_EffectAttract .4byte BattleScript_EffectReturn .4byte BattleScript_EffectPresent - .4byte BattleScript_EffectReturn + .4byte BattleScript_EffectFrustration .4byte BattleScript_EffectSafeguard .4byte BattleScript_EffectThawHit .4byte BattleScript_EffectMagnitude .4byte BattleScript_EffectBatonPass - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectPursuit .4byte BattleScript_EffectRapidSpin .4byte BattleScript_EffectSonicboom - .4byte BattleScript_EffectHit - .4byte BattleScript_EffectMorningSun - .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectUnused83 .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectSynthesis + .4byte BattleScript_EffectMoonlight .4byte BattleScript_EffectHiddenPower .4byte BattleScript_EffectRainDance .4byte BattleScript_EffectSunnyDay .4byte BattleScript_EffectDefenseUpHit .4byte BattleScript_EffectAttackUpHit .4byte BattleScript_EffectAllStatsUpHit - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectUnused8d .4byte BattleScript_EffectBellyDrum .4byte BattleScript_EffectPsychUp .4byte BattleScript_EffectMirrorCoat @@ -163,7 +163,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectThunder .4byte BattleScript_EffectTeleport .4byte BattleScript_EffectBeatUp - .4byte BattleScript_EffectFly + .4byte BattleScript_EffectSemiInvulnerable .4byte BattleScript_EffectDefenseCurl .4byte BattleScript_EffectSoftboiled .4byte BattleScript_EffectFakeOut @@ -171,7 +171,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectStockpile .4byte BattleScript_EffectSpitUp .4byte BattleScript_EffectSwallow - .4byte BattleScript_EffectHit + .4byte BattleScript_EffectUnusedA3 .4byte BattleScript_EffectHail .4byte BattleScript_EffectTorment .4byte BattleScript_EffectFlatter @@ -208,7 +208,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectSecretPower .4byte BattleScript_EffectDoubleEdge .4byte BattleScript_EffectTeeterDance - .4byte BattleScript_EffectBurnHit + .4byte BattleScript_EffectBlazeKick .4byte BattleScript_EffectMudSport .4byte BattleScript_EffectPoisonFang .4byte BattleScript_EffectWeatherBall @@ -217,12 +217,34 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectCosmicPower .4byte BattleScript_EffectSkyUppercut .4byte BattleScript_EffectBulkUp - .4byte BattleScript_EffectPoisonHit - .4byte BattleScript_EffectMudSport + .4byte BattleScript_EffectPoisonTail + .4byte BattleScript_EffectWaterSport .4byte BattleScript_EffectCalmMind .4byte BattleScript_EffectDragonDance .4byte BattleScript_EffectCamouflage +BattleScript_EffectSpeedUp:: +BattleScript_EffectSpecialDefenseUp:: +BattleScript_EffectAccuracyUp:: +BattleScript_EffectAlwaysHit:: +BattleScript_EffectSpecialAttackDown:: +BattleScript_EffectSpecialDefenseDown:: +BattleScript_EffectHighCritical:: +BattleScript_EffectAccuracyUp2:: +BattleScript_EffectEvasionUp2:: +BattleScript_EffectSpecialAttackDown2:: +BattleScript_EffectAccuracyDown2:: +BattleScript_EffectEvasionDown2:: +BattleScript_EffectEvasionDownHit:: +BattleScript_EffectVitalThrow:: +BattleScript_EffectUnused60:: +BattleScript_EffectFalseSwipe:: +BattleScript_EffectQuickAttack:: +BattleScript_EffectUnused6e:: +BattleScript_EffectPursuit:: +BattleScript_EffectUnused83:: +BattleScript_EffectUnused8d:: +BattleScript_EffectUnusedA3:: BattleScript_EffectHit:: jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SURF, BattleScript_HitFromAtkCanceler jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_HitFromAtkCanceler @@ -303,11 +325,12 @@ BattleScript_82D8AC1:: BattleScript_82D8ACF:: pause 0x20 - printfromtable 0x85CC896 + printfromtable gUproarAwakeStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPoisonHit:: +BattleScript_EffectPoisonTail:: setmoveeffect EFFECT_POISON goto BattleScript_EffectHit @@ -336,7 +359,6 @@ BattleScript_EffectAbsorb:: jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_82D8B26 setbyte cMULTISTRING_CHOOSER, 0x0 goto BattleScript_82D8B2E - BattleScript_82D8B26:: manipulatedamage ATK80_DMG_CHANGE_SIGN setbyte cMULTISTRING_CHOOSER, 0x1 @@ -344,7 +366,7 @@ BattleScript_82D8B2E:: healthbarupdate ATTACKER datahpupdate ATTACKER jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8B45 - printfromtable 0x85CC8FC + printfromtable gLeechSeedDrainStringIds waitmessage 0x40 BattleScript_82D8B45:: tryfaintmon ATTACKER, FALSE, NULL @@ -352,6 +374,7 @@ BattleScript_82D8B45:: goto BattleScript_MoveEnd BattleScript_EffectBurnHit:: +BattleScript_EffectBlazeKick:: setmoveeffect EFFECT_BURN goto BattleScript_EffectHit @@ -499,14 +522,14 @@ BattleScript_82D8CBF:: setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 BattleScript_82D8CC7:: - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D8CCF:: goto BattleScript_MoveEnd BattleScript_StatUp:: playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 return @@ -546,14 +569,14 @@ BattleScript_82D8D4E:: setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 BattleScript_82D8D58:: - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82D8D60:: goto BattleScript_MoveEnd BattleScript_StatDown:: playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 return @@ -742,7 +765,7 @@ BattleScript_EffectRest:: jumpifcantmakeasleep BattleScript_82D8FC6 trysetrest BattleScript_AlreadyAtFullHp pause 0x20 - printfromtable 0x85CC882 + printfromtable gRestUsedStringIds waitmessage 0x40 updatestatusicon ATTACKER waitstate @@ -750,7 +773,7 @@ BattleScript_EffectRest:: BattleScript_82D8FC6:: pause 0x40 - printfromtable 0x85CC896 + printfromtable gUproarAwakeStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -761,28 +784,27 @@ BattleScript_82D8FD6:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_EffectOhko:: +BattleScript_EffectOHKO:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON typecalc jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_HitFromAtkAnimation - tryKO BattleScript_82D9008 + tryKO BattleScript_KOFail trysetdestinybondtohappen goto BattleScript_HitFromAtkAnimation - -BattleScript_82D9008:: +BattleScript_KOFail:: pause 0x40 - printfromtable 0x85CC8F4 + printfromtable gKOFailedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRazorWind:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 - setbyte sFIELD_F, 0x0 - call BattleScript_82D906F + setbyte sTWOTURN_STRINGID, 0x0 + call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_82D9040:: @@ -795,7 +817,7 @@ BattleScript_82D9040:: setmoveeffect EFFECT_FLINCH goto BattleScript_HitFromAccCheck -BattleScript_82D906F:: +BattleScriptFirstChargingTurn:: attackcanceler printstring STRINGID_EMPTYSTRING3 ppreduce @@ -804,8 +826,8 @@ BattleScript_82D906F:: orword gHitMarker, HITMARKER_x8000000 setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary - copybyte cMULTISTRING_CHOOSER, sFIELD_F - printfromtable 0x85CC8B0 + copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID + printfromtable gFirstTurnOfTwoStringIds waitmessage 0x40 return @@ -882,7 +904,7 @@ BattleScript_EffectMist:: setmist attackanimation waitanimation - printfromtable 0x85CC8CC + printfromtable gMistUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -894,7 +916,7 @@ BattleScript_EffectFocusEnergy:: setfocusenergy attackanimation waitanimation - printfromtable 0x85CC8D0 + printfromtable gFocusEnergyUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -955,7 +977,7 @@ BattleScript_EffectTransform:: transformdataexecution attackanimation waitanimation - printfromtable 0x85CC8D4 + printfromtable gTransformUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -983,7 +1005,7 @@ BattleScript_EffectReflect:: BattleScript_82D928C:: attackanimation waitanimation - printfromtable 0x85CC86C + printfromtable gReflectLightScreenSafeguardStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -1065,12 +1087,11 @@ BattleScript_EffectAccuracyDownHit:: setmoveeffect EFFECT_ACC_MINUS_1 goto BattleScript_EffectHit - BattleScript_EffectSkyAttack:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 - setbyte sFIELD_F, 0x3 - call BattleScript_82D906F + setbyte sTWOTURN_STRINGID, 0x3 + call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_EffectConfuseHit:: @@ -1097,14 +1118,13 @@ BattleScript_EffectSubstitute:: jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D942B pause 0x20 goto BattleScript_82D9431 - BattleScript_82D942B:: attackanimation waitanimation healthbarupdate ATTACKER datahpupdate ATTACKER BattleScript_82D9431:: - printfromtable 0x85CC8D8 + printfromtable gSubsituteUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -1172,7 +1192,7 @@ BattleScript_82D94E5:: setseeded attackanimation waitanimation - printfromtable 0x85CC878 + printfromtable gLeechSeedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -1376,7 +1396,7 @@ BattleScript_EffectHealBell:: waitstate attackanimation waitanimation - printfromtable 0x85CC904 + printfromtable gPartyStatusHealStringIds waitmessage 0x40 jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_HEAL_BELL, BattleScript_82D96FE jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED @@ -1509,17 +1529,17 @@ BattleScript_82D9892:: waitanimation setstatchanger SPEED, 1, TRUE statbuffchange 0x41, BattleScript_82D98B8 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82D98B8:: setstatchanger ATK, 1, FALSE statbuffchange 0x41, BattleScript_82D98CC - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D98CC:: setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82D98E0 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D98E0:: goto BattleScript_MoveEnd @@ -1546,13 +1566,14 @@ BattleScript_82D98F6:: goto BattleScript_MoveEnd BattleScript_EffectProtect:: +BattleScript_EffectEndure:: attackcanceler attackstring ppreduce setprotectlike attackanimation waitanimation - printfromtable 0x85CC866 + printfromtable gProtectLikeUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -1634,7 +1655,7 @@ BattleScript_EffectSwagger:: jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9A1E setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D9A1E:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 @@ -1670,6 +1691,7 @@ BattleScript_EffectAttract:: goto BattleScript_MoveEnd BattleScript_EffectReturn:: +BattleScript_EffectFrustration:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE happinesstodamagecalculation @@ -1743,6 +1765,8 @@ BattleScript_EffectSonicboom:: goto BattleScript_HitFromAtkAnimation BattleScript_EffectMorningSun:: +BattleScript_EffectSynthesis:: +BattleScript_EffectMoonlight:: attackcanceler attackstring ppreduce @@ -1761,7 +1785,7 @@ BattleScript_EffectRainDance:: BattleScript_82D9B41:: attackanimation waitanimation - printfromtable 0x85CC848 + printfromtable gMoveWeatherChangeStringIds waitmessage 0x40 call BattleScript_82DB48D goto BattleScript_MoveEnd @@ -1823,14 +1847,14 @@ BattleScript_EffectMirrorCoat:: BattleScript_EffectSkullBash:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 - setbyte sFIELD_F, 0x2 - call BattleScript_82D906F + setbyte sTWOTURN_STRINGID, 0x2 + call BattleScriptFirstChargingTurn setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82D9C16 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16 setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D9C16:: goto BattleScript_MoveEnd @@ -1901,7 +1925,7 @@ BattleScript_EffectFutureSight:: trysetfutureattack BattleScript_ButItFailed attackanimation waitanimation - printfromtable 0x85CC90E + printfromtable gFutureMoveUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -1923,8 +1947,8 @@ BattleScript_EffectSolarbeam:: BattleScript_82D9D28:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 - setbyte sFIELD_F, 0x1 - call BattleScript_82D906F + setbyte sTWOTURN_STRINGID, 0x1 + call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_82D9D50:: @@ -1988,31 +2012,31 @@ BattleScript_BeatUpAttack:: BattleScript_BeatUpEnd:: end -BattleScript_EffectFly:: - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9E79 - jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9E79 - jumpifhalfword EQUAL, gCurrentMove, MOVE_FLY, BattleScript_82D9E68 - jumpifhalfword EQUAL, gCurrentMove, MOVE_DIVE, BattleScript_82D9E5D - jumpifhalfword EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9E52 - setbyte sFIELD_F, 0x5 - goto BattleScript_82D9E6E - -BattleScript_82D9E52:: - setbyte sFIELD_F, 0x7 - goto BattleScript_82D9E6E - -BattleScript_82D9E5D:: - setbyte sFIELD_F, 0x6 - goto BattleScript_82D9E6E - -BattleScript_82D9E68:: - setbyte sFIELD_F, 0x4 -BattleScript_82D9E6E:: - call BattleScript_82D906F +BattleScript_EffectSemiInvulnerable:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable + jumpifhalfword EQUAL, gCurrentMove, MOVE_FLY, BattleScript_FirstTurnFly + jumpifhalfword EQUAL, gCurrentMove, MOVE_DIVE, BattleScript_FirstTurnDive + jumpifhalfword EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_FirstTurnBounce + setbyte sTWOTURN_STRINGID, 0x5 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_FirstTurnBounce:: + setbyte sTWOTURN_STRINGID, 0x7 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_FirstTurnDive:: + setbyte sTWOTURN_STRINGID, 0x6 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_FirstTurnFly:: + setbyte sTWOTURN_STRINGID, 0x4 +BattleScript_FirstTurnSemiInvulnerable:: + call BattleScriptFirstChargingTurn setsemiinvulnerablebit goto BattleScript_MoveEnd -BattleScript_82D9E79:: +BattleScript_SecondTurnSemiInvulnerable:: attackcanceler setmoveeffect EFFECT_CHARGING setbyte sANIM_TURN, 0x1 @@ -2021,11 +2045,11 @@ BattleScript_82D9E79:: jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9EA3 setmoveeffect EFFECT_PARALYSIS BattleScript_82D9EA3:: - accuracycheck BattleScript_82D9EB0, ACC_CURR_MOVE + accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE clearsemiinvulnerablebit goto BattleScript_HitFromAtkString -BattleScript_82D9EB0:: +BattleScript_SemiInvulnerableMiss:: clearsemiinvulnerablebit goto BattleScript_PrintMoveMissed @@ -2105,7 +2129,7 @@ BattleScript_EffectStockpile:: stockpile attackanimation waitanimation - printfromtable 0x85CC88A + printfromtable gStockpileUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -2144,7 +2168,7 @@ BattleScript_EffectSwallow:: BattleScript_SwallowFail:: pause 0x20 - printfromtable 0x85CC892 + printfromtable gSwallowFailStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -2181,7 +2205,7 @@ BattleScript_EffectFlatter:: jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA03A setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA03A:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 @@ -2236,14 +2260,14 @@ BattleScript_EffectMemento:: setstatchanger ATK, 2, TRUE statbuffchange 0x1, BattleScript_82DA119 jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA119:: playstatchangeanimation TARGET, 0x10, 0x3 setstatchanger SPATK, 2, TRUE statbuffchange 0x1, BattleScript_82DA13C jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA13C:: tryfaintmon ATTACKER, FALSE, NULL @@ -2358,7 +2382,7 @@ BattleScript_EffectTrick:: waitanimation printstring STRINGID_PKMNSWITCHEDITEMS waitmessage 0x40 - printfromtable 0x85CC970 + printfromtable gItemSwapStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -2647,13 +2671,14 @@ BattleScript_82DA520:: goto BattleScript_82DA4C7 BattleScript_EffectMudSport:: +BattleScript_EffectWaterSport:: attackcanceler attackstring ppreduce settypebasedhalvers BattleScript_ButItFailed attackanimation waitanimation - printfromtable 0x85CC900 + printfromtable gSportsUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -2685,14 +2710,14 @@ BattleScript_82DA571:: setstatchanger ATK, 1, TRUE statbuffchange 0x1, BattleScript_82DA5A7 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5A7 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA5A7:: playstatchangeanimation TARGET, 0x4, 0x1 setstatchanger DEF, 1, TRUE statbuffchange 0x1, BattleScript_82DA5CA jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5CA - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA5CA:: goto BattleScript_MoveEnd @@ -2718,13 +2743,13 @@ BattleScript_82DA5F8:: setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82DA623 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA623:: setstatchanger SPDEF, 1, FALSE statbuffchange 0x41, BattleScript_82DA642 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA642:: goto BattleScript_MoveEnd @@ -2747,13 +2772,13 @@ BattleScript_82DA66A:: setstatchanger ATK, 1, FALSE statbuffchange 0x41, BattleScript_82DA695 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA695:: setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82DA6B4 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA6B4:: goto BattleScript_MoveEnd @@ -2772,13 +2797,13 @@ BattleScript_82DA6CE:: setstatchanger SPATK, 1, FALSE statbuffchange 0x41, BattleScript_82DA6F9 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA6F9:: setstatchanger SPDEF, 1, FALSE statbuffchange 0x41, BattleScript_82DA718 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA718:: goto BattleScript_MoveEnd @@ -2804,13 +2829,13 @@ BattleScript_82DA746:: setstatchanger ATK, 1, FALSE statbuffchange 0x41, BattleScript_82DA771 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA771:: setstatchanger SPEED, 1, FALSE statbuffchange 0x41, BattleScript_82DA790 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA790:: goto BattleScript_MoveEnd @@ -3091,12 +3116,12 @@ BattleScript_82DAAFE:: end2 BattleScript_PrintFailedToRunString:: - printfromtable 0x85CC83E + printfromtable gNoEscapeStringIds waitmessage 0x40 end2 BattleScript_82DAB0B:: - printselectionstringfromtable 0x85CC83E + printselectionstringfromtable gNoEscapeStringIds endselectionscript BattleScript_82DAB11:: @@ -3181,7 +3206,6 @@ BattleScript_LevelUp:: drawlvlupbox handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, TRUE goto BattleScript_AskToLearnMove - BattleScript_TryLearnMoveLoop:: handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, FALSE BattleScript_AskToLearnMove:: @@ -3198,7 +3222,6 @@ BattleScript_AskToLearnMove:: yesnoboxstoplearningmove BattleScript_AskToLearnMove printstring STRINGID_DIDNOTLEARNMOVE goto BattleScript_TryLearnMoveLoop - BattleScript_ForgotAndLearnedNewMove:: printstring STRINGID_123POOF printstring STRINGID_PKMNFORGOTMOVE @@ -3210,12 +3233,11 @@ BattleScript_LearnedNewMove:: waitmessage 0x40 various ATTACKER, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP goto BattleScript_TryLearnMoveLoop - BattleScript_LearnMoveReturn:: return BattleScript_82DAC2C:: - printfromtable 0x85CC860 + printfromtable gRainContinuesStringIds waitmessage 0x40 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DAC46 playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL @@ -3223,7 +3245,7 @@ BattleScript_82DAC46:: end2 BattleScript_82DAC47:: - printfromtable 0x85CC854 + printfromtable gSandStormHailContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL setbyte gBattleCommunication, 0x0 @@ -3231,7 +3253,7 @@ BattleScript_82DAC5F:: copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1 weatherdamage jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_82DACA0 - printfromtable 0x85CC858 + printfromtable gSandStormHailDmgStringIds waitmessage 0x40 orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE effectivenesssound @@ -3249,7 +3271,7 @@ BattleScript_82DACBF:: end2 BattleScript_82DACC9:: - printfromtable 0x85CC85C + printfromtable gSandStormHailEndStringIds waitmessage 0x40 end2 @@ -3265,7 +3287,7 @@ BattleScript_82DACE0:: end2 BattleScript_82DACE7:: - printfromtable 0x85CC91A + printfromtable gWeatherContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL end3 @@ -3304,7 +3326,7 @@ BattleScript_82DAD4D:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate TARGET datahpupdate TARGET - printfromtable 0x85CC878 + printfromtable gLeechSeedStringIds waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL tryfaintmon TARGET, FALSE, NULL @@ -3490,27 +3512,27 @@ BattleScript_82DAF54:: playstatchangeanimation ATTACKER, 0x3E, 0x0 setstatchanger ATK, 1, FALSE statbuffchange 0x41, BattleScript_82DAF72 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF72:: setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82DAF86 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF86:: setstatchanger SPEED, 1, FALSE statbuffchange 0x41, BattleScript_82DAF9A - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF9A:: setstatchanger SPATK, 1, FALSE statbuffchange 0x41, BattleScript_82DAFAE - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAFAE:: setstatchanger SPDEF, 1, FALSE statbuffchange 0x41, BattleScript_82DAFC2 - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAFC2:: return @@ -3662,14 +3684,14 @@ BattleScript_AtkDefDown:: setstatchanger ATK, 1, TRUE statbuffchange 0xC1, BattleScript_82DB144 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB144:: playstatchangeanimation ATTACKER, 0x4, 0x9 setstatchanger DEF, 1, TRUE statbuffchange 0xC1, BattleScript_82DB167 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167 - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB167:: return @@ -3735,7 +3757,7 @@ BattleScript_SAtkDown2:: setstatchanger SPATK, 2, TRUE statbuffchange 0xC1, BattleScript_82DB1FE jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE - printfromtable 0x85CC8A8 + printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB1FE:: return @@ -3756,7 +3778,7 @@ BattleScript_MoveUsedIsAsleep:: BattleScript_MoveUsedWokeUp:: bicword gHitMarker, HITMARKER_x10 - printfromtable 0x85CC88E + printfromtable gWokeUpStringIds waitmessage 0x40 updatestatusicon ATTACKER return @@ -3793,7 +3815,7 @@ BattleScript_MoveUsedIsFrozen:: goto BattleScript_MoveEnd BattleScript_MoveUsedUnfroze:: - printfromtable 0x85CC8F0 + printfromtable gGotDefrostedStringIds waitmessage 0x40 updatestatusicon ATTACKER return @@ -3817,7 +3839,7 @@ BattleScript_MoveUsedFlinched:: goto BattleScript_MoveEnd BattleScript_82DB2A6:: - printfromtable 0x85CC886 + printfromtable gUproarOvetTurnStringIds waitmessage 0x40 end2 @@ -3903,7 +3925,7 @@ BattleScript_TargetPRLZHeal:: BattleScript_MoveEffectSleep:: statusanimation EFFECT_BANK - printfromtable 0x85CC8E4 + printfromtable gFellAsleepStringIds waitmessage 0x40 BattleScript_82DB374:: updatestatusicon EFFECT_BANK @@ -3921,25 +3943,25 @@ BattleScript_YawnMakesAsleep:: BattleScript_MoveEffectPoison:: statusanimation EFFECT_BANK - printfromtable 0x85CC8DC + printfromtable gGotPoisonedStringIds waitmessage 0x40 goto BattleScript_82DB374 BattleScript_MoveEffectBurn:: statusanimation EFFECT_BANK - printfromtable 0x85CC8E8 + printfromtable gGotBurnedStringIds waitmessage 0x40 goto BattleScript_82DB374 BattleScript_MoveEffectFreeze:: statusanimation EFFECT_BANK - printfromtable 0x85CC8EC + printfromtable gGotFrozenStringIds waitmessage 0x40 goto BattleScript_82DB374 BattleScript_MoveEffectParalysis:: statusanimation EFFECT_BANK - printfromtable 0x85CC8E0 + printfromtable gGotParalyzedStringIds waitmessage 0x40 goto BattleScript_82DB374 @@ -3960,7 +3982,7 @@ BattleScript_MoveEffectPayDay:: return BattleScript_MoveEffectWrap:: - printfromtable 0x85CC8C0 + printfromtable gWrappedStringIds waitmessage 0x40 return @@ -4139,7 +4161,7 @@ BattleScript_FlashFireBoost_PPLoss:: BattleScript_FlashFireBoost:: attackstring pause 0x20 - printfromtable 0x85CC976 + printfromtable gFlashFireStringIds waitmessage 0x40 goto BattleScript_MoveEnd @@ -4157,19 +4179,19 @@ BattleScript_AbilityNoStatLoss:: BattleScript_BRNPrevention:: pause 0x20 - printfromtable 0x85CC95E + printfromtable gBRNPreventionStringIds waitmessage 0x40 return BattleScript_PRLZPrevention:: pause 0x20 - printfromtable 0x85CC964 + printfromtable gPRLZPreventionStringIds waitmessage 0x40 return BattleScript_PSNPrevention:: pause 0x20 - printfromtable 0x85CC96A + printfromtable gPSNPreventionStringIds waitmessage 0x40 return @@ -4272,7 +4294,7 @@ BattleScript_MoveUsedLoafingAround:: various ATTACKER, 0x18 setbyte cMULTISTRING_CHOOSER, 0x4 BattleScript_82DB6C7:: - printfromtable 0x85CC93A + printfromtable gInobedientStringIds waitmessage 0x40 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 @@ -4374,7 +4396,7 @@ BattleScript_BerryCureChosenStatusEnd2:: BattleScript_BerryCureChosenStatusRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL - printfromtable 0x85CC95A + printfromtable gBerryEffectStringIds waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK @@ -4474,7 +4496,7 @@ BattleScript_82DB881:: BattleScript_82DB887:: various ATTACKER, 0x8 jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D - printfromtable 0x85CCF0A + printfromtable gStringIds_85CCF0A waitmessage 0x40 BattleScript_82DB89D:: addbyte gBattleCommunication + 1, 0x1 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 6f6ea084b..8b2af14aa 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -38,9 +38,9 @@ gBattlescriptsForRunningByItem:: @ 82DBD54 .align 2 gBattlescriptsForSafariActions:: @ 82DBD58 - .4byte BattleScript_82DBEBD - .4byte BattleScript_82DBEC4 - .4byte BattleScript_82DBECD + .4byte BattleScript_ActionWatchesCarefully + .4byte BattleScript_ActionGetNear + .4byte BattleScript_ActionThrowPokeblock .4byte BattleScript_82DBEE3 BattleScript_82DBD68:: @@ -73,10 +73,9 @@ BattleScript_82DBDA5:: setbyte gBattleCommunication, 0x0 trygivecaughtmonnick BattleScript_82DBDC2 givecaughtmon - printfromtable 0x85CC97A + printfromtable gCaughtMonStringIds waitmessage 0x40 goto BattleScript_82DBDC3 - BattleScript_82DBDC2:: givecaughtmon BattleScript_82DBDC3:: @@ -89,7 +88,7 @@ BattleScript_WallyBallThrow:: finishturn BattleScript_ShakeBallThrow:: - printfromtable 0x85CC912 + printfromtable gBallEscapeStringIds waitmessage 0x40 jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_82DBE01 jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_82DBE01 @@ -136,7 +135,7 @@ BattleScript_82DBE4B:: printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent - printfromtable 0x85CC94E + printfromtable gTrainerItemCuredStatusStringIds waitmessage 0x40 updatestatusicon ATTACKER setbyte sMOVEEND_STATE, 0xF @@ -150,7 +149,7 @@ BattleScript_82DBE6F:: printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent - printfromtable 0x85CC89C + printfromtable gStatUpStringIds waitmessage 0x40 setbyte sMOVEEND_STATE, 0xF moveend 0x1, 0x0 @@ -163,7 +162,7 @@ BattleScript_82DBE91:: printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent - printfromtable 0x85CC8CC + printfromtable gMistUsedStringIds waitmessage 0x40 setbyte sMOVEEND_STATE, 0xF moveend 0x1, 0x0 @@ -174,21 +173,21 @@ BattleScript_RunByUsingItem:: setbyte gBattleOutcome, RAN finishturn -BattleScript_82DBEBD:: +BattleScript_ActionWatchesCarefully:: printstring STRINGID_PKMNWATCHINGCAREFULLY waitmessage 0x40 end2 -BattleScript_82DBEC4:: - printfromtable 0x85CC944 +BattleScript_ActionGetNear:: + printfromtable gSafariGetNearStringIds waitmessage 0x40 end2 -BattleScript_82DBECD:: +BattleScript_ActionThrowPokeblock:: printstring STRINGID_THREWPOKEBLOCKATPKMN waitmessage 0x40 playanimation ATTACKER, ANIM_x4, NULL - printfromtable 0x85CC948 + printfromtable gSafariPokeblockResultStringIds waitmessage 0x40 end2 diff --git a/include/battle.h b/include/battle.h index ada5282dc..5e37ef77c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -846,7 +846,7 @@ struct BattleScripting s32 bideDmg; u8 multihitString[6]; u8 dmgMultiplier; - u8 field_F; + u8 twoTurnsMoveStringId; u8 animArg1; u8 animArg2; u8 tripleKickPower; diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h index 003913380..23c19ded7 100644 --- a/include/battle_move_effects.h +++ b/include/battle_move_effects.h @@ -158,7 +158,7 @@ enum EFFECT_THUNDER, EFFECT_TELEPORT, EFFECT_BEAT_UP, - EFFECT_FLY, + EFFECT_SEMI_INVULNERABLE, EFFECT_DEFENSE_CURL, EFFECT_SOFTBOILED, EFFECT_FAKE_OUT, diff --git a/include/battle_scripts.h b/include/battle_scripts.h index b04a82673..85e1488d7 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -78,11 +78,11 @@ extern const u8 BattleScript_EffectTriAttack[]; extern const u8 BattleScript_EffectRest[]; extern const u8 BattleScript_82D8FC6[]; extern const u8 BattleScript_82D8FD6[]; -extern const u8 BattleScript_EffectOhko[]; -extern const u8 BattleScript_82D9008[]; +extern const u8 BattleScript_EffectOHKO[]; +extern const u8 BattleScript_KOFail[]; extern const u8 BattleScript_EffectRazorWind[]; extern const u8 BattleScript_82D9040[]; -extern const u8 BattleScript_82D906F[]; +extern const u8 BattleScriptFirstChargingTurn[]; extern const u8 BattleScript_EffectSuperFang[]; extern const u8 BattleScript_EffectDragonRage[]; extern const u8 BattleScript_EffectTrap[]; @@ -228,14 +228,14 @@ extern const u8 BattleScript_EffectBeatUp[]; extern const u8 BattleScript_BeatUpLoop[]; extern const u8 BattleScript_BeatUpAttack[]; extern const u8 BattleScript_BeatUpEnd[]; -extern const u8 BattleScript_EffectFly[]; -extern const u8 BattleScript_82D9E52[]; -extern const u8 BattleScript_82D9E5D[]; -extern const u8 BattleScript_82D9E68[]; -extern const u8 BattleScript_82D9E6E[]; -extern const u8 BattleScript_82D9E79[]; +extern const u8 BattleScript_EffectSemiInvulnerable[]; +extern const u8 BattleScript_FirstTurnBounce[]; +extern const u8 BattleScript_FirstTurnDive[]; +extern const u8 BattleScript_FirstTurnFly[]; +extern const u8 BattleScript_FirstTurnSemiInvulnerable[]; +extern const u8 BattleScript_SecondTurnSemiInvulnerable[]; extern const u8 BattleScript_82D9EA3[]; -extern const u8 BattleScript_82D9EB0[]; +extern const u8 BattleScript_SemiInvulnerableMiss[]; extern const u8 BattleScript_EffectDefenseCurl[]; extern const u8 BattleScript_82D9ED3[]; extern const u8 BattleScript_EffectSoftboiled[]; @@ -632,9 +632,9 @@ extern const u8 BattleScript_82DBE4B[]; extern const u8 BattleScript_82DBE6F[]; extern const u8 BattleScript_82DBE91[]; extern const u8 BattleScript_RunByUsingItem[]; -extern const u8 BattleScript_82DBEBD[]; -extern const u8 BattleScript_82DBEC4[]; -extern const u8 BattleScript_82DBECD[]; +extern const u8 BattleScript_ActionWatchesCarefully[]; +extern const u8 BattleScript_ActionGetNear[]; +extern const u8 BattleScript_ActionThrowPokeblock[]; extern const u8 BattleScript_82DBEE3[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_message.c b/src/battle_message.c index 9c37cf646..04eb5f655 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -932,58 +932,237 @@ const u16 gSandStormHailDmgStringIds[] = STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL }; -// todo once battlescripts are dumped -const u16 gTooLazyToSplitThemStringIds[] = -{ - STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, - STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, - STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, - STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, - STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK, +const u16 gSandStormHailEndStringIds[] = +{ + STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED +}; + +const u16 gRainContinuesStringIds[] = +{ + STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, STRINGID_RAINSTOPPED +}; + +const u16 gProtectLikeUsedStringIds[] = +{ + STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, STRINGID_BUTITFAILED +}; + +const u16 gReflectLightScreenSafeguardStringIds[] = +{ + STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, STRINGID_PKMNRAISEDDEFALITTLE, + STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, STRINGID_PKMNCOVEREDBYVEIL +}; + +const u16 gLeechSeedStringIds[] = +{ + STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK, STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE, - STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR, - STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE, - STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW, - STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, - STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, - STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, - STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, - STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND, - STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING, - STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, - STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, - STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED, - STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO, - STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE, - STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED, - STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP, - STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN, - STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY, - STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE, - STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE, - STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, - STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY, - STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, - STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING, +}; + +const u16 gRestUsedStringIds[] = +{ + STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY +}; + +const u16 gUproarOvetTurnStringIds[] = +{ + STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN +}; + +const u16 gStockpileUsedStringIds[] = +{ + STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE, +}; + +const u16 gWokeUpStringIds[] = +{ + STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR +}; + +const u16 gSwallowFailStringIds[] = +{ + STRINGID_FAILEDTOSWALLOW, STRINGID_PKMNHPFULL +}; + +const u16 gUproarAwakeStringIds[] = +{ + STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, STRINGID_PKMNSTAYEDAWAKEUSING +}; + +const u16 gStatUpStringIds[] = +{ + STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, STRINGID_STATSWONTINCREASE, + STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, STRINGID_PKMNUSEDXTOGETPUMPED +}; + +const u16 gStatDownStringIds[] = +{ + STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3 +}; + +const u16 gFirstTurnOfTwoStringIds[] = +{ + STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING, + STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP +}; + +const u16 gWrappedStringIds[] = +{ + STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNTRAPPEDBYSANDTOMB +}; + +const u16 gMistUsedStringIds[] = +{ + STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED +}; + +const u16 gFocusEnergyUsedStringIds[] = +{ + STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED +}; + +const u16 gTransformUsedStringIds[] = +{ + STRINGID_PKMNTRANSFORMEDINTO, STRINGID_BUTITFAILED +}; + +const u16 gSubsituteUsedStringIds[] = +{ + STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE +}; + +const u16 gGotPoisonedStringIds[] = +{ + STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY +}; + +const u16 gGotParalyzedStringIds[] = +{ + STRINGID_PKMNWASPARALYZED, STRINGID_PKMNWASPARALYZEDBY +}; + +const u16 gFellAsleepStringIds[] = +{ + STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP, +}; + +const u16 gGotBurnedStringIds[] = +{ + STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY +}; + +const u16 gGotFrozenStringIds[] = +{ + STRINGID_PKMNWASFROZEN, STRINGID_PKMNFROZENBY +}; + +const u16 gGotDefrostedStringIds[] = +{ + STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY +}; + +const u16 gKOFailedStringIds[] = +{ + STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED +}; + +const u16 gAttractUsedStringIds[] = +{ + STRINGID_PKMNFELLINLOVE, STRINGID_PKMNSXINFATUATEDY +}; + +const u16 gLeechSeedDrainStringIds[] = +{ + STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE +}; + +const u16 gSportsUsedStringIds[] = +{ + STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED +}; + +const u16 gPartyStatusHealStringIds[] = +{ + STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, + // interesting how there are four instances of the same string + STRINGID_SOOTHINGAROMA +}; + +const u16 gFutureMoveUsedStringIds[] = +{ + STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY +}; + +const u16 gBallEscapeStringIds[] = +{ + STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, STRINGID_SHOOTSOCLOSE +}; + +const u16 gWeatherContinuesStringIds[] = +{ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, - STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, - STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, - STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING, - STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE, - STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER, - STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_SANDSTORMISRAGING, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING +}; + +const u16 gInobedientStringIds[] = +{ + STRINGID_PKMNLOAFING, STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, + STRINGID_PKMNPRETENDNOTNOTICE, STRINGID_PKMNINCAPABLEOFPOWER +}; + +const u16 gSafariGetNearStringIds[] = +{ + STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER +}; + +const u16 gSafariPokeblockResultStringIds[] = +{ + STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX +}; + +const u16 gTrainerItemCuredStatusStringIds[] = +{ STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT, - STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT, - STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX, - STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH, - STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, - STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL, + STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT +}; + +const u16 gBerryEffectStringIds[] = +{ + STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS +}; + +const u16 gBRNPreventionStringIds[] = +{ + STRINGID_PKMNSXPREVENTSBURNS, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPRLZPreventionStringIds[] = +{ + STRINGID_PKMNPREVENTSPARALYSISWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPSNPreventionStringIds[] = +{ + STRINGID_PKMNPREVENTSPOISONINGWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gItemSwapStringIds[] = +{ + STRINGID_PKMNOBTAINEDX, STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ +}; + +const u16 gFlashFireStringIds[] = +{ + STRINGID_PKMNRAISEDFIREPOWERWITH, STRINGID_PKMNSXMADEYINEFFECTIVE +}; + +const u16 gCaughtMonStringIds[] = +{ + STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL, }; const u16 gTrappingMoves[] = @@ -1102,9 +1281,10 @@ const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); -const u16 gUnknown_085CCF0A[] = +const u16 gStringIds_85CCF0A[] = { - 0x016E, 0x016F, 0x0170, 0x0171 + STRINGID_GLINTAPPEARSINEYE, STRINGID_PKMNGETTINGINTOPOSITION, + STRINGID_PKMNBEGANGROWLINGDEEPLY, STRINGID_PKMNEAGERFORMORE }; const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!"); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e0a61a612..ded0629f2 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8783,7 +8783,7 @@ static bool8 IsTwoTurnsMove(u16 move) || gBattleMoves[move].effect == EFFECT_RAZOR_WIND || gBattleMoves[move].effect == EFFECT_SKY_ATTACK || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE || gBattleMoves[move].effect == EFFECT_BIDE) return TRUE; else @@ -8810,7 +8810,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi || gBattleMoves[move].effect == EFFECT_RAZOR_WIND || gBattleMoves[move].effect == EFFECT_SKY_ATTACK || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE || gBattleMoves[move].effect == EFFECT_BIDE) { if ((gHitMarker & HITMARKER_x8000000)) -- cgit v1.2.3 From 938d346b6d905709deed5336086c888c98a24247 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 01:19:57 +0100 Subject: fixes and labels --- asm/macros/battle_script.inc | 4 +- data/battle_scripts_1.s | 171 +++++++++++++++++++------------------------ data/battle_scripts_2.s | 50 ++++++------- include/battle_scripts.h | 62 ++++++++-------- src/battle_script_commands.c | 12 +-- 5 files changed, 140 insertions(+), 159 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 55ec0438e..0d88f545d 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -850,7 +850,7 @@ .4byte \param0 .endm - .macro sleeptalk_choose_move param0 + .macro trychoosesleeptalkmove param0 .byte 0xa9 .4byte \param0 .endm @@ -1171,7 +1171,7 @@ .byte 0xee .endm - .macro pokeball_catch_calculation + .macro handleballthrow .byte 0xef .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index bac2f77c5..991e8fde6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -303,7 +303,7 @@ BattleScript_EffectSleep:: jumpifcantmakeasleep BattleScript_82D8ACF jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_SLEEP @@ -396,7 +396,6 @@ BattleScript_EffectExplosion:: jumpifbyte NO_COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED, BattleScript_82D8B94 call BattleScript_82D8BEA goto BattleScript_82D8B96 - BattleScript_82D8B94:: attackanimation waitanimation @@ -422,7 +421,6 @@ BattleScript_82D8B96:: jumpifnexttargetvalid BattleScript_82D8B96 tryfaintmon ATTACKER, FALSE, NULL end - BattleScript_82D8BCF:: effectivenesssound resultmessage @@ -449,7 +447,6 @@ BattleScript_82D8C0E:: ppreduce waitmessage 0x40 goto BattleScript_82D8AC1 - BattleScript_82D8C18:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring @@ -510,21 +507,20 @@ BattleScript_EffectStatUp:: BattleScript_EffectStatUpAfterAtkCanceler:: attackstring ppreduce - statbuffchange 0x41, BattleScript_82D8CCF - jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8CBD + statbuffchange 0x41, BattleScript_StatUpEnd + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim pause 0x20 - goto BattleScript_82D8CC7 - -BattleScript_82D8CBD:: + goto BattleScript_StatUpPrintString +BattleScript_StatUpAttackAnim:: attackanimation waitanimation -BattleScript_82D8CBF:: +BattleScript_StatUpDoAnim:: setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 -BattleScript_82D8CC7:: +BattleScript_StatUpPrintString:: printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82D8CCF:: +BattleScript_StatUpEnd:: goto BattleScript_MoveEnd BattleScript_StatUp:: @@ -557,21 +553,20 @@ BattleScript_EffectStatDown:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce - statbuffchange 0x1, BattleScript_82D8D60 - jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8D4E - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_82D8D60 + statbuffchange 0x1, BattleScript_StatDownEnd + jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd pause 0x20 - goto BattleScript_82D8D58 - -BattleScript_82D8D4E:: + goto BattleScript_StatDownPrintString +BattleScript_StatDownDoAnim:: attackanimation waitanimation setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 -BattleScript_82D8D58:: +BattleScript_StatDownPrintString:: printfromtable gStatDownStringIds waitmessage 0x40 -BattleScript_82D8D60:: +BattleScript_StatDownEnd:: goto BattleScript_MoveEnd BattleScript_StatDown:: @@ -712,7 +707,7 @@ BattleScript_EffectToxic:: attackcanceler attackstring ppreduce - jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_82D8F63 + jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned @@ -720,7 +715,7 @@ BattleScript_EffectToxic:: jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_TOXIC @@ -736,7 +731,7 @@ BattleScript_AlreadyPoisoned:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D8F63:: +BattleScript_ImmunityProtected:: copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PSNPrevention @@ -930,11 +925,11 @@ BattleScript_EffectConfuse:: attackcanceler attackstring ppreduce - jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82D9201 accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_CONFUSION @@ -1013,7 +1008,7 @@ BattleScript_EffectPoison:: attackcanceler attackstring ppreduce - jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_82D8F63 + jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned @@ -1021,7 +1016,7 @@ BattleScript_EffectPoison:: jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_POISON @@ -1034,14 +1029,14 @@ BattleScript_EffectParalyze:: attackcanceler attackstring ppreduce - jumpifability TARGET, ABILITY_LIMBER, BattleScript_82D9362 + jumpifability TARGET, ABILITY_LIMBER, BattleScript_LimberProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed typecalc jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_82D9351 jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_PARALYSIS @@ -1057,7 +1052,7 @@ BattleScript_82D9351:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D9362:: +BattleScript_LimberProtected:: copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PRLZPrevention @@ -1127,7 +1122,6 @@ BattleScript_82D9431:: printfromtable gSubsituteUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd - BattleScript_82D943E:: various ATTACKER, 0x17 pause 0x20 @@ -1148,13 +1142,12 @@ BattleScript_MoveUsedMustRecharge:: BattleScript_EffectRage:: attackcanceler - accuracycheck BattleScript_82D9487, ACC_CURR_MOVE + accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE setmoveeffect EFFECT_RAGE seteffectprimary setmoveeffect 0 goto BattleScript_HitFromAtkString - -BattleScript_82D9487:: +BattleScript_RageMiss:: setmoveeffect EFFECT_RAGE clearstatusfromeffect ATTACKER goto BattleScript_PrintMoveMissed @@ -1181,6 +1174,7 @@ BattleScript_EffectMetronome:: setbyte sANIM_TURN, 0x0 setbyte sANIM_TARGETS_HIT, 0x0 metronome + BattleScript_EffectLeechSeed:: attackcanceler attackstring @@ -1287,7 +1281,6 @@ BattleScript_EffectSnore:: attackstring ppreduce goto BattleScript_ButItFailed - BattleScript_82D95CE:: jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D95E2 printstring STRINGID_PKMNFASTASLEEP @@ -1338,23 +1331,21 @@ BattleScript_EffectSketch:: BattleScript_EffectSleepTalk:: attackcanceler - jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D965E + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SleepTalkIsAsleep attackstring ppreduce goto BattleScript_ButItFailed - -BattleScript_82D965E:: +BattleScript_SleepTalkIsAsleep:: printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER attackstring ppreduce orword gHitMarker, HITMARKER_NO_PPDEDUCT - sleeptalk_choose_move BattleScript_82D967E + trychoosesleeptalkmove BattleScript_SleepTalkUsingMove pause 0x40 goto BattleScript_ButItFailed - -BattleScript_82D967E:: +BattleScript_SleepTalkUsingMove:: attackanimation waitanimation setbyte sANIM_TURN, 0x0 @@ -1451,7 +1442,6 @@ BattleScript_82D973A:: jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D97AD decrementmultihit BattleScript_82D9718 goto BattleScript_82D97AD - BattleScript_82D9799:: pause 0x20 jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97AD @@ -1498,7 +1488,6 @@ BattleScript_EffectNightmare:: jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS_SLEEP, BattleScript_NightmareWorked goto BattleScript_ButItFailed - BattleScript_NightmareWorked:: attackanimation waitanimation @@ -1515,39 +1504,38 @@ BattleScript_EffectMinimize:: goto BattleScript_EffectStatUpAfterAtkCanceler BattleScript_EffectCurse:: - jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_82D98E5 + jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_GhostCurse attackcanceler attackstring ppreduce - jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_82D9892 - jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_82D9892 + jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_CurseTrySpeed + jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_CurseTrySpeed jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed -BattleScript_82D9892:: +BattleScript_CurseTrySpeed:: copybyte gBankTarget, gBankAttacker setbyte sANIM_TURN, 0x1 attackanimation waitanimation setstatchanger SPEED, 1, TRUE - statbuffchange 0x41, BattleScript_82D98B8 + statbuffchange 0x41, BattleScript_CurseTryAttack printfromtable gStatDownStringIds waitmessage 0x40 -BattleScript_82D98B8:: +BattleScript_CurseTryAttack:: setstatchanger ATK, 1, FALSE - statbuffchange 0x41, BattleScript_82D98CC + statbuffchange 0x41, BattleScript_CurseTryDefence printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82D98CC:: +BattleScript_CurseTryDefence:: setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82D98E0 + statbuffchange 0x41, BattleScript_CurseEnd printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82D98E0:: +BattleScript_CurseEnd:: goto BattleScript_MoveEnd - -BattleScript_82D98E5:: - jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_82D98F6 +BattleScript_GhostCurse:: + jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_DoGhostCurse various ATTACKER, VARIOUS_GET_MOVE_TARGET -BattleScript_82D98F6:: +BattleScript_DoGhostCurse:: attackcanceler attackstring ppreduce @@ -1658,8 +1646,8 @@ BattleScript_EffectSwagger:: printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82D9A1E:: - jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION seteffectprimary goto BattleScript_MoveEnd @@ -1787,7 +1775,7 @@ BattleScript_82D9B41:: waitanimation printfromtable gMoveWeatherChangeStringIds waitmessage 0x40 - call BattleScript_82DB48D + call BattleScript_WeatherFormChanges goto BattleScript_MoveEnd BattleScript_EffectSunnyDay:: @@ -1943,15 +1931,14 @@ BattleScript_EffectStomp:: BattleScript_EffectSolarbeam:: jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_82D9D28 jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_82D9D28 - jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_82D9D50 + jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn BattleScript_82D9D28:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 setbyte sTWOTURN_STRINGID, 0x1 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd - -BattleScript_82D9D50:: +BattleScript_SolarbeamOnFirstTurn:: orword gHitMarker, HITMARKER_x8000000 setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary @@ -2060,11 +2047,11 @@ BattleScript_EffectDefenseCurl:: setdefensecurlbit setstatchanger DEF, 1, FALSE statbuffchange 0x41, BattleScript_82D9ED3 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D8CC7 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString attackanimation waitanimation BattleScript_82D9ED3:: - goto BattleScript_82D8CBF + goto BattleScript_StatUpDoAnim BattleScript_EffectSoftboiled:: attackcanceler @@ -2143,7 +2130,6 @@ BattleScript_EffectSpitUp:: typecalc adjustsetdamage goto BattleScript_HitFromAtkAnimation - BattleScript_SpitUpFail:: pause 0x20 printstring STRINGID_FAILEDTOSPITUP @@ -2208,8 +2194,8 @@ BattleScript_EffectFlatter:: printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA03A:: - jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DB611 - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION seteffectprimary goto BattleScript_MoveEnd @@ -2221,17 +2207,17 @@ BattleScript_EffectWillOWisp:: jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS_BURN, BattleScript_82DA0BB jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected - jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_82DA0A1 + jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_BURN seteffectprimary goto BattleScript_MoveEnd -BattleScript_82DA0A1:: +BattleScript_WaterVeilPrevents:: copybyte gEffectBank, gBankTarget setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_BRNPrevention @@ -2272,12 +2258,10 @@ BattleScript_82DA119:: BattleScript_82DA13C:: tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd - BattleScript_82DA148:: printstring STRINGID_BUTNOEFFECT waitmessage 0x40 goto BattleScript_82DA13C - BattleScript_82DA153:: attackstring ppreduce @@ -2498,7 +2482,7 @@ BattleScript_EffectYawn:: jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_82DA378 jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_82DA378 jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed - jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DAD01 + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON jumpifcantmakeasleep BattleScript_ButItFailed setyawn BattleScript_ButItFailed @@ -2507,7 +2491,6 @@ BattleScript_EffectYawn:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage 0x40 goto BattleScript_MoveEnd - BattleScript_82DA378:: copybyte sBANK, sFIELD_15 BattleScript_82DA382:: @@ -2958,23 +2941,22 @@ BattleScript_82DA92C:: end2 BattleScript_LocalTrainerBattleWon:: - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DA943 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalTwoTrainersDefeated printstring STRINGID_PLAYERDEFEATEDTRAINER1 - goto BattleScript_82DA946 - -BattleScript_82DA943:: + goto BattleScript_LocalBattleWonLoseTexts +BattleScript_LocalTwoTrainersDefeated:: printstring STRINGID_TWOENEMIESDEFEATED -BattleScript_82DA946:: +BattleScript_LocalBattleWonLoseTexts:: trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1LOSETEXT - jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DA963 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward trainerslideout IDENTITY_OPPONENT_MON1 waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2LOSETEXT -BattleScript_82DA963:: +BattleScript_LocalBattleWonReward:: getmoneyreward printstring STRINGID_PLAYERGOTMONEY waitmessage 0x40 @@ -3297,7 +3279,7 @@ BattleScript_82DACFA:: waitmessage 0x40 end2 -BattleScript_82DAD01:: +BattleScript_SafeguardProtected:: pause 0x20 printstring STRINGID_PKMNUSEDSAFEGUARD waitmessage 0x40 @@ -3869,7 +3851,6 @@ BattleScript_82DB2D4:: waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd - BattleScript_82DB2FF:: return @@ -3993,16 +3974,16 @@ BattleScript_MoveEffectConfusion:: return BattleScript_MoveEffectRecoil33:: - jumpifhalfword EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_82DB407 - jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_82DB421 -BattleScript_82DB407:: + jumpifhalfword EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_DoRecoil33 + jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End +BattleScript_DoRecoil33:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNHITWITHRECOIL waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL -BattleScript_82DB421:: +BattleScript_Recoil33End:: return BattleScript_ItemSteal:: @@ -4016,7 +3997,7 @@ BattleScript_DrizzleActivates:: printstring STRINGID_PKMNMADEITRAIN waitstate playanimation BANK0, ANIM_RAIN_CONTINUES, NULL - call BattleScript_82DB48D + call BattleScript_WeatherFormChanges end3 BattleScript_SpeedBoostActivates:: @@ -4044,7 +4025,7 @@ BattleScript_SandstreamActivates:: printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM waitstate playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL - call BattleScript_82DB48D + call BattleScript_WeatherFormChanges end3 BattleScript_ShedSkinActivates:: @@ -4053,12 +4034,12 @@ BattleScript_ShedSkinActivates:: updatestatusicon ATTACKER end3 -BattleScript_82DB48D:: +BattleScript_WeatherFormChanges:: setbyte sBANK, 0x0 -BattleScript_82DB493:: +BattleScript_WeatherFormChangesLoop:: trycastformdatachange addbyte sBANK, 0x1 - jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_82DB493 + jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_WeatherFormChangesLoop return BattleScript_CastformChange:: @@ -4110,7 +4091,7 @@ BattleScript_DroughtActivates:: printstring STRINGID_PKMNSXINTENSIFIEDSUN waitstate playanimation BANK0, ANIM_SUN_CONTINUES, NULL - call BattleScript_82DB48D + call BattleScript_WeatherFormChanges end3 BattleScript_TookAttack:: @@ -4207,7 +4188,7 @@ BattleScript_FlinchPrevention:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82DB611:: +BattleScript_OwnTempoPrevents:: pause 0x20 printstring STRINGID_PKMNPREVENTSCONFUSIONWITH waitmessage 0x40 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 8b2af14aa..f54b0a6a0 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -9,19 +9,19 @@ .align 2 gBattlescriptsForBallThrow:: @ 82DBD08 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD7E - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 - .4byte BattleScript_82DBD68 + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_SafariBallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow .align 2 gUnknown_082DBD3C:: @ 82DBD3C @@ -43,19 +43,19 @@ gBattlescriptsForSafariActions:: @ 82DBD58 .4byte BattleScript_ActionThrowPokeblock .4byte BattleScript_82DBEE3 -BattleScript_82DBD68:: - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_82DBD7A +BattleScript_BallThrow:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally printstring STRINGID_PLAYERUSEDITEM - pokeball_catch_calculation + handleballthrow -BattleScript_82DBD7A:: +BattleScript_BallThrowByWally:: printstring STRINGID_WALLYUSEDITEM - pokeball_catch_calculation + handleballthrow -BattleScript_82DBD7E:: +BattleScript_SafariBallThrow:: printstring STRINGID_PLAYERUSEDITEM updatestatusicon ATTACKER - pokeball_catch_calculation + handleballthrow BattleScript_SuccessBallThrow:: jumpifhalfword EQUAL, gLastUsedItem, 0x5, BattleScript_82DBD92 @@ -114,7 +114,7 @@ BattleScript_82DBE12:: BattleScript_82DBE1C:: printstring STRINGID_EMPTYSTRING3 pause 0x30 - playse 0x1 + playse SE_KAIFUKU printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent @@ -131,7 +131,7 @@ BattleScript_82DBE1C:: BattleScript_82DBE4B:: printstring STRINGID_EMPTYSTRING3 pause 0x30 - playse 0x1 + playse SE_KAIFUKU printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent @@ -145,7 +145,7 @@ BattleScript_82DBE4B:: BattleScript_82DBE6F:: printstring STRINGID_EMPTYSTRING3 pause 0x30 - playse 0x1 + playse SE_KAIFUKU printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent @@ -158,7 +158,7 @@ BattleScript_82DBE6F:: BattleScript_82DBE91:: printstring STRINGID_EMPTYSTRING3 pause 0x30 - playse 0x1 + playse SE_KAIFUKU printstring STRINGID_TRAINER1USEDITEM waitmessage 0x40 useitemonopponent @@ -169,7 +169,7 @@ BattleScript_82DBE91:: finishaction BattleScript_RunByUsingItem:: - playse 0x11 + playse SE_NIGERU setbyte gBattleOutcome, RAN finishturn diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 85e1488d7..3c6d63e88 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -40,10 +40,10 @@ extern const u8 BattleScript_EffectSpecialAttackUp[]; extern const u8 BattleScript_EffectEvasionUp[]; extern const u8 BattleScript_EffectStatUp[]; extern const u8 BattleScript_EffectStatUpAfterAtkCanceler[]; -extern const u8 BattleScript_82D8CBD[]; -extern const u8 BattleScript_82D8CBF[]; -extern const u8 BattleScript_82D8CC7[]; -extern const u8 BattleScript_82D8CCF[]; +extern const u8 BattleScript_StatUpAttackAnim[]; +extern const u8 BattleScript_StatUpDoAnim[]; +extern const u8 BattleScript_StatUpPrintString[]; +extern const u8 BattleScript_StatUpEnd[]; extern const u8 BattleScript_StatUp[]; extern const u8 BattleScript_EffectAttackDown[]; extern const u8 BattleScript_EffectDefenseDown[]; @@ -51,8 +51,8 @@ extern const u8 BattleScript_EffectSpeedDown[]; extern const u8 BattleScript_EffectAccuracyDown[]; extern const u8 BattleScript_EffectEvasionDown[]; extern const u8 BattleScript_EffectStatDown[]; -extern const u8 BattleScript_82D8D4E[]; -extern const u8 BattleScript_82D8D58[]; +extern const u8 BattleScript_StatDownDoAnim[]; +extern const u8 BattleScript_StatDownPrintString[]; extern const u8 BattleScript_82D8D60[]; extern const u8 BattleScript_StatDown[]; extern const u8 BattleScript_EffectHaze[]; @@ -71,7 +71,7 @@ extern const u8 BattleScript_EffectFlinchHit[]; extern const u8 BattleScript_EffectRestoreHp[]; extern const u8 BattleScript_EffectToxic[]; extern const u8 BattleScript_AlreadyPoisoned[]; -extern const u8 BattleScript_82D8F63[]; +extern const u8 BattleScript_ImmunityProtected[]; extern const u8 BattleScript_EffectPayDay[]; extern const u8 BattleScript_EffectLightScreen[]; extern const u8 BattleScript_EffectTriAttack[]; @@ -110,7 +110,7 @@ extern const u8 BattleScript_82D928C[]; extern const u8 BattleScript_EffectPoison[]; extern const u8 BattleScript_EffectParalyze[]; extern const u8 BattleScript_82D9351[]; -extern const u8 BattleScript_82D9362[]; +extern const u8 BattleScript_LimberProtected[]; extern const u8 BattleScript_EffectAttackDownHit[]; extern const u8 BattleScript_EffectDefenseDownHit[]; extern const u8 BattleScript_EffectSpeedDownHit[]; @@ -127,7 +127,7 @@ extern const u8 BattleScript_82D943E[]; extern const u8 BattleScript_EffectRecharge[]; extern const u8 BattleScript_MoveUsedMustRecharge[]; extern const u8 BattleScript_EffectRage[]; -extern const u8 BattleScript_82D9487[]; +extern const u8 BattleScript_RageMiss[]; extern const u8 BattleScript_EffectMimic[]; extern const u8 BattleScript_EffectMetronome[]; extern const u8 BattleScript_EffectLeechSeed[]; @@ -146,8 +146,8 @@ extern const u8 BattleScript_EffectConversion2[]; extern const u8 BattleScript_EffectLockOn[]; extern const u8 BattleScript_EffectSketch[]; extern const u8 BattleScript_EffectSleepTalk[]; -extern const u8 BattleScript_82D965E[]; -extern const u8 BattleScript_82D967E[]; +extern const u8 BattleScript_SleepTalkIsAsleep[]; +extern const u8 BattleScript_SleepTalkUsingMove[]; extern const u8 BattleScript_EffectDestinyBond[]; extern const u8 BattleScript_EffectFlail[]; extern const u8 BattleScript_EffectSpite[]; @@ -166,12 +166,12 @@ extern const u8 BattleScript_EffectNightmare[]; extern const u8 BattleScript_NightmareWorked[]; extern const u8 BattleScript_EffectMinimize[]; extern const u8 BattleScript_EffectCurse[]; -extern const u8 BattleScript_82D9892[]; -extern const u8 BattleScript_82D98B8[]; -extern const u8 BattleScript_82D98CC[]; -extern const u8 BattleScript_82D98E0[]; -extern const u8 BattleScript_82D98E5[]; -extern const u8 BattleScript_82D98F6[]; +extern const u8 BattleScript_CurseTrySpeed[]; +extern const u8 BattleScript_CurseTryAttack[]; +extern const u8 BattleScript_CurseTryDefence[]; +extern const u8 BattleScript_CurseEnd[]; +extern const u8 BattleScript_GhostCurse[]; +extern const u8 BattleScript_DoGhostCurse[]; extern const u8 BattleScript_EffectProtect[]; extern const u8 BattleScript_EffectSpikes[]; extern const u8 BattleScript_EffectForesight[]; @@ -221,7 +221,7 @@ extern const u8 BattleScript_EffectGust[]; extern const u8 BattleScript_EffectStomp[]; extern const u8 BattleScript_EffectSolarbeam[]; extern const u8 BattleScript_82D9D28[]; -extern const u8 BattleScript_82D9D50[]; +extern const u8 BattleScript_SolarbeamOnFirstTurn[]; extern const u8 BattleScript_EffectThunder[]; extern const u8 BattleScript_EffectTeleport[]; extern const u8 BattleScript_EffectBeatUp[]; @@ -259,7 +259,7 @@ extern const u8 BattleScript_EffectTorment[]; extern const u8 BattleScript_EffectFlatter[]; extern const u8 BattleScript_82DA03A[]; extern const u8 BattleScript_EffectWillOWisp[]; -extern const u8 BattleScript_82DA0A1[]; +extern const u8 BattleScript_WaterVeilPrevents[]; extern const u8 BattleScript_82DA0BB[]; extern const u8 BattleScript_EffectMemento[]; extern const u8 BattleScript_82DA119[]; @@ -352,9 +352,9 @@ extern const u8 BattleScript_82DA8FC[]; extern const u8 BattleScript_82DA908[]; extern const u8 BattleScript_82DA92C[]; extern const u8 BattleScript_LocalTrainerBattleWon[]; -extern const u8 BattleScript_82DA943[]; -extern const u8 BattleScript_82DA946[]; -extern const u8 BattleScript_82DA963[]; +extern const u8 BattleScript_LocalTwoTrainersDefeated[]; +extern const u8 BattleScript_LocalBattleWonLoseTexts[]; +extern const u8 BattleScript_LocalBattleWonReward[]; extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; extern const u8 BattleScript_LocalBattleLost[]; extern const u8 BattleScript_82DA9B1[]; @@ -406,7 +406,7 @@ extern const u8 BattleScript_82DACD2[]; extern const u8 BattleScript_82DACE0[]; extern const u8 BattleScript_82DACE7[]; extern const u8 BattleScript_82DACFA[]; -extern const u8 BattleScript_82DAD01[]; +extern const u8 BattleScript_SafeguardProtected[]; extern const u8 BattleScript_82DAD0B[]; extern const u8 BattleScript_LeechSeedTurnDrain[]; extern const u8 BattleScript_82DAD47[]; @@ -520,8 +520,8 @@ extern const u8 BattleScript_MoveEffectPayDay[]; extern const u8 BattleScript_MoveEffectWrap[]; extern const u8 BattleScript_MoveEffectConfusion[]; extern const u8 BattleScript_MoveEffectRecoil33[]; -extern const u8 BattleScript_82DB407[]; -extern const u8 BattleScript_82DB421[]; +extern const u8 BattleScript_DoRecoil33[]; +extern const u8 BattleScript_Recoil33End[]; extern const u8 BattleScript_ItemSteal[]; extern const u8 BattleScript_DrizzleActivates[]; extern const u8 BattleScript_SpeedBoostActivates[]; @@ -529,8 +529,8 @@ extern const u8 BattleScript_TraceActivates[]; extern const u8 BattleScript_RainDishActivates[]; extern const u8 BattleScript_SandstreamActivates[]; extern const u8 BattleScript_ShedSkinActivates[]; -extern const u8 BattleScript_82DB48D[]; -extern const u8 BattleScript_82DB493[]; +extern const u8 BattleScript_WeatherFormChanges[]; +extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_CastformChange[]; extern const u8 BattleScript_82DB4AF[]; extern const u8 BattleScript_82DB4B8[]; @@ -557,7 +557,7 @@ extern const u8 BattleScript_PRLZPrevention[]; extern const u8 BattleScript_PSNPrevention[]; extern const u8 BattleScript_ObliviousPreventsAttraction[]; extern const u8 BattleScript_FlinchPrevention[]; -extern const u8 BattleScript_82DB611[]; +extern const u8 BattleScript_OwnTempoPrevents[]; extern const u8 BattleScript_SoundproofProtected[]; extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; extern const u8 BattleScript_StickyHoldActivates[]; @@ -614,9 +614,9 @@ extern const u8 BattleScript_82DB992[]; extern const u8 BattleScript_82DB9BA[]; extern const u8 BattleScript_82DB9C1[]; extern const u8 BattleScript_82DB9C8[]; -extern const u8 BattleScript_82DBD68[]; -extern const u8 BattleScript_82DBD7A[]; -extern const u8 BattleScript_82DBD7E[]; +extern const u8 BattleScript_BallThrow[]; +extern const u8 BattleScript_BallThrowByWally[]; +extern const u8 BattleScript_SafariBallThrow[]; extern const u8 BattleScript_SuccessBallThrow[]; extern const u8 BattleScript_82DBD92[]; extern const u8 BattleScript_82DBDA5[]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ded0629f2..dcc7c783c 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -350,7 +350,7 @@ static void atkA5_painsplitdmgcalc(void); static void atkA6_settypetorandomresistance(void); static void atkA7_setalwayshitflag(void); static void atkA8_copymovepermanently(void); -static void atkA9_sleeptalk_choose_move(void); +static void atkA9_trychoosesleeptalkmove(void); static void atkAA_setdestinybond(void); static void atkAB_trysetdestinybondtohappen(void); static void atkAC_remaininghptopower(void); @@ -420,7 +420,7 @@ static void atkEB_settypetoterrain(void); static void atkEC_pursuitrelated(void); static void atkEF_snatchsetbanks(void); static void atkEE_removelightscreenreflect(void); -static void atkEF_pokeball_catch_calculation(void); +static void atkEF_handleballthrow(void); static void atkF0_givecaughtmon(void); static void atkF1_trysetcaughtmondexflags(void); static void atkF2_displaydexinfo(void); @@ -602,7 +602,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkA6_settypetorandomresistance, atkA7_setalwayshitflag, atkA8_copymovepermanently, - atkA9_sleeptalk_choose_move, + atkA9_trychoosesleeptalkmove, atkAA_setdestinybond, atkAB_trysetdestinybondtohappen, atkAC_remaininghptopower, @@ -672,7 +672,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkEC_pursuitrelated, atkEF_snatchsetbanks, atkEE_removelightscreenreflect, - atkEF_pokeball_catch_calculation, + atkEF_handleballthrow, atkF0_givecaughtmon, atkF1_trysetcaughtmondexflags, atkF2_displaydexinfo, @@ -8819,7 +8819,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi return 2; } -static void atkA9_sleeptalk_choose_move(void) +static void atkA9_trychoosesleeptalkmove(void) { s32 i; u8 unusableMovesBits = 0; @@ -10597,7 +10597,7 @@ static void atkEE_removelightscreenreflect(void) // brick break gBattlescriptCurrInstr++; } -static void atkEF_pokeball_catch_calculation(void) +static void atkEF_handleballthrow(void) { u8 ballMultiplier = 0; -- cgit v1.2.3 From cc572f7c00b7a07161b5298868bcb495b7c87b61 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 11:55:17 +0100 Subject: clear battle code and battlescripts --- asm/macros/battle_script.inc | 18 ++++++- data/battle_scripts_1.s | 80 ++++++++++++++-------------- include/battle.h | 3 +- include/battle_message.h | 8 +++ src/battle_script_commands.c | 28 +++++----- src/battle_util.c | 122 ++++++++++++++++--------------------------- 6 files changed, 125 insertions(+), 134 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 0d88f545d..07d0bacdf 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -163,7 +163,7 @@ .4byte \param4 .endm - .macro jumpifstatus3 bank, status3, param2, param3 + .macro jumpifstatus3condition bank, status3, param2, param3 .byte 0x21 .byte \bank .4byte \status3 @@ -1253,3 +1253,19 @@ .macro jumpifbyteequal byte1, byte2, jumpptr jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr .endm + + .macro jumpifmove move, jumpptr + jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifnotmove move, jumpptr + jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifstatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x0, \jumpptr + .endm + + .macro jumpifnostatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x1, \jumpptr + .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 991e8fde6..75a879760 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -246,8 +246,8 @@ BattleScript_EffectUnused83:: BattleScript_EffectUnused8d:: BattleScript_EffectUnusedA3:: BattleScript_EffectHit:: - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SURF, BattleScript_HitFromAtkCanceler - jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_HitFromAtkCanceler + jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler + jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler orword gHitMarker, HITMARKER_IGNORE_UNDERWATER setbyte sDMG_MULTIPLIER, 0x2 BattleScript_HitFromAtkCanceler:: @@ -507,7 +507,7 @@ BattleScript_EffectStatUp:: BattleScript_EffectStatUpAfterAtkCanceler:: attackstring ppreduce - statbuffchange 0x41, BattleScript_StatUpEnd + statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim pause 0x20 goto BattleScript_StatUpPrintString @@ -611,7 +611,7 @@ BattleScript_EffectRoar:: attackstring ppreduce jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_82DB5B9 - jumpifstatus3 TARGET, STATUS3_ROOTED, 0x0, BattleScript_82DB109 + jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_82DB109 accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed @@ -808,7 +808,7 @@ BattleScript_82D9040:: setbyte sANIM_TURN, 0x1 clearstatusfromeffect ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck + jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck setmoveeffect EFFECT_FLINCH goto BattleScript_HitFromAccCheck @@ -848,8 +848,8 @@ BattleScript_EffectDragonRage:: goto BattleScript_HitFromAtkAnimation BattleScript_EffectTrap:: - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_WHIRLPOOL, BattleScript_82D9105 - jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_82D9105 + jumpifnotmove MOVE_WHIRLPOOL, BattleScript_82D9105 + jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_82D9105 orword gHitMarker, HITMARKER_IGNORE_UNDERWATER setbyte sDMG_MULTIPLIER, 0x2 BattleScript_82D9105:: @@ -917,7 +917,7 @@ BattleScript_EffectFocusEnergy:: BattleScript_EffectRecoil:: setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_EffectHit + jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit incrementgamestat 0x1B goto BattleScript_EffectHit @@ -1389,7 +1389,7 @@ BattleScript_EffectHealBell:: waitanimation printfromtable gPartyStatusHealStringIds waitmessage 0x40 - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_HEAL_BELL, BattleScript_82D96FE + jumpifnotmove MOVE_HEAL_BELL, BattleScript_82D96FE jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED printstring STRINGID_PKMNSXBLOCKSY waitmessage 0x40 @@ -1517,17 +1517,17 @@ BattleScript_CurseTrySpeed:: attackanimation waitanimation setstatchanger SPEED, 1, TRUE - statbuffchange 0x41, BattleScript_CurseTryAttack + statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_CurseTryAttack:: setstatchanger ATK, 1, FALSE - statbuffchange 0x41, BattleScript_CurseTryDefence + statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CurseTryDefence:: setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_CurseEnd + statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CurseEnd:: @@ -1838,7 +1838,7 @@ BattleScript_EffectSkullBash:: setbyte sTWOTURN_STRINGID, 0x2 call BattleScriptFirstChargingTurn setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82D9C16 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9C16 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16 setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 @@ -1848,7 +1848,7 @@ BattleScript_82D9C16:: goto BattleScript_MoveEnd BattleScript_EffectTwister:: - jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_82D9C35 + jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_82D9C35 orword gHitMarker, HITMARKER_IGNORE_ON_AIR setbyte sDMG_MULTIPLIER, 0x2 BattleScript_82D9C35:: @@ -1862,7 +1862,7 @@ BattleScript_EffectEarthquake:: selectfirstvalidtarget BattleScript_82D9C44:: movevaluescleanup - jumpifstatus3 TARGET, STATUS3_UNDERGROUND, 0x1, BattleScript_82D9C64 + jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_82D9C64 orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_82D9C73 @@ -1918,13 +1918,13 @@ BattleScript_EffectFutureSight:: goto BattleScript_MoveEnd BattleScript_EffectGust:: - jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_EffectHit + jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit orword gHitMarker, HITMARKER_IGNORE_ON_AIR setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_EffectHit BattleScript_EffectStomp:: - jumpifstatus3 TARGET, STATUS3_MINIMIZED, 0x1, BattleScript_82D9C35 + jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_82D9C35 setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_82D9C35 @@ -2002,9 +2002,9 @@ BattleScript_BeatUpEnd:: BattleScript_EffectSemiInvulnerable:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable - jumpifhalfword EQUAL, gCurrentMove, MOVE_FLY, BattleScript_FirstTurnFly - jumpifhalfword EQUAL, gCurrentMove, MOVE_DIVE, BattleScript_FirstTurnDive - jumpifhalfword EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_FirstTurnBounce + jumpifmove MOVE_FLY, BattleScript_FirstTurnFly + jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive + jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce setbyte sTWOTURN_STRINGID, 0x5 goto BattleScript_FirstTurnSemiInvulnerable @@ -2029,7 +2029,7 @@ BattleScript_SecondTurnSemiInvulnerable:: setbyte sANIM_TURN, 0x1 clearstatusfromeffect ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9EA3 + jumpifnotmove MOVE_BOUNCE, BattleScript_82D9EA3 setmoveeffect EFFECT_PARALYSIS BattleScript_82D9EA3:: accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE @@ -2046,7 +2046,7 @@ BattleScript_EffectDefenseCurl:: ppreduce setdefensecurlbit setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82D9ED3 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9ED3 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString attackanimation waitanimation @@ -2724,13 +2724,13 @@ BattleScript_82DA5F8:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x24, 0x0 setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DA623 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA623 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA623:: setstatchanger SPDEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DA642 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA642 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642 printfromtable gStatUpStringIds waitmessage 0x40 @@ -2753,13 +2753,13 @@ BattleScript_82DA66A:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x6, 0x0 setstatchanger ATK, 1, FALSE - statbuffchange 0x41, BattleScript_82DA695 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA695 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA695:: setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DA6B4 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6B4 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4 printfromtable gStatUpStringIds waitmessage 0x40 @@ -2778,13 +2778,13 @@ BattleScript_82DA6CE:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x30, 0x0 setstatchanger SPATK, 1, FALSE - statbuffchange 0x41, BattleScript_82DA6F9 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6F9 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA6F9:: setstatchanger SPDEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DA718 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA718 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718 printfromtable gStatUpStringIds waitmessage 0x40 @@ -2810,13 +2810,13 @@ BattleScript_82DA746:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0xA, 0x0 setstatchanger ATK, 1, FALSE - statbuffchange 0x41, BattleScript_82DA771 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA771 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DA771:: setstatchanger SPEED, 1, FALSE - statbuffchange 0x41, BattleScript_82DA790 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA790 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790 printfromtable gStatUpStringIds waitmessage 0x40 @@ -3493,27 +3493,27 @@ BattleScript_82DAF54:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x3E, 0x0 setstatchanger ATK, 1, FALSE - statbuffchange 0x41, BattleScript_82DAF72 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF72 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF72:: setstatchanger DEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DAF86 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF86 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF86:: setstatchanger SPEED, 1, FALSE - statbuffchange 0x41, BattleScript_82DAF9A + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF9A printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAF9A:: setstatchanger SPATK, 1, FALSE - statbuffchange 0x41, BattleScript_82DAFAE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFAE printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAFAE:: setstatchanger SPDEF, 1, FALSE - statbuffchange 0x41, BattleScript_82DAFC2 + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFC2 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_82DAFC2:: @@ -3664,14 +3664,14 @@ BattleScript_AtkDefDown:: playstatchangeanimation ATTACKER, 0x6, 0xD playstatchangeanimation ATTACKER, 0x2, 0x9 setstatchanger ATK, 1, TRUE - statbuffchange 0xC1, BattleScript_82DB144 + statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144 printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB144:: playstatchangeanimation ATTACKER, 0x4, 0x9 setstatchanger DEF, 1, TRUE - statbuffchange 0xC1, BattleScript_82DB167 + statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167 printfromtable gStatDownStringIds waitmessage 0x40 @@ -3737,7 +3737,7 @@ BattleScript_SAtkDown2:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x10, 0xB setstatchanger SPATK, 2, TRUE - statbuffchange 0xC1, BattleScript_82DB1FE + statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE printfromtable gStatDownStringIds waitmessage 0x40 @@ -3974,7 +3974,7 @@ BattleScript_MoveEffectConfusion:: return BattleScript_MoveEffectRecoil33:: - jumpifhalfword EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_DoRecoil33 + jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33 jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End BattleScript_DoRecoil33:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 @@ -4450,7 +4450,7 @@ BattleScript_BerryConfuseHealEnd2:: BattleScript_BerryStatRaiseEnd2:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL - statbuffchange 0x41, BattleScript_82DB85B + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B BattleScript_82DB85B:: setbyte cMULTISTRING_CHOOSER, 0x4 call BattleScript_StatUp diff --git a/include/battle.h b/include/battle.h index 5e37ef77c..e65833b4f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -837,9 +837,10 @@ extern struct BattleStruct* gBattleStruct; #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit -#define SET_STAT_BUFF_ID(n)((n & 0xF)) #define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) +#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) + struct BattleScripting { s32 painSplitHp; diff --git a/include/battle_message.h b/include/battle_message.h index 3f9b38cad..8b724a316 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -74,6 +74,14 @@ #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF +#define PREPARE_FLAVOUR_BUFFER(textVar, flavourId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NEGATIVE_FLAVOUR; \ + textVar[2] = flavourId; \ + textVar[3] = B_BUFF_EOS; \ +} + #define PREPARE_STAT_BUFFER(textVar, statId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dcc7c783c..c864c5a4f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -214,7 +214,7 @@ static void atk1D_jumpifstatus2(void); static void atk1E_jumpifability(void); static void atk1F_jumpifsideaffecting(void); static void atk20_jumpifstat(void); -static void atk21_jumpifstatus3(void); +static void atk21_jumpifstatus3condition(void); static void atk22_jumpiftype(void); static void atk23_getexp(void); static void atk24(void); @@ -466,7 +466,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk1E_jumpifability, atk1F_jumpifsideaffecting, atk20_jumpifstat, - atk21_jumpifstatus3, + atk21_jumpifstatus3condition, atk22_jumpiftype, atk23_getexp, atk24, @@ -3314,10 +3314,10 @@ static void atk20_jumpifstat(void) gBattlescriptCurrInstr += 9; } -static void atk21_jumpifstatus3(void) +static void atk21_jumpifstatus3condition(void) { u32 flags; - const u8* jumpPtr; + const u8 *jumpPtr; gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); @@ -7557,9 +7557,9 @@ static void atk88_negativedamage(void) gBattlescriptCurrInstr++; } -static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) { - bool8 certain = 0; + bool8 certain = FALSE; bool8 notProtectAffected = FALSE; u32 index; @@ -7667,15 +7667,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) if (statValue == -2) { gBattleTextBuff2[1] = B_BUFF_STRING; - gBattleTextBuff2[2] = 0xD3; // harshly - gBattleTextBuff2[3] = 0xD3 >> 8; + gBattleTextBuff2[2] = STRINGID_STATHARSHLY; + gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8; index = 4; } gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD4; // fell + gBattleTextBuff2[index] = STRINGID_STATFELL; index++; - gBattleTextBuff2[index] = 0xD4 >> 8; + gBattleTextBuff2[index] = STRINGID_STATFELL >> 8; index++; gBattleTextBuff2[index] = B_BUFF_EOS; @@ -7694,15 +7694,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) if (statValue == 2) { gBattleTextBuff2[1] = B_BUFF_STRING; - gBattleTextBuff2[2] = 0xD1; // sharply - gBattleTextBuff2[3] = 0xD1 >> 8; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; index = 4; } gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD2; // rose + gBattleTextBuff2[index] = STRINGID_STATROSE; index++; - gBattleTextBuff2[index] = 0xD2 >> 8; + gBattleTextBuff2[index] = STRINGID_STATROSE >> 8; index++; gBattleTextBuff2[index] = B_BUFF_EOS; diff --git a/src/battle_util.c b/src/battle_util.c index 0ec98d125..6164565bd 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -14,6 +14,7 @@ #include "text.h" #include "string_util.h" #include "battle_message.h" +#include "battle_string_ids.h" #include "battle_ai_script_commands.h" #include "battle_controllers.h" #include "event_data.h" @@ -2615,7 +2616,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleStruct->moneyMultiplier = 2; break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { @@ -2652,19 +2653,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_RESTORE_PP: if (!moveTurn) { - struct Pokemon* poke; + struct Pokemon *mon; u8 ppBonuses; u16 move; if (GetBankSide(bank) == SIDE_PLAYER) - poke = &gPlayerParty[gBattlePartyID[bank]]; + mon = &gPlayerParty[gBattlePartyID[bank]]; else - poke = &gEnemyParty[gBattlePartyID[bank]]; + mon = &gEnemyParty[gBattlePartyID[bank]]; for (i = 0; i < 4; i++) { - move = GetMonData(poke, MON_DATA_MOVE1 + i); - changedPP = GetMonData(poke, MON_DATA_PP1 + i); - ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); + move = GetMonData(mon, MON_DATA_MOVE1 + i); + changedPP = GetMonData(mon, MON_DATA_PP1 + i); + ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); if (move && changedPP == 0) break; } @@ -2675,11 +2676,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) changedPP = maxPP; else changedPP = changedPP + bankQuality; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = move; - gBattleTextBuff1[3] = move >> 8; - gBattleTextBuff1[4] = 0xFF; + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, move); + BattleScriptExecute(BattleScript_BerryPPHealEnd2); EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBufferBankForExecution(gActiveBank); @@ -2688,7 +2687,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { @@ -2722,10 +2721,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SPICY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SPICY; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2742,10 +2739,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_DRY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_DRY; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2762,10 +2757,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SWEET: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SWEET; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2782,10 +2775,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_BITTER: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_BITTER; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2802,10 +2793,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SOUR: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SOUR; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2823,19 +2812,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_ATTACK_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_ATK; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD2; - gBattleTextBuff2[3] = 0xD2 >> 8; - gBattleTextBuff2[4] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK); + PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK; + SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2845,13 +2826,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_DEFENSE_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_DEF; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF; + SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2861,13 +2839,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SPEED_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPEED; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED; + SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2877,13 +2852,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SP_ATTACK_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPATK; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK; + SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2893,13 +2865,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SP_DEFENSE_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPDEF; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF; + SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2929,22 +2898,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) i = Random() % 5; } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = i + 1; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD1; - gBattleTextBuff2[3] = 0xD1 >> 8; - gBattleTextBuff2[4] = 0; - gBattleTextBuff2[5] = 0xD2; - gBattleTextBuff2[6] = 0xD2 >> 8; + PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1); + + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; + gBattleTextBuff2[4] = B_BUFF_STRING; + gBattleTextBuff2[5] = STRINGID_STATROSE; + gBattleTextBuff2[6] = STRINGID_STATROSE >> 8; gBattleTextBuff2[7] = EOS; gEffectBank = bank; - gBattleScripting.statChanger = 0x21 + i; + SET_STATCHANGER(i + 1, 2, FALSE); gBattleScripting.animArg1 = 0x21 + i + 6; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -3197,7 +3163,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { -- cgit v1.2.3 From 9886eeb5d8b0a19e31537fbc3e1245f20577d513 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 13:26:58 +0100 Subject: fix, rename, label battle labels and battlescripts --- asm/macros/battle_script.inc | 9 +++ constants/battle_script_constants.inc | 1 - data/battle_scripts_1.s | 66 ++++++++++---------- include/battle.h | 10 +--- include/battle_scripts.h | 18 +++--- src/battle_2.c | 44 +++++++------- src/battle_ai_switch_items.c | 32 +++++----- src/battle_controllers.c | 6 +- src/battle_script_commands.c | 82 ++++++++++++------------- src/battle_util.c | 110 +++++++++++++--------------------- sym_ewram.txt | 6 +- 11 files changed, 177 insertions(+), 207 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 07d0bacdf..b1961c4a9 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1231,6 +1231,11 @@ chosenstatusanimation \bank 0x1 \status .endm + .macro sethword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + .endm + .macro setword dst, value setbyte \dst, \value & 0xFF setbyte \dst + 1, (\value >> 8) & 0xFF @@ -1242,6 +1247,10 @@ copyarray \dst, \src, 0x1 .endm + .macro copyhword dst, src + copyarray \dst, \src, 0x2 + .endm + .macro copyword dst, src copyarray \dst, \src, 0x4 .endm diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc index 07b7f24f8..fb0c39ab9 100644 --- a/constants/battle_script_constants.inc +++ b/constants/battle_script_constants.inc @@ -145,7 +145,6 @@ .equiv sANIM_ARG1, gBattleScripting + 0x10 .equiv sANIM_ARG2, gBattleScripting + 0x11 .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12 - .equiv sFIELD_13, gBattleScripting + 0x13 .equiv sMOVEEND_STATE, gBattleScripting + 0x14 .equiv sFIELD_15, gBattleScripting + 0x15 .equiv sFIELD_16, gBattleScripting + 0x16 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 75a879760..1da4aec0b 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -299,8 +299,8 @@ BattleScript_EffectSleep:: attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed - jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8AB0 - jumpifcantmakeasleep BattleScript_82D8ACF + jumpifstatus TARGET, STATUS_SLEEP, BattleScript_AlreadyAsleep + jumpifcantmakeasleep BattleScript_CantMakeAsleep jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected @@ -310,20 +310,20 @@ BattleScript_EffectSleep:: seteffectprimary goto BattleScript_MoveEnd -BattleScript_82D8AB0:: +BattleScript_AlreadyAsleep:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNALREADYASLEEP waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D8AC1:: +BattleScript_WasntAffected:: pause 0x20 printstring STRINGID_PKMNWASNTAFFECTED waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D8ACF:: +BattleScript_CantMakeAsleep:: pause 0x20 printfromtable gUproarAwakeStringIds waitmessage 0x40 @@ -446,7 +446,7 @@ BattleScript_82D8C0E:: attackstring ppreduce waitmessage 0x40 - goto BattleScript_82D8AC1 + goto BattleScript_WasntAffected BattleScript_82D8C18:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring @@ -628,7 +628,7 @@ BattleScript_EffectMultiHit:: BattleScript_82D8DFD:: jumpifhasnohp ATTACKER, BattleScript_82D8E93 jumpifhasnohp TARGET, BattleScript_82D8E74 - jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D8E1F + jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D8E1F jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74 BattleScript_82D8E1F:: movevaluescleanup @@ -655,7 +655,6 @@ BattleScript_82D8E1F:: jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D8E74 decrementmultihit BattleScript_82D8DFD goto BattleScript_82D8E74 - BattleScript_82D8E71:: pause 0x20 BattleScript_82D8E74:: @@ -927,7 +926,7 @@ BattleScript_EffectConfuse:: ppreduce jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed - jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82D9201 + jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation @@ -938,7 +937,7 @@ BattleScript_EffectConfuse:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D9201:: +BattleScript_AlreadyConfused:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNALREADYCONFUSED @@ -1033,7 +1032,7 @@ BattleScript_EffectParalyze:: jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed typecalc jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed - jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_82D9351 + jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_AlreadyParalyzed jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected @@ -1045,7 +1044,7 @@ BattleScript_EffectParalyze:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D9351:: +BattleScript_AlreadyParalyzed:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNISALREADYPARALYZED @@ -1282,7 +1281,7 @@ BattleScript_EffectSnore:: ppreduce goto BattleScript_ButItFailed BattleScript_82D95CE:: - jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D95E2 + jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D95E2 printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER @@ -1406,26 +1405,25 @@ BattleScript_EffectTripleKick:: attackcanceler attackstring ppreduce - setbyte sTRIPLE_KICK_POWER, 0x0 - setbyte sFIELD_13, 0x0 + sethword sTRIPLE_KICK_POWER, 0x0 initmultihitstring setmultihit 0x3 -BattleScript_82D9718:: - jumpifhasnohp ATTACKER, BattleScript_82D97D7 - jumpifhasnohp TARGET, BattleScript_82D9799 - jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D973A - jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D9799 +BattleScript_TripleKickLoop:: + jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd + jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits + jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D973A + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits BattleScript_82D973A:: - accuracycheck BattleScript_82D9799, ACC_CURR_MOVE + accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE movevaluescleanup - addbyte sTRIPLE_KICK_POWER, 0xA + addbyte sTRIPLE_KICK_POWER, 10 addbyte sMULTIHIT_STRING + 4, 0x1 - copyarray gDynamicBasePower, sTRIPLE_KICK_POWER, 0x2 + copyhword gDynamicBasePower, sTRIPLE_KICK_POWER critcalc damagecalc typecalc adjustnormaldamage - jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D9799 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_TripleKickNoMoreHits attackanimation waitanimation effectivenesssound @@ -1439,22 +1437,22 @@ BattleScript_82D973A:: waitmessage 0x1 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 - jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D97AD - decrementmultihit BattleScript_82D9718 - goto BattleScript_82D97AD -BattleScript_82D9799:: + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_TripleKickPrintStrings + decrementmultihit BattleScript_TripleKickLoop + goto BattleScript_TripleKickPrintStrings +BattleScript_TripleKickNoMoreHits:: pause 0x20 - jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97AD + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings bicbyte gBattleMoveFlags, MOVESTATUS_MISSED -BattleScript_82D97AD:: +BattleScript_TripleKickPrintStrings:: resultmessage waitmessage 0x40 - jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97D7 - jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_82D97D7 + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_TripleKickEnd copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 printstring STRINGID_HITXTIMES waitmessage 0x40 -BattleScript_82D97D7:: +BattleScript_TripleKickEnd:: seteffectwithchance tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0xE @@ -3545,7 +3543,6 @@ BattleScript_82DAFE4:: jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB001 accuracycheck BattleScript_82DB058, MOVE_FUTURE_SIGHT goto BattleScript_82DB008 - BattleScript_82DB001:: accuracycheck BattleScript_82DB058, MOVE_DOOM_DESIRE BattleScript_82DB008:: @@ -3553,7 +3550,6 @@ BattleScript_82DB008:: jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB020 playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL goto BattleScript_82DB027 - BattleScript_82DB020:: playanimation ATTACKER, ANIM_x13, NULL BattleScript_82DB027:: diff --git a/include/battle.h b/include/battle.h index e65833b4f..c172cb0f6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -706,13 +706,6 @@ struct BattleStruct extern struct BattleStruct* gBattleStruct; -#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \ -{ \ - u8* var2 = (u8*)((u32)(arrayId)); \ - var2 = (u32)(structPtr) + var2; \ - var2[offsetof(struct structName, offsetField)] = value; \ -} - #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -850,8 +843,7 @@ struct BattleScripting u8 twoTurnsMoveStringId; u8 animArg1; u8 animArg2; - u8 tripleKickPower; - u8 field_13; + u16 tripleKickPower; u8 atk49_state; u8 field_15; u8 field_16; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 3c6d63e88..053942b9f 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -13,9 +13,9 @@ extern const u8 BattleScript_PrintMoveMissed[]; extern const u8 BattleScript_MoveMissedPause[]; extern const u8 BattleScript_MoveMissed[]; extern const u8 BattleScript_EffectSleep[]; -extern const u8 BattleScript_82D8AB0[]; -extern const u8 BattleScript_82D8AC1[]; -extern const u8 BattleScript_82D8ACF[]; +extern const u8 BattleScript_AlreadyAsleep[]; +extern const u8 BattleScript_WasntAffected[]; +extern const u8 BattleScript_CantMakeAsleep[]; extern const u8 BattleScript_EffectPoisonHit[]; extern const u8 BattleScript_EffectAbsorb[]; extern const u8 BattleScript_82D8B26[]; @@ -94,7 +94,7 @@ extern const u8 BattleScript_EffectMist[]; extern const u8 BattleScript_EffectFocusEnergy[]; extern const u8 BattleScript_EffectRecoil[]; extern const u8 BattleScript_EffectConfuse[]; -extern const u8 BattleScript_82D9201[]; +extern const u8 BattleScript_AlreadyConfused[]; extern const u8 BattleScript_EffectAttackUp2[]; extern const u8 BattleScript_EffectDefenseUp2[]; extern const u8 BattleScript_EffectSpeedUp2[]; @@ -109,7 +109,7 @@ extern const u8 BattleScript_EffectReflect[]; extern const u8 BattleScript_82D928C[]; extern const u8 BattleScript_EffectPoison[]; extern const u8 BattleScript_EffectParalyze[]; -extern const u8 BattleScript_82D9351[]; +extern const u8 BattleScript_AlreadyParalyzed[]; extern const u8 BattleScript_LimberProtected[]; extern const u8 BattleScript_EffectAttackDownHit[]; extern const u8 BattleScript_EffectDefenseDownHit[]; @@ -155,11 +155,11 @@ extern const u8 BattleScript_EffectHealBell[]; extern const u8 BattleScript_82D96ED[]; extern const u8 BattleScript_82D96FE[]; extern const u8 BattleScript_EffectTripleKick[]; -extern const u8 BattleScript_82D9718[]; +extern const u8 BattleScript_TripleKickLoop[]; extern const u8 BattleScript_82D973A[]; -extern const u8 BattleScript_82D9799[]; -extern const u8 BattleScript_82D97AD[]; -extern const u8 BattleScript_82D97D7[]; +extern const u8 BattleScript_TripleKickNoMoreHits[]; +extern const u8 BattleScript_TripleKickPrintStrings[]; +extern const u8 BattleScript_TripleKickEnd[]; extern const u8 BattleScript_EffectThief[]; extern const u8 BattleScript_EffectMeanLook[]; extern const u8 BattleScript_EffectNightmare[]; diff --git a/src/battle_2.c b/src/battle_2.c index d7f051272..dffebabe7 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -123,11 +123,11 @@ extern s32 gBattleMoveDamage; extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; +extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT]; extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT]; extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT]; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern u16 gSideAffecting[2]; @@ -149,7 +149,7 @@ extern u16 gDynamicBasePower; extern u8 gCritMultiplier; extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; -extern u16 gLastUsedMove; +extern u16 gOriginallyUsedMove; extern const struct BattleMove gBattleMoves[]; extern const u16 gUnknown_08C004E0[]; // battle textbox palette @@ -461,7 +461,7 @@ static void sub_8036A5C(void) u32 status = 0; s32 i; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); @@ -1878,7 +1878,7 @@ static void sub_8038B94(u8 taskId) } r7 = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp4[i], MON_DATA_HP); @@ -1902,7 +1902,7 @@ static void sub_8038B94(u8 taskId) gTasks[taskId].data[3] = r7; r7 = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp8[i], MON_DATA_HP); @@ -2741,13 +2741,13 @@ static void BattleStartClearSetData(void) for (j = 0; j < sizeof(struct DisableStruct); j++) dataPtr[j] = 0; - gDisableStructs[i].isFirstTurn= 2; + gDisableStructs[i].isFirstTurn = 2; gUnknown_02024284[i] = 0; gLastUsedMovesByBanks[i] = 0; - gUnknown_02024250[i] = 0; + gTurnMovesHitWith[i] = 0; gUnknown_02024258[i] = 0; gUnknown_02024260[i] = 0; - gUnknown_02024270[i] = 0xFF; + gTurnMovesHitBy[i] = 0xFF; gLockedMoves[i] = 0; gUnknownMovesUsedByBanks[i] = 0; gBattleResources->flags->flags[i] = 0; @@ -2911,11 +2911,11 @@ void SwitchInClearSetData(void) gDisableStructs[gActiveBank].isFirstTurn= 2; gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit; gLastUsedMovesByBanks[gActiveBank] = 0; - gUnknown_02024250[gActiveBank] = 0; + gTurnMovesHitWith[gActiveBank] = 0; gUnknown_02024258[gActiveBank] = 0; gUnknown_02024260[gActiveBank] = 0; gUnknownMovesUsedByBanks[gActiveBank] = 0; - gUnknown_02024270[gActiveBank] = 0xFF; + gTurnMovesHitBy[gActiveBank] = 0xFF; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0; @@ -3003,11 +3003,11 @@ void FaintClearSetData(void) gDisableStructs[gActiveBank].isFirstTurn = 2; gLastUsedMovesByBanks[gActiveBank] = 0; - gUnknown_02024250[gActiveBank] = 0; + gTurnMovesHitWith[gActiveBank] = 0; gUnknown_02024258[gActiveBank] = 0; gUnknown_02024260[gActiveBank] = 0; gUnknownMovesUsedByBanks[gActiveBank] = 0; - gUnknown_02024270[gActiveBank] = 0xFF; + gTurnMovesHitBy[gActiveBank] = 0xFF; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0; @@ -5048,19 +5048,19 @@ static void HandleAction_UseMove(void) if (gProtectStructs[gBankAttacker].onlyStruggle) { gProtectStructs[gBankAttacker].onlyStruggle = 0; - gCurrentMove = gLastUsedMove = MOVE_STRUGGLE; + gCurrentMove = gOriginallyUsedMove = MOVE_STRUGGLE; gHitMarker |= HITMARKER_NO_PPDEDUCT; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); } else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) { - gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker]; + gCurrentMove = gOriginallyUsedMove = gLockedMoves[gBankAttacker]; } // encore forces you to use the same move else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { - gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove; + gCurrentMove = gOriginallyUsedMove = gDisableStructs[gBankAttacker].encoredMove; gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } @@ -5069,7 +5069,7 @@ static void HandleAction_UseMove(void) && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE; gDisableStructs[gBankAttacker].encoredMovePos = 0; gDisableStructs[gBankAttacker].encoreTimer1 = 0; @@ -5077,12 +5077,12 @@ static void HandleAction_UseMove(void) } else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker]) { - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } else { - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; } if (gBattleMons[gBankAttacker].hp != 0) @@ -5122,7 +5122,7 @@ static void HandleAction_UseMove(void) } if (var == 4) { - if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + if (gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -5167,7 +5167,7 @@ static void HandleAction_UseMove(void) } } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + && gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -5600,7 +5600,7 @@ static void HandleAction_ActionFinished(void) gBattleMoveFlags = 0; gBattleScripting.animTurn = 0; gBattleScripting.animTargetsHit = 0; - gUnknown_02024250[gBankAttacker] = 0; + gTurnMovesHitWith[gBankAttacker] = 0; gUnknown_02024258[gBankAttacker] = 0; gBattleStruct->dynamicMoveType = 0; gDynamicBasePower = 0; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 75d144c3d..f43b9b6b2 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -16,8 +16,8 @@ extern u32 gBattleTypeFlags; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT]; +extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT]; extern u16 gDynamicBasePower; extern u8 gBattleMoveFlags; extern u8 gCritMultiplier; @@ -141,11 +141,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0) + if (gTurnMovesHitWith[gActiveBank] == 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0xFFFF) + if (gTurnMovesHitWith[gActiveBank] == 0xFFFF) return FALSE; - if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -162,11 +162,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) bankIn2 = gActiveBank; } - if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE) + if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_FIRE) absorbingTypeAbility = ABILITY_FLASH_FIRE; - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER) + else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_WATER) absorbingTypeAbility = ABILITY_WATER_ABSORB; - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC) + else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_ELECTRIC) absorbingTypeAbility = ABILITY_VOLT_ABSORB; else return FALSE; @@ -238,13 +238,13 @@ static bool8 ShouldSwitchIfNaturalCure(void) if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2) return FALSE; - if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1) + if ((gTurnMovesHitWith[gActiveBank] == 0 || gTurnMovesHitWith[gActiveBank] == 0xFFFF) && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1) + else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0 && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); @@ -345,13 +345,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) u16 move; u8 moveFlags; - if (gUnknown_02024250[gActiveBank] == 0) + if (gTurnMovesHitWith[gActiveBank] == 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0xFFFF) + if (gTurnMovesHitWith[gActiveBank] == 0xFFFF) return FALSE; - if (gUnknown_02024270[gActiveBank] == 0xFF) + if (gTurnMovesHitBy[gActiveBank] == 0xFF) return FALSE; - if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -411,10 +411,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) else monAbility = gBaseStats[species].ability1; - moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility); + moveFlags = AI_TypeCalc(gTurnMovesHitWith[gActiveBank], species, monAbility); if (moveFlags & flags) { - bankIn1 = gUnknown_02024270[gActiveBank]; + bankIn1 = gTurnMovesHitBy[gActiveBank]; for (j = 0; j < 4; j++) { diff --git a/src/battle_controllers.c b/src/battle_controllers.c index ed48ec5d9..45ed8a73a 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -38,7 +38,7 @@ extern u8 gEffectBank; extern u16 gBattleWeather; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; -extern u16 gLastUsedMove; +extern u16 gOriginallyUsedMove; extern u16 gLastUsedItem; extern u8 gBattleOutcome; extern u8 gLastUsedAbility; @@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gLastUsedMove; + stringInfo->lastMove = gOriginallyUsedMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; @@ -1152,7 +1152,7 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gLastUsedMove; + stringInfo->lastMove = gOriginallyUsedMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c864c5a4f..9ab9160a4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -74,10 +74,10 @@ extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; -extern u16 gUnknown_02024250[4]; +extern u16 gTurnMovesHitWith[4]; extern u16 gUnknown_02024258[4]; extern u16 gUnknown_02024260[4]; -extern u8 gUnknown_02024270[4]; +extern u8 gTurnMovesHitBy[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; extern u16 gLastUsedItem; @@ -99,7 +99,7 @@ extern u8 gCurrentTurnActionNumber; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; -extern u16 gLastUsedMove; +extern u16 gOriginallyUsedMove; extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; @@ -1105,7 +1105,7 @@ static void atk00_attackcanceler(void) { CancelMultiTurnMoves(gBankAttacker); gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gUnknown_02024258[gBankTarget] = 0; gBattleCommunication[6] = 1; gBattlescriptCurrInstr++; @@ -1121,7 +1121,7 @@ static void JumpIfMoveFailed(u8 adder, u16 move) const void* BS_ptr = gBattlescriptCurrInstr + adder; if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gUnknown_02024258[gBankTarget] = 0; BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -1484,7 +1484,7 @@ static void atk06_typecalc(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gUnknown_02024258[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); @@ -1520,7 +1520,7 @@ static void atk06_typecalc(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gUnknown_02024258[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); @@ -4860,10 +4860,10 @@ static void atk49_moveend(void) effect = FALSE; - if (gLastUsedMove == 0xFFFF) + if (gOriginallyUsedMove == 0xFFFF) lastMove = 0; else - lastMove = gLastUsedMove; + lastMove = gOriginallyUsedMove; arg1 = gBattlescriptCurrInstr[1]; arg2 = gBattlescriptCurrInstr[2]; @@ -4934,14 +4934,14 @@ static void atk49_moveend(void) break; case 6: // update choice band move if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND - || gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) + || gOriginallyUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) goto LOOP; - if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) + if (gOriginallyUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) { gBattleScripting.atk49_state++; break; } - *choicedMoveAtk = gLastUsedMove; + *choicedMoveAtk = gOriginallyUsedMove; LOOP: { for (i = 0; i < 4; i++) @@ -5036,7 +5036,7 @@ static void atk49_moveend(void) } if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) { - gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove; + gUnknownMovesUsedByBanks[gBankAttacker] = gOriginallyUsedMove; } if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) @@ -5044,7 +5044,7 @@ static void atk49_moveend(void) { if (gHitMarker & HITMARKER_OBEYS) { - gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove; + gLastUsedMovesByBanks[gBankAttacker] = gOriginallyUsedMove; gUnknown_02024260[gBankAttacker] = gCurrentMove; } else @@ -5054,23 +5054,23 @@ static void atk49_moveend(void) } if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget))) - gUnknown_02024270[gBankTarget] = gBankAttacker; + gTurnMovesHitBy[gBankTarget] = gBankAttacker; if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - if (gLastUsedMove == 0xFFFF) + if (gOriginallyUsedMove == 0xFFFF) { - gUnknown_02024250[gBankTarget] = gLastUsedMove; + gTurnMovesHitWith[gBankTarget] = gOriginallyUsedMove; } else { - gUnknown_02024250[gBankTarget] = gCurrentMove; + gTurnMovesHitWith[gBankTarget] = gCurrentMove; GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]); } } else { - gUnknown_02024250[gBankTarget] = 0xFFFF; + gTurnMovesHitWith[gBankTarget] = 0xFFFF; } } gBattleScripting.atk49_state++; @@ -5083,16 +5083,16 @@ static void atk49_moveend(void) { u8 target, attacker; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gOriginallyUsedMove; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gOriginallyUsedMove >> 8; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gOriginallyUsedMove; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gOriginallyUsedMove >> 8; } gBattleScripting.atk49_state++; break; @@ -5144,7 +5144,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -5219,7 +5219,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; + gTurnMovesHitWith[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -5452,10 +5452,10 @@ static void atk4F_jumpifcantswitch(void) { if (GetBankSide(gActiveBank) == SIDE_OPPONENT) { - r7 = GetBankByIdentity(1); + r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByIdentity(3); + compareVar = GetBankByIdentity(IDENTITY_OPPONENT_MON2); else compareVar = r7; @@ -5463,10 +5463,10 @@ static void atk4F_jumpifcantswitch(void) } else { - r7 = GetBankByIdentity(0); + r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByIdentity(2); + compareVar = GetBankByIdentity(IDENTITY_PLAYER_MON2); else compareVar = r7; @@ -6009,7 +6009,7 @@ static void atk59_handlelearnnewmove(void) } else { - gActiveBank = GetBankByIdentity(0); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) @@ -6018,7 +6018,7 @@ static void atk59_handlelearnnewmove(void) } if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - gActiveBank = GetBankByIdentity(2); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON2); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) { @@ -6386,7 +6386,7 @@ static void atk63_jumptorandomattack(void) if (gBattlescriptCurrInstr[1] != 0) gCurrentMove = gRandomMove; else - gLastUsedMove = gCurrentMove = gRandomMove; + gOriginallyUsedMove = gCurrentMove = gRandomMove; gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; } @@ -6849,7 +6849,7 @@ static void atk6D_resetsentmonsvalue(void) static void atk6E_setatktoplayer0(void) { - gBankAttacker = GetBankByIdentity(0); + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); gBattlescriptCurrInstr++; } @@ -8352,7 +8352,7 @@ static void atk9A_setfocusenergy(void) static void atk9B_transformdataexecution(void) { - gLastUsedMove = 0xFFFF; + gOriginallyUsedMove = 0xFFFF; gBattlescriptCurrInstr++; if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) @@ -8432,7 +8432,7 @@ static bool8 IsMoveUncopyableByMimic(u16 move) static void atk9D_mimicattackcopy(void) { - gLastUsedMove = 0xFFFF; + gOriginallyUsedMove = 0xFFFF; if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED @@ -8652,13 +8652,13 @@ static void atkA5_painsplitdmgcalc(void) static void atkA6_settypetorandomresistance(void) // conversion 2 { - if (gUnknown_02024250[gBankAttacker] == 0 - || gUnknown_02024250[gBankAttacker] == 0xFFFF) + if (gTurnMovesHitWith[gBankAttacker] == 0 + || gTurnMovesHitWith[gBankAttacker] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } - else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker]) - && gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) + else if (IsTwoTurnsMove(gTurnMovesHitWith[gBankAttacker]) + && gBattleMons[gTurnMovesHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8726,7 +8726,7 @@ static void atkA7_setalwayshitflag(void) static void atkA8_copymovepermanently(void) // sketch { - gLastUsedMove = 0xFFFF; + gOriginallyUsedMove = 0xFFFF; if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE @@ -9024,7 +9024,7 @@ static void atkAE_healpartystatus(void) gBattleMons[gBankAttacker].status1 = 0; gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) { diff --git a/src/battle_util.c b/src/battle_util.c index 6164565bd..7f5d31b6f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -459,7 +459,7 @@ u8 TrySetCantSelectMoveBattleScript(void) u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) { u8 holdEffect; - u16* choicedMove = &gBattleStruct->choicedMove[bank]; + u16 *choicedMove = &gBattleStruct->choicedMove[bank]; s32 i; if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) @@ -584,11 +584,7 @@ u8 UpdateTurnCounters(void) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; BattleScriptExecute(BattleScript_82DACFA); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_REFLECT; - gBattleTextBuff1[3] = MOVE_REFLECT >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); effect++; } } @@ -614,11 +610,7 @@ u8 UpdateTurnCounters(void) gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; BattleScriptExecute(BattleScript_82DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; - gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); effect++; } } @@ -643,11 +635,7 @@ u8 UpdateTurnCounters(void) gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; BattleScriptExecute(BattleScript_82DACFA); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_MIST; - gBattleTextBuff1[3] = MOVE_MIST >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); effect++; } gBattleStruct->turnSideTracker++; @@ -773,9 +761,10 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_82DACC9; } else + { gBattlescriptCurrInstr = BattleScript_82DAC47; - - gBattleScripting.animArg1 = 0xD; + } + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -870,7 +859,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns + if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) // not 16 turns gBattleMons[gActiveBank].status1 += 0x100; gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -929,8 +918,8 @@ u8 TurnBasedEffects(void) // This is the only way I could get this array access to match. gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); gBattleTextBuff1[4] = EOS; @@ -941,8 +930,8 @@ u8 TurnBasedEffects(void) } else // broke free { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); gBattleTextBuff1[4] = EOS; @@ -1014,7 +1003,7 @@ u8 TurnBasedEffects(void) gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; SetMoveEffect(1, 0); if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) BattleScriptExecute(BattleScript_ThrashConfuses); @@ -1139,11 +1128,8 @@ bool8 sub_8041364(void) else gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; - gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBank]); + gBankTarget = gActiveBank; gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; @@ -1151,11 +1137,11 @@ bool8 sub_8041364(void) BattleScriptExecute(BattleScript_82DAFE4); if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0 - && gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0) + && gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0) { - gSideAffecting[GetBankIdentity(gBankTarget) & 1] &= ~SIDE_STATUS_FUTUREATTACK; + gSideAffecting[GET_BANK_SIDE(gBankTarget)] &= ~(SIDE_STATUS_FUTUREATTACK); } - return 1; + return TRUE; } } // Why do I have to keep doing this to match? @@ -1177,12 +1163,7 @@ bool8 sub_8041364(void) gBattleStruct->field_1A1++; if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 1; - gBattleTextBuff1[2] = 1; - gBattleTextBuff1[3] = 1; - gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSongTimer1; - gBattleTextBuff1[5] = EOS; + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBank].perishSongTimer1); if (gDisableStructs[gActiveBank].perishSongTimer1 == 0) { gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG; @@ -1195,7 +1176,7 @@ bool8 sub_8041364(void) gBattlescriptCurrInstr = BattleScript_82DAF20; } BattleScriptExecute(gBattlescriptCurrInstr); - return 1; + return TRUE; } } // Hm... @@ -1218,14 +1199,14 @@ bool8 sub_8041364(void) gBattlescriptCurrInstr = BattleScript_82DB8F3; BattleScriptExecute(BattleScript_82DB8F3); gBattleStruct->field_1A0++; - return 1; + return TRUE; } break; } gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); - return 0; + return FALSE; } #define sub_8041728_MAX_CASE 7 @@ -1572,7 +1553,7 @@ u8 AtkCanceller_UnableToUseMove(void) } gBattleStruct->atkCancellerTracker++; break; - case 14: // last case + case ATKCANCELLER_MAX_CASE: break; } @@ -1674,14 +1655,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2) { if (GetBankSide(bank) == SIDE_OPPONENT) { - r7 = GetBankByIdentity(1); - r6 = GetBankByIdentity(3); + r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + r6 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); party = gEnemyParty; } else { - r7 = GetBankByIdentity(0); - r6 = GetBankByIdentity(2); + r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1); + r6 = GetBankByIdentity(IDENTITY_PLAYER_MON2); party = gPlayerParty; } if (r1 == 6) @@ -1799,10 +1780,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) else move = gCurrentMove; - if (gBattleStruct->dynamicMoveType) - moveType = gBattleStruct->dynamicMoveType & 0x3F; - else - moveType = gBattleMoves[move].type; + GET_MOVE_TYPE(move, moveType); switch (caseID) { @@ -2525,7 +2503,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) return effect; } -void BattleScriptExecute(const u8* BS_ptr) +void BattleScriptExecute(const u8 *BS_ptr) { gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; @@ -2533,7 +2511,7 @@ void BattleScriptExecute(const u8* BS_ptr) gCurrentActionFuncId = 0; } -void BattleScriptPushCursorAndCallback(const u8* BS_ptr) +void BattleScriptPushCursorAndCallback(const u8 *BS_ptr) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BS_ptr; @@ -3265,7 +3243,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) switch (moveTarget) { case MOVE_TARGET_SELECTED: - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; else @@ -3279,7 +3257,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) { - targetBank ^= 2; + targetBank ^= BIT_MON; RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); gSpecialStatuses[targetBank].lightningRodRedirected = 1; } @@ -3289,12 +3267,12 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: case MOVE_TARGET_OPPONENTS_FIELD: - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE); if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; + targetBank ^= BIT_MON; break; case MOVE_TARGET_RANDOM: - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM) @@ -3302,22 +3280,22 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { if (Random() & 1) - targetBank = GetBankByIdentity(1); + targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); else - targetBank = GetBankByIdentity(3); + targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2); } else { if (Random() & 1) - targetBank = GetBankByIdentity(0); + targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); else - targetBank = GetBankByIdentity(2); + targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON2); } if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; + targetBank ^= BIT_MON; } else - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE); break; case MOVE_TARGET_USER: case MOVE_TARGET_x10: @@ -3325,11 +3303,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) break; } - #ifndef NONMATCHING - MEME_ACCESS_U8(BattleStruct, gBattleStruct, gBankAttacker, moveTarget, targetBank); - #else - gBattleStruct->moveTarget[gBankAttacker] = targetBank; - #endif // NONMATCHING + *(gBattleStruct->moveTarget + gBankAttacker) = targetBank; return targetBank; } diff --git a/sym_ewram.txt b/sym_ewram.txt index cfe686a7c..a66eb7356 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -312,7 +312,7 @@ gUnknown_020241E9: @ 20241E9 gCurrentMove: @ 20241EA .space 0x2 -gLastUsedMove: @ 20241EC +gOriginallyUsedMove: @ 20241EC .space 0x2 gRandomMove: @ 20241EE @@ -375,7 +375,7 @@ gUnknownMovesUsedByBanks: @ 2024240 gLastUsedMovesByBanks: @ 2024248 .space 0x8 -gUnknown_02024250: @ 2024250 +gTurnMovesHitWith: @ 2024250 .space 0x8 gUnknown_02024258: @ 2024258 @@ -387,7 +387,7 @@ gUnknown_02024260: @ 2024260 gLockedMoves: @ 2024268 .space 0x8 -gUnknown_02024270: @ 2024270 +gTurnMovesHitBy: @ 2024270 .space 0x4 gChosenMovesByBanks: @ 2024274 -- cgit v1.2.3 From 8c30c42c36b7904c223277b9739f5a7e78be1793 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 14:17:02 +0100 Subject: more labelling and changes --- include/battle_message.h | 2 +- src/battle_2.c | 68 ++++++++++----------- src/battle_ai_script_commands.c | 12 ++-- src/battle_ai_switch_items.c | 32 +++++----- src/battle_controllers.c | 4 +- src/battle_message.c | 6 +- src/battle_script_commands.c | 128 ++++++++++++++++++++-------------------- src/battle_util.c | 16 ++--- sym_ewram.txt | 14 ++--- 9 files changed, 141 insertions(+), 141 deletions(-) diff --git a/include/battle_message.h b/include/battle_message.h index 8b724a316..59d747db1 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -197,7 +197,7 @@ struct StringInfoBattle { u16 currentMove; - u16 lastMove; + u16 originallyUsedMove; u16 lastItem; u8 lastAbility; u8 scrActive; diff --git a/src/battle_2.c b/src/battle_2.c index dffebabe7..53437811a 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -120,14 +120,14 @@ extern u32 gBattleExecBuffer; extern u8 gMultiHitCounter; extern u8 gBattleMoveFlags; extern s32 gBattleMoveDamage; -extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; -extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; -extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT]; +extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastHitByType[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; -extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT]; +extern u8 gLastHitBy[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT]; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern u16 gSideAffecting[2]; @@ -2743,15 +2743,15 @@ static void BattleStartClearSetData(void) gDisableStructs[i].isFirstTurn = 2; gUnknown_02024284[i] = 0; - gLastUsedMovesByBanks[i] = 0; - gTurnMovesHitWith[i] = 0; - gUnknown_02024258[i] = 0; - gUnknown_02024260[i] = 0; - gTurnMovesHitBy[i] = 0xFF; + gOriginallyLastMoves[i] = 0; + gLastLandedMoves[i] = 0; + gLastHitByType[i] = 0; + gLastMoves[i] = 0; + gLastHitBy[i] = 0xFF; gLockedMoves[i] = 0; - gUnknownMovesUsedByBanks[i] = 0; + gOriginallyLastPrintedMoves[i] = 0; gBattleResources->flags->flags[i] = 0; - gUnknown_02024230[i] = 0; + gSelectionBattleScripts[i] = 0; } for (i = 0; i < 2; i++) @@ -2908,14 +2908,14 @@ void SwitchInClearSetData(void) } gBattleMoveFlags = 0; - gDisableStructs[gActiveBank].isFirstTurn= 2; + gDisableStructs[gActiveBank].isFirstTurn = 2; gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit; - gLastUsedMovesByBanks[gActiveBank] = 0; - gTurnMovesHitWith[gActiveBank] = 0; - gUnknown_02024258[gActiveBank] = 0; - gUnknown_02024260[gActiveBank] = 0; - gUnknownMovesUsedByBanks[gActiveBank] = 0; - gTurnMovesHitBy[gActiveBank] = 0xFF; + gOriginallyLastMoves[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; + gLastMoves[gActiveBank] = 0; + gOriginallyLastPrintedMoves[gActiveBank] = 0; + gLastHitBy[gActiveBank] = 0xFF; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0; @@ -3002,12 +3002,12 @@ void FaintClearSetData(void) gDisableStructs[gActiveBank].isFirstTurn = 2; - gLastUsedMovesByBanks[gActiveBank] = 0; - gTurnMovesHitWith[gActiveBank] = 0; - gUnknown_02024258[gActiveBank] = 0; - gUnknown_02024260[gActiveBank] = 0; - gUnknownMovesUsedByBanks[gActiveBank] = 0; - gTurnMovesHitBy[gActiveBank] = 0xFF; + gOriginallyLastMoves[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; + gLastMoves[gActiveBank] = 0; + gOriginallyLastPrintedMoves[gActiveBank] = 0; + gLastHitBy[gActiveBank] = 0xFF; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0; @@ -3189,7 +3189,7 @@ static void BattleIntroDrawPartySummaryScreens(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) @@ -3207,7 +3207,7 @@ static void BattleIntroDrawPartySummaryScreens(void) EmitDrawPartyStatusSummary(0, hpStatus, 0x80); MarkBufferBankForExecution(gActiveBank); - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) @@ -5217,11 +5217,11 @@ static void HandleAction_UseMove(void) gCurrentActionFuncId = 12; return; } - else if (gUnknown_02024230[gBankAttacker] != NULL) + else if (gSelectionBattleScripts[gBankAttacker] != NULL) { gBattleCommunication[MULTISTRING_CHOOSER] = 4; - gBattlescriptCurrInstr = gUnknown_02024230[gBankAttacker]; - gUnknown_02024230[gBankAttacker] = NULL; + gBattlescriptCurrInstr = gSelectionBattleScripts[gBankAttacker]; + gSelectionBattleScripts[gBankAttacker] = NULL; } else { @@ -5600,8 +5600,8 @@ static void HandleAction_ActionFinished(void) gBattleMoveFlags = 0; gBattleScripting.animTurn = 0; gBattleScripting.animTargetsHit = 0; - gTurnMovesHitWith[gBankAttacker] = 0; - gUnknown_02024258[gBankAttacker] = 0; + gLastLandedMoves[gBankAttacker] = 0; + gLastHitByType[gBankAttacker] = 0; gBattleStruct->dynamicMoveType = 0; gDynamicBasePower = 0; gBattleScripting.atk49_state = 0; diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 24377eacc..5fde5669e 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -58,7 +58,7 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gBankTarget; extern u8 gAbsentBankFlags; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; @@ -633,12 +633,12 @@ static void RecordLastUsedMoveByTarget(void) for (i = 0; i < 4; i++) { - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) break; - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gOriginallyLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. && gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0) { - gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget]; + gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gOriginallyLastMoves[gBankTarget]; break; } } @@ -1252,9 +1252,9 @@ static void BattleAICmd_is_most_powerful_move(void) static void BattleAICmd_get_last_used_bank_move(void) { if (gAIScriptPtr[1] == AI_USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[sBank_AI]; + AI_THINKING_STRUCT->funcResult = gOriginallyLastMoves[sBank_AI]; else - AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[gBankTarget]; + AI_THINKING_STRUCT->funcResult = gOriginallyLastMoves[gBankTarget]; gAIScriptPtr += 2; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f43b9b6b2..f5b6c7fe4 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -16,8 +16,8 @@ extern u32 gBattleTypeFlags; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; -extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT]; -extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT]; +extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; +extern u8 gLastHitBy[BATTLE_BANKS_COUNT]; extern u16 gDynamicBasePower; extern u8 gBattleMoveFlags; extern u8 gCritMultiplier; @@ -141,11 +141,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0) return FALSE; - if (gTurnMovesHitWith[gActiveBank] == 0) + if (gLastLandedMoves[gActiveBank] == 0) return FALSE; - if (gTurnMovesHitWith[gActiveBank] == 0xFFFF) + if (gLastLandedMoves[gActiveBank] == 0xFFFF) return FALSE; - if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -162,11 +162,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) bankIn2 = gActiveBank; } - if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_FIRE) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_FIRE) absorbingTypeAbility = ABILITY_FLASH_FIRE; - else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_WATER) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_WATER) absorbingTypeAbility = ABILITY_WATER_ABSORB; - else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_ELECTRIC) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_ELECTRIC) absorbingTypeAbility = ABILITY_VOLT_ABSORB; else return FALSE; @@ -238,13 +238,13 @@ static bool8 ShouldSwitchIfNaturalCure(void) if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2) return FALSE; - if ((gTurnMovesHitWith[gActiveBank] == 0 || gTurnMovesHitWith[gActiveBank] == 0xFFFF) && Random() & 1) + if ((gLastLandedMoves[gActiveBank] == 0 || gLastLandedMoves[gActiveBank] == 0xFFFF) && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } - else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0 && Random() & 1) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0 && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); @@ -345,13 +345,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) u16 move; u8 moveFlags; - if (gTurnMovesHitWith[gActiveBank] == 0) + if (gLastLandedMoves[gActiveBank] == 0) return FALSE; - if (gTurnMovesHitWith[gActiveBank] == 0xFFFF) + if (gLastLandedMoves[gActiveBank] == 0xFFFF) return FALSE; - if (gTurnMovesHitBy[gActiveBank] == 0xFF) + if (gLastHitBy[gActiveBank] == 0xFF) return FALSE; - if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -411,10 +411,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) else monAbility = gBaseStats[species].ability1; - moveFlags = AI_TypeCalc(gTurnMovesHitWith[gActiveBank], species, monAbility); + moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBank], species, monAbility); if (moveFlags & flags) { - bankIn1 = gTurnMovesHitBy[gActiveBank]; + bankIn1 = gLastHitBy[gActiveBank]; for (j = 0; j < 4; j++) { diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 45ed8a73a..b3fb91b42 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gOriginallyUsedMove; + stringInfo->originallyUsedMove = gOriginallyUsedMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; @@ -1152,7 +1152,7 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gOriginallyUsedMove; + stringInfo->originallyUsedMove = gOriginallyUsedMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; diff --git a/src/battle_message.c b/src/battle_message.c index 04eb5f655..35b9004ac 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1916,11 +1916,11 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) else toCpy = gMoveNames[gStringInfo->currentMove]; break; - case B_TXT_LAST_MOVE: // last used move name - if (gStringInfo->lastMove > LAST_MOVE_INDEX) + case B_TXT_LAST_MOVE: // originally used move name + if (gStringInfo->originallyUsedMove > LAST_MOVE_INDEX) toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType]; else - toCpy = gMoveNames[gStringInfo->lastMove]; + toCpy = gMoveNames[gStringInfo->originallyUsedMove]; break; case B_TXT_LAST_ITEM: // last used item if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9ab9160a4..0e6209ed8 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -74,10 +74,10 @@ extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; -extern u16 gTurnMovesHitWith[4]; -extern u16 gUnknown_02024258[4]; -extern u16 gUnknown_02024260[4]; -extern u8 gTurnMovesHitBy[4]; +extern u16 gLastLandedMoves[4]; +extern u16 gLastHitByType[4]; +extern u16 gLastMoves[4]; +extern u8 gLastHitBy[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; extern u16 gLastUsedItem; @@ -100,8 +100,8 @@ extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; extern u16 gOriginallyUsedMove; -extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u8 gUnknown_020241E9; @@ -1105,8 +1105,8 @@ static void atk00_attackcanceler(void) { CancelMultiTurnMoves(gBankAttacker); gBattleMoveFlags |= MOVESTATUS_MISSED; - gTurnMovesHitWith[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 1; gBattlescriptCurrInstr++; } @@ -1118,11 +1118,11 @@ static void atk00_attackcanceler(void) static void JumpIfMoveFailed(u8 adder, u16 move) { - const void* BS_ptr = gBattlescriptCurrInstr + adder; + const u8 *BS_ptr = gBattlescriptCurrInstr + adder; if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { - gTurnMovesHitWith[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } else @@ -1484,8 +1484,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gTurnMovesHitWith[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1520,8 +1520,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gTurnMovesHitWith[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -4856,14 +4856,14 @@ static void atk49_moveend(void) u8 holdEffectAtk; u16 *choicedMoveAtk; u8 arg1, arg2; - u16 lastMove; + u16 originallyUsedMove; effect = FALSE; if (gOriginallyUsedMove == 0xFFFF) - lastMove = 0; + originallyUsedMove = 0; else - lastMove = gOriginallyUsedMove; + originallyUsedMove = gOriginallyUsedMove; arg1 = gBattlescriptCurrInstr[1]; arg2 = gBattlescriptCurrInstr[2]; @@ -5036,48 +5036,48 @@ static void atk49_moveend(void) } if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) { - gUnknownMovesUsedByBanks[gBankAttacker] = gOriginallyUsedMove; + gOriginallyLastPrintedMoves[gBankAttacker] = gOriginallyUsedMove; } if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) - && gBattleMoves[lastMove].effect != EFFECT_BATON_PASS) + && gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS) { if (gHitMarker & HITMARKER_OBEYS) { - gLastUsedMovesByBanks[gBankAttacker] = gOriginallyUsedMove; - gUnknown_02024260[gBankAttacker] = gCurrentMove; + gOriginallyLastMoves[gBankAttacker] = gOriginallyUsedMove; + gLastMoves[gBankAttacker] = gCurrentMove; } else { - gLastUsedMovesByBanks[gBankAttacker] = 0xFFFF; - gUnknown_02024260[gBankAttacker] = 0xFFFF; + gOriginallyLastMoves[gBankAttacker] = 0xFFFF; + gLastMoves[gBankAttacker] = 0xFFFF; } if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget))) - gTurnMovesHitBy[gBankTarget] = gBankAttacker; + gLastHitBy[gBankTarget] = gBankAttacker; if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { if (gOriginallyUsedMove == 0xFFFF) { - gTurnMovesHitWith[gBankTarget] = gOriginallyUsedMove; + gLastLandedMoves[gBankTarget] = gOriginallyUsedMove; } else { - gTurnMovesHitWith[gBankTarget] = gCurrentMove; - GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]); + gLastLandedMoves[gBankTarget] = gCurrentMove; + GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBankTarget]); } } else { - gTurnMovesHitWith[gBankTarget] = 0xFFFF; + gLastLandedMoves[gBankTarget] = 0xFFFF; } } gBattleScripting.atk49_state++; break; case 15: // mirror move if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) - && gBattleMoves[lastMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS + && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget)) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { @@ -5144,7 +5144,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gTurnMovesHitWith[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -5219,7 +5219,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gTurnMovesHitWith[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -7131,7 +7131,7 @@ static void atk76_various(void) static void atk77_setprotectlike(void) // protect and endure { bool8 notLastTurn = TRUE; - u16 lastMove = gUnknown_02024260[gBankAttacker]; + u16 lastMove = gLastMoves[gBankAttacker]; if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) gDisableStructs[gBankAttacker].protectUses = 0; @@ -8434,10 +8434,10 @@ static void atk9D_mimicattackcopy(void) { gOriginallyUsedMove = 0xFFFF; - if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget]) + if (IsMoveUncopyableByMimic(gOriginallyLastMoves[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED - || gLastUsedMovesByBanks[gBankTarget] == 0 - || gLastUsedMovesByBanks[gBankTarget] == 0xFFFF) + || gOriginallyLastMoves[gBankTarget] == 0 + || gOriginallyLastMoves[gBankTarget] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8447,20 +8447,20 @@ static void atk9D_mimicattackcopy(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gOriginallyLastMoves[gBankTarget]) break; } if (i == 4) { - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMovesByBanks[gBankTarget]; - if (gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp < 5) - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gOriginallyLastMoves[gBankTarget]; + if (gBattleMoves[gOriginallyLastMoves[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gOriginallyLastMoves[gBankTarget]].pp; else gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastMoves[gBankTarget]) gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; gBattlescriptCurrInstr += 5; @@ -8575,7 +8575,7 @@ static void atkA3_disablelastusedattack(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) break; } if (gDisableStructs[gBankTarget].disabledMove == 0 @@ -8600,13 +8600,13 @@ static void atkA4_trysetencore(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) break; } - if (gLastUsedMovesByBanks[gBankTarget] == MOVE_STRUGGLE - || gLastUsedMovesByBanks[gBankTarget] == MOVE_ENCORE - || gLastUsedMovesByBanks[gBankTarget] == MOVE_MIRROR_MOVE) + if (gOriginallyLastMoves[gBankTarget] == MOVE_STRUGGLE + || gOriginallyLastMoves[gBankTarget] == MOVE_ENCORE + || gOriginallyLastMoves[gBankTarget] == MOVE_MIRROR_MOVE) { i = 4; } @@ -8652,13 +8652,13 @@ static void atkA5_painsplitdmgcalc(void) static void atkA6_settypetorandomresistance(void) // conversion 2 { - if (gTurnMovesHitWith[gBankAttacker] == 0 - || gTurnMovesHitWith[gBankAttacker] == 0xFFFF) + if (gLastLandedMoves[gBankAttacker] == 0 + || gLastLandedMoves[gBankAttacker] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } - else if (IsTwoTurnsMove(gTurnMovesHitWith[gBankAttacker]) - && gBattleMons[gTurnMovesHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) + else if (IsTwoTurnsMove(gLastLandedMoves[gBankAttacker]) + && gBattleMons[gLastHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8672,7 +8672,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2 i *= 3; - if (TYPE_EFFECT_ATK_TYPE(i) == gUnknown_02024258[gBankAttacker] + if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBankAttacker] && TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) @@ -8695,7 +8695,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2 case TYPE_FORESIGHT: break; default: - if (TYPE_EFFECT_ATK_TYPE(j) == gUnknown_02024258[gBankAttacker] + if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBankAttacker] && TYPE_EFFECT_MULTIPLIER(j) <= 5 && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) @@ -8729,10 +8729,10 @@ static void atkA8_copymovepermanently(void) // sketch gOriginallyUsedMove = 0xFFFF; if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) - && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE - && gUnknownMovesUsedByBanks[gBankTarget] != 0 - && gUnknownMovesUsedByBanks[gBankTarget] != 0xFFFF - && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_SKETCH) + && gOriginallyLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE + && gOriginallyLastPrintedMoves[gBankTarget] != 0 + && gOriginallyLastPrintedMoves[gBankTarget] != 0xFFFF + && gOriginallyLastPrintedMoves[gBankTarget] != MOVE_SKETCH) { s32 i; @@ -8740,7 +8740,7 @@ static void atkA8_copymovepermanently(void) // sketch { if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) continue; - if (gBattleMons[gBankAttacker].moves[i] == gUnknownMovesUsedByBanks[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gOriginallyLastPrintedMoves[gBankTarget]) break; } @@ -8752,8 +8752,8 @@ static void atkA8_copymovepermanently(void) // sketch { struct MovePpInfo movePpData; - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknownMovesUsedByBanks[gBankTarget]; - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknownMovesUsedByBanks[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gOriginallyLastPrintedMoves[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gOriginallyLastPrintedMoves[gBankTarget]].pp; gActiveBank = gBankAttacker; for (i = 0; i < 4; i++) @@ -8766,7 +8766,7 @@ static void atkA8_copymovepermanently(void) // sketch EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData); MarkBufferBankForExecution(gActiveBank); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gUnknownMovesUsedByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastPrintedMoves[gBankTarget]) gBattlescriptCurrInstr += 5; } @@ -8899,14 +8899,14 @@ static void atkAC_remaininghptopower(void) static void atkAD_tryspiteppreduce(void) { - if (gLastUsedMovesByBanks[gBankTarget] != 0 - && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF) + if (gOriginallyLastMoves[gBankTarget] != 0 + && gOriginallyLastMoves[gBankTarget] != 0xFFFF) { s32 i; for (i = 0; i < 4; i++) { - if (gLastUsedMovesByBanks[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + if (gOriginallyLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i]) break; } @@ -8916,7 +8916,7 @@ static void atkAD_tryspiteppreduce(void) if (gBattleMons[gBankTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBankTarget].pp[i]; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastMoves[gBankTarget]) ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1); diff --git a/src/battle_util.c b/src/battle_util.c index 7f5d31b6f..9f2bf2797 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -23,7 +23,7 @@ extern const u8* gBattlescriptCurrInstr; extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; -extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; +extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gActiveBank; extern u8 gStringBank; @@ -43,7 +43,7 @@ extern s32 gBattleMoveDamage; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u32 gBattleTypeFlags; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; extern u32 gHitMarker; extern u8 gEffectBank; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; @@ -363,7 +363,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = BattleScript_82DAE2A; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DAE2A; gProtectStructs[gActiveBank].flag_x10 = 1; } else @@ -373,12 +373,12 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (move == gLastUsedMovesByBanks[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) + if (move == gOriginallyLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = BattleScript_82DB098; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DB098; gProtectStructs[gActiveBank].flag_x10 = 1; } else @@ -393,7 +393,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = BattleScript_82DB0AF; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DB0AF; gProtectStructs[gActiveBank].flag_x10 = 1; } else @@ -408,7 +408,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = BattleScript_82DB185; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DB185; gProtectStructs[gActiveBank].flag_x10 = 1; } else @@ -477,7 +477,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) unusableMoves |= gBitTable[i]; if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gLastUsedMovesByBanks[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + if (gBattleMons[bank].moves[i] == gOriginallyLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) unusableMoves |= gBitTable[i]; diff --git a/sym_ewram.txt b/sym_ewram.txt index a66eb7356..16cc33355 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -366,28 +366,28 @@ gActionForBanks: @ 202421C gBattlescriptPtrsForSelection: @ 2024220 .space 0x10 -gUnknown_02024230: @ 2024230 +gSelectionBattleScripts: @ 2024230 .space 0x10 -gUnknownMovesUsedByBanks: @ 2024240 +gOriginallyLastPrintedMoves: @ 2024240 .space 0x8 -gLastUsedMovesByBanks: @ 2024248 +gOriginallyLastMoves: @ 2024248 .space 0x8 -gTurnMovesHitWith: @ 2024250 +gLastLandedMoves: @ 2024250 .space 0x8 -gUnknown_02024258: @ 2024258 +gLastHitByType: @ 2024258 .space 0x8 -gUnknown_02024260: @ 2024260 +gLastMoves: @ 2024260 .space 0x8 gLockedMoves: @ 2024268 .space 0x8 -gTurnMovesHitBy: @ 2024270 +gLastHitBy: @ 2024270 .space 0x4 gChosenMovesByBanks: @ 2024274 -- cgit v1.2.3 From 1bb5b1fd07260cd027d9504a0debfdc294cebc9f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 17:15:28 +0100 Subject: more battle labels --- data/battle_scripts_1.s | 328 +++++++++++++++++++++++------------------------ data/battle_scripts_2.s | 2 +- include/battle_scripts.h | 148 ++++++++++----------- src/battle_2.c | 28 ++-- src/battle_util.c | 210 +++++++++++++++--------------- sym_ewram.txt | 4 +- 6 files changed, 362 insertions(+), 358 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 1da4aec0b..a213225c6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -745,7 +745,7 @@ BattleScript_EffectLightScreen:: attackstring ppreduce setlightscreen - goto BattleScript_82D928C + goto BattleScript_PrintReflectLightScreenSafeguardString BattleScript_EffectTriAttack:: setmoveeffect EFFECT_TRI_ATTACK @@ -755,8 +755,8 @@ BattleScript_EffectRest:: attackcanceler attackstring ppreduce - jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8FD6 - jumpifcantmakeasleep BattleScript_82D8FC6 + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_RestIsAlreadyAsleep + jumpifcantmakeasleep BattleScript_RestCantSleep trysetrest BattleScript_AlreadyAtFullHp pause 0x20 printfromtable gRestUsedStringIds @@ -765,13 +765,13 @@ BattleScript_EffectRest:: waitstate goto BattleScript_PresentHealTarget -BattleScript_82D8FC6:: +BattleScript_RestCantSleep:: pause 0x40 printfromtable gUproarAwakeStringIds waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D8FD6:: +BattleScript_RestIsAlreadyAsleep:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNALREADYASLEEP2 @@ -795,13 +795,13 @@ BattleScript_KOFail:: goto BattleScript_MoveEnd BattleScript_EffectRazorWind:: - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 - jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x0 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd -BattleScript_82D9040:: +BattleScript_TwoTurnMovesSecondTurn:: attackcanceler setmoveeffect EFFECT_CHARGING setbyte sANIM_TURN, 0x1 @@ -847,11 +847,11 @@ BattleScript_EffectDragonRage:: goto BattleScript_HitFromAtkAnimation BattleScript_EffectTrap:: - jumpifnotmove MOVE_WHIRLPOOL, BattleScript_82D9105 - jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_82D9105 + jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect + jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect orword gHitMarker, HITMARKER_IGNORE_UNDERWATER setbyte sDMG_MULTIPLIER, 0x2 -BattleScript_82D9105:: +BattleScript_DoWrapEffect:: setmoveeffect EFFECT_WRAP goto BattleScript_EffectHit @@ -996,7 +996,7 @@ BattleScript_EffectReflect:: attackstring ppreduce setreflect -BattleScript_82D928C:: +BattleScript_PrintReflectLightScreenSafeguardString:: attackanimation waitanimation printfromtable gReflectLightScreenSafeguardStringIds @@ -1082,8 +1082,8 @@ BattleScript_EffectAccuracyDownHit:: goto BattleScript_EffectHit BattleScript_EffectSkyAttack:: - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 - jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x3 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd @@ -1107,21 +1107,21 @@ BattleScript_EffectSubstitute:: ppreduce attackstring waitstate - jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_82D943E + jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute setsubstitute - jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D942B + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim pause 0x20 - goto BattleScript_82D9431 -BattleScript_82D942B:: + goto BattleScript_SubstituteString +BattleScript_SubstituteAnim:: attackanimation waitanimation healthbarupdate ATTACKER datahpupdate ATTACKER -BattleScript_82D9431:: +BattleScript_SubstituteString:: printfromtable gSubsituteUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82D943E:: +BattleScript_AlreadyHasSubstitute:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNHASSUBSTITUTE @@ -1180,8 +1180,8 @@ BattleScript_EffectLeechSeed:: pause 0x20 ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed - accuracycheck BattleScript_82D94E5, ACC_CURR_MOVE -BattleScript_82D94E5:: + accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE +BattleScript_DoLeechSeed:: setseeded attackanimation waitanimation @@ -1276,16 +1276,16 @@ BattleScript_EffectPainSplit:: BattleScript_EffectSnore:: attackcanceler - jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D95CE + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SnoreIsAsleep attackstring ppreduce goto BattleScript_ButItFailed -BattleScript_82D95CE:: - jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D95E2 +BattleScript_SnoreIsAsleep:: + jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_DoSnore printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER -BattleScript_82D95E2:: +BattleScript_DoSnore:: attackstring ppreduce accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE @@ -1388,15 +1388,15 @@ BattleScript_EffectHealBell:: waitanimation printfromtable gPartyStatusHealStringIds waitmessage 0x40 - jumpifnotmove MOVE_HEAL_BELL, BattleScript_82D96FE - jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED + jumpifnotmove MOVE_HEAL_BELL, BattleScript_PartyHealEnd + jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected printstring STRINGID_PKMNSXBLOCKSY waitmessage 0x40 -BattleScript_82D96ED:: - jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D96FE +BattleScript_CheckHealBellMon2Unaffected:: + jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd printstring STRINGID_PKMNSXBLOCKSY2 waitmessage 0x40 -BattleScript_82D96FE:: +BattleScript_PartyHealEnd:: updatestatusicon ATTACKER_WITH_PARTNER waitstate goto BattleScript_MoveEnd @@ -1411,9 +1411,9 @@ BattleScript_EffectTripleKick:: BattleScript_TripleKickLoop:: jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits - jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D973A + jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits -BattleScript_82D973A:: +BattleScript_DoTripleKickAttack:: accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE movevaluescleanup addbyte sTRIPLE_KICK_POWER, 10 @@ -1613,16 +1613,16 @@ BattleScript_EffectSandstorm:: attackstring ppreduce setsandstorm - goto BattleScript_82D9B41 + goto BattleScript_MoveWeatherChange BattleScript_EffectRollout:: attackcanceler attackstring - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D99CD + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy ppreduce -BattleScript_82D99CD:: - accuracycheck BattleScript_82D99D4, ACC_CURR_MOVE -BattleScript_82D99D4:: +BattleScript_RolloutCheckAccuracy:: + accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE +BattleScript_RolloutHit:: typecalc2 rolloutdamagecalculation goto BattleScript_HitFromCritCalc @@ -1637,13 +1637,13 @@ BattleScript_EffectSwagger:: attackanimation waitanimation setstatchanger ATK, 2, FALSE - statbuffchange 0x1, BattleScript_82D9A1E - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9A1E + statbuffchange 0x1, BattleScript_SwaggerTryConfuse + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82D9A1E:: +BattleScript_SwaggerTryConfuse:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION @@ -1654,13 +1654,13 @@ BattleScript_EffectFuryCutter:: attackcanceler attackstring ppreduce - accuracycheck BattleScript_82D9A43, ACC_CURR_MOVE -BattleScript_82D9A43:: + accuracycheck BattleScript_FuryCutterHit, ACC_CURR_MOVE +BattleScript_FuryCutterHit:: furycuttercalc critcalc damagecalc typecalc - jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D9A43 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_FuryCutterHit adjustnormaldamage goto BattleScript_HitFromAtkAnimation @@ -1696,7 +1696,7 @@ BattleScript_EffectSafeguard:: attackstring ppreduce setsafeguard - goto BattleScript_82D928C + goto BattleScript_PrintReflectLightScreenSafeguardString BattleScript_EffectThawHit:: setmoveeffect EFFECT_BURN @@ -1768,7 +1768,7 @@ BattleScript_EffectRainDance:: attackstring ppreduce setrain -BattleScript_82D9B41:: +BattleScript_MoveWeatherChange:: attackanimation waitanimation printfromtable gMoveWeatherChangeStringIds @@ -1781,7 +1781,7 @@ BattleScript_EffectSunnyDay:: attackstring ppreduce setsunny - goto BattleScript_82D9B41 + goto BattleScript_MoveWeatherChange BattleScript_EffectDefenseUpHit:: setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER @@ -1831,25 +1831,25 @@ BattleScript_EffectMirrorCoat:: goto BattleScript_HitFromAtkAnimation BattleScript_EffectSkullBash:: - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 - jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x2 call BattleScriptFirstChargingTurn setstatchanger DEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9C16 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16 + statbuffchange AFFECTS_USER | 0x1, BattleScript_SkullBashEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82D9C16:: +BattleScript_SkullBashEnd:: goto BattleScript_MoveEnd BattleScript_EffectTwister:: - jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_82D9C35 + jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect orword gHitMarker, HITMARKER_IGNORE_ON_AIR setbyte sDMG_MULTIPLIER, 0x2 -BattleScript_82D9C35:: +BattleScript_FlinchEffect:: setmoveeffect EFFECT_FLINCH goto BattleScript_EffectHit @@ -1864,7 +1864,6 @@ BattleScript_82D9C44:: orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_82D9C73 - BattleScript_82D9C64:: bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND setbyte sDMG_MULTIPLIER, 0x1 @@ -1892,7 +1891,6 @@ BattleScript_82D9C73:: moveend 0x2, 0x10 jumpifnexttargetvalid BattleScript_82D9C44 end - BattleScript_82D9CAC:: pause 0x20 typecalc @@ -1922,17 +1920,17 @@ BattleScript_EffectGust:: goto BattleScript_EffectHit BattleScript_EffectStomp:: - jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_82D9C35 + jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect setbyte sDMG_MULTIPLIER, 0x2 - goto BattleScript_82D9C35 + goto BattleScript_FlinchEffect BattleScript_EffectSolarbeam:: - jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_82D9D28 - jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_82D9D28 + jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn + jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn -BattleScript_82D9D28:: - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9040 - jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_82D9040 +BattleScript_SolarbeamDecideTurn:: + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x1 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd @@ -1941,7 +1939,7 @@ BattleScript_SolarbeamOnFirstTurn:: setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary ppreduce - goto BattleScript_82D9040 + goto BattleScript_TwoTurnMovesSecondTurn BattleScript_EffectThunder:: setmoveeffect EFFECT_PARALYSIS @@ -2027,9 +2025,9 @@ BattleScript_SecondTurnSemiInvulnerable:: setbyte sANIM_TURN, 0x1 clearstatusfromeffect ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - jumpifnotmove MOVE_BOUNCE, BattleScript_82D9EA3 + jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit setmoveeffect EFFECT_PARALYSIS -BattleScript_82D9EA3:: +BattleScript_SemiInvulnerableTryHit:: accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE clearsemiinvulnerablebit goto BattleScript_HitFromAtkString @@ -2044,11 +2042,11 @@ BattleScript_EffectDefenseCurl:: ppreduce setdefensecurlbit setstatchanger DEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9ED3 + statbuffchange AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString attackanimation waitanimation -BattleScript_82D9ED3:: +BattleScript_DefenseCurlDoStatUpAnim:: goto BattleScript_StatUpDoAnim BattleScript_EffectSoftboiled:: @@ -2101,9 +2099,9 @@ BattleScript_EffectUproar:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE setmoveeffect EFFECT_UPROAR | AFFECTS_USER attackstring - jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D9F5A + jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit ppreduce -BattleScript_82D9F5A:: +BattleScript_UproarHit:: nop goto BattleScript_HitFromCritCalc @@ -2161,7 +2159,7 @@ BattleScript_EffectHail:: attackstring ppreduce sethail - goto BattleScript_82D9B41 + goto BattleScript_MoveWeatherChange BattleScript_EffectTorment:: attackcanceler @@ -2185,13 +2183,13 @@ BattleScript_EffectFlatter:: attackanimation waitanimation setstatchanger SPATK, 1, FALSE - statbuffchange 0x1, BattleScript_82DA03A - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA03A + statbuffchange 0x1, BattleScript_FlatterTryConfuse + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA03A:: +BattleScript_FlatterTryConfuse:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION @@ -2203,7 +2201,7 @@ BattleScript_EffectWillOWisp:: attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed - jumpifstatus TARGET, STATUS_BURN, BattleScript_82DA0BB + jumpifstatus TARGET, STATUS_BURN, BattleScript_AlreadyBurned jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed @@ -2221,7 +2219,7 @@ BattleScript_WaterVeilPrevents:: call BattleScript_BRNPrevention goto BattleScript_MoveEnd -BattleScript_82DA0BB:: +BattleScript_AlreadyBurned:: various ATTACKER, 0x17 pause 0x20 printstring STRINGID_PKMNALREADYHASBURN @@ -2679,9 +2677,9 @@ BattleScript_EffectTickle:: attackcanceler attackstring ppreduce - jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_82DA571 - jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_82DA5CF -BattleScript_82DA571:: + jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_TickleDoMoveAnim + jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_CantLowerMultipleStats +BattleScript_TickleDoMoveAnim:: accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE attackanimation waitanimation @@ -2689,21 +2687,21 @@ BattleScript_82DA571:: playstatchangeanimation TARGET, 0x6, 0x5 playstatchangeanimation TARGET, 0x2, 0x1 setstatchanger ATK, 1, TRUE - statbuffchange 0x1, BattleScript_82DA5A7 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5A7 + statbuffchange 0x1, BattleScript_TickleTryLowerDef + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef printfromtable gStatDownStringIds waitmessage 0x40 -BattleScript_82DA5A7:: +BattleScript_TickleTryLowerDef:: playstatchangeanimation TARGET, 0x4, 0x1 setstatchanger DEF, 1, TRUE - statbuffchange 0x1, BattleScript_82DA5CA - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA5CA + statbuffchange 0x1, BattleScript_TickleEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd printfromtable gStatDownStringIds waitmessage 0x40 -BattleScript_82DA5CA:: +BattleScript_TickleEnd:: goto BattleScript_MoveEnd -BattleScript_82DA5CF:: +BattleScript_CantLowerMultipleStats:: pause 0x20 orbyte gBattleMoveFlags, MOVESTATUS_FAILED printstring STRINGID_STATSWONTDECREASE2 @@ -2714,25 +2712,25 @@ BattleScript_EffectCosmicPower:: attackcanceler attackstring ppreduce - jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_82DA5F8 + jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats -BattleScript_82DA5F8:: +BattleScript_CosmicPowerDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x24, 0x0 setstatchanger DEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA623 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623 + statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA623:: +BattleScript_CosmicPowerTrySpDef:: setstatchanger SPDEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA642 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642 + statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA642:: +BattleScript_CosmicPowerEnd:: goto BattleScript_MoveEnd BattleScript_EffectSkyUppercut:: @@ -2743,50 +2741,50 @@ BattleScript_EffectBulkUp:: attackcanceler attackstring ppreduce - jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_82DA66A + jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_BulkUpDoMoveAnim jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats -BattleScript_82DA66A:: +BattleScript_BulkUpDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x6, 0x0 setstatchanger ATK, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA695 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695 + statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA695:: +BattleScript_BulkUpTryDef:: setstatchanger DEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6B4 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4 + statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA6B4:: +BattleScript_BulkUpEnd:: goto BattleScript_MoveEnd BattleScript_EffectCalmMind:: attackcanceler attackstring ppreduce - jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_82DA6CE + jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_CalmMindDoMoveAnim jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats -BattleScript_82DA6CE:: +BattleScript_CalmMindDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x30, 0x0 setstatchanger SPATK, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6F9 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9 + statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA6F9:: +BattleScript_CalmMindTrySpDef:: setstatchanger SPDEF, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA718 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718 + statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA718:: +BattleScript_CalmMindEnd:: goto BattleScript_MoveEnd BattleScript_CantRaiseMultipleStats:: @@ -2800,25 +2798,25 @@ BattleScript_EffectDragonDance:: attackcanceler attackstring ppreduce - jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_82DA746 + jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_DragonDanceDoMoveAnim jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats -BattleScript_82DA746:: +BattleScript_DragonDanceDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0xA, 0x0 setstatchanger ATK, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA771 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771 + statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA771:: +BattleScript_DragonDanceTrySpeed:: setstatchanger SPEED, 1, FALSE - statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA790 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790 + statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd printfromtable gStatUpStringIds waitmessage 0x40 -BattleScript_82DA790:: +BattleScript_DragonDanceEnd:: goto BattleScript_MoveEnd BattleScript_EffectCamouflage:: @@ -2964,23 +2962,22 @@ BattleScript_PayDayMoneyAndPickUpItems:: end2 BattleScript_LocalBattleLost:: - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOME, BattleScript_82DA9BE - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_82DA9C9 - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x4000000, BattleScript_82DA9C9 - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_EREADER_TRAINER, BattleScript_82DA9BD - jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_82DA9BD -BattleScript_82DA9B1:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd + jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd +BattleScript_LocalBattleLostPrintWhiteOut:: printstring STRINGID_PLAYERWHITEOUT waitmessage 0x40 printstring STRINGID_PLAYERWHITEOUT2 waitmessage 0x40 -BattleScript_82DA9BD:: +BattleScript_LocalBattleLostEnd:: end2 - -BattleScript_82DA9BE:: - jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_82DAA0A -BattleScript_82DA9C9:: - jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA9B1 +BattleScript_CheckDomeDrew:: + jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_ +BattleScript_LocalBattleLostPrintTrainersWinText:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut various ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 waitstate various ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 @@ -2988,15 +2985,15 @@ BattleScript_82DA9C9:: trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1WINTEXT - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x800000, BattleScript_82DAA01 - jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAA0A -BattleScript_82DAA01:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleLostEnd_ +BattleScript_LocalBattleLostDoTrainer2WinText:: trainerslideout IDENTITY_OPPONENT_MON1 waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2WINTEXT -BattleScript_82DAA0A:: +BattleScript_LocalBattleLostEnd_:: end2 BattleScript_82DAA0B:: @@ -3022,9 +3019,9 @@ BattleScript_LinkBattleWonOrLost:: jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER, BattleScript_82DAA5C printstring STRINGID_BATTLEEND waitmessage 0x40 - jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA58 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_LinkBattleWonOrLostWaitEnd atk57 -BattleScript_82DAA58:: +BattleScript_LinkBattleWonOrLostWaitEnd:: waitmessage 0x40 end2 @@ -3051,7 +3048,6 @@ BattleScript_FrontierTrainerBattleWon:: jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAAAB printstring STRINGID_PLAYERDEFEATEDTRAINER1 goto BattleScript_82DAAAE - BattleScript_82DAAAB:: printstring STRINGID_TWOENEMIESDEFEATED BattleScript_82DAAAE:: @@ -3104,7 +3100,7 @@ BattleScript_82DAB0B:: printselectionstringfromtable gNoEscapeStringIds endselectionscript -BattleScript_82DAB11:: +BattleScript_PrintFullBox:: printselectionstring STRINGID_BOXISFULL endselectionscript @@ -3216,23 +3212,23 @@ BattleScript_LearnedNewMove:: BattleScript_LearnMoveReturn:: return -BattleScript_82DAC2C:: +BattleScript_RainContinuesOrEnds:: printfromtable gRainContinuesStringIds waitmessage 0x40 - jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DAC46 + jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL -BattleScript_82DAC46:: +BattleScript_RainContinuesOrEndsEnd:: end2 -BattleScript_82DAC47:: +BattleScript_DamagingWeatherContinues:: printfromtable gSandStormHailContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL setbyte gBattleCommunication, 0x0 -BattleScript_82DAC5F:: +BattleScript_DamagingWeatherLoop:: copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1 weatherdamage - jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_82DACA0 + jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement printfromtable gSandStormHailDmgStringIds waitmessage 0x40 orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE @@ -3241,38 +3237,38 @@ BattleScript_82DAC5F:: healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL - atk24 BattleScript_82DACA0 -BattleScript_82DACA0:: - jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_82DACBF + atk24 BattleScript_DamagingWeatherLoopIncrement +BattleScript_DamagingWeatherLoopIncrement:: + jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd addbyte gBattleCommunication, 0x1 - jumpifbytenotequal gBattleCommunication, gNoOfAllBanks, BattleScript_82DAC5F -BattleScript_82DACBF:: + jumpifbytenotequal gBattleCommunication, gNoOfAllBanks, BattleScript_DamagingWeatherLoop +BattleScript_DamagingWeatherContinuesEnd:: bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE end2 -BattleScript_82DACC9:: +BattleScript_SandStormHailEnds:: printfromtable gSandStormHailEndStringIds waitmessage 0x40 end2 -BattleScript_82DACD2:: +BattleScript_SunlightContinues:: printstring STRINGID_SUNLIGHTSTRONG waitmessage 0x40 playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL end2 -BattleScript_82DACE0:: +BattleScript_SunlightFaded:: printstring STRINGID_SUNLIGHTFADED waitmessage 0x40 end2 -BattleScript_82DACE7:: +BattleScript_OverworldWeatherStarts:: printfromtable gWeatherContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL end3 -BattleScript_82DACFA:: +BattleScript_SideStatusWoreOff:: printstring STRINGID_PKMNSXWOREOFF waitmessage 0x40 end2 @@ -3283,7 +3279,7 @@ BattleScript_SafeguardProtected:: waitmessage 0x40 end2 -BattleScript_82DAD0B:: +BattleScript_SafeguardEnds:: pause 0x20 printstring STRINGID_PKMNSAFEGUARDEXPIRED waitmessage 0x40 @@ -3384,7 +3380,7 @@ BattleScript_MoveUsedIsDisabled:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82DAE1F:: +BattleScript_SelectingDisabledMove:: printselectionstring STRINGID_PKMNMOVEISDISABLED endselectionscript @@ -3583,7 +3579,7 @@ BattleScript_NoMovesLeft:: printselectionstring STRINGID_PKMNHASNOMOVESLEFT endselectionscript -BattleScript_82DB076:: +BattleScript_SelectingMoveWithNoPP:: printselectionstring STRINGID_NOPPLEFT endselectionscript @@ -3594,7 +3590,7 @@ BattleScript_NoPPForMove:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82DB089:: +BattleScript_SelectingTormentedMove:: printselectionstring STRINGID_PKMNCANTUSEMOVETORMENT endselectionscript @@ -3607,7 +3603,7 @@ BattleScript_82DB098:: printstring STRINGID_PKMNCANTUSEMOVETORMENT goto BattleScript_82DAE2D -BattleScript_82DB0A0:: +BattleScript_SelectingNotAllowedMoveTaunt:: printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT endselectionscript @@ -3685,7 +3681,7 @@ BattleScript_MoveUsedIsImprisoned:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82DB181:: +BattleScript_SelectingImprisionedMove:: printselectionstring STRINGID_PKMNCANTUSEMOVESEALED endselectionscript @@ -4123,9 +4119,9 @@ BattleScript_MoveHPDrain:: orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED goto BattleScript_MoveEnd -BattleScript_82DB591:: +BattleScript_MonMadeMoveUseless_PPLoss:: ppreduce -BattleScript_82DB592:: +BattleScript_MonMadeMoveUseless:: attackstring pause 0x20 printstring STRINGID_PKMNSXMADEYUSELESS @@ -4247,7 +4243,7 @@ BattleScript_NoItemSteal:: waitmessage 0x40 return -BattleScript_82DB68C:: +BattleScript_AbilityCuredStatus:: printstring STRINGID_PKMNSXCUREDITSYPROBLEM waitmessage 0x40 updatestatusicon SCRIPTING_BANK @@ -4260,7 +4256,7 @@ BattleScript_82DB695:: moveend 0x2, 0x10 end -BattleScript_82DB6A5:: +BattleScript_IgnoresAndUsesRandomMove:: printstring STRINGID_PKMNIGNOREDORDERS waitmessage 0x40 jumptorandomattack 0x0 @@ -4277,7 +4273,7 @@ BattleScript_82DB6C7:: moveend 0x2, 0x10 end -BattleScript_82DB6D9:: +BattleScript_IgnoresAndFallsAsleep:: printstring STRINGID_PKMNBEGANTONAP waitmessage 0x40 setmoveeffect EFFECT_SLEEP | AFFECTS_USER @@ -4420,7 +4416,7 @@ BattleScript_ItemHealHP_Ret:: datahpupdate ATTACKER return -BattleScript_82DB812:: +BattleScript_SelectingNotAllowedMoveChoiceItem:: printselectionstring STRINGID_ITEMALLOWSONLYYMOVE endselectionscript diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index f54b0a6a0..88991ccd0 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -58,7 +58,7 @@ BattleScript_SafariBallThrow:: handleballthrow BattleScript_SuccessBallThrow:: - jumpifhalfword EQUAL, gLastUsedItem, 0x5, BattleScript_82DBD92 + jumpifhalfword EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_82DBD92 incrementgamestat 0xB BattleScript_82DBD92:: printstring STRINGID_GOTCHAPKMNCAUGHT diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 053942b9f..9c3f4906a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -76,17 +76,17 @@ extern const u8 BattleScript_EffectPayDay[]; extern const u8 BattleScript_EffectLightScreen[]; extern const u8 BattleScript_EffectTriAttack[]; extern const u8 BattleScript_EffectRest[]; -extern const u8 BattleScript_82D8FC6[]; -extern const u8 BattleScript_82D8FD6[]; +extern const u8 BattleScript_RestCantSleep[]; +extern const u8 BattleScript_RestIsAlreadyAsleep[]; extern const u8 BattleScript_EffectOHKO[]; extern const u8 BattleScript_KOFail[]; extern const u8 BattleScript_EffectRazorWind[]; -extern const u8 BattleScript_82D9040[]; +extern const u8 BattleScript_TwoTurnMovesSecondTurn[]; extern const u8 BattleScriptFirstChargingTurn[]; extern const u8 BattleScript_EffectSuperFang[]; extern const u8 BattleScript_EffectDragonRage[]; extern const u8 BattleScript_EffectTrap[]; -extern const u8 BattleScript_82D9105[]; +extern const u8 BattleScript_DoWrapEffect[]; extern const u8 BattleScript_EffectDoubleHit[]; extern const u8 BattleScript_EffectRecoilIfMiss[]; extern const u8 BattleScript_82D9135[]; @@ -106,7 +106,7 @@ extern const u8 BattleScript_EffectDefenseDown2[]; extern const u8 BattleScript_EffectSpeedDown2[]; extern const u8 BattleScript_EffectSpecialDefenseDown2[]; extern const u8 BattleScript_EffectReflect[]; -extern const u8 BattleScript_82D928C[]; +extern const u8 BattleScript_PrintReflectLightScreenSafeguardString[]; extern const u8 BattleScript_EffectPoison[]; extern const u8 BattleScript_EffectParalyze[]; extern const u8 BattleScript_AlreadyParalyzed[]; @@ -121,9 +121,9 @@ extern const u8 BattleScript_EffectSkyAttack[]; extern const u8 BattleScript_EffectConfuseHit[]; extern const u8 BattleScript_EffectTwineedle[]; extern const u8 BattleScript_EffectSubstitute[]; -extern const u8 BattleScript_82D942B[]; -extern const u8 BattleScript_82D9431[]; -extern const u8 BattleScript_82D943E[]; +extern const u8 BattleScript_SubstituteAnim[]; +extern const u8 BattleScript_SubstituteString[]; +extern const u8 BattleScript_AlreadyHasSubstitute[]; extern const u8 BattleScript_EffectRecharge[]; extern const u8 BattleScript_MoveUsedMustRecharge[]; extern const u8 BattleScript_EffectRage[]; @@ -131,7 +131,7 @@ extern const u8 BattleScript_RageMiss[]; extern const u8 BattleScript_EffectMimic[]; extern const u8 BattleScript_EffectMetronome[]; extern const u8 BattleScript_EffectLeechSeed[]; -extern const u8 BattleScript_82D94E5[]; +extern const u8 BattleScript_DoLeechSeed[]; extern const u8 BattleScript_EffectSplash[]; extern const u8 BattleScript_EffectDisable[]; extern const u8 BattleScript_EffectLevelDamage[]; @@ -140,8 +140,8 @@ extern const u8 BattleScript_EffectCounter[]; extern const u8 BattleScript_EffectEncore[]; extern const u8 BattleScript_EffectPainSplit[]; extern const u8 BattleScript_EffectSnore[]; -extern const u8 BattleScript_82D95CE[]; -extern const u8 BattleScript_82D95E2[]; +extern const u8 BattleScript_SnoreIsAsleep[]; +extern const u8 BattleScript_DoSnore[]; extern const u8 BattleScript_EffectConversion2[]; extern const u8 BattleScript_EffectLockOn[]; extern const u8 BattleScript_EffectSketch[]; @@ -152,11 +152,11 @@ extern const u8 BattleScript_EffectDestinyBond[]; extern const u8 BattleScript_EffectFlail[]; extern const u8 BattleScript_EffectSpite[]; extern const u8 BattleScript_EffectHealBell[]; -extern const u8 BattleScript_82D96ED[]; -extern const u8 BattleScript_82D96FE[]; +extern const u8 BattleScript_CheckHealBellMon2Unaffected[]; +extern const u8 BattleScript_PartyHealEnd[]; extern const u8 BattleScript_EffectTripleKick[]; extern const u8 BattleScript_TripleKickLoop[]; -extern const u8 BattleScript_82D973A[]; +extern const u8 BattleScript_DoTripleKickAttack[]; extern const u8 BattleScript_TripleKickNoMoreHits[]; extern const u8 BattleScript_TripleKickPrintStrings[]; extern const u8 BattleScript_TripleKickEnd[]; @@ -181,12 +181,12 @@ extern const u8 BattleScript_PerishSongLoopIncrement[]; extern const u8 BattleScript_PerishSongNotAffected[]; extern const u8 BattleScript_EffectSandstorm[]; extern const u8 BattleScript_EffectRollout[]; -extern const u8 BattleScript_82D99CD[]; -extern const u8 BattleScript_82D99D4[]; +extern const u8 BattleScript_RolloutCheckAccuracy[]; +extern const u8 BattleScript_RolloutHit[]; extern const u8 BattleScript_EffectSwagger[]; -extern const u8 BattleScript_82D9A1E[]; +extern const u8 BattleScript_SwaggerTryConfuse[]; extern const u8 BattleScript_EffectFuryCutter[]; -extern const u8 BattleScript_82D9A43[]; +extern const u8 BattleScript_FuryCutterHit[]; extern const u8 BattleScript_EffectAttract[]; extern const u8 BattleScript_EffectReturn[]; extern const u8 BattleScript_EffectPresent[]; @@ -199,7 +199,7 @@ extern const u8 BattleScript_EffectSonicboom[]; extern const u8 BattleScript_EffectMorningSun[]; extern const u8 BattleScript_EffectHiddenPower[]; extern const u8 BattleScript_EffectRainDance[]; -extern const u8 BattleScript_82D9B41[]; +extern const u8 BattleScript_MoveWeatherChange[]; extern const u8 BattleScript_EffectSunnyDay[]; extern const u8 BattleScript_EffectDefenseUpHit[]; extern const u8 BattleScript_EffectAttackUpHit[]; @@ -208,9 +208,9 @@ extern const u8 BattleScript_EffectBellyDrum[]; extern const u8 BattleScript_EffectPsychUp[]; extern const u8 BattleScript_EffectMirrorCoat[]; extern const u8 BattleScript_EffectSkullBash[]; -extern const u8 BattleScript_82D9C16[]; +extern const u8 BattleScript_SkullBashEnd[]; extern const u8 BattleScript_EffectTwister[]; -extern const u8 BattleScript_82D9C35[]; +extern const u8 BattleScript_FlinchEffect[]; extern const u8 BattleScript_EffectEarthquake[]; extern const u8 BattleScript_82D9C44[]; extern const u8 BattleScript_82D9C64[]; @@ -220,7 +220,7 @@ extern const u8 BattleScript_EffectFutureSight[]; extern const u8 BattleScript_EffectGust[]; extern const u8 BattleScript_EffectStomp[]; extern const u8 BattleScript_EffectSolarbeam[]; -extern const u8 BattleScript_82D9D28[]; +extern const u8 BattleScript_SolarbeamDecideTurn[]; extern const u8 BattleScript_SolarbeamOnFirstTurn[]; extern const u8 BattleScript_EffectThunder[]; extern const u8 BattleScript_EffectTeleport[]; @@ -234,10 +234,10 @@ extern const u8 BattleScript_FirstTurnDive[]; extern const u8 BattleScript_FirstTurnFly[]; extern const u8 BattleScript_FirstTurnSemiInvulnerable[]; extern const u8 BattleScript_SecondTurnSemiInvulnerable[]; -extern const u8 BattleScript_82D9EA3[]; +extern const u8 BattleScript_SemiInvulnerableTryHit[]; extern const u8 BattleScript_SemiInvulnerableMiss[]; extern const u8 BattleScript_EffectDefenseCurl[]; -extern const u8 BattleScript_82D9ED3[]; +extern const u8 BattleScript_DefenseCurlDoStatUpAnim[]; extern const u8 BattleScript_EffectSoftboiled[]; extern const u8 BattleScript_PresentHealTarget[]; extern const u8 BattleScript_AlreadyAtFullHp[]; @@ -247,7 +247,7 @@ extern const u8 BattleScript_ButItFailedPpReduce[]; extern const u8 BattleScript_ButItFailed[]; extern const u8 BattleScript_NotAffected[]; extern const u8 BattleScript_EffectUproar[]; -extern const u8 BattleScript_82D9F5A[]; +extern const u8 BattleScript_UproarHit[]; extern const u8 BattleScript_EffectStockpile[]; extern const u8 BattleScript_EffectSpitUp[]; extern const u8 BattleScript_SpitUpFail[]; @@ -257,10 +257,10 @@ extern const u8 BattleScript_SwallowFail[]; extern const u8 BattleScript_EffectHail[]; extern const u8 BattleScript_EffectTorment[]; extern const u8 BattleScript_EffectFlatter[]; -extern const u8 BattleScript_82DA03A[]; +extern const u8 BattleScript_FlatterTryConfuse[]; extern const u8 BattleScript_EffectWillOWisp[]; extern const u8 BattleScript_WaterVeilPrevents[]; -extern const u8 BattleScript_82DA0BB[]; +extern const u8 BattleScript_AlreadyBurned[]; extern const u8 BattleScript_EffectMemento[]; extern const u8 BattleScript_82DA119[]; extern const u8 BattleScript_82DA13C[]; @@ -317,28 +317,28 @@ extern const u8 BattleScript_EffectPoisonFang[]; extern const u8 BattleScript_EffectWeatherBall[]; extern const u8 BattleScript_EffectOverheat[]; extern const u8 BattleScript_EffectTickle[]; -extern const u8 BattleScript_82DA571[]; -extern const u8 BattleScript_82DA5A7[]; -extern const u8 BattleScript_82DA5CA[]; -extern const u8 BattleScript_82DA5CF[]; +extern const u8 BattleScript_TickleDoMoveAnim[]; +extern const u8 BattleScript_TickleTryLowerDef[]; +extern const u8 BattleScript_TickleEnd[]; +extern const u8 BattleScript_CantLowerMultipleStats[]; extern const u8 BattleScript_EffectCosmicPower[]; -extern const u8 BattleScript_82DA5F8[]; -extern const u8 BattleScript_82DA623[]; -extern const u8 BattleScript_82DA642[]; +extern const u8 BattleScript_CosmicPowerDoMoveAnim[]; +extern const u8 BattleScript_CosmicPowerTrySpDef[]; +extern const u8 BattleScript_CosmicPowerEnd[]; extern const u8 BattleScript_EffectSkyUppercut[]; extern const u8 BattleScript_EffectBulkUp[]; -extern const u8 BattleScript_82DA66A[]; -extern const u8 BattleScript_82DA695[]; -extern const u8 BattleScript_82DA6B4[]; +extern const u8 BattleScript_BulkUpDoMoveAnim[]; +extern const u8 BattleScript_BulkUpTryDef[]; +extern const u8 BattleScript_BulkUpEnd[]; extern const u8 BattleScript_EffectCalmMind[]; -extern const u8 BattleScript_82DA6CE[]; -extern const u8 BattleScript_82DA6F9[]; -extern const u8 BattleScript_82DA718[]; +extern const u8 BattleScript_CalmMindDoMoveAnim[]; +extern const u8 BattleScript_CalmMindTrySpDef[]; +extern const u8 BattleScript_CalmMindEnd[]; extern const u8 BattleScript_CantRaiseMultipleStats[]; extern const u8 BattleScript_EffectDragonDance[]; -extern const u8 BattleScript_82DA746[]; -extern const u8 BattleScript_82DA771[]; -extern const u8 BattleScript_82DA790[]; +extern const u8 BattleScript_DragonDanceDoMoveAnim[]; +extern const u8 BattleScript_DragonDanceTrySpeed[]; +extern const u8 BattleScript_DragonDanceEnd[]; extern const u8 BattleScript_EffectCamouflage[]; extern const u8 BattleScript_FaintAttacker[]; extern const u8 BattleScript_FaintTarget[]; @@ -357,16 +357,16 @@ extern const u8 BattleScript_LocalBattleWonLoseTexts[]; extern const u8 BattleScript_LocalBattleWonReward[]; extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; extern const u8 BattleScript_LocalBattleLost[]; -extern const u8 BattleScript_82DA9B1[]; -extern const u8 BattleScript_82DA9BD[]; -extern const u8 BattleScript_82DA9BE[]; -extern const u8 BattleScript_82DA9C9[]; -extern const u8 BattleScript_82DAA01[]; -extern const u8 BattleScript_82DAA0A[]; +extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; +extern const u8 BattleScript_LocalBattleLostEnd[]; +extern const u8 BattleScript_CheckDomeDrew[]; +extern const u8 BattleScript_LocalBattleLostPrintTrainersWinText[]; +extern const u8 BattleScript_LocalBattleLostDoTrainer2WinText[]; +extern const u8 BattleScript_LocalBattleLostEnd_[]; extern const u8 BattleScript_82DAA0B[]; extern const u8 BattleScript_82DAA31[]; extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_82DAA58[]; +extern const u8 BattleScript_LinkBattleWonOrLostWaitEnd[]; extern const u8 BattleScript_82DAA5C[]; extern const u8 BattleScript_82DAA83[]; extern const u8 BattleScript_FrontierTrainerBattleWon[]; @@ -381,7 +381,7 @@ extern const u8 BattleScript_WildMonFled[]; extern const u8 BattleScript_82DAAFE[]; extern const u8 BattleScript_PrintFailedToRunString[]; extern const u8 BattleScript_82DAB0B[]; -extern const u8 BattleScript_82DAB11[]; +extern const u8 BattleScript_PrintFullBox[]; extern const u8 BattleScript_ActionSwitch[]; extern const u8 BattleScript_82DAB35[]; extern const u8 BattleScript_82DAB37[]; @@ -395,19 +395,19 @@ extern const u8 BattleScript_AskToLearnMove[]; extern const u8 BattleScript_ForgotAndLearnedNewMove[]; extern const u8 BattleScript_LearnedNewMove[]; extern const u8 BattleScript_LearnMoveReturn[]; -extern const u8 BattleScript_82DAC2C[]; -extern const u8 BattleScript_82DAC46[]; -extern const u8 BattleScript_82DAC47[]; -extern const u8 BattleScript_82DAC5F[]; -extern const u8 BattleScript_82DACA0[]; -extern const u8 BattleScript_82DACBF[]; -extern const u8 BattleScript_82DACC9[]; -extern const u8 BattleScript_82DACD2[]; -extern const u8 BattleScript_82DACE0[]; -extern const u8 BattleScript_82DACE7[]; -extern const u8 BattleScript_82DACFA[]; +extern const u8 BattleScript_RainContinuesOrEnds[]; +extern const u8 BattleScript_RainContinuesOrEndsEnd[]; +extern const u8 BattleScript_DamagingWeatherContinues[]; +extern const u8 BattleScript_DamagingWeatherLoop[]; +extern const u8 BattleScript_DamagingWeatherLoopIncrement[]; +extern const u8 BattleScript_DamagingWeatherContinuesEnd[]; +extern const u8 BattleScript_SandStormHailEnds[]; +extern const u8 BattleScript_SunlightContinues[]; +extern const u8 BattleScript_SunlightFaded[]; +extern const u8 BattleScript_OverworldWeatherStarts[]; +extern const u8 BattleScript_SideStatusWoreOff[]; extern const u8 BattleScript_SafeguardProtected[]; -extern const u8 BattleScript_82DAD0B[]; +extern const u8 BattleScript_SafeguardEnds[]; extern const u8 BattleScript_LeechSeedTurnDrain[]; extern const u8 BattleScript_82DAD47[]; extern const u8 BattleScript_82DAD4D[]; @@ -419,7 +419,7 @@ extern const u8 BattleScript_82DADF1[]; extern const u8 BattleScript_MistProtected[]; extern const u8 BattleScript_RageIsBuilding[]; extern const u8 BattleScript_MoveUsedIsDisabled[]; -extern const u8 BattleScript_82DAE1F[]; +extern const u8 BattleScript_SelectingDisabledMove[]; extern const u8 BattleScript_DisabledNoMore[]; extern const u8 BattleScript_82DAE2A[]; extern const u8 BattleScript_82DAE2D[]; @@ -453,12 +453,12 @@ extern const u8 BattleScript_82DB027[]; extern const u8 BattleScript_82DB03F[]; extern const u8 BattleScript_82DB058[]; extern const u8 BattleScript_NoMovesLeft[]; -extern const u8 BattleScript_82DB076[]; +extern const u8 BattleScript_SelectingMoveWithNoPP[]; extern const u8 BattleScript_NoPPForMove[]; -extern const u8 BattleScript_82DB089[]; +extern const u8 BattleScript_SelectingTormentedMove[]; extern const u8 BattleScript_82DB08D[]; extern const u8 BattleScript_82DB098[]; -extern const u8 BattleScript_82DB0A0[]; +extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[]; extern const u8 BattleScript_MoveUsedIsTaunted[]; extern const u8 BattleScript_82DB0AF[]; extern const u8 BattleScript_WishComesTrue[]; @@ -470,7 +470,7 @@ extern const u8 BattleScript_82DB144[]; extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; -extern const u8 BattleScript_82DB181[]; +extern const u8 BattleScript_SelectingImprisionedMove[]; extern const u8 BattleScript_82DB185[]; extern const u8 BattleScript_GrudgeTakesPp[]; extern const u8 BattleScript_MagicCoatBounce[]; @@ -546,8 +546,8 @@ extern const u8 BattleScript_SturdyPreventsOHKO[]; extern const u8 BattleScript_DampStopsExplosion[]; extern const u8 BattleScript_MoveHPDrain_PPLoss[]; extern const u8 BattleScript_MoveHPDrain[]; -extern const u8 BattleScript_82DB591[]; -extern const u8 BattleScript_82DB592[]; +extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[]; +extern const u8 BattleScript_MonMadeMoveUseless[]; extern const u8 BattleScript_FlashFireBoost_PPLoss[]; extern const u8 BattleScript_FlashFireBoost[]; extern const u8 BattleScript_82DB5B9[]; @@ -567,12 +567,12 @@ extern const u8 BattleScript_CuteCharmActivates[]; extern const u8 BattleScript_ApplySecondaryEffect[]; extern const u8 BattleScript_SynchronizeActivates[]; extern const u8 BattleScript_NoItemSteal[]; -extern const u8 BattleScript_82DB68C[]; +extern const u8 BattleScript_AbilityCuredStatus[]; extern const u8 BattleScript_82DB695[]; -extern const u8 BattleScript_82DB6A5[]; +extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; extern const u8 BattleScript_MoveUsedLoafingAround[]; extern const u8 BattleScript_82DB6C7[]; -extern const u8 BattleScript_82DB6D9[]; +extern const u8 BattleScript_IgnoresAndFallsAsleep[]; extern const u8 BattleScript_82DB6F0[]; extern const u8 BattleScript_SubstituteFade[]; extern const u8 BattleScript_BerryCurePrlzEnd2[]; @@ -595,7 +595,7 @@ extern const u8 BattleScript_ItemHealHP_RemoveItem[]; extern const u8 BattleScript_BerryPPHealEnd2[]; extern const u8 BattleScript_ItemHealHP_End2[]; extern const u8 BattleScript_ItemHealHP_Ret[]; -extern const u8 BattleScript_82DB812[]; +extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; extern const u8 BattleScript_HangedOnMsg[]; extern const u8 BattleScript_BerryConfuseHealEnd2[]; extern const u8 BattleScript_BerryStatRaiseEnd2[]; diff --git a/src/battle_2.c b/src/battle_2.c index 53437811a..b03e96622 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -120,7 +120,7 @@ extern u32 gBattleExecBuffer; extern u8 gMultiHitCounter; extern u8 gBattleMoveFlags; extern s32 gBattleMoveDamage; -extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; +extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern u16 gOriginallyLastPrintedMoves[BATTLE_BANKS_COUNT]; extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; @@ -141,7 +141,7 @@ extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gCurrentActionFuncId; extern u8 gLastUsedAbility; extern u8 gUnknown_0203CF00[]; -extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; +extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern const u8* gBattlescriptCurrInstr; extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; extern u8 gCurrentTurnActionNumber; @@ -2751,7 +2751,7 @@ static void BattleStartClearSetData(void) gLockedMoves[i] = 0; gOriginallyLastPrintedMoves[i] = 0; gBattleResources->flags->flags[i] = 0; - gSelectionBattleScripts[i] = 0; + gPalaceSelectionBattleScripts[i] = 0; } for (i = 0; i < 2; i++) @@ -3983,7 +3983,7 @@ static void HandleTurnActionSelectionState(void) | BATTLE_TYPE_x2000000)) { RecordedBattle_ClearBankAction(gActiveBank, 1); - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; + gSelectionBattleScripts[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4028,7 +4028,7 @@ static void HandleTurnActionSelectionState(void) case ACTION_SAFARI_ZONE_BALL: if (IsPlayerPartyAndPokemonStorageFull()) { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAB11; + gSelectionBattleScripts[gActiveBank] = BattleScript_PrintFullBox; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4083,7 +4083,7 @@ static void HandleTurnActionSelectionState(void) && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB9BA; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DB9BA; gBattleCommunication[gActiveBank] = 8; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4099,7 +4099,7 @@ static void HandleTurnActionSelectionState(void) else if (IsRunningFromBattleImpossible() != 0 && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAB0B; + gSelectionBattleScripts[gActiveBank] = BattleScript_82DAB0B; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4252,12 +4252,12 @@ static void HandleTurnActionSelectionState(void) else { gBankAttacker = gActiveBank; - gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank]; if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } - gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr; } break; case STATE_WAIT_SET_BEFORE_ACTION: @@ -4284,12 +4284,12 @@ static void HandleTurnActionSelectionState(void) else { gBankAttacker = gActiveBank; - gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank]; if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } - gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr; } break; } @@ -5217,11 +5217,11 @@ static void HandleAction_UseMove(void) gCurrentActionFuncId = 12; return; } - else if (gSelectionBattleScripts[gBankAttacker] != NULL) + else if (gPalaceSelectionBattleScripts[gBankAttacker] != NULL) { gBattleCommunication[MULTISTRING_CHOOSER] = 4; - gBattlescriptCurrInstr = gSelectionBattleScripts[gBankAttacker]; - gSelectionBattleScripts[gBankAttacker] = NULL; + gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBankAttacker]; + gPalaceSelectionBattleScripts[gBankAttacker] = NULL; } else { diff --git a/src/battle_util.c b/src/battle_util.c index 9f2bf2797..021251b35 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -22,8 +22,8 @@ #include "link.h" extern const u8* gBattlescriptCurrInstr; -extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; +extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gActiveBank; extern u8 gStringBank; @@ -363,12 +363,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DAE2A; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DAE2A; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DAE1F; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMove; limitations = 1; } } @@ -378,12 +378,12 @@ u8 TrySetCantSelectMoveBattleScript(void) CancelMultiTurnMoves(gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DB098; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB098; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB089; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMove; limitations++; } } @@ -393,12 +393,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DB0AF; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB0AF; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB0A0; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTaunt; limitations++; } } @@ -408,12 +408,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DB185; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB185; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB181; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMove; limitations++; } } @@ -435,7 +435,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB812; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveChoiceItem; limitations++; } } @@ -448,7 +448,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_82DB076; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingMoveWithNoPP; limitations++; } } @@ -499,7 +499,7 @@ bool8 AreAllMovesUnusable(void) if (unusable == 0xF) // all moves are unusable { gProtectStructs[gActiveBank].onlyStruggle = 1; - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_NoMovesLeft; + gSelectionBattleScripts[gActiveBank] = BattleScript_NoMovesLeft; } else { @@ -583,7 +583,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].reflectTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; - BattleScriptExecute(BattleScript_82DACFA); + BattleScriptExecute(BattleScript_SideStatusWoreOff); PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); effect++; } @@ -608,7 +608,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].lightscreenTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; - BattleScriptExecute(BattleScript_82DACFA); + BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); effect++; @@ -633,7 +633,7 @@ u8 UpdateTurnCounters(void) && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; - BattleScriptExecute(BattleScript_82DACFA); + BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); effect++; @@ -658,7 +658,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].safeguardTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; - BattleScriptExecute(BattleScript_82DAD0B); + BattleScriptExecute(BattleScript_SafeguardEnds); effect++; } } @@ -710,10 +710,15 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + { gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } else + { gBattleCommunication[MULTISTRING_CHOOSER] = 0; - BattleScriptExecute(BattleScript_82DAC2C); + } + + BattleScriptExecute(BattleScript_RainContinuesOrEnds); effect++; } gBattleStruct->turncountersTracker++; @@ -724,12 +729,14 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_82DACC9; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else - gBattlescriptCurrInstr = BattleScript_82DAC47; + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } - gBattleScripting.animArg1 = 0xC; + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -742,10 +749,12 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SUN_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_82DACE0; + gBattlescriptCurrInstr = BattleScript_SunlightFaded; } else - gBattlescriptCurrInstr = BattleScript_82DACD2; + { + gBattlescriptCurrInstr = BattleScript_SunlightContinues; + } BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -758,12 +767,13 @@ u8 UpdateTurnCounters(void) if (--gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_HAIL; - gBattlescriptCurrInstr = BattleScript_82DACC9; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else { - gBattlescriptCurrInstr = BattleScript_82DAC47; + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; } + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); @@ -1828,7 +1838,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect) { gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); - BattleScriptPushCursorAndCallback(BattleScript_82DACE7); + BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); } break; case ABILITY_DRIZZLE: @@ -2034,9 +2044,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = BattleScript_82DB592; + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless; else - gBattlescriptCurrInstr = BattleScript_82DB591; + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless_PPLoss; } else { @@ -2174,86 +2184,84 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_IMMUNITY: // 5 + for (bank = 0; bank < gNoOfAllBanks; bank++) { - for (bank = 0; bank < gNoOfAllBanks; bank++) + switch (gBattleMons[bank].ability) { - switch (gBattleMons[bank].ability) + case ABILITY_IMMUNITY: + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER)) { - case ABILITY_IMMUNITY: - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER)) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - effect = 1; - } - break; - case ABILITY_OWN_TEMPO: - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - effect = 2; - } - break; - case ABILITY_LIMBER: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - effect = 1; - } - break; - case ABILITY_INSOMNIA: - case ABILITY_VITAL_SPIRIT: - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - effect = 1; - } - break; - case ABILITY_WATER_VEIL: - if (gBattleMons[bank].status1 & STATUS_BURN) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - effect = 1; - } + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[bank].status1 = 0; break; - case ABILITY_MAGMA_ARMOR: - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - effect = 1; - } + case 2: // get rid of confusion + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); break; - case ABILITY_OBLIVIOUS: - if (gBattleMons[bank].status2 & STATUS2_INFATUATION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - effect = 3; - } + case 3: // get rid of infatuation + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); break; } - if (effect) - { - switch (effect) - { - case 1: // status cleared - gBattleMons[bank].status1 = 0; - break; - case 2: // get rid of confusion - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - break; - case 3: // get rid of infatuation - gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); - break; - } - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_82DB68C; - gBattleScripting.bank = bank; - gActiveBank = bank; - EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - return effect; - } + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + gBattleScripting.bank = bank; + gActiveBank = bank; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + return effect; } } break; @@ -3387,7 +3395,7 @@ u8 IsPokeDisobedient(void) } while (gBitTable[gCurrMovePos] & calc); gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; - gBattlescriptCurrInstr = BattleScript_82DB6A5; + gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; gBankTarget = GetMoveTarget(gRandomMove, 0); gHitMarker |= HITMARKER_x200000; return 2; @@ -3409,7 +3417,7 @@ u8 IsPokeDisobedient(void) } if (i == gNoOfAllBanks) { - gBattlescriptCurrInstr = BattleScript_82DB6D9; + gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; return 1; } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 16cc33355..cff1df585 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -363,10 +363,10 @@ gBattlescriptCurrInstr: @ 2024214 gActionForBanks: @ 202421C .space 0x4 -gBattlescriptPtrsForSelection: @ 2024220 +gSelectionBattleScripts: @ 2024220 .space 0x10 -gSelectionBattleScripts: @ 2024230 +gPalaceSelectionBattleScripts: @ 2024230 .space 0x10 gOriginallyLastPrintedMoves: @ 2024240 -- cgit v1.2.3 From 59f64c622bf2ed7a0fcc6d45975813bc55c84141 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 17:26:11 +0100 Subject: name more battlescripts --- data/battle_scripts_1.s | 19 +++++++++---------- include/battle_scripts.h | 16 ++++++++-------- src/battle_2.c | 8 ++++---- src/battle_message.c | 2 +- src/battle_util.c | 10 +++++----- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a213225c6..5e7488108 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3087,7 +3087,7 @@ BattleScript_WildMonFled:: waitmessage 0x40 end2 -BattleScript_82DAAFE:: +BattleScript_PrintCantRunFromTrainer:: printstring STRINGID_NORUNNINGFROMTRAINERS end2 @@ -3096,7 +3096,7 @@ BattleScript_PrintFailedToRunString:: waitmessage 0x40 end2 -BattleScript_82DAB0B:: +BattleScript_PrintCantEscapeFromBattle:: printselectionstringfromtable gNoEscapeStringIds endselectionscript @@ -3463,7 +3463,7 @@ BattleScript_82DAEFE:: waitmessage 0x40 return -BattleScript_82DAF05:: +BattleScript_PerishSongTakesLife:: printstring STRINGID_PKMNPERISHCOUNTFELL waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 @@ -3472,7 +3472,7 @@ BattleScript_82DAF05:: tryfaintmon ATTACKER, FALSE, NULL end2 -BattleScript_82DAF20:: +BattleScript_PerishSongCountGoesDown:: printstring STRINGID_PKMNPERISHCOUNTFELL waitmessage 0x40 end2 @@ -3533,7 +3533,7 @@ BattleScript_SpikesFree:: waitmessage 0x40 return -BattleScript_82DAFE4:: +BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage 0x40 jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB001 @@ -3565,7 +3565,6 @@ BattleScript_82DB03F:: moveend 0x2, 0xE setbyte gBattleMoveFlags, 0 end2 - BattleScript_82DB058:: pause 0x20 setbyte gBattleMoveFlags, 0 @@ -3757,7 +3756,7 @@ BattleScript_MoveUsedWokeUp:: updatestatusicon ATTACKER return -BattleScript_82DB234:: +BattleScript_MonWokeUpInUproar:: printstring STRINGID_PKMNWOKEUPINUPROAR waitmessage 0x40 updatestatusicon ATTACKER @@ -3812,8 +3811,8 @@ BattleScript_MoveUsedFlinched:: waitmessage 0x40 goto BattleScript_MoveEnd -BattleScript_82DB2A6:: - printfromtable gUproarOvetTurnStringIds +BattleScript_PrintUproarOverTurns:: + printfromtable gUproarOverTurnStringIds waitmessage 0x40 end2 @@ -4575,7 +4574,7 @@ BattleScript_82DB992:: various ATTACKER, 0xC end2 -BattleScript_82DB9BA:: +BattleScript_AskIfWantsToForfeitMatch:: printselectionstring STRINGID_QUESTIONFORFEITMATCH various ATTACKER, VARIOUS_EMIT_YESNOBOX endselectionscript diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 9c3f4906a..5131778a8 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -378,9 +378,9 @@ extern const u8 BattleScript_SmokeBallEscape[]; extern const u8 BattleScript_RanAwayUsingMonAbility[]; extern const u8 BattleScript_GotAwaySafely[]; extern const u8 BattleScript_WildMonFled[]; -extern const u8 BattleScript_82DAAFE[]; +extern const u8 BattleScript_PrintCantRunFromTrainer[]; extern const u8 BattleScript_PrintFailedToRunString[]; -extern const u8 BattleScript_82DAB0B[]; +extern const u8 BattleScript_PrintCantEscapeFromBattle[]; extern const u8 BattleScript_PrintFullBox[]; extern const u8 BattleScript_ActionSwitch[]; extern const u8 BattleScript_82DAB35[]; @@ -432,8 +432,8 @@ extern const u8 BattleScript_82DAEB1[]; extern const u8 BattleScript_SpikesOngBank1[]; extern const u8 BattleScript_82DAEE8[]; extern const u8 BattleScript_82DAEFE[]; -extern const u8 BattleScript_82DAF05[]; -extern const u8 BattleScript_82DAF20[]; +extern const u8 BattleScript_PerishSongTakesLife[]; +extern const u8 BattleScript_PerishSongCountGoesDown[]; extern const u8 BattleScript_AllStatsUp[]; extern const u8 BattleScript_82DAF54[]; extern const u8 BattleScript_82DAF72[]; @@ -445,7 +445,7 @@ extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_WrapFree[]; extern const u8 BattleScript_LeechSeedFree[]; extern const u8 BattleScript_SpikesFree[]; -extern const u8 BattleScript_82DAFE4[]; +extern const u8 BattleScript_MonTookFutureAttack[]; extern const u8 BattleScript_82DB001[]; extern const u8 BattleScript_82DB008[]; extern const u8 BattleScript_82DB020[]; @@ -482,7 +482,7 @@ extern const u8 BattleScript_82DB1FE[]; extern const u8 BattleScript_FocusPunchSetUp[]; extern const u8 BattleScript_MoveUsedIsAsleep[]; extern const u8 BattleScript_MoveUsedWokeUp[]; -extern const u8 BattleScript_82DB234[]; +extern const u8 BattleScript_MonWokeUpInUproar[]; extern const u8 BattleScript_PoisonTurnDmg[]; extern const u8 BattleScript_82DB243[]; extern const u8 BattleScript_82DB245[]; @@ -493,7 +493,7 @@ extern const u8 BattleScript_MoveUsedUnfroze[]; extern const u8 BattleScript_DefrostedViaFireMove[]; extern const u8 BattleScript_MoveUsedIsParalyzed[]; extern const u8 BattleScript_MoveUsedFlinched[]; -extern const u8 BattleScript_82DB2A6[]; +extern const u8 BattleScript_PrintUproarOverTurns[]; extern const u8 BattleScript_ThrashConfuses[]; extern const u8 BattleScript_MoveUsedIsConfused[]; extern const u8 BattleScript_82DB2D4[]; @@ -611,7 +611,7 @@ extern const u8 BattleScript_82DB8E0[]; extern const u8 BattleScript_82DB8F3[]; extern const u8 BattleScript_82DB973[]; extern const u8 BattleScript_82DB992[]; -extern const u8 BattleScript_82DB9BA[]; +extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; extern const u8 BattleScript_82DB9C1[]; extern const u8 BattleScript_82DB9C8[]; extern const u8 BattleScript_BallThrow[]; diff --git a/src/battle_2.c b/src/battle_2.c index b03e96622..8afca2f10 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -4083,7 +4083,7 @@ static void HandleTurnActionSelectionState(void) && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DB9BA; + gSelectionBattleScripts[gActiveBank] = BattleScript_AskIfWantsToForfeitMatch; gBattleCommunication[gActiveBank] = 8; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4093,13 +4093,13 @@ static void HandleTurnActionSelectionState(void) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - BattleScriptExecute(BattleScript_82DAAFE); + BattleScriptExecute(BattleScript_PrintCantRunFromTrainer); gBattleCommunication[gActiveBank] = 1; } - else if (IsRunningFromBattleImpossible() != 0 + else if (IsRunningFromBattleImpossible() && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gSelectionBattleScripts[gActiveBank] = BattleScript_82DAB0B; + gSelectionBattleScripts[gActiveBank] = BattleScript_PrintCantEscapeFromBattle; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; diff --git a/src/battle_message.c b/src/battle_message.c index 35b9004ac..0dc468eca 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -964,7 +964,7 @@ const u16 gRestUsedStringIds[] = STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY }; -const u16 gUproarOvetTurnStringIds[] = +const u16 gUproarOverTurnStringIds[] = { STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN }; diff --git a/src/battle_util.c b/src/battle_util.c index 021251b35..904dfc032 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -963,7 +963,7 @@ u8 TurnBasedEffects(void) gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(BattleScript_82DB234); + BattleScriptExecute(BattleScript_MonWokeUpInUproar); gActiveBank = gBankAttacker; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); @@ -994,7 +994,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; CancelMultiTurnMoves(gActiveBank); } - BattleScriptExecute(BattleScript_82DB2A6); + BattleScriptExecute(BattleScript_PrintUproarOverTurns); effect = 1; } } @@ -1144,7 +1144,7 @@ bool8 sub_8041364(void) gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - BattleScriptExecute(BattleScript_82DAFE4); + BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0) @@ -1178,12 +1178,12 @@ bool8 sub_8041364(void) { gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG; gBattleMoveDamage = gBattleMons[gActiveBank].hp; - gBattlescriptCurrInstr = BattleScript_82DAF05; + gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife; } else { gDisableStructs[gActiveBank].perishSongTimer1--; - gBattlescriptCurrInstr = BattleScript_82DAF20; + gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown; } BattleScriptExecute(gBattlescriptCurrInstr); return TRUE; -- cgit v1.2.3 From d48392e677f3b77b34d4b125b90a74be86b19a2d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 18:07:00 +0100 Subject: change battle variables names --- data/battle_scripts_1.s | 6 +-- src/battle_2.c | 42 +++++++++--------- src/battle_ai_script_commands.c | 12 ++--- src/battle_controllers.c | 6 +-- src/battle_script_commands.c | 98 ++++++++++++++++++++--------------------- src/battle_util.c | 6 +-- sym_ewram.txt | 8 ++-- 7 files changed, 89 insertions(+), 89 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5e7488108..2a3d8674a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -628,7 +628,7 @@ BattleScript_EffectMultiHit:: BattleScript_82D8DFD:: jumpifhasnohp ATTACKER, BattleScript_82D8E93 jumpifhasnohp TARGET, BattleScript_82D8E74 - jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D8E1F + jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_82D8E1F jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74 BattleScript_82D8E1F:: movevaluescleanup @@ -1281,7 +1281,7 @@ BattleScript_EffectSnore:: ppreduce goto BattleScript_ButItFailed BattleScript_SnoreIsAsleep:: - jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_DoSnore + jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER @@ -1411,7 +1411,7 @@ BattleScript_EffectTripleKick:: BattleScript_TripleKickLoop:: jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits - jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack + jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits BattleScript_DoTripleKickAttack:: accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE diff --git a/src/battle_2.c b/src/battle_2.c index 8afca2f10..eead4d7a9 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -121,11 +121,11 @@ extern u8 gMultiHitCounter; extern u8 gBattleMoveFlags; extern s32 gBattleMoveDamage; extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT]; -extern u16 gOriginallyLastPrintedMoves[BATTLE_BANKS_COUNT]; -extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; extern u16 gLastHitByType[BATTLE_BANKS_COUNT]; -extern u16 gLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastResultingMoves[BATTLE_BANKS_COUNT]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u8 gLastHitBy[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT]; @@ -149,7 +149,7 @@ extern u16 gDynamicBasePower; extern u8 gCritMultiplier; extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; -extern u16 gOriginallyUsedMove; +extern u16 gChosenMove; extern const struct BattleMove gBattleMoves[]; extern const u16 gUnknown_08C004E0[]; // battle textbox palette @@ -2743,13 +2743,13 @@ static void BattleStartClearSetData(void) gDisableStructs[i].isFirstTurn = 2; gUnknown_02024284[i] = 0; - gOriginallyLastMoves[i] = 0; + gLastMoves[i] = 0; gLastLandedMoves[i] = 0; gLastHitByType[i] = 0; - gLastMoves[i] = 0; + gLastResultingMoves[i] = 0; gLastHitBy[i] = 0xFF; gLockedMoves[i] = 0; - gOriginallyLastPrintedMoves[i] = 0; + gLastPrintedMoves[i] = 0; gBattleResources->flags->flags[i] = 0; gPalaceSelectionBattleScripts[i] = 0; } @@ -2910,11 +2910,11 @@ void SwitchInClearSetData(void) gBattleMoveFlags = 0; gDisableStructs[gActiveBank].isFirstTurn = 2; gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit; - gOriginallyLastMoves[gActiveBank] = 0; + gLastMoves[gActiveBank] = 0; gLastLandedMoves[gActiveBank] = 0; gLastHitByType[gActiveBank] = 0; - gLastMoves[gActiveBank] = 0; - gOriginallyLastPrintedMoves[gActiveBank] = 0; + gLastResultingMoves[gActiveBank] = 0; + gLastPrintedMoves[gActiveBank] = 0; gLastHitBy[gActiveBank] = 0xFF; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; @@ -3002,11 +3002,11 @@ void FaintClearSetData(void) gDisableStructs[gActiveBank].isFirstTurn = 2; - gOriginallyLastMoves[gActiveBank] = 0; + gLastMoves[gActiveBank] = 0; gLastLandedMoves[gActiveBank] = 0; gLastHitByType[gActiveBank] = 0; - gLastMoves[gActiveBank] = 0; - gOriginallyLastPrintedMoves[gActiveBank] = 0; + gLastResultingMoves[gActiveBank] = 0; + gLastPrintedMoves[gActiveBank] = 0; gLastHitBy[gActiveBank] = 0xFF; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; @@ -5048,19 +5048,19 @@ static void HandleAction_UseMove(void) if (gProtectStructs[gBankAttacker].onlyStruggle) { gProtectStructs[gBankAttacker].onlyStruggle = 0; - gCurrentMove = gOriginallyUsedMove = MOVE_STRUGGLE; + gCurrentMove = gChosenMove = MOVE_STRUGGLE; gHitMarker |= HITMARKER_NO_PPDEDUCT; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); } else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) { - gCurrentMove = gOriginallyUsedMove = gLockedMoves[gBankAttacker]; + gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker]; } // encore forces you to use the same move else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { - gCurrentMove = gOriginallyUsedMove = gDisableStructs[gBankAttacker].encoredMove; + gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove; gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } @@ -5069,7 +5069,7 @@ static void HandleAction_UseMove(void) && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; - gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE; gDisableStructs[gBankAttacker].encoredMovePos = 0; gDisableStructs[gBankAttacker].encoreTimer1 = 0; @@ -5077,12 +5077,12 @@ static void HandleAction_UseMove(void) } else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker]) { - gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } else { - gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; } if (gBattleMons[gBankAttacker].hp != 0) @@ -5122,7 +5122,7 @@ static void HandleAction_UseMove(void) } if (var == 4) { - if (gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM) + if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -5167,7 +5167,7 @@ static void HandleAction_UseMove(void) } } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM) + && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 5fde5669e..97226f5c9 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -58,7 +58,7 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gBankTarget; extern u8 gAbsentBankFlags; -extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; @@ -633,12 +633,12 @@ static void RecordLastUsedMoveByTarget(void) for (i = 0; i < 4; i++) { - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gOriginallyLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. && gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0) { - gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gOriginallyLastMoves[gBankTarget]; + gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastMoves[gBankTarget]; break; } } @@ -1252,9 +1252,9 @@ static void BattleAICmd_is_most_powerful_move(void) static void BattleAICmd_get_last_used_bank_move(void) { if (gAIScriptPtr[1] == AI_USER) - AI_THINKING_STRUCT->funcResult = gOriginallyLastMoves[sBank_AI]; + AI_THINKING_STRUCT->funcResult = gLastMoves[sBank_AI]; else - AI_THINKING_STRUCT->funcResult = gOriginallyLastMoves[gBankTarget]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBankTarget]; gAIScriptPtr += 2; } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index b3fb91b42..2d373e876 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -38,7 +38,7 @@ extern u8 gEffectBank; extern u16 gBattleWeather; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; -extern u16 gOriginallyUsedMove; +extern u16 gChosenMove; extern u16 gLastUsedItem; extern u8 gBattleOutcome; extern u8 gLastUsedAbility; @@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->originallyUsedMove = gOriginallyUsedMove; + stringInfo->originallyUsedMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; @@ -1152,7 +1152,7 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->originallyUsedMove = gOriginallyUsedMove; + stringInfo->originallyUsedMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0e6209ed8..59bb58868 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -76,7 +76,7 @@ extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; extern u16 gLastLandedMoves[4]; extern u16 gLastHitByType[4]; -extern u16 gLastMoves[4]; +extern u16 gLastResultingMoves[4]; extern u8 gLastHitBy[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; @@ -99,9 +99,9 @@ extern u8 gCurrentTurnActionNumber; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; -extern u16 gOriginallyUsedMove; -extern u16 gOriginallyLastPrintedMoves[BATTLE_BANKS_COUNT]; -extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gChosenMove; +extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u8 gUnknown_020241E9; @@ -4860,10 +4860,10 @@ static void atk49_moveend(void) effect = FALSE; - if (gOriginallyUsedMove == 0xFFFF) + if (gChosenMove == 0xFFFF) originallyUsedMove = 0; else - originallyUsedMove = gOriginallyUsedMove; + originallyUsedMove = gChosenMove; arg1 = gBattlescriptCurrInstr[1]; arg2 = gBattlescriptCurrInstr[2]; @@ -4934,14 +4934,14 @@ static void atk49_moveend(void) break; case 6: // update choice band move if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND - || gOriginallyUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) + || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) goto LOOP; - if (gOriginallyUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) + if (gChosenMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) { gBattleScripting.atk49_state++; break; } - *choicedMoveAtk = gOriginallyUsedMove; + *choicedMoveAtk = gChosenMove; LOOP: { for (i = 0; i < 4; i++) @@ -5036,7 +5036,7 @@ static void atk49_moveend(void) } if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) { - gOriginallyLastPrintedMoves[gBankAttacker] = gOriginallyUsedMove; + gLastPrintedMoves[gBankAttacker] = gChosenMove; } if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) @@ -5044,13 +5044,13 @@ static void atk49_moveend(void) { if (gHitMarker & HITMARKER_OBEYS) { - gOriginallyLastMoves[gBankAttacker] = gOriginallyUsedMove; - gLastMoves[gBankAttacker] = gCurrentMove; + gLastMoves[gBankAttacker] = gChosenMove; + gLastResultingMoves[gBankAttacker] = gCurrentMove; } else { - gOriginallyLastMoves[gBankAttacker] = 0xFFFF; gLastMoves[gBankAttacker] = 0xFFFF; + gLastResultingMoves[gBankAttacker] = 0xFFFF; } if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget))) @@ -5058,9 +5058,9 @@ static void atk49_moveend(void) if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - if (gOriginallyUsedMove == 0xFFFF) + if (gChosenMove == 0xFFFF) { - gLastLandedMoves[gBankTarget] = gOriginallyUsedMove; + gLastLandedMoves[gBankTarget] = gChosenMove; } else { @@ -5083,16 +5083,16 @@ static void atk49_moveend(void) { u8 target, attacker; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gOriginallyUsedMove; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gOriginallyUsedMove >> 8; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gChosenMove; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gChosenMove >> 8; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gOriginallyUsedMove; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gChosenMove; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gOriginallyUsedMove >> 8; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gChosenMove >> 8; } gBattleScripting.atk49_state++; break; @@ -6386,7 +6386,7 @@ static void atk63_jumptorandomattack(void) if (gBattlescriptCurrInstr[1] != 0) gCurrentMove = gRandomMove; else - gOriginallyUsedMove = gCurrentMove = gRandomMove; + gChosenMove = gCurrentMove = gRandomMove; gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; } @@ -7131,7 +7131,7 @@ static void atk76_various(void) static void atk77_setprotectlike(void) // protect and endure { bool8 notLastTurn = TRUE; - u16 lastMove = gLastMoves[gBankAttacker]; + u16 lastMove = gLastResultingMoves[gBankAttacker]; if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) gDisableStructs[gBankAttacker].protectUses = 0; @@ -8352,7 +8352,7 @@ static void atk9A_setfocusenergy(void) static void atk9B_transformdataexecution(void) { - gOriginallyUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; gBattlescriptCurrInstr++; if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) @@ -8432,12 +8432,12 @@ static bool8 IsMoveUncopyableByMimic(u16 move) static void atk9D_mimicattackcopy(void) { - gOriginallyUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; - if (IsMoveUncopyableByMimic(gOriginallyLastMoves[gBankTarget]) + if (IsMoveUncopyableByMimic(gLastMoves[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED - || gOriginallyLastMoves[gBankTarget] == 0 - || gOriginallyLastMoves[gBankTarget] == 0xFFFF) + || gLastMoves[gBankTarget] == 0 + || gLastMoves[gBankTarget] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8447,20 +8447,20 @@ static void atk9D_mimicattackcopy(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankAttacker].moves[i] == gOriginallyLastMoves[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gLastMoves[gBankTarget]) break; } if (i == 4) { - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gOriginallyLastMoves[gBankTarget]; - if (gBattleMoves[gOriginallyLastMoves[gBankTarget]].pp < 5) - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gOriginallyLastMoves[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastMoves[gBankTarget]; + if (gBattleMoves[gLastMoves[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBankTarget]].pp; else gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastMoves[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget]) gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; gBattlescriptCurrInstr += 5; @@ -8575,7 +8575,7 @@ static void atkA3_disablelastusedattack(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; } if (gDisableStructs[gBankTarget].disabledMove == 0 @@ -8600,13 +8600,13 @@ static void atkA4_trysetencore(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gOriginallyLastMoves[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; } - if (gOriginallyLastMoves[gBankTarget] == MOVE_STRUGGLE - || gOriginallyLastMoves[gBankTarget] == MOVE_ENCORE - || gOriginallyLastMoves[gBankTarget] == MOVE_MIRROR_MOVE) + if (gLastMoves[gBankTarget] == MOVE_STRUGGLE + || gLastMoves[gBankTarget] == MOVE_ENCORE + || gLastMoves[gBankTarget] == MOVE_MIRROR_MOVE) { i = 4; } @@ -8726,13 +8726,13 @@ static void atkA7_setalwayshitflag(void) static void atkA8_copymovepermanently(void) // sketch { - gOriginallyUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) - && gOriginallyLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE - && gOriginallyLastPrintedMoves[gBankTarget] != 0 - && gOriginallyLastPrintedMoves[gBankTarget] != 0xFFFF - && gOriginallyLastPrintedMoves[gBankTarget] != MOVE_SKETCH) + && gLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE + && gLastPrintedMoves[gBankTarget] != 0 + && gLastPrintedMoves[gBankTarget] != 0xFFFF + && gLastPrintedMoves[gBankTarget] != MOVE_SKETCH) { s32 i; @@ -8740,7 +8740,7 @@ static void atkA8_copymovepermanently(void) // sketch { if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) continue; - if (gBattleMons[gBankAttacker].moves[i] == gOriginallyLastPrintedMoves[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gLastPrintedMoves[gBankTarget]) break; } @@ -8752,8 +8752,8 @@ static void atkA8_copymovepermanently(void) // sketch { struct MovePpInfo movePpData; - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gOriginallyLastPrintedMoves[gBankTarget]; - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gOriginallyLastPrintedMoves[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBankTarget]].pp; gActiveBank = gBankAttacker; for (i = 0; i < 4; i++) @@ -8766,7 +8766,7 @@ static void atkA8_copymovepermanently(void) // sketch EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData); MarkBufferBankForExecution(gActiveBank); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastPrintedMoves[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBankTarget]) gBattlescriptCurrInstr += 5; } @@ -8899,14 +8899,14 @@ static void atkAC_remaininghptopower(void) static void atkAD_tryspiteppreduce(void) { - if (gOriginallyLastMoves[gBankTarget] != 0 - && gOriginallyLastMoves[gBankTarget] != 0xFFFF) + if (gLastMoves[gBankTarget] != 0 + && gLastMoves[gBankTarget] != 0xFFFF) { s32 i; for (i = 0; i < 4; i++) { - if (gOriginallyLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + if (gLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i]) break; } @@ -8916,7 +8916,7 @@ static void atkAD_tryspiteppreduce(void) if (gBattleMons[gBankTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBankTarget].pp[i]; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gOriginallyLastMoves[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget]) ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1); diff --git a/src/battle_util.c b/src/battle_util.c index 904dfc032..94c51c0f8 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -43,7 +43,7 @@ extern s32 gBattleMoveDamage; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u32 gBattleTypeFlags; -extern u16 gOriginallyLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u32 gHitMarker; extern u8 gEffectBank; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; @@ -373,7 +373,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (move == gOriginallyLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) + if (move == gLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -477,7 +477,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) unusableMoves |= gBitTable[i]; if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gOriginallyLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + if (gBattleMons[bank].moves[i] == gLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) unusableMoves |= gBitTable[i]; diff --git a/sym_ewram.txt b/sym_ewram.txt index cff1df585..2a015dc2d 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -312,7 +312,7 @@ gUnknown_020241E9: @ 20241E9 gCurrentMove: @ 20241EA .space 0x2 -gOriginallyUsedMove: @ 20241EC +gChosenMove: @ 20241EC .space 0x2 gRandomMove: @ 20241EE @@ -369,10 +369,10 @@ gSelectionBattleScripts: @ 2024220 gPalaceSelectionBattleScripts: @ 2024230 .space 0x10 -gOriginallyLastPrintedMoves: @ 2024240 +gLastPrintedMoves: @ 2024240 .space 0x8 -gOriginallyLastMoves: @ 2024248 +gLastMoves: @ 2024248 .space 0x8 gLastLandedMoves: @ 2024250 @@ -381,7 +381,7 @@ gLastLandedMoves: @ 2024250 gLastHitByType: @ 2024258 .space 0x8 -gLastMoves: @ 2024260 +gLastResultingMoves: @ 2024260 .space 0x8 gLockedMoves: @ 2024268 -- cgit v1.2.3 From 77a6c30bd4511063e5a3e0a512583836e92c8293 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Nov 2017 21:04:00 +0100 Subject: make various macros --- asm/macros/battle_script.inc | 109 ++++++++++++++++++++++++++++++++ data/battle_scripts_1.s | 144 +++++++++++++++++++++---------------------- src/battle_script_commands.c | 4 +- 3 files changed, 183 insertions(+), 74 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index b1961c4a9..47e124a86 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1214,6 +1214,115 @@ .byte \param0 .endm +@ various command changed to more readable macros + .macro cancelmultiturnmoves bank + various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES + .endm + + .macro setmagiccoattarget bank + various \bank, VARIOUS_SET_MAGIC_COAT_TARGET + .endm + + .macro getifcantrunfrombattle bank + various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE + .endm + + .macro getmovetarget bank + various \bank, VARIOUS_GET_MOVE_TARGET + .endm + + .macro various4 bank + various \bank, 4 + .endm + + .macro resetintrimidatetracebits bank + various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .endm + + .macro updatechoicemoveonlvlup bank + various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + .endm + + .macro various7 bank + various \bank, 7 + .endm + + .macro various8 bank + various \bank, 8 + .endm + + .macro various9 bank + various \bank, 9 + .endm + + .macro various10 bank + various \bank, 10 + .endm + + .macro various11 bank + various \bank, 11 + .endm + + .macro various12 bank + various \bank, 12 + .endm + + .macro forfeityesnobox bank + various \bank, VARIOUS_EMIT_YESNOBOX + .endm + + .macro various14 bank + various \bank, 14 + .endm + + .macro various15 bank + various \bank, 15 + .endm + + .macro various16 bank + various \bank, 16 + .endm + + .macro various17 bank + various \bank, 17 + .endm + + .macro waitcry bank + various \bank, VARIOUS_WAIT_CRY + .endm + + .macro returnopponentmon1toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON1 + .endm + + .macro returnopponentmon2toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON2 + .endm + + .macro various21 bank + various \bank, 21 + .endm + + .macro various22 bank + various \bank, 22 + .endm + + .macro various23 bank + various \bank, 23 + .endm + + .macro various24 bank + various \bank, 24 + .endm + + .macro setoutcomeonteleport bank + various \bank, VARIOUS_SET_TELEPORT_OUTCOME + .endm + + .macro playtrainerdefeatbgm bank + various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + .endm + @ helpful macros .macro setstatchanger stat, stages, down setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 2a3d8674a..0be60d109 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -311,7 +311,7 @@ BattleScript_EffectSleep:: goto BattleScript_MoveEnd BattleScript_AlreadyAsleep:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYASLEEP waitmessage 0x40 @@ -724,7 +724,7 @@ BattleScript_EffectToxic:: goto BattleScript_MoveEnd BattleScript_AlreadyPoisoned:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x40 printstring STRINGID_PKMNALREADYPOISONED waitmessage 0x40 @@ -772,7 +772,7 @@ BattleScript_RestCantSleep:: goto BattleScript_MoveEnd BattleScript_RestIsAlreadyAsleep:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYASLEEP2 waitmessage 0x40 @@ -938,7 +938,7 @@ BattleScript_EffectConfuse:: goto BattleScript_MoveEnd BattleScript_AlreadyConfused:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYCONFUSED waitmessage 0x40 @@ -1045,7 +1045,7 @@ BattleScript_EffectParalyze:: goto BattleScript_MoveEnd BattleScript_AlreadyParalyzed:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNISALREADYPARALYZED waitmessage 0x40 @@ -1122,7 +1122,7 @@ BattleScript_SubstituteString:: waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyHasSubstitute:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNHASSUBSTITUTE waitmessage 0x40 @@ -1532,7 +1532,7 @@ BattleScript_CurseEnd:: goto BattleScript_MoveEnd BattleScript_GhostCurse:: jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_DoGhostCurse - various ATTACKER, VARIOUS_GET_MOVE_TARGET + getmovetarget ATTACKER BattleScript_DoGhostCurse:: attackcanceler attackstring @@ -1951,14 +1951,14 @@ BattleScript_EffectTeleport:: attackstring ppreduce jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_ButItFailed - various ATTACKER, VARIOUS_IS_RUNNING_IMPOSSIBLE + getifcantrunfrombattle ATTACKER jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_82DA382 attackanimation waitanimation printstring STRINGID_PKMNFLEDFROMBATTLE waitmessage 0x40 - various ATTACKER, VARIOUS_SET_TELEPORT_OUTCOME + setoutcomeonteleport ATTACKER goto BattleScript_MoveEnd BattleScript_EffectBeatUp:: @@ -2220,7 +2220,7 @@ BattleScript_WaterVeilPrevents:: goto BattleScript_MoveEnd BattleScript_AlreadyBurned:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYHASBURN waitmessage 0x40 @@ -2638,7 +2638,7 @@ BattleScript_82DA501:: goto BattleScript_82DA4C7 BattleScript_82DA50F:: - various ATTACKER, 0x17 + various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYCONFUSED waitmessage 0x40 @@ -2882,7 +2882,7 @@ BattleScript_82DA816:: switchhandleorder ATTACKER, 0x2 jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_82DA8D0 atknameinbuff1 - various ATTACKER, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + resetintrimidatetracebits ATTACKER hpthresholds2 ATTACKER printstring STRINGID_RETURNMON switchoutabilities ATTACKER @@ -2908,7 +2908,7 @@ BattleScript_82DA8D0:: atk62 GBANK_1 switchinanim GBANK_1, 0x0 waitstate - various ATTACKER, 0x7 + various7 ATTACKER switchineffects GBANK_1 jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DA8F5 cancelallactions @@ -2978,9 +2978,9 @@ BattleScript_CheckDomeDrew:: jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_ BattleScript_LocalBattleLostPrintTrainersWinText:: jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut - various ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 + returnopponentmon1toball ATTACKER waitstate - various ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 + returnopponentmon2toball ATTACKER waitstate trainerslidein ATTACKER waitstate @@ -2997,9 +2997,9 @@ BattleScript_LocalBattleLostEnd_:: end2 BattleScript_82DAA0B:: - various ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 + returnopponentmon1toball ATTACKER waitstate - various ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 + returnopponentmon2toball ATTACKER waitstate trainerslidein ATTACKER waitstate @@ -3026,7 +3026,7 @@ BattleScript_LinkBattleWonOrLostWaitEnd:: end2 BattleScript_82DAA5C:: - various ATTACKER, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + playtrainerdefeatbgm ATTACKER printstring STRINGID_BATTLEEND waitmessage 0x40 trainerslidein ATTACKER @@ -3164,7 +3164,7 @@ BattleScript_82DAB77:: tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x3 moveend 0x2, 0x6 - various TARGET, 0x4 + various4 TARGET jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_82DABB8 setbyte sGIVEEXP_STATE, 0x0 getexp TARGET @@ -3207,7 +3207,7 @@ BattleScript_LearnedNewMove:: fanfare BGM_FANFA1 printstring STRINGID_PKMNLEARNEDMOVE waitmessage 0x40 - various ATTACKER, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + updatechoicemoveonlvlup ATTACKER goto BattleScript_TryLearnMoveLoop BattleScript_LearnMoveReturn:: return @@ -3352,7 +3352,7 @@ BattleScript_82DADD8:: returntoball TARGET waitstate jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DADF1 - various ATTACKER, VARIOUS_SET_TELEPORT_OUTCOME + setoutcomeonteleport ATTACKER finishaction BattleScript_82DADF1:: @@ -3700,7 +3700,7 @@ BattleScript_MagicCoatBounce:: printstring STRINGID_PKMNMOVEBOUNCED waitmessage 0x40 orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 - various ATTACKER, VARIOUS_SET_MAGIC_COAT_TARGET + setmagiccoattarget ATTACKER return BattleScript_SnatchedMove:: @@ -3803,7 +3803,7 @@ BattleScript_MoveUsedIsParalyzed:: printstring STRINGID_PKMNISPARALYZED waitmessage 0x40 statusanimation ATTACKER - various ATTACKER, VARIOUS_CANCEL_MULTI_TURN_MOVES + cancelmultiturnmoves ATTACKER goto BattleScript_MoveEnd BattleScript_MoveUsedFlinched:: @@ -3828,7 +3828,7 @@ BattleScript_MoveUsedIsConfused:: status2animation ATTACKER, STATUS2_CONFUSION jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB2FF BattleScript_82DB2D4:: - various ATTACKER, VARIOUS_CANCEL_MULTI_TURN_MOVES + cancelmultiturnmoves ATTACKER adjustnormaldamage2 printstring STRINGID_ITHURTCONFUSION waitmessage 0x40 @@ -4263,7 +4263,7 @@ BattleScript_IgnoresAndUsesRandomMove:: BattleScript_MoveUsedLoafingAround:: jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7 setbyte gBattleCommunication, 0x0 - various ATTACKER, 0x18 + various24 ATTACKER setbyte cMULTISTRING_CHOOSER, 0x4 BattleScript_82DB6C7:: printfromtable gInobedientStringIds @@ -4466,7 +4466,7 @@ BattleScript_82DB87D:: BattleScript_82DB881:: setbyte gBattleCommunication + 1, 0x0 BattleScript_82DB887:: - various ATTACKER, 0x8 + various8 ATTACKER jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D printfromtable gStringIds_85CCF0A waitmessage 0x40 @@ -4478,26 +4478,26 @@ BattleScript_82DB89D:: end2 BattleScript_82DB8BE:: - various ATTACKER, VARIOUS_WAIT_CRY - various ATTACKER, 0x15 + waitcry ATTACKER + various21 ATTACKER playse 0x109 pause 0x8 playse 0x109 - various ATTACKER, 0xE - various 8, 0x10 - various 8, 0x11 + various14 ATTACKER + various16 8 + various17 8 pause 0x40 - various ATTACKER, 0xF - various ATTACKER, 0x16 + various15 ATTACKER + various22 ATTACKER end2 BattleScript_82DB8E0:: playse SE_PINPON - various ATTACKER, 0xE - various TARGET, 0x10 - various TARGET, 0x11 + various14 ATTACKER + various16 TARGET + various17 TARGET pause 0x40 - various ATTACKER, 0xF + various15 ATTACKER end2 BattleScript_82DB8F3:: @@ -4505,78 +4505,78 @@ BattleScript_82DB8F3:: waitstate makevisible OPPONENT1 waitstate - various ATTACKER, 0x15 + various21 ATTACKER playse 0x109 pause 0x8 playse 0x109 pause 0x40 - various ATTACKER, 0xE - various ATTACKER, 0x10 - various ATTACKER, 0x11 + various14 ATTACKER + various16 ATTACKER + various17 ATTACKER pause 0x40 setbyte gBattleCommunication, 0x0 - various ATTACKER, 0x9 + various9 ATTACKER pause 0x40 - various ATTACKER, 0x9 - various EFFECT_BANK, 0x10 - various EFFECT_BANK, 0x11 - various ATTACKER, 0x9 - various GBANK_1, 0x10 - various GBANK_1, 0x11 - various ATTACKER, 0x9 - various 4, 0x10 - various 4, 0x11 - various ATTACKER, 0x9 + various9 ATTACKER + various16 EFFECT_BANK + various17 EFFECT_BANK + various9 ATTACKER + various16 GBANK_1 + various17 GBANK_1 + various9 ATTACKER + various16 0x4 + various17 0x4 + various9 ATTACKER jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973 jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992 - various 5, 0x10 - various 5, 0x11 - various ATTACKER, 0x9 - various ATTACKER, 0xF + various16 0x5 + various17 0x5 + various9 ATTACKER + various15 ATTACKER printstring STRINGID_DEFEATEDOPPONENTBYREFEREE waitmessage 0x40 playfaintcry OPPONENT1 - various ATTACKER, VARIOUS_WAIT_CRY + waitcry ATTACKER dofaintanimation OPPONENT1 cleareffectsonfaint OPPONENT1 - various ATTACKER, 0xA + various10 ATTACKER end2 BattleScript_82DB973:: - various 6, 0x10 - various 6, 0x11 - various ATTACKER, 0x9 - various ATTACKER, 0xF + various16 0x6 + various17 0x6 + various9 ATTACKER + various15 ATTACKER printstring STRINGID_LOSTTOOPPONENTBYREFEREE waitmessage 0x40 playfaintcry 11 - various ATTACKER, VARIOUS_WAIT_CRY + waitcry ATTACKER dofaintanimation 11 cleareffectsonfaint 11 - various ATTACKER, 0xB + various11 ATTACKER end2 BattleScript_82DB992:: - various BANK0, 0x10 - various BANK0, 0x11 - various ATTACKER, 0x9 - various ATTACKER, 0xF + various16 BANK0 + various17 BANK0 + various9 ATTACKER + various15 ATTACKER printstring STRINGID_TIEDOPPONENTBYREFEREE waitmessage 0x40 playfaintcry 11 - various ATTACKER, VARIOUS_WAIT_CRY + waitcry ATTACKER dofaintanimation 11 cleareffectsonfaint 11 playfaintcry OPPONENT1 - various ATTACKER, VARIOUS_WAIT_CRY + waitcry ATTACKER dofaintanimation OPPONENT1 cleareffectsonfaint OPPONENT1 - various ATTACKER, 0xC + various12 ATTACKER end2 BattleScript_AskIfWantsToForfeitMatch:: printselectionstring STRINGID_QUESTIONFORFEITMATCH - various ATTACKER, VARIOUS_EMIT_YESNOBOX + forfeityesnobox ATTACKER endselectionscript BattleScript_82DB9C1:: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 59bb58868..d9b35c053 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5992,8 +5992,8 @@ static void atk58_returntoball(void) static void atk59_handlelearnnewmove(void) { - const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); - const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + const u8 *jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]); while (ret == 0xFFFE) -- cgit v1.2.3 From 237261e193d75addf47fc0736b2d9ed10c8d3195 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 27 Nov 2017 20:03:41 +0100 Subject: berry blender review changes --- asm/rom6.s | 14 ++++---- asm/use_pokeblock.s | 2 +- include/battle_message.h | 2 +- include/berry.h | 12 +++---- include/pokeblock.h | 4 +-- include/pokemon.h | 4 +-- src/battle_message.c | 2 +- src/battle_util.c | 10 +++--- src/berry_blender.c | 94 ++++++++++++++++++++++++------------------------ src/pokemon_3.c | 4 +-- 10 files changed, 74 insertions(+), 74 deletions(-) diff --git a/asm/rom6.s b/asm/rom6.s index 58dd57ff1..430ed7ee9 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -1223,7 +1223,7 @@ sub_8135F04: @ 8135F04 adds r4, 0x1 ldr r6, =gStringVar1 adds r0, r5, 0 - bl GetHighestPokeblocksFlavourLevel + bl GetHighestPokeblocksFlavorLevel adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2995,8 +2995,8 @@ _08136E8C: bx r0 thumb_func_end ClearPokeblocks - thumb_func_start GetHighestPokeblocksFlavourLevel -GetHighestPokeblocksFlavourLevel: @ 8136EA4 + thumb_func_start GetHighestPokeblocksFlavorLevel +GetHighestPokeblocksFlavorLevel: @ 8136EA4 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 @@ -3024,7 +3024,7 @@ _08136ECC: pop {r4-r6} pop {r1} bx r1 - thumb_func_end GetHighestPokeblocksFlavourLevel + thumb_func_end GetHighestPokeblocksFlavorLevel thumb_func_start GetPokeblocksFeel GetPokeblocksFeel: @ 8136EDC @@ -3287,8 +3287,8 @@ _081370AC: bx r1 thumb_func_end sub_8137068 - thumb_func_start GetPokeblocksFlavour -GetPokeblocksFlavour: @ 81370B4 + thumb_func_start GetPokeblocksFlavor +GetPokeblocksFlavor: @ 81370B4 push {r4-r7,lr} adds r5, r0, 0 movs r7, 0 @@ -3324,7 +3324,7 @@ _081370E2: pop {r4-r7} pop {r1} bx r1 - thumb_func_end GetPokeblocksFlavour + thumb_func_end GetPokeblocksFlavor thumb_func_start sub_81370FC sub_81370FC: @ 81370FC diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 3a8b76ab1..3c580654c 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -1769,7 +1769,7 @@ _0816721C: adds r0, r6, r0 ldrb r1, [r0] mov r0, r10 - bl GetMonFlavourRelation + bl GetMonFlavorRelation lsls r0, 24 asrs r2, r0, 24 cmp r0, r9 diff --git a/include/battle_message.h b/include/battle_message.h index 3f9b38cad..c1ee8baa2 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -67,7 +67,7 @@ #define B_BUFF_STAT 5 #define B_BUFF_SPECIES 6 #define B_BUFF_MON_NICK 7 -#define B_BUFF_NEGATIVE_FLAVOUR 8 +#define B_BUFF_NEGATIVE_FLAVOR 8 #define B_BUFF_ABILITY 9 #define B_BUFF_ITEM 10 diff --git a/include/berry.h b/include/berry.h index f1f3a8afb..425a664c9 100644 --- a/include/berry.h +++ b/include/berry.h @@ -13,12 +13,12 @@ enum enum { - FLAVOUR_SPICY, - FLAVOUR_DRY, - FLAVOUR_SWEET, - FLAVOUR_BITTER, - FLAVOUR_SOUR, - FLAVOUR_COUNT + FLAVOR_SPICY, + FLAVOR_DRY, + FLAVOR_SWEET, + FLAVOR_BITTER, + FLAVOR_SOUR, + FLAVOR_COUNT }; #define NUM_BERRIES 44 diff --git a/include/pokeblock.h b/include/pokeblock.h index 00fbd1e45..a145cbada 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -25,9 +25,9 @@ enum void ClearPokeblocks(void); s8 GetFirstFreePokeblockSlot(void); bool32 AddPokeblock(struct Pokeblock *pokeblock); -u8 GetHighestPokeblocksFlavourLevel(const struct Pokeblock *pokeblock); +u8 GetHighestPokeblocksFlavorLevel(const struct Pokeblock *pokeblock); u8 GetPokeblocksFeel(const struct Pokeblock *pokeblock); -u8 GetPokeblocksFlavour(const struct Pokeblock *pokeblock); +u8 GetPokeblocksFlavor(const struct Pokeblock *pokeblock); s16 PokeblockGetGain(u8, const struct Pokeblock *); #endif // GUARD_POKEBLOCK_H diff --git a/include/pokemon.h b/include/pokemon.h index 1eb052f4e..480c8d9b9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -642,8 +642,8 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); -s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2); -s8 GetFlavourRelationByPersonality(u32 personality, u8 a2); +s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2); +s8 GetFlavorRelationByPersonality(u32 personality, u8 a2); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); u8 GetDefaultMoveTarget(u8 atkBank); u16 PlayerGenderToFrontTrainerPicId(u8 playerGender); diff --git a/src/battle_message.c b/src/battle_message.c index acdb18699..65ff19741 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2118,7 +2118,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) StringGetEnd10(dst); srcID += 3; break; - case B_BUFF_NEGATIVE_FLAVOUR: // flavour table + case B_BUFF_NEGATIVE_FLAVOR: // flavor table StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]); srcID += 2; break; diff --git a/src/battle_util.c b/src/battle_util.c index ed3bdef98..07e6ff654 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2844,7 +2844,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) + if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); @@ -2864,7 +2864,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0) + if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0) BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); @@ -2884,7 +2884,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) + if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); @@ -2904,7 +2904,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) + if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); @@ -2924,7 +2924,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) + if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); else BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); diff --git a/src/berry_blender.c b/src/berry_blender.c index 869f8b834..aa333ebaf 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -48,7 +48,7 @@ struct BlenderBerry { u16 itemId; u8 name[BERRY_NAME_COUNT]; - u8 flavours[FLAVOUR_COUNT]; + u8 flavors[FLAVOR_COUNT]; u8 smoothness; }; @@ -67,7 +67,7 @@ struct BlenderGameBlock struct TvBlenderStruct { u8 name[11]; - u8 pokeblockFlavour; + u8 pokeblockFlavor; u8 pokeblockColor; u8 pokeblockSheen; }; @@ -1046,11 +1046,11 @@ static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) berry->itemId = itemId; StringCopy(berry->name, berryInfo->name); - berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; - berry->flavours[FLAVOUR_DRY] = berryInfo->dry; - berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; - berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; - berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; + berry->flavors[FLAVOR_SPICY] = berryInfo->spicy; + berry->flavors[FLAVOR_DRY] = berryInfo->dry; + berry->flavors[FLAVOR_SWEET] = berryInfo->sweet; + berry->flavors[FLAVOR_BITTER] = berryInfo->bitter; + berry->flavors[FLAVOR_SOUR] = berryInfo->sour; berry->smoothness = berryInfo->smoothness; } @@ -1260,11 +1260,11 @@ static void sub_8080018(void) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); sBerryBlenderData->arrowPos += 0x200; sBerryBlenderData->field_11A += 4; - if (sBerryBlenderData->field_11A > 255) + if (sBerryBlenderData->field_11A > 0xFF) { SetGpuRegBits(REG_OFFSET_BG2CNT, 2); sBerryBlenderData->mainState++; - sBerryBlenderData->field_11A = 256; + sBerryBlenderData->field_11A = 0x100; sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; sBerryBlenderData->framesToWait = 0; PlaySE(SE_TRACK_DOOR); @@ -1349,11 +1349,11 @@ static void sub_8080588(void) static u8 sub_8080624(u16 arrowPos, u8 playerId) { - u32 var1 = (arrowPos / 256) + 24; + u32 var1 = (arrowPos / 0x100) + 0x18; u8 arrID = sBerryBlenderData->field_96[playerId]; u32 var2 = sUnknown_083399E7[arrID]; - if (var1 >= var2 && var1 < var2 + 48) + if (var1 >= var2 && var1 < var2 + 0x30) { if (var1 >= var2 + 20 && var1 < var2 + 28) return 2; @@ -1373,9 +1373,9 @@ static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, if (playerBerryItemId == ITEM_ENIGMA_BERRY) { - for (i = 0; i < FLAVOUR_COUNT; i++) + for (i = 0; i < FLAVOR_COUNT; i++) { - if (playerBerry->flavours[opponentSetId] > playerBerry->flavours[i]) + if (playerBerry->flavors[opponentSetId] > playerBerry->flavors[i]) opponentSetId = i; } opponentSetId += 5; @@ -1548,10 +1548,10 @@ static void sub_80808D4(void) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); sBerryBlenderData->arrowPos += 0x200; sBerryBlenderData->field_11A += 4; - if (sBerryBlenderData->field_11A > 255) + if (sBerryBlenderData->field_11A > 0xFF) { sBerryBlenderData->mainState++; - sBerryBlenderData->field_11A = 256; + sBerryBlenderData->field_11A = 0x100; sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; SetGpuRegBits(REG_OFFSET_BG2CNT, 2); sBerryBlenderData->framesToWait = 0; @@ -1582,7 +1582,7 @@ static void sub_80808D4(void) break; case 21: sub_8080DF8(); - sBerryBlenderData->field_4C = 128; + sBerryBlenderData->field_4C = 0x80; sBerryBlenderData->gameFrameTime = 0; sBerryBlenderData->field_123 = 0; sBerryBlenderData->field_72 = 0; @@ -1853,7 +1853,7 @@ static void sub_8081370(u16 a0) { case 0x4523: if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (384 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + sBerryBlenderData->field_4C += (0x180 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); else { sBerryBlenderData->field_4C += (128 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); @@ -1863,12 +1863,12 @@ static void sub_8081370(u16 a0) break; case 0x5432: if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (256 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + sBerryBlenderData->field_4C += (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); break; case 0x2345: - sBerryBlenderData->field_4C -= (256 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); - if (sBerryBlenderData->field_4C < 128) - sBerryBlenderData->field_4C = 128; + sBerryBlenderData->field_4C -= (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + if (sBerryBlenderData->field_4C < 0x80) + sBerryBlenderData->field_4C = 0x80; break; } } @@ -1940,7 +1940,7 @@ static void sub_80814F4(void) if (sBerryBlenderData->field_4C > 1500) m4aMPlayTempoControl(&gMPlay_BGM, ((sBerryBlenderData->field_4C - 750) / 20) + 256); else - m4aMPlayTempoControl(&gMPlay_BGM, 256); + m4aMPlayTempoControl(&gMPlay_BGM, 0x100); } } } @@ -2039,11 +2039,11 @@ static bool8 sub_8081964(struct BlenderBerry* berries, u8 index1, u8 index2) { if (berries[index1].itemId != berries[index2].itemId || (StringCompare(berries[index1].name, berries[index2].name) == 0 - && (berries[index1].flavours[FLAVOUR_SPICY] == berries[index2].flavours[FLAVOUR_SPICY] - && berries[index1].flavours[FLAVOUR_DRY] == berries[index2].flavours[FLAVOUR_DRY] - && berries[index1].flavours[FLAVOUR_SWEET] == berries[index2].flavours[FLAVOUR_SWEET] - && berries[index1].flavours[FLAVOUR_BITTER] == berries[index2].flavours[FLAVOUR_BITTER] - && berries[index1].flavours[FLAVOUR_SOUR] == berries[index2].flavours[FLAVOUR_SOUR] + && (berries[index1].flavors[FLAVOR_SPICY] == berries[index2].flavors[FLAVOR_SPICY] + && berries[index1].flavors[FLAVOR_DRY] == berries[index2].flavors[FLAVOR_DRY] + && berries[index1].flavors[FLAVOR_SWEET] == berries[index2].flavors[FLAVOR_SWEET] + && berries[index1].flavors[FLAVOR_BITTER] == berries[index2].flavors[FLAVOR_BITTER] + && berries[index1].flavors[FLAVOR_SOUR] == berries[index2].flavors[FLAVOR_SOUR] && berries[index1].smoothness == berries[index2].smoothness))) return TRUE; else @@ -2160,7 +2160,7 @@ static s16 sub_8081BD4(void) return sUnknown_03000E06; } -static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 playersNo, u8 *flavours, u16 maxRPM) +static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 playersNo, u8 *flavors, u16 maxRPM) { s32 i, j; s32 multiuseVar, var2; @@ -2172,7 +2172,7 @@ static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Poke for (i = 0; i < playersNo; i++) { for (j = 0; j < 6; j++) - sUnknown_03000DE8[j] += berries[i].flavours[j]; + sUnknown_03000DE8[j] += berries[i].flavors[j]; } multiuseVar = sUnknown_03000DE8[0]; @@ -2259,13 +2259,13 @@ static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Poke for (i = 0; i < 6; i++) { - flavours[i] = sUnknown_03000DE8[i]; + flavors[i] = sUnknown_03000DE8[i]; } } -static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavors, u16 a4) { - Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavors, a4); } static void sub_8081E20(void) @@ -2849,10 +2849,10 @@ static void sub_8082CB4(struct BgAffineSrcData *dest) { struct BgAffineSrcData affineSrc; - affineSrc.texX = 30720; - affineSrc.texY = 20480; - affineSrc.scrX = 120 - sBerryBlenderData->bg_X; - affineSrc.scrY = 80 - sBerryBlenderData->bg_Y; + affineSrc.texX = 0x7800; + affineSrc.texY = 0x5000; + affineSrc.scrX = 0x78 - sBerryBlenderData->bg_X; + affineSrc.scrY = 0x50 - sBerryBlenderData->bg_Y; affineSrc.sx = sBerryBlenderData->field_11A; affineSrc.sy = sBerryBlenderData->field_11A; affineSrc.alpha = sBerryBlenderData->arrowPos; @@ -3185,7 +3185,7 @@ static bool8 Blender_PrintBlendingResults(void) s32 xPos, yPos; struct Pokeblock pokeblock; - u8 flavours[6]; + u8 flavors[6]; u8 text[40]; u16 berryIds[4]; // unused @@ -3292,7 +3292,7 @@ static bool8 Blender_PrintBlendingResults(void) sub_8081E20(); - Blender_CalculatePokeblock(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, flavours, sBerryBlenderData->max_RPM); + Blender_CalculatePokeblock(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, flavors, sBerryBlenderData->max_RPM); Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar); TryAddContestLinkTvShow(&pokeblock, &sBerryBlenderData->tvBlender); @@ -3320,18 +3320,18 @@ static bool8 Blender_PrintBlendingResults(void) static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst) { u8 text[12]; - u8 flavourLvl, feel; + u8 flavorLvl, feel; dst[0] = EOS; StringCopy(dst, gPokeblockNames[pokeblock->color]); StringAppend(dst, sText_WasMade); StringAppend(dst, sText_NewLine); - flavourLvl = GetHighestPokeblocksFlavourLevel(pokeblock); + flavorLvl = GetHighestPokeblocksFlavorLevel(pokeblock); feel = GetPokeblocksFeel(pokeblock); StringAppend(dst, sText_TheLevelIs); - ConvertIntToDecimalStringN(text, flavourLvl, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(text, flavorLvl, STR_CONV_MODE_LEFT_ALIGN, 3); StringAppend(dst, text); StringAppend(dst, sText_TheFeelIs); @@ -3532,8 +3532,8 @@ static void sub_8083F3C(u8 taskId) static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *tvBlender) { - u8 flavourLevel = GetHighestPokeblocksFlavourLevel(pokeblock); - u16 sheen = (flavourLevel * 10) / GetPokeblocksFeel(pokeblock); + u8 flavorLevel = GetHighestPokeblocksFlavorLevel(pokeblock); + u16 sheen = (flavorLevel * 10) / GetPokeblocksFeel(pokeblock); tvBlender->pokeblockSheen = sheen; tvBlender->pokeblockColor = pokeblock->color; @@ -3544,8 +3544,8 @@ static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlen if (sBerryBlenderData->field_1A4 == 0 && sheen > 20) { StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].name); - tvBlender->pokeblockFlavour = GetPokeblocksFlavour(pokeblock); - if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavour, + tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock); + if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor, tvBlender->pokeblockColor, tvBlender->pokeblockSheen, gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].language)) { @@ -3557,8 +3557,8 @@ static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlen else if (sBerryBlenderData->field_1A4 == sBerryBlenderData->playersNo - 1 && sheen <= 20) { StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[0]].name); - tvBlender->pokeblockFlavour = GetPokeblocksFlavour(pokeblock); - if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavour, + tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock); + if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor, tvBlender->pokeblockColor, tvBlender->pokeblockSheen, gLinkPlayers[sBerryBlenderData->playerPlaces[0]].language)) { diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 01dfc954a..1fafee810 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1297,13 +1297,13 @@ bool8 IsPokeSpriteNotFlipped(u16 species) return gBaseStats[species].noFlip; } -s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2) +s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2) { u8 nature = GetNature(mon); return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } -s8 GetFlavourRelationByPersonality(u32 personality, u8 a2) +s8 GetFlavorRelationByPersonality(u32 personality, u8 a2) { u8 nature = GetNatureFromPersonality(personality); return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; -- cgit v1.2.3 From e6bcfee6680bd29c15ef5084665a05e5a2ae5a4e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 27 Nov 2017 15:20:10 -0500 Subject: Encyprtion --- asm/link.s | 8 ++++---- asm/rom4.s | 8 ++++---- src/item.c | 10 +++++----- src/load_save.c | 32 ++++++++++++++++---------------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/asm/link.s b/asm/link.s index d2dc05630..b291bf5a9 100644 --- a/asm/link.s +++ b/asm/link.s @@ -52672,8 +52672,8 @@ SetBerryPowder: @ 802467C .pool thumb_func_end SetBerryPowder - thumb_func_start ApplyNewEncyprtionKeyToBerryPowder -ApplyNewEncyprtionKeyToBerryPowder: @ 8024690 + thumb_func_start ApplyNewEncryptionKeyToBerryPowder +ApplyNewEncryptionKeyToBerryPowder: @ 8024690 push {lr} adds r1, r0, 0 ldr r0, =gSaveBlock2Ptr @@ -52681,11 +52681,11 @@ ApplyNewEncyprtionKeyToBerryPowder: @ 8024690 movs r2, 0xFA lsls r2, 1 adds r0, r2 - bl ApplyNewEncyprtionKeyToWord + bl ApplyNewEncryptionKeyToWord pop {r0} bx r0 .pool - thumb_func_end ApplyNewEncyprtionKeyToBerryPowder + thumb_func_end ApplyNewEncryptionKeyToBerryPowder thumb_func_start sub_80246AC sub_80246AC: @ 80246AC diff --git a/asm/rom4.s b/asm/rom4.s index 8b7dec1ae..ea03b8a8d 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -238,8 +238,8 @@ _08084854: .pool thumb_func_end sav12_xor_set - thumb_func_start ApplyNewEncyprtionKeyToGameStats -ApplyNewEncyprtionKeyToGameStats: @ 8084864 + thumb_func_start ApplyNewEncryptionKeyToGameStats +ApplyNewEncryptionKeyToGameStats: @ 8084864 push {r4-r6,lr} adds r5, r0, 0 movs r4, 0 @@ -251,7 +251,7 @@ _0808486C: ldr r0, [r6] adds r0, r1 adds r1, r5, 0 - bl ApplyNewEncyprtionKeyToWord + bl ApplyNewEncryptionKeyToWord adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 @@ -261,7 +261,7 @@ _0808486C: pop {r0} bx r0 .pool - thumb_func_end ApplyNewEncyprtionKeyToGameStats + thumb_func_end ApplyNewEncryptionKeyToGameStats thumb_func_start CopyFieldObjectTemplatesToSav1 @ void CopyFieldObjectTemplatesToSav1() diff --git a/src/item.c b/src/item.c index 32347623e..5cf9edf6c 100644 --- a/src/item.c +++ b/src/item.c @@ -5,7 +5,7 @@ #include "text.h" #include "event_data.h" -extern void ApplyNewEncyprtionKeyToHword(u16* hword, u32 newKey); +extern void ApplyNewEncryptionKeyToHword(u16* hword, u32 newKey); extern bool8 InBattlePyramid(void); extern const u8 gText_PokeBalls[]; @@ -45,19 +45,19 @@ void SetBagItemId(u16* slot, u16 newItemId) *slot = newItemId; } -void ApplyNewEncyprtionKeyToBagItems(u32 newKey) +void ApplyNewEncryptionKeyToBagItems(u32 newKey) { u32 pocket, item; for (pocket = 0; pocket < 5; pocket++) { for (item = 0; item < gBagPockets[pocket].capacity; item++) - ApplyNewEncyprtionKeyToHword(&(gBagPockets[pocket].itemSlots[item].quantity), newKey); + ApplyNewEncryptionKeyToHword(&(gBagPockets[pocket].itemSlots[item].quantity), newKey); } } -void ApplyNewEncyprtionKeyToBagItems_(u32 newKey) // really GF? +void ApplyNewEncryptionKeyToBagItems_(u32 newKey) // really GF? { - ApplyNewEncyprtionKeyToBagItems(newKey); + ApplyNewEncryptionKeyToBagItems(newKey); } // TODO: move those max values to defines diff --git a/src/load_save.c b/src/load_save.c index 5eb160e5a..1d78bda50 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -10,10 +10,10 @@ extern void* gUnknown_0203CF5C; extern bool16 IdentifyFlash(void); extern void SetBagItemsPointers(void); extern void SetDecorationInventoriesPointers(void); -extern void ApplyNewEncyprtionKeyToGameStats(u32 key); -extern void ApplyNewEncyprtionKeyToBagItems(u32 newKey); -extern void ApplyNewEncyprtionKeyToBagItems_(u32 key); -extern void ApplyNewEncyprtionKeyToBerryPowder(u32 key); +extern void ApplyNewEncryptionKeyToGameStats(u32 key); +extern void ApplyNewEncryptionKeyToBagItems(u32 newKey); +extern void ApplyNewEncryptionKeyToBagItems_(u32 key); +extern void ApplyNewEncryptionKeyToBerryPowder(u32 key); extern void sub_8084FAC(int unused); // this is probably wrong or misleading due to it being used in ResetHeap... @@ -43,7 +43,7 @@ EWRAM_DATA u8 gSaveblock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; EWRAM_DATA u32 gLastEncryptionKey = {0}; -void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey); +void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); void CheckForFlashMemory(void) { @@ -150,7 +150,7 @@ void MoveSaveBlocks_ResetHeap(void) // create a new encryption key encryptionKey = (Random() << 0x10) + (Random()); - ApplyNewEncyprtionKeyToAllEncryptedData(encryptionKey); + ApplyNewEncryptionKeyToAllEncryptedData(encryptionKey); gSaveBlock2Ptr->encryptionKey = encryptionKey; } #else @@ -235,7 +235,7 @@ void MoveSaveBlocks_ResetHeap(void) lsrs r0, 16\n\ adds r4, r0\n\ adds r0, r4, 0\n\ - bl ApplyNewEncyprtionKeyToAllEncryptedData\n\ + bl ApplyNewEncryptionKeyToAllEncryptedData\n\ ldr r1, =gSaveBlock2Ptr\n\ ldr r0, [r1]\n\ adds r0, 0xAC\n\ @@ -389,27 +389,27 @@ void copy_bags_and_unk_data_to_save_blocks(void) encryptionKeyBackup = gSaveBlock2Ptr->encryptionKey; gSaveBlock2Ptr->encryptionKey = gLastEncryptionKey; - ApplyNewEncyprtionKeyToBagItems(encryptionKeyBackup); + ApplyNewEncryptionKeyToBagItems(encryptionKeyBackup); gSaveBlock2Ptr->encryptionKey = encryptionKeyBackup; // updated twice? } -void ApplyNewEncyprtionKeyToHword(u16 *hWord, u32 newKey) +void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey) { *hWord ^= gSaveBlock2Ptr->encryptionKey; *hWord ^= newKey; } -void ApplyNewEncyprtionKeyToWord(u32 *word, u32 newKey) +void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey) { *word ^= gSaveBlock2Ptr->encryptionKey; *word ^= newKey; } -void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey) +void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey) { - ApplyNewEncyprtionKeyToGameStats(encryptionKey); - ApplyNewEncyprtionKeyToBagItems_(encryptionKey); - ApplyNewEncyprtionKeyToBerryPowder(encryptionKey); - ApplyNewEncyprtionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey); - ApplyNewEncyprtionKeyToHword(&gSaveBlock1Ptr->coins, encryptionKey); + ApplyNewEncryptionKeyToGameStats(encryptionKey); + ApplyNewEncryptionKeyToBagItems_(encryptionKey); + ApplyNewEncryptionKeyToBerryPowder(encryptionKey); + ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey); + ApplyNewEncryptionKeyToHword(&gSaveBlock1Ptr->coins, encryptionKey); } -- cgit v1.2.3 From 7144b3b7afc60597168fd85d31f333bb3a4b1826 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 27 Nov 2017 21:24:34 +0100 Subject: fix flavour flavor not building, fuccing americans --- include/battle_message.h | 4 ++-- src/battle_util.c | 20 ++++++-------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/include/battle_message.h b/include/battle_message.h index a820ff287..7ea4fc2f6 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -74,10 +74,10 @@ #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF -#define PREPARE_FLAVOUR_BUFFER(textVar, flavourId) \ +#define PREPARE_FLAVOR_BUFFER(textVar, flavourId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ - textVar[1] = B_BUFF_NEGATIVE_FLAVOUR; \ + textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \ textVar[2] = flavourId; \ textVar[3] = B_BUFF_EOS; \ } diff --git a/src/battle_util.c b/src/battle_util.c index a24688bde..5c305a4e4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -20,6 +20,7 @@ #include "event_data.h" #include "calculate_base_damage.h" #include "link.h" +#include "berry.h" extern const u8* gBattlescriptCurrInstr; extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; @@ -2537,15 +2538,6 @@ enum ITEM_STATS_CHANGE, // 5 }; -enum -{ - FLAVOR_SPICY, // 0 - FLAVOR_DRY, // 1 - FLAVOR_SWEET, // 2 - FLAVOR_BITTER, // 3 - FLAVOR_SOUR, // 4 -}; - u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { int i = 0; @@ -2707,7 +2699,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SPICY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) @@ -2725,7 +2717,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_DRY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) @@ -2743,7 +2735,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SWEET: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) @@ -2761,7 +2753,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_BITTER: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) @@ -2779,7 +2771,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SOUR: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) -- cgit v1.2.3 From 7275585d564ba7c619d6c585fc64d71666ae9eb1 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 27 Nov 2017 21:54:15 +0100 Subject: its flavour, not flavor --- include/battle_message.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/battle_message.h b/include/battle_message.h index 7ea4fc2f6..30ddca469 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -67,18 +67,18 @@ #define B_BUFF_STAT 5 #define B_BUFF_SPECIES 6 #define B_BUFF_MON_NICK 7 -#define B_BUFF_NEGATIVE_FLAVOR 8 +#define B_BUFF_NEGATIVE_FLAVOR 8 #define B_BUFF_ABILITY 9 #define B_BUFF_ITEM 10 #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF -#define PREPARE_FLAVOR_BUFFER(textVar, flavourId) \ +#define PREPARE_FLAVOR_BUFFER(textVar, flavorId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ - textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \ - textVar[2] = flavourId; \ + textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \ + textVar[2] = flavorId; \ textVar[3] = B_BUFF_EOS; \ } -- cgit v1.2.3