diff options
-rw-r--r-- | asm/party_menu.s | 18 | ||||
-rw-r--r-- | asm/rom_8011DC0.s | 4 | ||||
-rw-r--r-- | asm/script_pokemon_util_80F87D8.s | 1667 | ||||
-rw-r--r-- | data/maps/LilycoveCity_ContestLobby/scripts.inc | 6 | ||||
-rw-r--r-- | data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc | 2 | ||||
-rw-r--r-- | data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc | 2 | ||||
-rw-r--r-- | data/maps/UnknownMap_25_34/scripts.inc | 4 | ||||
-rw-r--r-- | data/script_pokemon_util_80F87D8.s | 7 | ||||
-rw-r--r-- | data/scripts/contest_hall.inc | 4 | ||||
-rw-r--r-- | data/specials.inc | 12 | ||||
-rw-r--r-- | include/contest.h | 6 | ||||
-rw-r--r-- | include/contest_link_80F57C4.h | 3 | ||||
-rw-r--r-- | include/contest_painting.h | 1 | ||||
-rw-r--r-- | include/international_string_util.h | 2 | ||||
-rw-r--r-- | include/script_pokemon_util_80F87D8.h | 3 | ||||
-rw-r--r-- | include/text.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/battle_dome.c | 16 | ||||
-rw-r--r-- | src/battle_pyramid.c | 6 | ||||
-rw-r--r-- | src/cable_club.c | 12 | ||||
-rw-r--r-- | src/contest_ai.c | 2 | ||||
-rw-r--r-- | src/frontier_util.c | 8 | ||||
-rw-r--r-- | src/rom_8011DC0.c | 6 | ||||
-rwxr-xr-x | src/script_pokemon_util_80F87D8.c | 887 | ||||
-rw-r--r-- | src/text.c | 10 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
26 files changed, 958 insertions, 1738 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s index 231cb72d7..bbb36b109 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -1219,7 +1219,7 @@ sub_81B0A9C: @ 81B0A9C muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 - ldr r6, =gUnknown_0203CEF8 + ldr r6, =gSelectedOrderFromParty bl sub_81B85AC lsls r0, 24 cmp r0, 0 @@ -9304,7 +9304,7 @@ sub_81B4E8C: @ 81B4E8C adds r0, r1 mov r8, r0 _081B4EC6: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r4, r5, r0 ldrb r0, [r4] cmp r0, 0 @@ -9418,7 +9418,7 @@ sub_81B4FA8: @ 81B4FA8 movs r4, 0 cmp r4, r5 bcs _081B502A - ldr r6, =gUnknown_0203CEF8 + ldr r6, =gSelectedOrderFromParty subs r2, r5, 0x1 adds r7, r6, 0 ldr r3, =gUnknown_0203CEC8 @@ -9476,7 +9476,7 @@ _081B502A: cmp r4, r5 bge _081B5078 _081B504E: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0 @@ -15518,7 +15518,7 @@ sub_81B8518: @ 81B8518 thumb_func_start sub_81B8558 sub_81B8558: @ 81B8558 push {lr} - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty movs r1, 0 movs r2, 0x4 bl memset @@ -15655,7 +15655,7 @@ sub_81B865C: @ 81B865C lsls r0, 24 lsrs r2, r0, 24 adds r1, r2, 0 - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty adds r0, r2, r3 subs r0, 0x1 ldrb r0, [r0] @@ -15700,7 +15700,7 @@ _081B86C0: movs r5, 0 b _081B8750 _081B86CE: - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty adds r4, r3, r5 ldrb r0, [r4] movs r1, 0x64 @@ -15731,7 +15731,7 @@ _081B86CE: bcs _081B8748 movs r7, 0x64 _081B870E: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r5, r0, r4 ldrb r0, [r5] muls r0, r7 @@ -15787,7 +15787,7 @@ sub_81B8770: @ 81B8770 lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty _081B877A: adds r0, r1, r3 ldrb r0, [r0] diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 6103785da..a52c2bc88 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -10149,7 +10149,7 @@ sub_801AAD4: @ 801AAD4 ldr r6, =gPlayerParty ldr r5, =gEnemyParty _0801AAE4: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r0, r4, r0 ldrb r0, [r0] subs r0, 0x1 @@ -10504,7 +10504,7 @@ _0801AE54: movs r1, 0 movs r2, 0x20 bl memset - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty ldrb r1, [r0] ldrb r0, [r0, 0x1] cmn r1, r0 diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s deleted file mode 100644 index 1202473ee..000000000 --- a/asm/script_pokemon_util_80F87D8.s +++ /dev/null @@ -1,1667 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F87D8 -sub_80F87D8: @ 80F87D8 - push {r4,lr} - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, =gContestMons - ldrb r3, [r1, 0x15] - ldr r4, =0x000013bc - adds r0, r2, r4 - strh r3, [r0] - adds r0, r1, 0 - adds r0, 0x55 - ldrb r3, [r0] - adds r4, 0x2 - adds r0, r2, r4 - strh r3, [r0] - adds r1, 0x95 - ldrb r0, [r1] - movs r1, 0x9E - lsls r1, 5 - adds r2, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F87D8 - - thumb_func_start sub_80F8814 -sub_80F8814: @ 80F8814 - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r0, 0x1 - beq _080F883A - cmp r0, 0x1 - bgt _080F8830 - cmp r0, 0 - beq _080F8836 - b _080F8842 - .pool -_080F8830: - cmp r1, 0x2 - beq _080F883E - b _080F8842 -_080F8836: - movs r1, 0x3 - b _080F8844 -_080F883A: - movs r1, 0x4 - b _080F8844 -_080F883E: - movs r1, 0x5 - b _080F8844 -_080F8842: - movs r1, 0x64 -_080F8844: - ldr r0, =gSpecialVar_0x8004 - strh r1, [r0] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8814 - - thumb_func_start sub_80F8850 -sub_80F8850: @ 80F8850 - push {lr} - bl sub_80F8264 - bl sub_80F8290 - bl sub_80F8438 - pop {r0} - bx r0 - thumb_func_end sub_80F8850 - - thumb_func_start sub_80F8864 -sub_80F8864: @ 80F8864 - push {lr} - ldr r0, =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080F88A4 - lsls r0, 2 - ldr r1, =_080F8880 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F8880: - .4byte _080F8894 - .4byte _080F8898 - .4byte _080F889C - .4byte _080F88A0 - .4byte _080F88A4 -_080F8894: - movs r1, 0x8 - b _080F88A6 -_080F8898: - movs r1, 0x9 - b _080F88A6 -_080F889C: - movs r1, 0xA - b _080F88A6 -_080F88A0: - movs r1, 0xB - b _080F88A6 -_080F88A4: - movs r1, 0xC -_080F88A6: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, 5 - adds r0, r1 - ldr r1, =0x00002e98 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - bne _080F88CC - ldr r0, =gSpecialVar_0x8004 - strh r1, [r0] - b _080F88D2 - .pool -_080F88CC: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] -_080F88D2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8864 - - thumb_func_start sub_80F88DC -sub_80F88DC: @ 80F88DC - push {lr} - movs r0, 0xFF - bl sub_80DEDA8 - pop {r0} - bx r0 - thumb_func_end sub_80F88DC - - thumb_func_start sub_80F88E8 -sub_80F88E8: @ 80F88E8 - push {lr} - ldr r0, =gContestFinalStandings - ldr r1, =gContestPlayerMonIndex - ldrb r2, [r1] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8930 - ldr r0, =gSpecialVar_ContestRank - ldrh r0, [r0] - cmp r0, 0x3 - bne _080F8930 - ldr r1, =gUnknown_02039F08 - lsls r0, r2, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, =0x0000031f - cmp r1, r0 - ble _080F8930 - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - b _080F8934 - .pool -_080F8930: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0 -_080F8934: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F88E8 - - thumb_func_start sub_80F8940 -sub_80F8940: @ 80F8940 - push {lr} - movs r3, 0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x00002f98 - adds r1, r0, r2 - movs r2, 0x4 -_080F894E: - ldrh r0, [r1] - cmp r0, 0 - beq _080F895A - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080F895A: - adds r1, 0x20 - subs r2, 0x1 - cmp r2, 0 - bge _080F894E - adds r0, r3, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F8940 - - thumb_func_start sub_80F8970 -sub_80F8970: @ 80F8970 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, =gContestMonConditions - mov r12, r0 - ldr r1, =gSpecialVar_0x8006 - mov r9, r1 - ldr r2, =gContestMons + 2 - mov r10, r2 - mov r2, r12 - mov r1, sp - movs r6, 0x3 -_080F898E: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080F898E - movs r6, 0 -_080F899E: - movs r1, 0x3 - cmp r1, r6 - ble _080F89C8 -_080F89A4: - subs r5, r1, 0x1 - lsls r0, r5, 1 - mov r4, sp - adds r3, r4, r0 - lsls r0, r1, 1 - adds r2, r4, r0 - ldrh r4, [r3] - movs r7, 0 - ldrsh r1, [r3, r7] - movs r7, 0 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080F89C2 - strh r4, [r2] - strh r0, [r3] -_080F89C2: - adds r1, r5, 0 - cmp r1, r6 - bgt _080F89A4 -_080F89C8: - adds r6, 0x1 - cmp r6, 0x2 - ble _080F899E - mov r2, r9 - ldrh r0, [r2] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - movs r2, 0 - mov r8, r2 - movs r6, 0 - lsls r0, 16 - asrs r4, r0, 16 - adds r3, r0, 0 - mov r1, sp - mov r5, r9 -_080F89E8: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, r4 - bne _080F8A02 - lsls r0, r2, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r2, r0, 24 - ldrh r7, [r5] - cmp r6, r7 - bne _080F8A02 - mov r8, r2 -_080F8A02: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080F89E8 - movs r6, 0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - asrs r1, r3, 16 - lsls r2, 24 - mov r9, r2 - cmp r0, r1 - beq _080F8A30 - adds r2, r1, 0 - mov r1, sp -_080F8A20: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - bgt _080F8A30 - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, r2 - bne _080F8A20 -_080F8A30: - lsls r0, r6, 24 - lsrs r7, r0, 24 - mov r2, r8 - movs r6, 0 - asrs r1, r3, 16 - mov r5, r12 - movs r4, 0 - ldrsh r0, [r5, r4] - b _080F8A66 - .pool -_080F8A50: - subs r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080F8A56: - adds r6, 0x1 - cmp r6, 0x3 - bgt _080F8A6E - lsls r0, r6, 1 - add r0, r12 - asrs r1, r3, 16 - movs r5, 0 - ldrsh r0, [r0, r5] -_080F8A66: - cmp r1, r0 - bne _080F8A56 - cmp r2, 0x1 - bne _080F8A50 -_080F8A6E: - lsls r4, r6, 6 - mov r0, r10 - adds r1, r4, r0 - ldr r0, =gStringVar1 - bl StringCopy - ldr r5, =gStringVar2 - mov r0, r10 - adds r0, 0xB - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringCopy - adds r0, r5, 0 - bl sub_81DB5AC - mov r1, r9 - asrs r0, r1, 24 - cmp r0, 0x1 - beq _080F8A9C - cmp r8, r0 - bne _080F8AB0 -_080F8A9C: - ldr r0, =gSpecialVar_0x8006 - strh r7, [r0] - b _080F8AB6 - .pool -_080F8AB0: - ldr r1, =gSpecialVar_0x8006 - adds r0, r7, 0x4 - strh r0, [r1] -_080F8AB6: - 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_80F8970 - - thumb_func_start sub_80F8ACC -sub_80F8ACC: @ 80F8ACC - push {lr} - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8ACC - - thumb_func_start ShowContestWinner -ShowContestWinner: @ 80F8ADC - push {lr} - ldr r0, =sub_812FDEC - bl SetMainCallback2 - ldr r1, =gMain - ldr r0, =sub_80F8ACC - str r0, [r1, 0x8] - pop {r0} - bx r0 - .pool - thumb_func_end ShowContestWinner - - thumb_func_start sub_80F8AFC -sub_80F8AFC: @ 80F8AFC - push {r4,r5,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8B7C - movs r3, 0 - ldr r0, =gUnknown_02039F30 - adds r4, r0, 0 - ldr r5, =gContestMons - ldrb r0, [r4] - cmp r3, r0 - bge _080F8B50 - adds r2, r5, 0 - ldr r1, =gLinkPlayers -_080F8B1C: - ldrb r0, [r1] - subs r0, 0x1 - cmp r0, 0x1 - bhi _080F8B44 - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8B40 - movs r0, 0xEB - b _080F8B42 - .pool -_080F8B40: - movs r0, 0xEC -_080F8B42: - strb r0, [r2, 0x15] -_080F8B44: - adds r2, 0x40 - adds r1, 0x1C - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _080F8B1C -_080F8B50: - ldr r0, =0x00004010 - ldrb r1, [r5, 0x15] - bl VarSet - ldr r0, =0x00004011 - adds r1, r5, 0 - adds r1, 0x55 - ldrb r1, [r1] - bl VarSet - ldr r0, =0x00004012 - adds r1, r5, 0 - adds r1, 0x95 - ldrb r1, [r1] - bl VarSet - ldr r0, =0x00004013 - adds r1, r5, 0 - adds r1, 0xD5 - ldrb r1, [r1] - bl VarSet -_080F8B7C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8AFC - - thumb_func_start sub_80F8B94 -sub_80F8B94: @ 80F8B94 - push {r4-r7,lr} - ldr r1, =gReservedSpritePaletteCount - movs r0, 0xC - strb r0, [r1] - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8C6E - movs r5, 0 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r5, r0 - bge _080F8C6E - movs r7, 0 - movs r6, 0x60 - movs r4, 0xB0 - lsls r4, 17 -_080F8BBA: - ldr r0, =gUnknown_0858D8EC - adds r0, r5, r0 - ldrb r0, [r0] - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl GetEventObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gEventObjects - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, =gSprites - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r6 - strb r0, [r1, 0x5] - ldr r0, =gLinkPlayers - adds r1, r7, r0 - ldrb r0, [r1] - subs r0, 0x1 - cmp r0, 0x1 - bhi _080F8C38 - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8C2C - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette33 - b _080F8C42 - .pool -_080F8C2C: - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette34 - b _080F8C42 - .pool -_080F8C38: - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8C50 - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette8 -_080F8C42: - movs r2, 0x20 - bl LoadPalette - b _080F8C5A - .pool -_080F8C50: - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette17 - movs r2, 0x20 - bl LoadPalette -_080F8C5A: - movs r0, 0x80 - lsls r0, 13 - adds r4, r0 - adds r7, 0x1C - adds r6, 0x10 - adds r5, 0x1 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r5, r0 - blt _080F8BBA -_080F8C6E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8B94 - - thumb_func_start sub_80F8C7C -sub_80F8C7C: @ 80F8C7C - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, =gUnknown_02039F24 - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, =gPlayerParty - adds r0, r4 - movs r1, 0x46 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - cmp r0, 0 - bne _080F8D18 - ldr r0, =gContestFinalStandings - ldr r1, =gContestPlayerMonIndex - ldrb r2, [r1] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8D18 - ldr r0, =gSpecialVar_ContestRank - ldrh r0, [r0] - cmp r0, 0x3 - bne _080F8D18 - ldr r1, =gUnknown_02039F08 - lsls r0, r2, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, =0x0000031f - cmp r1, r0 - ble _080F8D18 - movs r1, 0x1 - mov r0, sp - strb r1, [r0] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0x46 - mov r2, sp - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl GetRibbonCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _080F8CF6 - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0x46 - bl sub_80EE4DC -_080F8CF6: - movs r0, 0x1 - b _080F8D1A - .pool -_080F8D18: - movs r0, 0 -_080F8D1A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F8C7C - - thumb_func_start sub_80F8D24 -sub_80F8D24: @ 80F8D24 - movs r0, 0 - bx lr - thumb_func_end sub_80F8D24 - - thumb_func_start sub_80F8D28 -sub_80F8D28: @ 80F8D28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, =sub_80F8EE8 - adds r0, r7, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080F8D44 - b _080F8E9C -_080F8D44: - bl AllocateMonSpritesGfx - movs r0, 0xA - mov r9, r0 - movs r1, 0x3 - mov r10, r1 - ldr r2, =gContestMons - ldr r4, =gSpecialVar_0x8006 - ldrh r1, [r4] - lsls r1, 6 - adds r0, r1, r2 - ldrh r6, [r0] - adds r0, r2, 0 - adds r0, 0x38 - adds r0, r1, r0 - ldr r5, [r0] - adds r2, 0x3C - adds r1, r2 - ldr r1, [r1] - mov r8, r1 - adds r0, r7, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, =gContestPlayerMonIndex - ldrh r0, [r4] - ldrb r1, [r1] - cmp r0, r1 - bne _080F8DC4 - lsls r0, r6, 3 - ldr r1, =gMonFrontPicTable - adds r0, r1 - ldr r1, =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r5, 0 - bl HandleLoadSpecialPokePic_2 - b _080F8DD8 - .pool -_080F8DC4: - lsls r0, r6, 3 - ldr r1, =gMonFrontPicTable - adds r0, r1 - ldr r1, =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r5, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys -_080F8DD8: - adds r0, r6, 0 - mov r1, r8 - adds r2, r5, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedObjectPalette - adds r0, r6, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, =gMultiuseSpriteTemplate - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x2] - mov r1, r9 - adds r1, 0x1 - lsls r1, 19 - movs r2, 0x80 - lsls r2, 14 - adds r1, r2 - asrs r1, 16 - mov r3, r10 - lsls r2, r3, 19 - movs r3, 0xA0 - lsls r3, 14 - adds r2, r3 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8E58 - movs r0, 0x4 - ands r0, r1 - lsls r4, r5, 4 - cmp r0, 0 - bne _080F8E6C - adds r0, r4, r5 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl DoMonFrontSpriteAnimation - b _080F8E6C - .pool -_080F8E58: - lsls r4, r5, 4 - adds r0, r4, r5 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl DoMonFrontSpriteAnimation -_080F8E6C: - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - mov r2, r10 - strh r2, [r0, 0x10] - ldr r3, =gSprites - adds r1, r4, r5 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, =SpriteCallbackDummy - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_080F8E9C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8D28 - - thumb_func_start sub_80F8EB8 -sub_80F8EB8: @ 80F8EB8 - push {lr} - ldr r0, =sub_80F8EE8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080F8EDC - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - bl FreeMonSpritesGfx -_080F8EDC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8EB8 - - thumb_func_start sub_80F8EE8 -sub_80F8EE8: @ 80F8EE8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r2, 0x8 - ldrsh r0, [r5, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _080F8F98 - lsls r0, 2 - ldr r1, =_080F8F14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F8F14: - .4byte _080F8F78 - .4byte _080F8F28 - .4byte _080F8F98 - .4byte _080F8F42 - .4byte _080F8F84 -_080F8F28: - movs r0, 0xA - movs r1, 0x3 - movs r2, 0x8 - movs r3, 0x8 - bl CreateWindowFromRect - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - movs r1, 0x1 - bl SetStandardWindowBorderStyle - b _080F8F78 -_080F8F42: - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r4, r0, r1 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - bl GetSpritePaletteTagByPaletteNum - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - ldrb r0, [r4, 0x1] - lsls r0, 30 - cmp r0, 0 - beq _080F8F72 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix -_080F8F72: - adds r0, r4, 0 - bl DestroySprite -_080F8F78: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080F8F98 - .pool -_080F8F84: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x12] - bl sub_80E2A78 - adds r0, r4, 0 - bl DestroyTask -_080F8F98: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F8EE8 - - thumb_func_start sub_80F8FA0 -sub_80F8FA0: @ 80F8FA0 - push {r4,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8FD8 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r0, 0x4 - bne _080F8FD8 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F8FD8 - ldr r4, =gSpecialVar_Result - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - b _080F8FDE - .pool -_080F8FD8: - ldr r1, =gSpecialVar_Result - movs r0, 0x4 - strh r0, [r1] -_080F8FDE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8FA0 - - thumb_func_start sub_80F8FE8 -sub_80F8FE8: @ 80F8FE8 - push {r4,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F9020 - ldr r2, =gContestRngValue - ldr r1, [r2] - ldr r0, =0x41c64e6d - muls r0, r1 - ldr r1, =0x00006073 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - ldr r4, =gSpecialVar_Result - b _080F902A - .pool -_080F9020: - ldr r4, =gSpecialVar_Result - bl Random - lsls r0, 16 - lsrs r0, 16 -_080F902A: - ldrh r1, [r4] - bl __umodsi3 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8FE8 - - thumb_func_start sub_80F903C -sub_80F903C: @ 80F903C - ldr r2, =gContestRngValue - ldr r1, [r2] - ldr r0, =0x41c64e6d - muls r0, r1 - ldr r1, =0x00006073 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - bx lr - .pool - thumb_func_end sub_80F903C - - thumb_func_start sub_80F905C -sub_80F905C: @ 80F905C - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F9074 - movs r0, 0 - b _080F907E - .pool -_080F9074: - ldr r0, =sub_80F9088 - movs r1, 0x5 - bl CreateTask - movs r0, 0x1 -_080F907E: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F905C - - thumb_func_start sub_80F9088 -sub_80F9088: @ 80F9088 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - 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 - beq _080F90C0 - cmp r0, 0x1 - beq _080F90CE - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F90D4 - bl EnableBothScriptContexts - adds r0, r5, 0 - bl DestroyTask - b _080F90D4 - .pool -_080F90C0: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080F90D4 - bl sub_800ADF8 -_080F90CE: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080F90D4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F9088 - - thumb_func_start sub_80F90DC -sub_80F90DC: @ 80F90DC - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F90FE - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F90FE - bl sub_800E0E8 - movs r0, 0x8 - movs r1, 0x8 - bl CreateWirelessStatusIndicatorSprite -_080F90FE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F90DC - - thumb_func_start sub_80F910C -sub_80F910C: @ 80F910C - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F9126 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F9126 - bl sub_800E084 -_080F9126: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F910C - - thumb_func_start sub_80F9134 -sub_80F9134: @ 80F9134 - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080F914C - movs r0, 0 - b _080F914E - .pool -_080F914C: - movs r0, 0x1 -_080F914E: - pop {r1} - bx r1 - thumb_func_end sub_80F9134 - - thumb_func_start sub_80F9154 -sub_80F9154: @ 80F9154 - ldr r1, =gIsLinkContest - movs r0, 0 - strb r0, [r1] - bx lr - .pool - thumb_func_end sub_80F9154 - - thumb_func_start sub_80F9160 -sub_80F9160: @ 80F9160 - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F9178 - movs r0, 0 - b _080F917A - .pool -_080F9178: - movs r0, 0x1 -_080F917A: - pop {r1} - bx r1 - thumb_func_end sub_80F9160 - - thumb_func_start HealPlayerParty -HealPlayerParty: @ 80F9180 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r8, r0 - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - cmp r8, r0 - bcs _080F922C - ldr r1, =gPlayerParty - mov r10, r1 - mov r6, sp -_080F919E: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - lsls r1, r0, 16 - strb r0, [r6] - lsrs r1, 24 - strb r1, [r6, 0x1] - adds r0, r4, 0 - movs r1, 0x39 - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - lsls r0, 24 - lsrs r7, r0, 24 - movs r5, 0 - movs r1, 0x1 - add r1, r8 - mov r9, r1 -_080F91D4: - adds r1, r5, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r7, 0 - adds r2, r5, 0 - bl CalculatePPWithBonus - strb r0, [r6] - adds r1, r5, 0 - adds r1, 0x11 - adds r0, r4, 0 - mov r2, sp - bl SetMonData - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080F91D4 - movs r0, 0 - strb r0, [r6] - strb r0, [r6, 0x1] - strb r0, [r6, 0x2] - strb r0, [r6, 0x3] - movs r1, 0x64 - mov r0, r8 - muls r0, r1 - add r0, r10 - movs r1, 0x37 - mov r2, sp - bl SetMonData - mov r1, r9 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - cmp r8, r0 - bcc _080F919E -_080F922C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end HealPlayerParty - - thumb_func_start ScriptGiveMon -@ void ScriptGiveMon(s16 species_num, u8 level, int held_item) -ScriptGiveMon: @ 80F9244 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x78 - adds r5, r0, 0 - adds r3, r1, 0 - adds r4, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 16 - lsrs r0, r4, 16 - mov r8, r0 - add r6, sp, 0x14 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r3, 0 - movs r3, 0x20 - bl CreateMon - add r0, sp, 0x10 - mov r1, r8 - strb r1, [r0] - lsrs r4, 24 - strb r4, [r0, 0x1] - adds r0, r6, 0 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData - adds r0, r6, 0 - bl GiveMonToPlayer - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0x1 - bgt _080F92B8 - cmp r4, 0 - blt _080F92B8 - adds r0, r5, 0 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r0, r5, 0 - movs r1, 0x3 - bl GetSetPokedexFlag -_080F92B8: - adds r0, r4, 0 - add sp, 0x78 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScriptGiveMon - - thumb_func_start ScriptGiveEgg -ScriptGiveEgg: @ 80F92C8 - push {lr} - sub sp, 0x68 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, sp - movs r2, 0x1 - bl CreateEgg - add r2, sp, 0x64 - movs r0, 0x1 - strb r0, [r2] - mov r0, sp - movs r1, 0x2D - bl SetMonData - mov r0, sp - bl GiveMonToPlayer - lsls r0, 24 - lsrs r0, 24 - add sp, 0x68 - pop {r1} - bx r1 - thumb_func_end ScriptGiveEgg - - thumb_func_start HasEnoughMonsForDoubleBattle -HasEnoughMonsForDoubleBattle: @ 80F92F8 - push {lr} - bl GetMonsStateToDoubles - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - beq _080F9314 - cmp r1, 0x1 - bgt _080F9310 - cmp r1, 0 - beq _080F9314 - b _080F9318 -_080F9310: - cmp r1, 0x2 - bne _080F9318 -_080F9314: - ldr r0, =gSpecialVar_Result - strh r1, [r0] -_080F9318: - pop {r0} - bx r0 - .pool - thumb_func_end HasEnoughMonsForDoubleBattle - - thumb_func_start sub_80F9320 -sub_80F9320: @ 80F9320 - push {r4-r7,lr} - lsls r0, 16 - lsrs r6, r0, 16 - movs r5, 0 - movs r7, 0xCE - lsls r7, 1 -_080F932C: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080F9360 - cmp r0, r7 - beq _080F9360 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - cmp r0, r6 - bne _080F9360 - movs r0, 0x1 - b _080F9368 - .pool -_080F9360: - adds r5, 0x1 - cmp r5, 0x5 - ble _080F932C - movs r0, 0 -_080F9368: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F9320 - - thumb_func_start sub_80F9370 -sub_80F9370: @ 80F9370 - push {r4,lr} - movs r0, 0xAF - bl sub_80F9320 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r4, 0x1 - bne _080F9392 - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gStringVar1 - bl GetBerryNameByBerryType -_080F9392: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F9370 - - thumb_func_start CreateScriptedWildMon -CreateScriptedWildMon: @ 80F93A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - lsls r7, r2, 16 - lsrs r6, r7, 16 - bl ZeroEnemyPartyMons - ldr r0, =gEnemyParty - mov r8, r0 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x20 - bl CreateMon - cmp r6, 0 - beq _080F93EE - add r0, sp, 0x10 - strb r6, [r0] - adds r1, r0, 0 - lsrs r0, r7, 24 - strb r0, [r1, 0x1] - mov r0, r8 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData -_080F93EE: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CreateScriptedWildMon - - thumb_func_start ScriptSetMonMoveSlot -ScriptSetMonMoveSlot: @ 80F9400 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r2, 24 - cmp r3, 0x6 - bls _080F941C - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080F941C: - movs r0, 0x64 - muls r0, r3 - ldr r1, =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl SetMonMoveSlot - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ScriptSetMonMoveSlot - - thumb_func_start sub_80F9438 -sub_80F9438: @ 80F9438 - push {lr} - ldr r0, =gMain - ldr r1, =sub_80F9460 - str r1, [r0, 0x8] - ldr r0, =0x000040cf - movs r1, 0x9 - bl VarSet - movs r0, 0 - bl sub_81B8518 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9438 - - thumb_func_start sub_80F9460 -sub_80F9460: @ 80F9460 - push {lr} - ldr r0, =gUnknown_0203CEF8 - ldrb r1, [r0] - cmp r1, 0 - bne _080F9478 - ldr r0, =gSpecialVar_Result - strh r1, [r0] - b _080F947E - .pool -_080F9478: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_080F947E: - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9460 - - thumb_func_start sub_80F9490 -sub_80F9490: @ 80F9490 - push {lr} - ldr r1, =gMain - ldr r0, =sub_80F94B8 - str r0, [r1, 0x8] - ldr r0, =gSpecialVar_0x8004 - ldrb r0, [r0] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - bl sub_81B8518 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9490 - - thumb_func_start sub_80F94B8 -sub_80F94B8: @ 80F94B8 - push {lr} - ldr r0, =gUnknown_0203CEF8 - ldrb r1, [r0] - cmp r1, 0 - bne _080F94D0 - ldr r0, =gSpecialVar_Result - strh r1, [r0] - b _080F94D6 - .pool -_080F94D0: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_080F94D6: - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F94B8 - - thumb_func_start ReducePlayerPartyToThree -ReducePlayerPartyToThree: @ 80F94E8 - push {r4-r7,lr} - sub sp, 0x198 - add r0, sp, 0x190 - movs r1, 0 - str r1, [r0] - ldr r2, =0x05000064 - mov r1, sp - bl CpuSet - movs r5, 0 - movs r7, 0x64 - ldr r6, =gPlayerParty - mov r4, sp -_080F9502: - ldr r0, =gUnknown_0203CEF8 - adds r1, r5, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080F951C - subs r0, 0x1 - adds r1, r0, 0 - muls r1, r7 - adds r1, r6 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy -_080F951C: - adds r4, 0x64 - adds r5, 0x1 - cmp r5, 0x3 - ble _080F9502 - add r0, sp, 0x194 - movs r1, 0 - str r1, [r0] - ldr r4, =gPlayerParty - ldr r2, =0x05000096 - adds r1, r4, 0 - bl CpuSet - mov r5, sp - add r6, sp, 0x12C -_080F9538: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r5, 0x64 - adds r4, 0x64 - cmp r5, r6 - ble _080F9538 - bl CalculatePlayerPartyCount - add sp, 0x198 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ReducePlayerPartyToThree - - .align 2, 0 @ Don't pad with nop. diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc index 1dfc72bcc..65749894b 100644 --- a/data/maps/LilycoveCity_ContestLobby/scripts.inc +++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc @@ -57,7 +57,7 @@ LilycoveCity_ContestLobby_EventScript_21A2AA:: @ 821A2AA closemessage special sub_80F88DC setvar VAR_0x4099, 0 - specialvar VAR_RESULT, sub_80F8C7C + specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 call_if 1, LilycoveCity_ContestLobby_EventScript_21A314 applymovement 4, LilycoveCity_ContestLobby_Movement_21A40F @@ -230,7 +230,7 @@ LilycoveCity_ContestLobby_EventScript_21A47A:: @ 821A47A closemessage special sub_80F88DC setvar VAR_0x4099, 0 - specialvar VAR_RESULT, sub_80F8C7C + specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 call_if 1, LilycoveCity_ContestLobby_EventScript_21A4E4 applymovement 11, LilycoveCity_ContestLobby_Movement_21A53C @@ -324,7 +324,7 @@ LilycoveCity_ContestLobby_EventScript_21A554:: @ 821A554 goto_eq LilycoveCity_ContestLobby_EventScript_21A5CF call LilycoveCity_ContestLobby_EventScript_279CC5 call LilycoveCity_ContestLobby_EventScript_21A670 - special sub_80F87D8 + special SetContestTrainerGfxIds call LilycoveCity_ContestLobby_EventScript_23BEB6 call LilycoveCity_ContestLobby_EventScript_21A585 call LilycoveCity_ContestLobby_EventScript_21A5EF diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc index 242d1b8d8..424ee4bf3 100644 --- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc @@ -260,7 +260,7 @@ MossdeepCity_SpaceCenter_2F_EventScript_22400C:: @ 822400C goto MossdeepCity_SpaceCenter_2F_EventScript_223FDA MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032 - special ReducePlayerPartyToThree + special ReducePlayerPartyToSelectedMons setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 special CallFrontierUtilFunc diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc index 4bd15c332..e11d3ae9f 100644 --- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc +++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc @@ -106,7 +106,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58 compare VAR_RESULT, 0 goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2 special SavePlayerParty - special ReducePlayerPartyToThree + special ReducePlayerPartyToSelectedMons msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227D21, 4 closemessage compare VAR_FACING, 2 diff --git a/data/maps/UnknownMap_25_34/scripts.inc b/data/maps/UnknownMap_25_34/scripts.inc index eb6bf8da4..2e13983fa 100644 --- a/data/maps/UnknownMap_25_34/scripts.inc +++ b/data/maps/UnknownMap_25_34/scripts.inc @@ -18,7 +18,7 @@ LinkContestRoom1_MapScript1_23B79F: @ 823B79F LinkContestRoom1_EventScript_23B7AF:: @ 823B7AF call LinkContestRoom1_EventScript_27A133 - special sub_80F8FA0 + special ScriptGetMultiplayerId compare VAR_RESULT, 0 call_if 1, LinkContestRoom1_EventScript_23B7EF compare VAR_RESULT, 1 @@ -134,7 +134,7 @@ LinkContestRoom1_EventScript_23B8ED:: @ 823B8ED LinkContestRoom1_EventScript_23B8F8:: @ 823B8F8 setvar VAR_RESULT, 32 - special sub_80F8FE8 + special ScriptRandom addvar VAR_RESULT, 1 switch VAR_RESULT case 1, LinkContestRoom1_EventScript_23BA6B diff --git a/data/script_pokemon_util_80F87D8.s b/data/script_pokemon_util_80F87D8.s deleted file mode 100644 index dcf9edeea..000000000 --- a/data/script_pokemon_util_80F87D8.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 -gUnknown_0858D8EC:: @ 858D8EC - .byte 3, 4, 5, 14 diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index afd2ca851..48c5d8d01 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -388,7 +388,7 @@ LinkContestRoom1_EventScript_27A1D2:: @ 827A1D2 releaseall addvar VAR_0x8006, 65535 playse SE_BOWA2 - special sub_80F8D28 + special ShowContestEntryMonPic call LinkContestRoom1_EventScript_27A217 return @@ -517,7 +517,7 @@ LinkContestRoom1_EventScript_27A34F:: @ 827A34F LinkContestRoom1_EventScript_27A3E5:: @ 827A3E5 setvar VAR_RESULT, 8 - special sub_80F8FE8 + special ScriptRandom compare VAR_RESULT, 0 call_if 1, LinkContestRoom1_EventScript_27A65A compare VAR_RESULT, 1 diff --git a/data/specials.inc b/data/specials.inc index 75f180420..a1d9734ca 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -94,7 +94,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F8390 def_special sub_80F8850 def_special sub_80F82B4 - def_special sub_80F87D8 + def_special SetContestTrainerGfxIds def_special sub_80F7F30 def_special sub_80F8970 def_special sub_80F8AFC @@ -102,7 +102,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F7F7C def_special sub_80F7FFC def_special sub_80F8D24 - def_special sub_80F8C7C + def_special GiveMonArtistRibbon def_special sub_80B3000 def_special SaveGame def_special sub_80FAFF8 @@ -259,7 +259,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F9490 def_special ValidateEReaderTrainer def_special GetBestBattleTowerStreak - def_special ReducePlayerPartyToThree + def_special ReducePlayerPartyToSelectedMons def_special BedroomPC def_special PlayerPC def_special FieldShowRegionMap @@ -330,13 +330,13 @@ gSpecials:: @ 81DBA64 def_special sub_80AC81C def_special sp13E_warp_to_last_warp def_special sp13F_fall_to_last_warp - def_special sub_80F8D28 + def_special ShowContestEntryMonPic def_special sub_80F8EB8 def_special SetEReaderTrainerGfxId def_special BattleSetup_StartLatiBattle def_special SetRoute119Weather def_special SetRoute123Weather - def_special sub_80F8FA0 + def_special ScriptGetMultiplayerId def_special ScriptGetPartyMonSpecies def_special sub_81B98DC def_special nullsub_54 @@ -350,7 +350,7 @@ gSpecials:: @ 81DBA64 def_special BufferLottoTicketNumber def_special sub_81653CC def_special sub_80F9370 - def_special sub_80F8FE8 + def_special ScriptRandom def_special sub_81AFDD0 def_special sub_80EDCE8 def_special sub_80EE2CC diff --git a/include/contest.h b/include/contest.h index 502d44b90..8790d7371 100644 --- a/include/contest.h +++ b/include/contest.h @@ -226,6 +226,11 @@ extern u8 gUnknown_02039F24; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; extern u8 gUnknown_02039F30; +extern u8 gContestFinalStandings[4]; +extern u8 gContestPlayerMonIndex; +extern s16 gUnknown_02039F08[4]; +extern s16 gContestMonConditions[4]; +extern u8 gIsLinkContest; struct Shared18000 { @@ -427,5 +432,6 @@ bool8 Contest_IsMonsTurnDisabled(u8 a); bool8 sub_80DE1E8(u8 a); void SetStartledString(u8 a, u8 b); s8 Contest_GetMoveExcitement(u16); +void sub_80DEDA8(u8); #endif //GUARD_CONTEST_H diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h index 3c12e5e53..b4ccf2803 100644 --- a/include/contest_link_80F57C4.h +++ b/include/contest_link_80F57C4.h @@ -1,7 +1,10 @@ #ifndef GUARD_CONTEST_LINK_80F57C4_H #define GUARD_CONTEST_LINK_80F57C4_H +void sub_80F8264(void); +void sub_80F8290(void); void sub_80F840C(void); +void sub_80F8438(void); void sub_80F8484(void); void sub_80F84C4(u8); void sub_80FC998(u8 taskId); diff --git a/include/contest_painting.h b/include/contest_painting.h index f8366a997..67a845d62 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -2,5 +2,6 @@ #define GUARD_CONTESTPAINTING_H void sub_812FDA8(u32); +void sub_812FDEC(void); #endif diff --git a/include/international_string_util.h b/include/international_string_util.h index 426a2d48c..343c5453c 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -16,7 +16,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2); // sub_81DB494 void PadNameString(u8 *dst, u8 padWith); void sub_81DB554(u8 *, u8); -// sub_81DB5AC +void sub_81DB5AC(u8 *); u32 sub_81DB604(const u8 *); // sub_81DB620 diff --git a/include/script_pokemon_util_80F87D8.h b/include/script_pokemon_util_80F87D8.h index 7c2a1ff66..02a35ecba 100644 --- a/include/script_pokemon_util_80F87D8.h +++ b/include/script_pokemon_util_80F87D8.h @@ -1,9 +1,8 @@ - #ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H #define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H u16 sub_80F903C(void); -void ReducePlayerPartyToThree(void); +void ReducePlayerPartyToSelectedMons(void); void HealPlayerParty(void); #endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H diff --git a/include/text.h b/include/text.h index 853e93e90..27a6364bb 100644 --- a/include/text.h +++ b/include/text.h @@ -229,7 +229,7 @@ u32 RenderFont(struct TextPrinter *textPrinter); void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); -void DecompressGlyphTile(const u16 *src, void *dest_); +void DecompressGlyphTile(const void *src_, void *dest_); u8 GetLastTextColor(u8 colorType); void CopyGlyphToWindow(struct TextPrinter *x); void ClearTextSpan(struct TextPrinter *textPrinter, u32 width); diff --git a/ld_script.txt b/ld_script.txt index 635f09662..0ea9cbb4f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -147,7 +147,7 @@ SECTIONS { src/secret_base.o(.text); src/tv.o(.text); asm/contest_link_80F57C4.o(.text); - asm/script_pokemon_util_80F87D8.o(.text); + src/script_pokemon_util_80F87D8.o(.text); src/field_poison.o(.text); src/pokemon_size_record.o(.text); asm/fldeff_80F9BCC.o(.text); @@ -474,7 +474,7 @@ SECTIONS { src/secret_base.o(.rodata); src/tv.o(.rodata); data/contest_link_80F57C4.o(.rodata); - data/script_pokemon_util_80F87D8.o(.rodata); + src/script_pokemon_util_80F87D8.o(.rodata); src/pokemon_size_record.o(.rodata) data/field_effect_misc.o(.rodata); src/field_special_scene.o(.rodata); diff --git a/src/battle_dome.c b/src/battle_dome.c index c4cb24204..152a11ae8 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -63,9 +63,9 @@ extern u8 GetFrontierBrainMonNature(u8); extern void sub_81A4C30(void); extern u8 sub_81A3610(void); extern u16 GetFrontierBrainMonSpecies(u8); -extern void ReducePlayerPartyToThree(void); +extern void ReducePlayerPartyToSelectedMons(void); -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; extern const u16 gBattleFrontierHeldItems[]; extern const struct FacilityMon gBattleFrontierMons[]; @@ -2465,8 +2465,8 @@ static void sub_818EA84(void) break; case 8: sub_81B8558(); - gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0; - gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; + gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0; + gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; break; case 9: gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B; @@ -2535,7 +2535,7 @@ static void sub_818ED28(void) } break; case 8: - gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8); + gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gSelectedOrderFromParty); break; } } @@ -6070,7 +6070,7 @@ static void sub_8194D68(void) for (i = 0; i < 2; i++) { - s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1; + s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; s32 count; for (moveSlot = 0; moveSlot < 4; moveSlot++) @@ -6096,7 +6096,7 @@ static void sub_8194E44(void) for (i = 0; i < 2; i++) { - s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1; + s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL); SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item); } @@ -6104,7 +6104,7 @@ static void sub_8194E44(void) static void sub_8194EB4(void) { - ReducePlayerPartyToThree(); + ReducePlayerPartyToSelectedMons(); } static void sub_8194EC0(void) diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 01f138925..4bbc74dee 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -29,7 +29,7 @@ #include "constants/maps.h" #include "constants/moves.h" -extern u8 gUnknown_0203CEF8[3]; +extern u8 gSelectedOrderFromParty[3]; extern void door_upload_tiles(void); extern const struct MapLayout *const gMapLayouts[]; @@ -550,14 +550,14 @@ static void sub_81A9834(void) SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k); } gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j]; - gUnknown_0203CEF8[j] = id + 1; + gSelectedOrderFromParty[j] = id + 1; break; } } } for (i = 0; i < 3; i++) - gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i]; + gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; } static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2) diff --git a/src/cable_club.c b/src/cable_club.c index b0e5f0500..56154d5bf 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -31,7 +31,7 @@ #include "constants/songs.h" extern u8 gUnknown_02032298[2]; -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; static const struct WindowTemplate gUnknown_08550594 = { .bg = 0, @@ -358,8 +358,8 @@ static void sub_80B2918(u8 taskId) sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); - card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL); - card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gTasks[taskId].func = sub_80B2C30; } } @@ -405,8 +405,8 @@ static void sub_80B2A08(u8 taskId) sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); - card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL); - card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gTasks[taskId].func = sub_80B2C30; sub_800A4D8(2); } @@ -800,7 +800,7 @@ static void sub_80B3260(int a0) gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER; break; case 5: - ReducePlayerPartyToThree(); + ReducePlayerPartyToSelectedMons(); gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI; break; case 9: diff --git a/src/contest_ai.c b/src/contest_ai.c index 3324ddf87..1342ea102 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -4,8 +4,6 @@ #include "contest_ai.h" #include "contest_effect.h" -extern u16 gContestMonConditions[]; - extern const u8 *gAIScriptPtr; extern const u8 *gContestAIs[]; diff --git a/src/frontier_util.c b/src/frontier_util.c index a65d14784..5260585d7 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -36,7 +36,7 @@ #include "constants/items.h" #include "constants/event_objects.h" -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; struct FrontierBrainMon { @@ -779,7 +779,7 @@ static void sub_81A1968(void) break; case 4: for (i = 0; i < 4; i++) - gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i]; + gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; break; case 6: gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006; @@ -796,8 +796,8 @@ static void sub_81A1AD4(void) sub_81B8558(); for (i = 0; i < gSpecialVar_0x8005; i++) - gUnknown_0203CEF8[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; - ReducePlayerPartyToThree(); + gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; + ReducePlayerPartyToSelectedMons(); } static void DoSoftReset_(void) diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c index bf16a20fc..b7ca087fd 100644 --- a/src/rom_8011DC0.c +++ b/src/rom_8011DC0.c @@ -1784,7 +1784,7 @@ void sub_801440C(u8 taskId) ScriptContext2_Disable(); } -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; void sub_8014790(u8 taskId) { @@ -1802,8 +1802,8 @@ void sub_8014790(u8 taskId) gLinkPlayers[0].linkType = 0x2211; gLinkPlayers[0].id = 0; gLinkPlayers[1].id = 2; - sendBuff[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES); - sendBuff[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + sendBuff[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES); + sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gMain.savedCallback = NULL; data[0] = 4; sub_800E3A8(); diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c new file mode 100755 index 000000000..415aec4ea --- /dev/null +++ b/src/script_pokemon_util_80F87D8.c @@ -0,0 +1,887 @@ +#include "global.h" +#include "battle.h" +#include "battle_gfx_sfx_util.h" +#include "berry.h" +#include "contest.h" +#include "contest_link_80F57C4.h" +#include "contest_painting.h" +#include "daycare.h" +#include "decompress.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "international_string_util.h" +#include "link.h" +#include "link_rfu.h" +#include "main.h" +#include "menu.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "pokedex.h" +#include "pokemon.h" +#include "random.h" +#include "script.h" +#include "script_menu.h" +#include "sprite.h" +#include "string_util.h" +#include "tv.h" +#include "constants/event_objects.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/vars.h" + +extern const u16 gEventObjectPalette8[]; +extern const u16 gEventObjectPalette17[]; +extern const u16 gEventObjectPalette33[]; +extern const u16 gEventObjectPalette34[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +extern u8 gSelectedOrderFromParty[]; + +const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 }; + +static void sub_80F8EE8(u8 taskId); +static void sub_80F9088(u8 taskId); +static void sub_80F9460(void); +static void sub_80F94B8(void); + +void SetContestTrainerGfxIds(void) +{ + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId; + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_1 - VARS_START] = gContestMons[1].trainerGfxId; + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId; +} + +void sub_80F8814(void) +{ + u16 var1; + u8 var0 = gSpecialVar_0x8005; + switch (var0) + { + case 0: + var1 = 3; + break; + case 1: + var1 = 4; + break; + case 2: + var1 = 5; + break; + default: + var1 = 100; + break; + } + + gSpecialVar_0x8004 = var1; +} + +void sub_80F8850(void) +{ + sub_80F8264(); + sub_80F8290(); + sub_80F8438(); +} + +void sub_80F8864(void) +{ + int contestWinner; + switch (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + contestWinner = 8; + break; + case CONTEST_CATEGORY_BEAUTY: + contestWinner = 9; + break; + case CONTEST_CATEGORY_CUTE: + contestWinner = 10; + break; + case CONTEST_CATEGORY_SMART: + contestWinner = 11; + break; + case CONTEST_CATEGORY_TOUGH: + default: + contestWinner = 12; + break; + } + + if (!gSaveBlock1Ptr->contestWinners[contestWinner].species) + gSpecialVar_0x8004 = 0; + else + gSpecialVar_0x8004 = 1; +} + +void sub_80F88DC(void) +{ + sub_80DEDA8(0xFF); +} + +void sub_80F88E8(void) +{ + if (gContestFinalStandings[gContestPlayerMonIndex] == 0 + && gSpecialVar_ContestRank == 3 + && gUnknown_02039F08[gContestPlayerMonIndex] >= 800) + { + gSpecialVar_0x8004 = 1; + } + else + { + gSpecialVar_0x8004 = 0; + } +} + +u8 sub_80F8940(void) +{ + int i; + u8 var0 = 0; + + for (i = 0; i < 5; i++) + { + if (gSaveBlock1Ptr->contestWinners[8 + i].species) + var0++; + } + + return var0; +} + +#ifdef NONMATCHING +void sub_80F8970(void) +{ + s16 sp[4]; + int i, j; + s16 condition; + u8 var2; + u8 var1; + s8 var0; + u8 r7; + + for (i = 0; i < 4; i++) + sp[i] = gContestMonConditions[i]; + + + for (i = 0; i < 3; i++) + { + for (j = 3; j > i; j--) + { + if (sp[j - 1] < sp[j]) + { + int temp = sp[j]; + sp[j] = sp[j - 1]; + sp[j - 1] = temp; + } + } + } + + condition = sp[gSpecialVar_0x8006]; + var0 = 0; + var1 = 0; + for (i = 0; i < 4; i++) + { + if (sp[i] == condition) + { + var0++; + if (i == gSpecialVar_0x8006) + var1 = var0; + } + } + + for (i = 0; i < 4; i++) + { + if (sp[i] == condition) + break; + } + + r7 = i; + var2 = var1; + for (i = 0; i < 4; i++) + { + if (condition == gContestMonConditions[i]) + { + if (var2 == 1) + break; + var2--; + } + } + + StringCopy(gStringVar1, gContestMons[i].nickname); + StringCopy(gStringVar2, gContestMons[i].trainerName); + sub_81DB5AC(gStringVar2); + + if (var0 == 1 || var1 == var0) + gSpecialVar_0x8006 = r7; + else + gSpecialVar_0x8006 = r7 + 4; +} +#else +NAKED +void sub_80F8970(void) +{ + asm_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 r0, =gContestMonConditions\n\ + mov r12, r0\n\ + ldr r1, =gSpecialVar_0x8006\n\ + mov r9, r1\n\ + ldr r2, =gContestMons + 2\n\ + mov r10, r2\n\ + mov r2, r12\n\ + mov r1, sp\n\ + movs r6, 0x3\n\ +_080F898E:\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + adds r2, 0x2\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080F898E\n\ + movs r6, 0\n\ +_080F899E:\n\ + movs r1, 0x3\n\ + cmp r1, r6\n\ + ble _080F89C8\n\ +_080F89A4:\n\ + subs r5, r1, 0x1\n\ + lsls r0, r5, 1\n\ + mov r4, sp\n\ + adds r3, r4, r0\n\ + lsls r0, r1, 1\n\ + adds r2, r4, r0\n\ + ldrh r4, [r3]\n\ + movs r7, 0\n\ + ldrsh r1, [r3, r7]\n\ + movs r7, 0\n\ + ldrsh r0, [r2, r7]\n\ + cmp r1, r0\n\ + bge _080F89C2\n\ + strh r4, [r2]\n\ + strh r0, [r3]\n\ +_080F89C2:\n\ + adds r1, r5, 0\n\ + cmp r1, r6\n\ + bgt _080F89A4\n\ +_080F89C8:\n\ + adds r6, 0x1\n\ + cmp r6, 0x2\n\ + ble _080F899E\n\ + mov r2, r9\n\ + ldrh r0, [r2]\n\ + lsls r0, 1\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + movs r2, 0\n\ + mov r8, r2\n\ + movs r6, 0\n\ + lsls r0, 16\n\ + asrs r4, r0, 16\n\ + adds r3, r0, 0\n\ + mov r1, sp\n\ + mov r5, r9\n\ +_080F89E8:\n\ + movs r7, 0\n\ + ldrsh r0, [r1, r7]\n\ + cmp r0, r4\n\ + bne _080F8A02\n\ + lsls r0, r2, 24\n\ + movs r2, 0x80\n\ + lsls r2, 17\n\ + adds r0, r2\n\ + lsrs r2, r0, 24\n\ + ldrh r7, [r5]\n\ + cmp r6, r7\n\ + bne _080F8A02\n\ + mov r8, r2\n\ +_080F8A02:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + ble _080F89E8\n\ + movs r6, 0\n\ + mov r0, sp\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + asrs r1, r3, 16\n\ + lsls r2, 24\n\ + mov r9, r2\n\ + cmp r0, r1\n\ + beq _080F8A30\n\ + adds r2, r1, 0\n\ + mov r1, sp\n\ +_080F8A20:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + bgt _080F8A30\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, r2\n\ + bne _080F8A20\n\ +_080F8A30:\n\ + lsls r0, r6, 24\n\ + lsrs r7, r0, 24\n\ + mov r2, r8\n\ + movs r6, 0\n\ + asrs r1, r3, 16\n\ + mov r5, r12\n\ + movs r4, 0\n\ + ldrsh r0, [r5, r4]\n\ + b _080F8A66\n\ + .pool\n\ +_080F8A50:\n\ + subs r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ +_080F8A56:\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + bgt _080F8A6E\n\ + lsls r0, r6, 1\n\ + add r0, r12\n\ + asrs r1, r3, 16\n\ + movs r5, 0\n\ + ldrsh r0, [r0, r5]\n\ +_080F8A66:\n\ + cmp r1, r0\n\ + bne _080F8A56\n\ + cmp r2, 0x1\n\ + bne _080F8A50\n\ +_080F8A6E:\n\ + lsls r4, r6, 6\n\ + mov r0, r10\n\ + adds r1, r4, r0\n\ + ldr r0, =gStringVar1\n\ + bl StringCopy\n\ + ldr r5, =gStringVar2\n\ + mov r0, r10\n\ + adds r0, 0xB\n\ + adds r4, r0\n\ + adds r0, r5, 0\n\ + adds r1, r4, 0\n\ + bl StringCopy\n\ + adds r0, r5, 0\n\ + bl sub_81DB5AC\n\ + mov r1, r9\n\ + asrs r0, r1, 24\n\ + cmp r0, 0x1\n\ + beq _080F8A9C\n\ + cmp r8, r0\n\ + bne _080F8AB0\n\ +_080F8A9C:\n\ + ldr r0, =gSpecialVar_0x8006\n\ + strh r7, [r0]\n\ + b _080F8AB6\n\ + .pool\n\ +_080F8AB0:\n\ + ldr r1, =gSpecialVar_0x8006\n\ + adds r0, r7, 0x4\n\ + strh r0, [r1]\n\ +_080F8AB6:\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"); +} +#endif // NONMATCHING + +static void ShowContestWinnerCleanup(void) +{ + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void ShowContestWinner(void) +{ + SetMainCallback2(sub_812FDEC); + gMain.savedCallback = ShowContestWinnerCleanup; +} + +void sub_80F8AFC(void) +{ + int i; + + if (gIsLinkContest & 1) + { + for (i = 0; i < gUnknown_02039F30; i++) + { + int version = (u8)gLinkPlayers[i].version; + if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + if (gLinkPlayers[i].gender == MALE) + gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_BRENDAN; + else + gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_MAY; + } + } + + VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId); + } +} + +void sub_80F8B94(void) +{ + int i; + u8 eventObjectId; + int version; + struct Sprite *sprite; + + gReservedSpritePaletteCount = 12; + if (gIsLinkContest & 1) + { + for (i = 0; i < gUnknown_02039F30; i++) + { + eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sprite = &gSprites[gEventObjects[eventObjectId].spriteId]; + sprite->oam.paletteNum = 6 + i; + version = (u8)gLinkPlayers[i].version; + if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + if (gLinkPlayers[i].gender == MALE) + LoadPalette(gEventObjectPalette33, 0x160 + i * 0x10, 0x20); + else + LoadPalette(gEventObjectPalette34, 0x160 + i * 0x10, 0x20); + } + else + { + if (gLinkPlayers[i].gender == MALE) + LoadPalette(gEventObjectPalette8, 0x160 + i * 0x10, 0x20); + else + LoadPalette(gEventObjectPalette17, 0x160 + i * 0x10, 0x20); + } + } + } +} + +u8 GiveMonArtistRibbon(void) +{ + u8 hasArtistRibbon; + + hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON); + if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3 + && gUnknown_02039F08[gContestPlayerMonIndex] >= 800) + { + hasArtistRibbon = 1; + SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon); + if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4) + sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON); + + return 1; + } + else + { + return 0; + } +} + +u8 sub_80F8D24(void) +{ + return 0; +} + +void ShowContestEntryMonPic(void) +{ + const struct CompressedSpritePalette *palette; + u32 personality, otId; + u16 species; + u8 spriteId; + u8 taskId; + u8 left, top; + + if (FindTaskIdByFunc(sub_80F8EE8) == 0xFF) + { + AllocateMonSpritesGfx(); + left = 10; + top = 3; + species = gContestMons[gSpecialVar_0x8006].species; + personality = gContestMons[gSpecialVar_0x8006].personality; + otId = gContestMons[gSpecialVar_0x8006].otId; + taskId = CreateTask(sub_80F8EE8, 0x50); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = species; + if (gSpecialVar_0x8006 == gContestPlayerMonIndex) + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + else + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + + palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedObjectPalette(palette); + SetMultiuseSpriteTemplateToPokemon(species, 1); + gMultiuseSpriteTemplate.paletteTag = palette->tag; + spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0); + + if (gIsLinkContest & 1) + { + if (!(gIsLinkContest & 4)) + DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0); + } + else + { + DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0); + } + + gTasks[taskId].data[2] = spriteId; + gTasks[taskId].data[3] = left; + gTasks[taskId].data[4] = top; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.priority = 0; + } +} + +void sub_80F8EB8(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80F8EE8); + if (taskId != 0xFF) + { + gTasks[taskId].data[0]++; + FreeMonSpritesGfx(); + } +} + +static void sub_80F8EE8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct Sprite *sprite; + + switch(task->data[0]) + { + case 0: + task->data[0]++; + break; + case 1: + task->data[5] = CreateWindowFromRect(10, 3, 8, 8); + SetStandardWindowBorderStyle(task->data[5], 1); + task->data[0]++; + break; + case 2: + break; + case 3: + sprite = &gSprites[task->data[2]]; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + + if(sprite->oam.affineMode) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); + task->data[0]++; + break; + case 4: + sub_80E2A78(gTasks[taskId].data[5]); + DestroyTask(taskId); + break; + } +} + +void ScriptGetMultiplayerId(void) +{ + if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2)) + gSpecialVar_Result = GetMultiplayerId(); + else + gSpecialVar_Result = 4; +} + +void ScriptRandom(void) +{ + u16 random; + u16 *scriptPtr; + + if (gIsLinkContest & 1) + { + gContestRngValue = 1103515245 * gContestRngValue + 24691; + random = gContestRngValue >> 16; + scriptPtr = &gSpecialVar_Result; + } + else + { + scriptPtr = &gSpecialVar_Result; + random = Random(); + } + *scriptPtr = random % *scriptPtr; +} + +u16 sub_80F903C(void) +{ + gContestRngValue = 1103515245 * gContestRngValue + 24691; + return gContestRngValue >> 16; +} + +u8 sub_80F905C(void) +{ + if (gIsLinkContest & 2) + { + CreateTask(sub_80F9088, 5); + return 1; + } + else + { + return 0; + } +} + +static void sub_80F9088(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (sub_800A520()) + { + sub_800ADF8(); + gTasks[taskId].data[0]++; + } + break; + case 1: + gTasks[taskId].data[0]++; + break; + default: + if (sub_800A520() == 1) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } + break; + } +} + +void sub_80F90DC(void) +{ + if (gIsLinkContest & 2) + { + if (gReceivedRemoteLinkPlayers) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(8, 8); + } + } +} + +void sub_80F910C(void) +{ + if (gIsLinkContest & 2) + { + if (gReceivedRemoteLinkPlayers) + sub_800E084(); + } +} + +u8 sub_80F9134(void) +{ + if (gIsLinkContest & 4) + return 1; + else + return 0; +} + +void sub_80F9154(void) +{ + gIsLinkContest = 0; +} + +u8 sub_80F9160(void) +{ + if (gIsLinkContest & 2) + return 1; + else + return 0; +} + +void HealPlayerParty(void) +{ + u8 i, j; + u8 ppBonuses; + u8 arg[4]; + + // restore HP. + for(i = 0; i < gPlayerPartyCount; i++) + { + u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + arg[0] = maxHP; + arg[1] = maxHP >> 8; + SetMonData(&gPlayerParty[i], MON_DATA_HP, arg); + ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES); + + // restore PP. + for(j = 0; j < 4; j++) + { + arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j); + SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg); + } + + // since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData. + arg[0] = 0; + arg[1] = 0; + arg[2] = 0; + arg[3] = 0; + SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg); + } +} + +u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3) +{ + u16 nationalDexNum; + int sentToPc; + u8 heldItem[2]; + struct Pokemon mon; + + CreateMon(&mon, species, level, 32, 0, 0, 0, 0); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); + sentToPc = GiveMonToPlayer(&mon); + nationalDexNum = SpeciesToNationalPokedexNum(species); + + switch(sentToPc) + { + case 0: + case 1: + GetSetPokedexFlag(nationalDexNum, 2); + GetSetPokedexFlag(nationalDexNum, 3); + break; + } + return sentToPc; +} + +u8 ScriptGiveEgg(u16 species) +{ + struct Pokemon mon; + u8 isEgg; + + CreateEgg(&mon, species, TRUE); + isEgg = TRUE; + SetMonData(&mon, MON_DATA_IS_EGG, &isEgg); + + return GiveMonToPlayer(&mon); +} + +void HasEnoughMonsForDoubleBattle(void) +{ + switch (GetMonsStateToDoubles()) + { + case 0: + gSpecialVar_Result = 0; + break; + case 1: + gSpecialVar_Result = 1; + break; + case 2: + gSpecialVar_Result = 2; + break; + } +} + +static bool8 CheckPartyMonHasHeldItem(u16 item) +{ + int i; + + for(i = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item) + return TRUE; + } + return FALSE; +} + +bool8 sub_80F9370(void) +{ + bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY); + if (hasItem == TRUE) + GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1); + + return hasItem; +} + +void CreateScriptedWildMon(u16 species, u8 level, u16 item) +{ + u8 heldItem[2]; + + ZeroEnemyPartyMons(); + CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0); + if (item) + { + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem); + } +} + +void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot) +{ + if (monIndex > PARTY_SIZE) + monIndex = gPlayerPartyCount - 1; + + SetMonMoveSlot(&gPlayerParty[monIndex], move, slot); +} + +void sub_80F9438(void) +{ + gMain.savedCallback = sub_80F9460; + VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??) + sub_81B8518(0); +} + +static void sub_80F9460(void) +{ + switch (gSelectedOrderFromParty[0]) + { + case 0: + gSpecialVar_Result = 0; + break; + default: + gSpecialVar_Result = 1; + break; + } + + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void sub_80F9490(void) +{ + gMain.savedCallback = sub_80F94B8; + sub_81B8518(gSpecialVar_0x8004 + 1); +} + +static void sub_80F94B8(void) +{ + switch (gSelectedOrderFromParty[0]) + { + case 0: + gSpecialVar_Result = 0; + break; + default: + gSpecialVar_Result = 1; + break; + } + + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void ReducePlayerPartyToSelectedMons(void) +{ + struct Pokemon party[4]; + int i; + + CpuFill32(0, party, sizeof party); + + // copy the selected pokemon according to the order. + for (i = 0; i < 4; i++) + if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop + party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal + + CpuFill32(0, gPlayerParty, sizeof gPlayerParty); + + // overwrite the first 4 with the order copied to. + for (i = 0; i < 4; i++) + gPlayerParty[i] = party[i]; + + CalculatePlayerPartyCount(); +} diff --git a/src/text.c b/src/text.c index 5f86d90d4..2380e3191 100644 --- a/src/text.c +++ b/src/text.c @@ -848,17 +848,17 @@ void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor) GenerateFontHalfRowLookupTable(*fgColor, *bgColor, *shadowColor); } -void DecompressGlyphTile(const u16 *src, void *dest_) +void DecompressGlyphTile(const void *src_, void *dest_) { u32 temp; + const u16 *src = src_; u32 *dest = dest_; - temp = *(src); + temp = *(src++); *(dest)++ = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]); - temp = src[1]; - src += 2; - *(dest)++ = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]); + temp = *(src++); + *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]); temp = *(src++); *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]); diff --git a/sym_ewram.txt b/sym_ewram.txt index bff045d1c..ba06a3dc1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -472,7 +472,7 @@ gUnknown_0203CEF0: @ 203CEF0 gUnknown_0203CEF4: @ 203CEF4 .space 0x4 -gUnknown_0203CEF8: @ 203CEF8 +gSelectedOrderFromParty: @ 203CEF8 .space 0x4 gUnknown_0203CEFC: @ 203CEFC |