diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-11-01 05:28:17 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-11-09 12:26:52 +0800 |
commit | a937f722834f24342b0b87bb9554546dec77170a (patch) | |
tree | a585e25df681ed5061a4d20a151583da9a200523 | |
parent | 71eb0fc9d80731a26867aedf0b470f67315ab623 (diff) |
thru PokedudeHandleSetRawMonData
-rw-r--r-- | asm/battle_controller_pokedude.s | 3884 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | src/battle_controller_oak_old_man.c | 6 | ||||
-rw-r--r-- | src/battle_controller_pokedude.c | 1126 |
4 files changed, 1130 insertions, 3887 deletions
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 7808db614..4aaf4898b 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -5,3890 +5,6 @@ .text - thumb_func_start nullsub_99 -nullsub_99: @ 81560A0 - bx lr - thumb_func_end nullsub_99 - - thumb_func_start SetControllerToPokedude -SetControllerToPokedude: @ 81560A4 - ldr r1, _081560C8 @ =gBattlerControllerFuncs - ldr r0, _081560CC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _081560D0 @ =PokedudeBufferRunCommand - str r1, [r0] - ldr r2, _081560D4 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x96 - ldr r1, _081560D8 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x97 - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_081560C8: .4byte gBattlerControllerFuncs -_081560CC: .4byte gActiveBattler -_081560D0: .4byte PokedudeBufferRunCommand -_081560D4: .4byte gBattleStruct -_081560D8: .4byte gSpecialVar_0x8004 - thumb_func_end SetControllerToPokedude - - thumb_func_start PokedudeBufferRunCommand -PokedudeBufferRunCommand: @ 81560DC - push {r4,r5,lr} - ldr r2, _08156120 @ =gBattleControllerExecFlags - ldr r1, _08156124 @ =gBitTable - ldr r5, _08156128 @ =gActiveBattler - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08156138 - ldr r4, _0815612C @ =gBattleBufferA - lsls r0, r3, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x38 - bhi _08156134 - bl sub_8159AB8 - lsls r0, 24 - cmp r0, 0 - bne _08156138 - ldr r1, _08156130 @ =sPokedudeBufferCommands - ldrb r0, [r5] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - b _08156138 - .align 2, 0 -_08156120: .4byte gBattleControllerExecFlags -_08156124: .4byte gBitTable -_08156128: .4byte gActiveBattler -_0815612C: .4byte gBattleBufferA -_08156130: .4byte sPokedudeBufferCommands -_08156134: - bl PokedudeBufferExecCompleted -_08156138: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PokedudeBufferRunCommand - - thumb_func_start sub_8156140 -sub_8156140: @ 8156140 - push {lr} - bl sub_8159824 - pop {r0} - bx r0 - thumb_func_end sub_8156140 - - thumb_func_start CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp -CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp: @ 815614C - push {lr} - ldr r2, _08156174 @ =gSprites - ldr r1, _08156178 @ =gBattlerSpriteIds - ldr r0, _0815617C @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08156180 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08156170 - bl PokedudeBufferExecCompleted -_08156170: - pop {r0} - bx r0 - .align 2, 0 -_08156174: .4byte gSprites -_08156178: .4byte gBattlerSpriteIds -_0815617C: .4byte gActiveBattler -_08156180: .4byte SpriteCallbackDummy - thumb_func_end CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp - - thumb_func_start sub_8156184 -sub_8156184: @ 8156184 - push {r4-r7,lr} - ldr r2, _081561E0 @ =gSprites - ldr r0, _081561E4 @ =gBattlerSpriteIds - ldr r7, _081561E8 @ =gActiveBattler - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r2, r0, 31 - cmp r2, 0x1 - bne _08156230 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _08156230 - ldr r6, _081561EC @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r4, r3, 1 - adds r0, r4, r3 - lsls r0, 2 - adds r1, r0, r1 - ldrb r5, [r1] - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - bne _081561F8 - ldr r0, _081561F0 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081561F4 @ =gEnemyParty - adds r1, r0 - adds r0, r3, 0 - bl sub_80F1720 - b _08156230 - .align 2, 0 -_081561E0: .4byte gSprites -_081561E4: .4byte gBattlerSpriteIds -_081561E8: .4byte gActiveBattler -_081561EC: .4byte gBattleSpritesDataPtr -_081561F0: .4byte gBattlerPartyIndexes -_081561F4: .4byte gEnemyParty -_081561F8: - ldrb r0, [r1, 0x1] - ands r2, r0 - cmp r2, 0 - beq _08156230 - movs r0, 0x7F - ands r0, r5 - strb r0, [r1] - ldr r0, [r6] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _08156238 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - bl PokedudeBufferExecCompleted -_08156230: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08156238: .4byte 0x000027f9 - thumb_func_end sub_8156184 - - thumb_func_start CompleteOnInactiveTextPrinter_PokedudeTmp -CompleteOnInactiveTextPrinter_PokedudeTmp: @ 815623C - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0815624E - bl PokedudeBufferExecCompleted -_0815624E: - pop {r0} - bx r0 - thumb_func_end CompleteOnInactiveTextPrinter_PokedudeTmp - - thumb_func_start sub_8156254 -sub_8156254: @ 8156254 - push {lr} - ldr r0, _08156284 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0815627E - ldr r2, _08156288 @ =gMain - ldr r0, _0815628C @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _08156290 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0815627E: - pop {r0} - bx r0 - .align 2, 0 -_08156284: .4byte gPaletteFade -_08156288: .4byte gMain -_0815628C: .4byte 0x00000439 -_08156290: .4byte gPreBattleCallback1 - thumb_func_end sub_8156254 - - thumb_func_start sub_8156294 -sub_8156294: @ 8156294 - push {r4,lr} - ldr r0, _081562DC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r4, _081562E0 @ =gActiveBattler - ldrb r1, [r4] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _081562D4 - ldr r0, _081562E4 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _081562E8 @ =gBattlerPartyIndexes - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081562EC @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl PokedudeBufferExecCompleted -_081562D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081562DC: .4byte gBattleSpritesDataPtr -_081562E0: .4byte gActiveBattler -_081562E4: .4byte c3_0802FDF4 -_081562E8: .4byte gBattlerPartyIndexes -_081562EC: .4byte gPlayerParty - thumb_func_end sub_8156294 - - thumb_func_start sub_81562F0 -sub_81562F0: @ 81562F0 - push {r4-r6,lr} - ldr r2, _08156388 @ =gSprites - ldr r0, _0815638C @ =gHealthboxSpriteIds - ldr r6, _08156390 @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08156394 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08156380 - ldr r5, _08156398 @ =gBattleSpritesDataPtr - ldr r0, [r5] - ldr r1, [r0, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r1 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08156380 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldr r0, [r5] - ldrb r2, [r6] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0815639C @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, [r5] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08156374 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_08156374: - ldr r0, _081563A0 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _081563A4 @ =sub_8156294 - str r0, [r1] -_08156380: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156388: .4byte gSprites -_0815638C: .4byte gHealthboxSpriteIds -_08156390: .4byte gActiveBattler -_08156394: .4byte SpriteCallbackDummy -_08156398: .4byte gBattleSpritesDataPtr -_0815639C: .4byte 0x000027f9 -_081563A0: .4byte gBattlerControllerFuncs -_081563A4: .4byte sub_8156294 - thumb_func_end sub_81562F0 - - thumb_func_start sub_81563A8 -sub_81563A8: @ 81563A8 - push {r4-r6,lr} - ldr r6, _0815645C @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _08156460 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _081563DA - ldr r0, _08156464 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08156468 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_081563DA: - ldr r4, _0815646C @ =gSprites - ldr r0, _08156470 @ =gUnknown_3004FFC - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _08156474 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08156454 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08156454 - adds r0, r3, r4 - bl DestroySprite - ldr r4, _08156478 @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08156464 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08156468 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r5] - bl CopyBattleSpriteInvisibility - ldr r1, _0815647C @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08156480 @ =sub_81562F0 - str r1, [r0] -_08156454: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815645C: .4byte gBattleSpritesDataPtr -_08156460: .4byte gActiveBattler -_08156464: .4byte gBattlerPartyIndexes -_08156468: .4byte gPlayerParty -_0815646C: .4byte gSprites -_08156470: .4byte gUnknown_3004FFC -_08156474: .4byte SpriteCallbackDummy -_08156478: .4byte gHealthboxSpriteIds -_0815647C: .4byte gBattlerControllerFuncs -_08156480: .4byte sub_81562F0 - thumb_func_end sub_81563A8 - - thumb_func_start CompleteOnSpecialAnimDone_PokedudeTmp -CompleteOnSpecialAnimDone_PokedudeTmp: @ 8156484 - push {lr} - ldr r0, _08156498 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - bne _08156492 - bl PokedudeBufferExecCompleted -_08156492: - pop {r0} - bx r0 - .align 2, 0 -_08156498: .4byte gDoingBattleAnim - thumb_func_end CompleteOnSpecialAnimDone_PokedudeTmp - - thumb_func_start sub_815649C -sub_815649C: @ 815649C - push {r4,lr} - ldr r4, _081564DC @ =gBattleSpritesDataPtr - ldr r1, [r4] - ldr r3, _081564E0 @ =gActiveBattler - ldrb r0, [r3] - ldr r2, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _081564D4 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - bl PokedudeBufferExecCompleted -_081564D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081564DC: .4byte gBattleSpritesDataPtr -_081564E0: .4byte gActiveBattler - thumb_func_end sub_815649C - - thumb_func_start sub_81564E4 -sub_81564E4: @ 81564E4 - push {lr} - bl sub_8159998 - pop {r0} - bx r0 - thumb_func_end sub_81564E4 - - thumb_func_start OpenPartyMenuToChooseMon_PokedudeTmp -OpenPartyMenuToChooseMon_PokedudeTmp: @ 81564F0 - push {lr} - ldr r0, _08156524 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08156520 - ldr r1, _08156528 @ =gBattlerControllerFuncs - ldr r2, _0815652C @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08156530 @ =WaitForMonSelection_PokedudeTmp - str r1, [r0] - ldr r1, _08156534 @ =gUnknown_3004FFC - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - bl DestroyTask - bl FreeAllWindowBuffers - bl sub_8127968 -_08156520: - pop {r0} - bx r0 - .align 2, 0 -_08156524: .4byte gPaletteFade -_08156528: .4byte gBattlerControllerFuncs -_0815652C: .4byte gActiveBattler -_08156530: .4byte WaitForMonSelection_PokedudeTmp -_08156534: .4byte gUnknown_3004FFC - thumb_func_end OpenPartyMenuToChooseMon_PokedudeTmp - - thumb_func_start WaitForMonSelection_PokedudeTmp -WaitForMonSelection_PokedudeTmp: @ 8156538 - push {lr} - ldr r0, _08156568 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0815656C @ =BattleMainCB2 - cmp r1, r0 - bne _0815658E - ldr r0, _08156570 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0815658E - ldr r0, _08156574 @ =gUnknown_203B0C0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08156580 - ldr r0, _08156578 @ =gUnknown_203B0C1 - ldrb r1, [r0] - ldr r2, _0815657C @ =gUnknown_203B0DC - movs r0, 0x1 - bl BtlController_EmitChosenMonReturnValue - b _0815658A - .align 2, 0 -_08156568: .4byte gMain -_0815656C: .4byte BattleMainCB2 -_08156570: .4byte gPaletteFade -_08156574: .4byte gUnknown_203B0C0 -_08156578: .4byte gUnknown_203B0C1 -_0815657C: .4byte gUnknown_203B0DC -_08156580: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue -_0815658A: - bl PokedudeBufferExecCompleted -_0815658E: - pop {r0} - bx r0 - thumb_func_end WaitForMonSelection_PokedudeTmp - - thumb_func_start OpenBagAndChooseItem_PokedudeTmp -OpenBagAndChooseItem_PokedudeTmp: @ 8156594 - push {lr} - ldr r0, _081565C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081565E2 - ldr r1, _081565CC @ =gBattlerControllerFuncs - ldr r0, _081565D0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _081565D4 @ =CompleteWhenChoseItem_PokedudeTmp - str r1, [r0] - bl nullsub_44 - bl FreeAllWindowBuffers - ldr r0, _081565D8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0x1 - beq _081565C4 - cmp r0, 0x3 - beq _081565DC -_081565C4: - movs r0, 0x7 - b _081565DE - .align 2, 0 -_081565C8: .4byte gPaletteFade -_081565CC: .4byte gBattlerControllerFuncs -_081565D0: .4byte gActiveBattler -_081565D4: .4byte CompleteWhenChoseItem_PokedudeTmp -_081565D8: .4byte gSpecialVar_0x8004 -_081565DC: - movs r0, 0x8 -_081565DE: - bl sub_810B108 -_081565E2: - pop {r0} - bx r0 - thumb_func_end OpenBagAndChooseItem_PokedudeTmp - - thumb_func_start CompleteWhenChoseItem_PokedudeTmp -CompleteWhenChoseItem_PokedudeTmp: @ 81565E8 - push {lr} - ldr r0, _08156614 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08156618 @ =BattleMainCB2 - cmp r1, r0 - bne _0815660E - ldr r0, _0815661C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0815660E - ldr r0, _08156620 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl PokedudeBufferExecCompleted -_0815660E: - pop {r0} - bx r0 - .align 2, 0 -_08156614: .4byte gMain -_08156618: .4byte BattleMainCB2 -_0815661C: .4byte gPaletteFade -_08156620: .4byte gSpecialVar_ItemId - thumb_func_end CompleteWhenChoseItem_PokedudeTmp - - thumb_func_start sub_8156624 -sub_8156624: @ 8156624 - push {r4-r7,lr} - ldr r4, _08156788 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r5, _0815678C @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08156658 - ldr r0, _08156790 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08156794 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_08156658: - ldr r1, [r4] - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0815668A - ldr r0, _08156790 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08156794 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0815668A: - ldr r0, [r4] - ldrb r2, [r5] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - movs r4, 0x8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _08156780 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _08156780 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0815671E - ldr r0, _08156798 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0815671E - ldr r1, _0815679C @ =gUnknown_3004FFC - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081567A0 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _081567A4 @ =gHealthboxSpriteIds - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08156790 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08156794 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - eors r0, r6 - bl sub_804BD94 - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible -_0815671E: - ldr r1, _0815679C @ =gUnknown_3004FFC - ldr r4, _0815678C @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081567A0 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _081567A4 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _08156790 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08156794 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _08156788 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _081567A8 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081567AC @ =sub_81567B0 - str r1, [r0] -_08156780: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08156788: .4byte gBattleSpritesDataPtr -_0815678C: .4byte gActiveBattler -_08156790: .4byte gBattlerPartyIndexes -_08156794: .4byte gPlayerParty -_08156798: .4byte gBattleTypeFlags -_0815679C: .4byte gUnknown_3004FFC -_081567A0: .4byte gSprites -_081567A4: .4byte gHealthboxSpriteIds -_081567A8: .4byte gBattlerControllerFuncs -_081567AC: .4byte sub_81567B0 - thumb_func_end sub_8156624 - - thumb_func_start sub_81567B0 -sub_81567B0: @ 81567B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r2, _081568B0 @ =gSprites - ldr r0, _081568B4 @ =gHealthboxSpriteIds - ldr r1, _081568B8 @ =gActiveBattler - mov r8, r1 - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _081568BC @ =SpriteCallbackDummy - cmp r1, r0 - bne _081567DA - movs r4, 0x1 -_081567DA: - cmp r4, 0 - beq _081568A6 - ldr r7, _081568C0 @ =gBattleSpritesDataPtr - ldr r0, [r7] - ldr r4, [r0, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r4 - ldrb r1, [r2, 0x1] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _081568A6 - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _081568A6 - ldrb r1, [r2] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r7] - mov r1, r8 - ldrb r2, [r1] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _081568C4 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _081568C8 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _081568CC @ =gBattlerPartyIndexes - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081568D0 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - ldr r1, _081568D4 @ =gBattlerControllerFuncs - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _081568D8 @ =sub_815649C - str r1, [r0] -_081568A6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081568B0: .4byte gSprites -_081568B4: .4byte gHealthboxSpriteIds -_081568B8: .4byte gActiveBattler -_081568BC: .4byte SpriteCallbackDummy -_081568C0: .4byte gBattleSpritesDataPtr -_081568C4: .4byte 0x000027f9 -_081568C8: .4byte c3_0802FDF4 -_081568CC: .4byte gBattlerPartyIndexes -_081568D0: .4byte gPlayerParty -_081568D4: .4byte gBattlerControllerFuncs -_081568D8: .4byte sub_815649C - thumb_func_end sub_81567B0 - - thumb_func_start Task_GiveExpToMon_PokedudeTmp -Task_GiveExpToMon_PokedudeTmp: @ 81568DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _081569DC @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08156922 - ldr r1, _081569E0 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _08156922 - b _08156A38 -_08156922: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _081569E4 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _081569E8 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _081569EC @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _08156A10 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _081569F0 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081569F8 - ldr r2, _081569E0 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _081569D6 - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _081569F8 -_081569D6: - ldr r0, _081569F4 @ =Task_LaunchLvlUpAnim_PokedudeTmp - b _08156A3A - .align 2, 0 -_081569DC: .4byte gTasks -_081569E0: .4byte gBattlerPartyIndexes -_081569E4: .4byte gPlayerParty -_081569E8: .4byte gExperienceTables -_081569EC: .4byte gBaseStats -_081569F0: .4byte gActiveBattler -_081569F4: .4byte Task_LaunchLvlUpAnim_PokedudeTmp -_081569F8: - ldr r0, _08156A08 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _08156A0C @ =DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp - b _08156A3C - .align 2, 0 -_08156A08: .4byte gTasks -_08156A0C: .4byte DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp -_08156A10: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _08156A30 @ =gBattlerControllerFuncs - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _08156A34 @ =CompleteOnInactiveTextPrinter2_PokedudeTmp - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _08156A3E - .align 2, 0 -_08156A30: .4byte gBattlerControllerFuncs -_08156A34: .4byte CompleteOnInactiveTextPrinter2_PokedudeTmp -_08156A38: - ldr r0, _08156A50 @ =Task_PrepareToGiveExpWithExpBar_PokedudeTmp -_08156A3A: - mov r1, r8 -_08156A3C: - str r0, [r1] -_08156A3E: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08156A50: .4byte Task_PrepareToGiveExpWithExpBar_PokedudeTmp - thumb_func_end Task_GiveExpToMon_PokedudeTmp - - thumb_func_start Task_PrepareToGiveExpWithExpBar_PokedudeTmp -Task_PrepareToGiveExpWithExpBar_PokedudeTmp: @ 8156A54 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08156B0C @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _08156B10 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _08156B14 @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _08156B18 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _08156B1C @ =gHealthboxSpriteIds - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl SetBattleBarStruct - movs r0, 0x1B - bl PlaySE - ldr r0, _08156B20 @ =sub_8156B24 - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156B0C: .4byte gTasks -_08156B10: .4byte gPlayerParty -_08156B14: .4byte gExperienceTables -_08156B18: .4byte gBaseStats -_08156B1C: .4byte gHealthboxSpriteIds -_08156B20: .4byte sub_8156B24 - thumb_func_end Task_PrepareToGiveExpWithExpBar_PokedudeTmp - - thumb_func_start sub_8156B24 -sub_8156B24: @ 8156B24 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08156B50 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _08156B54 - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _08156C50 - .align 2, 0 -_08156B50: .4byte gTasks -_08156B54: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _08156C1C @ =gHealthboxSpriteIds - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _08156C50 - movs r0, 0x1B - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _08156C20 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _08156C24 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _08156C28 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _08156C34 - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _08156C2C @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - ldr r0, _08156C30 @ =Task_LaunchLvlUpAnim_PokedudeTmp - str r0, [r6] - b _08156C50 - .align 2, 0 -_08156C1C: .4byte gHealthboxSpriteIds -_08156C20: .4byte gPlayerParty -_08156C24: .4byte gExperienceTables -_08156C28: .4byte gBaseStats -_08156C2C: .4byte gActiveBattler -_08156C30: .4byte Task_LaunchLvlUpAnim_PokedudeTmp -_08156C34: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _08156C60 @ =gBattlerControllerFuncs - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _08156C64 @ =CompleteOnInactiveTextPrinter2_PokedudeTmp - str r1, [r0] - mov r0, r8 - bl DestroyTask -_08156C50: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08156C60: .4byte gBattlerControllerFuncs -_08156C64: .4byte CompleteOnInactiveTextPrinter2_PokedudeTmp - thumb_func_end sub_8156B24 - - thumb_func_start Task_LaunchLvlUpAnim_PokedudeTmp -Task_LaunchLvlUpAnim_PokedudeTmp: @ 8156C68 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08156CBC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08156C9C - ldr r1, _08156CC0 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _08156C9C - adds r4, r2, 0 -_08156C9C: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl InitAndLaunchSpecialAnimation - ldr r0, _08156CBC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08156CC4 @ =Task_UpdateLvlInHealthbox_PokedudeTmp - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156CBC: .4byte gTasks -_08156CC0: .4byte gBattlerPartyIndexes -_08156CC4: .4byte Task_UpdateLvlInHealthbox_PokedudeTmp - thumb_func_end Task_LaunchLvlUpAnim_PokedudeTmp - - thumb_func_start Task_UpdateLvlInHealthbox_PokedudeTmp -Task_UpdateLvlInHealthbox_PokedudeTmp: @ 8156CC8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08156D34 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - ldr r0, _08156D38 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08156D6A - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _08156D3C @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08156D48 - ldr r1, _08156D40 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _08156D48 - ldr r0, _08156D44 @ =gHealthboxSpriteIds - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl UpdateHealthboxAttribute - b _08156D5C - .align 2, 0 -_08156D34: .4byte gTasks -_08156D38: .4byte gBattleSpritesDataPtr -_08156D3C: .4byte gPlayerParty -_08156D40: .4byte gBattlerPartyIndexes -_08156D44: .4byte gHealthboxSpriteIds -_08156D48: - ldr r0, _08156D70 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _08156D74 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_08156D5C: - ldr r0, _08156D78 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08156D7C @ =DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp - str r0, [r1] -_08156D6A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08156D70: .4byte gHealthboxSpriteIds -_08156D74: .4byte gPlayerParty -_08156D78: .4byte gTasks -_08156D7C: .4byte DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp - thumb_func_end Task_UpdateLvlInHealthbox_PokedudeTmp - - thumb_func_start DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp -DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp: @ 8156D80 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08156DBC @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08156DC0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - ldrb r0, [r4, 0xC] - ldr r1, _08156DC4 @ =gBattlerControllerFuncs - lsls r0, 2 - adds r0, r1 - ldr r1, _08156DC8 @ =CompleteOnInactiveTextPrinter2_PokedudeTmp - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08156DBC: .4byte gTasks -_08156DC0: .4byte gPlayerParty -_08156DC4: .4byte gBattlerControllerFuncs -_08156DC8: .4byte CompleteOnInactiveTextPrinter2_PokedudeTmp - thumb_func_end DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp - - thumb_func_start sub_8156DCC -sub_8156DCC: @ 8156DCC - push {r4-r6,lr} - ldr r4, _08156E2C @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08156E3C - ldr r6, _08156E30 @ =gSprites - ldr r5, _08156E34 @ =gBattlerSpriteIds - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r6 - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - cmp r0, 0xA0 - ble _08156E66 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _08156E38 @ =gHealthboxSpriteIds - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PokedudeBufferExecCompleted - b _08156E66 - .align 2, 0 -_08156E2C: .4byte gActiveBattler -_08156E30: .4byte gSprites -_08156E34: .4byte gBattlerSpriteIds -_08156E38: .4byte gHealthboxSpriteIds -_08156E3C: - ldr r2, _08156E6C @ =gSprites - ldr r0, _08156E70 @ =gBattlerSpriteIds - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _08156E66 - ldr r0, _08156E74 @ =gHealthboxSpriteIds - adds r0, r3, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PokedudeBufferExecCompleted -_08156E66: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156E6C: .4byte gSprites -_08156E70: .4byte gBattlerSpriteIds -_08156E74: .4byte gHealthboxSpriteIds - thumb_func_end sub_8156DCC - - thumb_func_start CompleteOnHealthbarDone_PokedudeTmp -CompleteOnHealthbarDone_PokedudeTmp: @ 8156E78 - push {r4-r6,lr} - ldr r5, _08156EB8 @ =gActiveBattler - ldrb r0, [r5] - ldr r6, _08156EBC @ =gHealthboxSpriteIds - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08156EC0 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _08156EDA - .align 2, 0 -_08156EB8: .4byte gActiveBattler -_08156EBC: .4byte gHealthboxSpriteIds -_08156EC0: - ldr r2, _08156EE0 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08156EE4 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl PokedudeBufferExecCompleted -_08156EDA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156EE0: .4byte gBattlerPartyIndexes -_08156EE4: .4byte gPlayerParty - thumb_func_end CompleteOnHealthbarDone_PokedudeTmp - - thumb_func_start CompleteOnInactiveTextPrinter2_PokedudeTmp -CompleteOnInactiveTextPrinter2_PokedudeTmp: @ 8156EE8 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _08156EFA - bl PokedudeBufferExecCompleted -_08156EFA: - pop {r0} - bx r0 - thumb_func_end CompleteOnInactiveTextPrinter2_PokedudeTmp - - thumb_func_start DoHitAnimBlinkSpriteEffect_PokedudeTmp -DoHitAnimBlinkSpriteEffect_PokedudeTmp: @ 8156F00 - push {r4,lr} - ldr r1, _08156F3C @ =gBattlerSpriteIds - ldr r0, _08156F40 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _08156F44 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _08156F4C - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08156F48 @ =gDoingBattleAnim - strb r3, [r0] - bl PokedudeBufferExecCompleted - b _08156F76 - .align 2, 0 -_08156F3C: .4byte gBattlerSpriteIds -_08156F40: .4byte gActiveBattler -_08156F44: .4byte gSprites -_08156F48: .4byte gDoingBattleAnim -_08156F4C: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08156F70 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08156F70: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08156F76: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DoHitAnimBlinkSpriteEffect_PokedudeTmp - - thumb_func_start sub_8156F7C -sub_8156F7C: @ 8156F7C - push {r4-r6,lr} - ldr r0, _08156FD8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _08156FDC @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08156FD0 - ldr r5, _08156FE0 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08156FE4 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _08156FE8 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PokedudeBufferExecCompleted -_08156FD0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08156FD8: .4byte gBattleSpritesDataPtr -_08156FDC: .4byte gActiveBattler -_08156FE0: .4byte gBattlerSpriteIds -_08156FE4: .4byte gSprites -_08156FE8: .4byte gHealthboxSpriteIds - thumb_func_end sub_8156F7C - - thumb_func_start CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp -CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp: @ 8156FEC - push {lr} - ldr r2, _08157014 @ =gSprites - ldr r1, _08157018 @ =gBattlerSpriteIds - ldr r0, _0815701C @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08157020 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08157010 - bl PokedudeBufferExecCompleted -_08157010: - pop {r0} - bx r0 - .align 2, 0 -_08157014: .4byte gSprites -_08157018: .4byte gBattlerSpriteIds -_0815701C: .4byte gActiveBattler -_08157020: .4byte SpriteCallbackDummy - thumb_func_end CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp - - thumb_func_start CompleteOnFinishedBattleAnimation_PokedudeTmp -CompleteOnFinishedBattleAnimation_PokedudeTmp: @ 8157024 - push {lr} - ldr r0, _0815704C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08157050 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08157046 - bl PokedudeBufferExecCompleted -_08157046: - pop {r0} - bx r0 - .align 2, 0 -_0815704C: .4byte gBattleSpritesDataPtr -_08157050: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation_PokedudeTmp - - thumb_func_start CompleteOnFinishedStatusAnimation_PokedudeTmp -CompleteOnFinishedStatusAnimation_PokedudeTmp: @ 8157054 - push {lr} - ldr r0, _0815707C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08157080 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08157076 - bl PokedudeBufferExecCompleted -_08157076: - pop {r0} - bx r0 - .align 2, 0 -_0815707C: .4byte gBattleSpritesDataPtr -_08157080: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation_PokedudeTmp - - thumb_func_start PokedudeBufferExecCompleted -PokedudeBufferExecCompleted: @ 8157084 - push {r4,lr} - sub sp, 0x4 - ldr r1, _081570C4 @ =gBattlerControllerFuncs - ldr r4, _081570C8 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081570CC @ =PokedudeBufferRunCommand - str r1, [r0] - ldr r0, _081570D0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081570D8 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _081570D4 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _081570EA - .align 2, 0 -_081570C4: .4byte gBattlerControllerFuncs -_081570C8: .4byte gActiveBattler -_081570CC: .4byte PokedudeBufferRunCommand -_081570D0: .4byte gBattleTypeFlags -_081570D4: .4byte gBattleBufferA -_081570D8: - ldr r2, _081570F4 @ =gBattleControllerExecFlags - ldr r1, _081570F8 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_081570EA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081570F4: .4byte gBattleControllerExecFlags -_081570F8: .4byte gBitTable - thumb_func_end PokedudeBufferExecCompleted - - thumb_func_start CompleteOnFinishedStatusAnimation2_PokedudeTmp -CompleteOnFinishedStatusAnimation2_PokedudeTmp: @ 81570FC - push {lr} - ldr r0, _08157124 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08157128 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0815711E - bl PokedudeBufferExecCompleted -_0815711E: - pop {r0} - bx r0 - .align 2, 0 -_08157124: .4byte gBattleSpritesDataPtr -_08157128: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation2_PokedudeTmp - - thumb_func_start PokedudeHandleGetMonData -PokedudeHandleGetMonData: @ 815712C - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _08157158 @ =gBattleBufferA - ldr r0, _0815715C @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _08157164 - ldr r0, _08157160 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl CopyPokedudeMonData - adds r6, r0, 0 - b _08157186 - .align 2, 0 -_08157158: .4byte gBattleBufferA -_0815715C: .4byte gActiveBattler -_08157160: .4byte gBattlerPartyIndexes -_08157164: - ldrb r4, [r1] - movs r5, 0 -_08157168: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0815717E - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl CopyPokedudeMonData - adds r6, r0 -_0815717E: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _08157168 -_08157186: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl PokedudeBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PokedudeHandleGetMonData - - thumb_func_start CopyPokedudeMonData -CopyPokedudeMonData: @ 81571A0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8C - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _081571CC @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081571D4 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _081571D0 @ =gPlayerParty - b _081571DC - .align 2, 0 -_081571CC: .4byte gActiveBattler -_081571D0: .4byte gPlayerParty -_081571D4: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _081571FC @ =gEnemyParty -_081571DC: - adds r6, r1, r0 - ldr r3, _08157200 @ =gBattleBufferA - ldr r2, _08157204 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _081571F2 - b _0815773C -_081571F2: - lsls r0, 2 - ldr r1, _08157208 @ =_0815720C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081571FC: .4byte gEnemyParty -_08157200: .4byte gBattleBufferA -_08157204: .4byte gActiveBattler -_08157208: .4byte _0815720C - .align 2, 0 -_0815720C: - .4byte _081572FC - .4byte _08157508 - .4byte _0815750E - .4byte _08157514 - .4byte _08157564 - .4byte _08157564 - .4byte _08157564 - .4byte _08157564 - .4byte _08157574 - .4byte _0815759A - .4byte _0815759A - .4byte _0815759A - .4byte _0815759A - .4byte _0815773C - .4byte _0815773C - .4byte _0815773C - .4byte _0815773C - .4byte _081575AA - .4byte _081575B0 - .4byte _081575D4 - .4byte _081575DA - .4byte _081575E0 - .4byte _081575E6 - .4byte _081575EC - .4byte _081575F2 - .4byte _081575F8 - .4byte _081575FE - .4byte _08157604 - .4byte _0815760A - .4byte _08157610 - .4byte _08157616 - .4byte _0815761C - .4byte _0815765C - .4byte _08157662 - .4byte _08157668 - .4byte _0815766E - .4byte _08157674 - .4byte _0815767A - .4byte _08157680 - .4byte _08157686 - .4byte _0815768C - .4byte _081576B4 - .4byte _081576BA - .4byte _081576C0 - .4byte _081576C6 - .4byte _081576CC - .4byte _081576D2 - .4byte _081576D8 - .4byte _081576DE - .4byte _081576F4 - .4byte _081576FA - .4byte _08157700 - .4byte _08157706 - .4byte _0815770C - .4byte _08157712 - .4byte _08157718 - .4byte _0815771E - .4byte _08157724 - .4byte _0815772A - .4byte _08157730 -_081572FC: - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r4, 0 - add r0, sp, 0x24 - mov r8, r0 - movs r1, 0x3B - add r1, sp - mov r9, r1 - movs r2, 0x2B - add r2, sp - mov r10, r2 - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x88] - mov r2, sp - adds r2, 0x30 - str r2, [sp, 0x80] - adds r0, 0x12 - str r0, [sp, 0x84] - add r5, sp, 0xC -_0815733E: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - strh r0, [r5] - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r6, 0 - bl GetMonData - mov r2, r8 - adds r1, r2, r4 - strb r0, [r1] - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0815733E - adds r0, r6, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x20 - bl GetMonData - mov r2, r10 - strb r0, [r2] - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r6, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r4, 0x1F - ands r0, r4 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r6, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _081574FC @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r6, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r4 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r6, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _08157500 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r6, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _08157504 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r6, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r4 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r6, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r6, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r6, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r6, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r6, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r6, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r6, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r6, 0 - movs r1, 0x2 - ldr r2, [sp, 0x88] - bl GetMonData - ldr r0, [sp, 0x80] - ldr r1, [sp, 0x88] - bl StringCopy10 - adds r0, r6, 0 - movs r1, 0x7 - ldr r2, [sp, 0x84] - bl GetMonData - mov r2, sp - movs r4, 0 -_081574EC: - adds r0, r7, r4 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x57 - bls _081574EC - b _0815773C - .align 2, 0 -_081574FC: .4byte 0xfffffc1f -_08157500: .4byte 0xfff07fff -_08157504: .4byte 0xfffffe0f -_08157508: - adds r0, r6, 0 - movs r1, 0xB - b _081576E2 -_0815750E: - adds r0, r6, 0 - movs r1, 0xC - b _081576E2 -_08157514: - movs r4, 0 - add r2, sp, 0x58 - mov r8, r2 - add r0, sp, 0x60 - mov r9, r0 - mov r5, r8 -_08157520: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - strh r0, [r5] - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r6, 0 - bl GetMonData - mov r2, r9 - adds r1, r2, r4 - strb r0, [r1] - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _08157520 - adds r0, r6, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r8 - strb r0, [r1, 0xC] - mov r2, r8 - movs r4, 0 -_08157554: - adds r0, r7, r4 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0xF - bls _08157554 - b _0815773C -_08157564: - ldrb r0, [r2] - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r1, [r0] - adds r1, 0x9 - adds r0, r6, 0 - b _081576E2 -_08157574: - movs r4, 0 -_08157576: - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r6, 0 - bl GetMonData - adds r1, r7, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _08157576 - adds r0, r6, 0 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r4 - strb r0, [r1] - adds r4, 0x1 - b _0815773C -_0815759A: - ldrb r0, [r2] - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r1, [r0] - adds r1, 0x8 - adds r0, r6, 0 - b _08157734 -_081575AA: - adds r0, r6, 0 - movs r1, 0x1 - b _081575B4 -_081575B0: - adds r0, r6, 0 - movs r1, 0x19 -_081575B4: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r4, 0x3 - b _0815773C -_081575D4: - adds r0, r6, 0 - movs r1, 0x1A - b _08157734 -_081575DA: - adds r0, r6, 0 - movs r1, 0x1B - b _08157734 -_081575E0: - adds r0, r6, 0 - movs r1, 0x1C - b _08157734 -_081575E6: - adds r0, r6, 0 - movs r1, 0x1D - b _08157734 -_081575EC: - adds r0, r6, 0 - movs r1, 0x1E - b _08157734 -_081575F2: - adds r0, r6, 0 - movs r1, 0x1F - b _08157734 -_081575F8: - adds r0, r6, 0 - movs r1, 0x20 - b _08157734 -_081575FE: - adds r0, r6, 0 - movs r1, 0x22 - b _08157734 -_08157604: - adds r0, r6, 0 - movs r1, 0x23 - b _08157734 -_0815760A: - adds r0, r6, 0 - movs r1, 0x24 - b _08157734 -_08157610: - adds r0, r6, 0 - movs r1, 0x25 - b _08157734 -_08157616: - adds r0, r6, 0 - movs r1, 0x26 - b _08157734 -_0815761C: - adds r0, r6, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r6, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r6, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r6, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r6, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r6, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r4, 0x6 - b _0815773C -_0815765C: - adds r0, r6, 0 - movs r1, 0x27 - b _08157734 -_08157662: - adds r0, r6, 0 - movs r1, 0x28 - b _08157734 -_08157668: - adds r0, r6, 0 - movs r1, 0x29 - b _08157734 -_0815766E: - adds r0, r6, 0 - movs r1, 0x2A - b _08157734 -_08157674: - adds r0, r6, 0 - movs r1, 0x2B - b _08157734 -_0815767A: - adds r0, r6, 0 - movs r1, 0x2C - b _08157734 -_08157680: - adds r0, r6, 0 - movs r1, 0 - b _08157690 -_08157686: - adds r0, r6, 0 - movs r1, 0x9 - b _081576E2 -_0815768C: - adds r0, r6, 0 - movs r1, 0x37 -_08157690: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r4, 0x4 - b _0815773C -_081576B4: - adds r0, r6, 0 - movs r1, 0x38 - b _08157734 -_081576BA: - adds r0, r6, 0 - movs r1, 0x39 - b _081576E2 -_081576C0: - adds r0, r6, 0 - movs r1, 0x3A - b _081576E2 -_081576C6: - adds r0, r6, 0 - movs r1, 0x3B - b _081576E2 -_081576CC: - adds r0, r6, 0 - movs r1, 0x3C - b _081576E2 -_081576D2: - adds r0, r6, 0 - movs r1, 0x3D - b _081576E2 -_081576D8: - adds r0, r6, 0 - movs r1, 0x3E - b _081576E2 -_081576DE: - adds r0, r6, 0 - movs r1, 0x3F -_081576E2: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r4, 0x2 - b _0815773C -_081576F4: - adds r0, r6, 0 - movs r1, 0x16 - b _08157734 -_081576FA: - adds r0, r6, 0 - movs r1, 0x17 - b _08157734 -_08157700: - adds r0, r6, 0 - movs r1, 0x18 - b _08157734 -_08157706: - adds r0, r6, 0 - movs r1, 0x21 - b _08157734 -_0815770C: - adds r0, r6, 0 - movs r1, 0x2F - b _08157734 -_08157712: - adds r0, r6, 0 - movs r1, 0x30 - b _08157734 -_08157718: - adds r0, r6, 0 - movs r1, 0x32 - b _08157734 -_0815771E: - adds r0, r6, 0 - movs r1, 0x33 - b _08157734 -_08157724: - adds r0, r6, 0 - movs r1, 0x34 - b _08157734 -_0815772A: - adds r0, r6, 0 - movs r1, 0x35 - b _08157734 -_08157730: - adds r0, r6, 0 - movs r1, 0x36 -_08157734: - bl GetMonData - strb r0, [r7] - movs r4, 0x1 -_0815773C: - adds r0, r4, 0 - add sp, 0x8C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CopyPokedudeMonData - - thumb_func_start PokedudeHandleGetRawMonData -PokedudeHandleGetRawMonData: @ 8157750 - push {lr} - bl PlayerHandleGetRawMonData - pop {r0} - bx r0 - thumb_func_end PokedudeHandleGetRawMonData - - thumb_func_start PokedudeHandleSetMonData -PokedudeHandleSetMonData: @ 815775C - push {r4,r5,lr} - ldr r1, _08157780 @ =gBattleBufferA - ldr r0, _08157784 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _0815778C - ldr r0, _08157788 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl SetPokedudeMonData - b _081577AA - .align 2, 0 -_08157780: .4byte gBattleBufferA -_08157784: .4byte gActiveBattler -_08157788: .4byte gBattlerPartyIndexes -_0815778C: - ldrb r4, [r1] - movs r5, 0 -_08157790: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0815779E - adds r0, r5, 0 - bl SetPokedudeMonData -_0815779E: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08157790 -_081577AA: - bl PokedudeBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PokedudeHandleSetMonData - - thumb_func_start SetPokedudeMonData -SetPokedudeMonData: @ 81577B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081577E4 @ =gActiveBattler - ldrb r0, [r0] - lsls r2, r0, 9 - ldr r1, _081577E8 @ =gBattleBufferA + 3 - adds r5, r2, r1 - mov r8, r5 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081577F0 - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _081577EC @ =gPlayerParty - b _081577F8 - .align 2, 0 -_081577E4: .4byte gActiveBattler -_081577E8: .4byte gBattleBufferA + 3 -_081577EC: .4byte gPlayerParty -_081577F0: - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0815781C @ =gEnemyParty -_081577F8: - adds r6, r1, r0 - ldr r2, _08157820 @ =gBattleBufferA - ldr r0, _08157824 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - adds r3, r2, 0 - cmp r0, 0x3B - bls _08157812 - bl _0815809A -_08157812: - lsls r0, 2 - ldr r1, _08157828 @ =_0815782C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0815781C: .4byte gEnemyParty -_08157820: .4byte gBattleBufferA -_08157824: .4byte gActiveBattler -_08157828: .4byte _0815782C - .align 2, 0 -_0815782C: - .4byte _0815791C - .4byte _08157AA4 - .4byte _08157AC0 - .4byte _08157ADC - .4byte _08157B16 - .4byte _08157B16 - .4byte _08157B16 - .4byte _08157B16 - .4byte _08157B2C - .4byte _08157B88 - .4byte _08157B88 - .4byte _08157B88 - .4byte _08157B88 - .4byte _0815809A - .4byte _0815809A - .4byte _0815809A - .4byte _0815809A - .4byte _08157BA8 - .4byte _08157BC4 - .4byte _08157BE0 - .4byte _08157BFC - .4byte _08157C18 - .4byte _08157C34 - .4byte _08157C50 - .4byte _08157C6C - .4byte _08157C88 - .4byte _08157CA4 - .4byte _08157CC0 - .4byte _08157CDC - .4byte _08157CF8 - .4byte _08157D14 - .4byte _08157D30 - .4byte _08157D94 - .4byte _08157DB0 - .4byte _08157DCC - .4byte _08157DE8 - .4byte _08157E04 - .4byte _08157E20 - .4byte _08157E3C - .4byte _08157E58 - .4byte _08157E74 - .4byte _08157E90 - .4byte _08157EAC - .4byte _08157EC8 - .4byte _08157EE4 - .4byte _08157F00 - .4byte _08157F1C - .4byte _08157F38 - .4byte _08157F54 - .4byte _08157F70 - .4byte _08157F8C - .4byte _08157FA8 - .4byte _08157FC4 - .4byte _08157FE0 - .4byte _08157FFC - .4byte _08158018 - .4byte _08158034 - .4byte _08158050 - .4byte _0815806C - .4byte _08158088 -_0815791C: - adds r0, r6, 0 - movs r1, 0xB - mov r2, r8 - bl SetMonData - mov r2, r8 - adds r2, 0x2E - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData - movs r4, 0 - movs r0, 0x3B - add r0, r8 - mov r9, r0 - movs r1, 0x2B - add r1, r8 - mov r10, r1 - mov r2, r8 - adds r2, 0x44 - str r2, [sp, 0x10] - mov r0, r8 - adds r0, 0x48 - str r0, [sp, 0x14] - mov r1, r8 - adds r1, 0x4C - str r1, [sp, 0x18] - subs r2, 0x1A - str r2, [sp, 0x8] - subs r0, 0x20 - str r0, [sp, 0x4] - subs r1, 0x20 - str r1, [sp, 0xC] - subs r2, 0x28 - str r2, [sp, 0x1C] - subs r0, 0x24 - str r0, [sp, 0x20] - subs r1, 0x26 - str r1, [sp, 0x24] - adds r2, 0x6 - str r2, [sp, 0x28] - adds r0, 0x6 - str r0, [sp, 0x2C] - mov r7, r8 - adds r7, 0x24 - mov r5, r8 - adds r5, 0xC -_0815797A: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - adds r2, r5, 0 - bl SetMonData - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r6, 0 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0815797A - adds r0, r6, 0 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x20 - mov r2, r10 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x19 - ldr r2, [sp, 0x10] - bl SetMonData - mov r1, r8 - ldrb r0, [r1, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - mov r2, r8 - ldrh r0, [r2, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - mov r2, r8 - ldrb r0, [r2, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - mov r2, r8 - ldr r0, [r2, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - mov r2, r8 - ldrh r0, [r2, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - mov r2, r8 - ldrb r0, [r2, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r6, 0 - movs r1, 0 - ldr r2, [sp, 0x14] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x37 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x38 - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x39 - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3A - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3B - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3C - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3D - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3E - ldr r2, [sp, 0x28] - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3F - ldr r2, [sp, 0x2C] - bl SetMonData - b _0815809A -_08157AA4: - ldr r0, _08157AB8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157ABC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0xB - bl SetMonData - b _0815809A - .align 2, 0 -_08157AB8: .4byte gActiveBattler -_08157ABC: .4byte gBattleBufferA + 3 -_08157AC0: - ldr r0, _08157AD4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157AD8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData - b _0815809A - .align 2, 0 -_08157AD4: .4byte gActiveBattler -_08157AD8: .4byte gBattleBufferA + 3 -_08157ADC: - movs r4, 0 - movs r0, 0xC - adds r0, r5 - mov r8, r0 - adds r7, r5, 0 - adds r7, 0x8 -_08157AE8: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - adds r2, r5, 0 - bl SetMonData - adds r1, r4, 0 - adds r1, 0x11 - adds r0, r6, 0 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _08157AE8 - adds r0, r6, 0 - movs r1, 0x15 - mov r2, r8 - bl SetMonData - b _0815809A -_08157B16: - ldr r0, _08157B28 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r1, [r0] - adds r1, 0x9 - b _08157B96 - .align 2, 0 -_08157B28: .4byte gActiveBattler -_08157B2C: - ldr r5, _08157B80 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - ldr r4, _08157B84 @ =gBattleBufferA + 3 - adds r2, r4 - adds r0, r6, 0 - movs r1, 0x11 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x1 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x2 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r4, 0x4 - adds r2, r4 - adds r0, r6, 0 - movs r1, 0x15 - bl SetMonData - b _0815809A - .align 2, 0 -_08157B80: .4byte gActiveBattler -_08157B84: .4byte gBattleBufferA + 3 -_08157B88: - ldr r0, _08157BA4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r1, [r0] - adds r1, 0x8 -_08157B96: - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r6, 0 - bl SetMonData - b _0815809A - .align 2, 0 -_08157BA4: .4byte gActiveBattler -_08157BA8: - ldr r0, _08157BBC @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157BC0 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1 - bl SetMonData - b _0815809A - .align 2, 0 -_08157BBC: .4byte gActiveBattler -_08157BC0: .4byte gBattleBufferA + 3 -_08157BC4: - ldr r0, _08157BD8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157BDC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - b _0815809A - .align 2, 0 -_08157BD8: .4byte gActiveBattler -_08157BDC: .4byte gBattleBufferA + 3 -_08157BE0: - ldr r0, _08157BF4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157BF8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1A - bl SetMonData - b _0815809A - .align 2, 0 -_08157BF4: .4byte gActiveBattler -_08157BF8: .4byte gBattleBufferA + 3 -_08157BFC: - ldr r0, _08157C10 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157C14 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1B - bl SetMonData - b _0815809A - .align 2, 0 -_08157C10: .4byte gActiveBattler -_08157C14: .4byte gBattleBufferA + 3 -_08157C18: - ldr r0, _08157C2C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157C30 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1C - bl SetMonData - b _0815809A - .align 2, 0 -_08157C2C: .4byte gActiveBattler -_08157C30: .4byte gBattleBufferA + 3 -_08157C34: - ldr r0, _08157C48 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157C4C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1D - bl SetMonData - b _0815809A - .align 2, 0 -_08157C48: .4byte gActiveBattler -_08157C4C: .4byte gBattleBufferA + 3 -_08157C50: - ldr r0, _08157C64 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157C68 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1E - bl SetMonData - b _0815809A - .align 2, 0 -_08157C64: .4byte gActiveBattler -_08157C68: .4byte gBattleBufferA + 3 -_08157C6C: - ldr r0, _08157C80 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157C84 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x1F - bl SetMonData - b _0815809A - .align 2, 0 -_08157C80: .4byte gActiveBattler -_08157C84: .4byte gBattleBufferA + 3 -_08157C88: - ldr r0, _08157C9C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157CA0 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x20 - bl SetMonData - b _0815809A - .align 2, 0 -_08157C9C: .4byte gActiveBattler -_08157CA0: .4byte gBattleBufferA + 3 -_08157CA4: - ldr r0, _08157CB8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157CBC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x22 - bl SetMonData - b _0815809A - .align 2, 0 -_08157CB8: .4byte gActiveBattler -_08157CBC: .4byte gBattleBufferA + 3 -_08157CC0: - ldr r0, _08157CD4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157CD8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x23 - bl SetMonData - b _0815809A - .align 2, 0 -_08157CD4: .4byte gActiveBattler -_08157CD8: .4byte gBattleBufferA + 3 -_08157CDC: - ldr r0, _08157CF0 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157CF4 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x24 - bl SetMonData - b _0815809A - .align 2, 0 -_08157CF0: .4byte gActiveBattler -_08157CF4: .4byte gBattleBufferA + 3 -_08157CF8: - ldr r0, _08157D0C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157D10 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x25 - bl SetMonData - b _0815809A - .align 2, 0 -_08157D0C: .4byte gActiveBattler -_08157D10: .4byte gBattleBufferA + 3 -_08157D14: - ldr r0, _08157D28 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157D2C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x26 - bl SetMonData - b _0815809A - .align 2, 0 -_08157D28: .4byte gActiveBattler -_08157D2C: .4byte gBattleBufferA + 3 -_08157D30: - ldr r5, _08157D8C @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - ldr r4, _08157D90 @ =gBattleBufferA + 3 - adds r2, r4 - adds r0, r6, 0 - movs r1, 0x27 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x1 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x2 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r4, 0x4 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r4, 0x5 - adds r2, r4 - b _08157E2A - .align 2, 0 -_08157D8C: .4byte gActiveBattler -_08157D90: .4byte gBattleBufferA + 3 -_08157D94: - ldr r0, _08157DA8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157DAC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x27 - bl SetMonData - b _0815809A - .align 2, 0 -_08157DA8: .4byte gActiveBattler -_08157DAC: .4byte gBattleBufferA + 3 -_08157DB0: - ldr r0, _08157DC4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157DC8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x28 - bl SetMonData - b _0815809A - .align 2, 0 -_08157DC4: .4byte gActiveBattler -_08157DC8: .4byte gBattleBufferA + 3 -_08157DCC: - ldr r0, _08157DE0 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157DE4 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x29 - bl SetMonData - b _0815809A - .align 2, 0 -_08157DE0: .4byte gActiveBattler -_08157DE4: .4byte gBattleBufferA + 3 -_08157DE8: - ldr r0, _08157DFC @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E00 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x2A - bl SetMonData - b _0815809A - .align 2, 0 -_08157DFC: .4byte gActiveBattler -_08157E00: .4byte gBattleBufferA + 3 -_08157E04: - ldr r0, _08157E18 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E1C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x2B - bl SetMonData - b _0815809A - .align 2, 0 -_08157E18: .4byte gActiveBattler -_08157E1C: .4byte gBattleBufferA + 3 -_08157E20: - ldr r0, _08157E34 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E38 @ =gBattleBufferA + 3 - adds r2, r0 -_08157E2A: - adds r0, r6, 0 - movs r1, 0x2C - bl SetMonData - b _0815809A - .align 2, 0 -_08157E34: .4byte gActiveBattler -_08157E38: .4byte gBattleBufferA + 3 -_08157E3C: - ldr r0, _08157E50 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E54 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0 - bl SetMonData - b _0815809A - .align 2, 0 -_08157E50: .4byte gActiveBattler -_08157E54: .4byte gBattleBufferA + 3 -_08157E58: - ldr r0, _08157E6C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E70 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x9 - bl SetMonData - b _0815809A - .align 2, 0 -_08157E6C: .4byte gActiveBattler -_08157E70: .4byte gBattleBufferA + 3 -_08157E74: - ldr r0, _08157E88 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157E8C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x37 - bl SetMonData - b _0815809A - .align 2, 0 -_08157E88: .4byte gActiveBattler -_08157E8C: .4byte gBattleBufferA + 3 -_08157E90: - ldr r0, _08157EA4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157EA8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl SetMonData - b _0815809A - .align 2, 0 -_08157EA4: .4byte gActiveBattler -_08157EA8: .4byte gBattleBufferA + 3 -_08157EAC: - ldr r0, _08157EC0 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157EC4 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x39 - bl SetMonData - b _0815809A - .align 2, 0 -_08157EC0: .4byte gActiveBattler -_08157EC4: .4byte gBattleBufferA + 3 -_08157EC8: - ldr r0, _08157EDC @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157EE0 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3A - bl SetMonData - b _0815809A - .align 2, 0 -_08157EDC: .4byte gActiveBattler -_08157EE0: .4byte gBattleBufferA + 3 -_08157EE4: - ldr r0, _08157EF8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157EFC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3B - bl SetMonData - b _0815809A - .align 2, 0 -_08157EF8: .4byte gActiveBattler -_08157EFC: .4byte gBattleBufferA + 3 -_08157F00: - ldr r0, _08157F14 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157F18 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3C - bl SetMonData - b _0815809A - .align 2, 0 -_08157F14: .4byte gActiveBattler -_08157F18: .4byte gBattleBufferA + 3 -_08157F1C: - ldr r0, _08157F30 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157F34 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3D - bl SetMonData - b _0815809A - .align 2, 0 -_08157F30: .4byte gActiveBattler -_08157F34: .4byte gBattleBufferA + 3 -_08157F38: - ldr r0, _08157F4C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157F50 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3E - bl SetMonData - b _0815809A - .align 2, 0 -_08157F4C: .4byte gActiveBattler -_08157F50: .4byte gBattleBufferA + 3 -_08157F54: - ldr r0, _08157F68 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157F6C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x3F - bl SetMonData - b _0815809A - .align 2, 0 -_08157F68: .4byte gActiveBattler -_08157F6C: .4byte gBattleBufferA + 3 -_08157F70: - ldr r0, _08157F84 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157F88 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x16 - bl SetMonData - b _0815809A - .align 2, 0 -_08157F84: .4byte gActiveBattler -_08157F88: .4byte gBattleBufferA + 3 -_08157F8C: - ldr r0, _08157FA0 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157FA4 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x17 - bl SetMonData - b _0815809A - .align 2, 0 -_08157FA0: .4byte gActiveBattler -_08157FA4: .4byte gBattleBufferA + 3 -_08157FA8: - ldr r0, _08157FBC @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157FC0 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x18 - bl SetMonData - b _0815809A - .align 2, 0 -_08157FBC: .4byte gActiveBattler -_08157FC0: .4byte gBattleBufferA + 3 -_08157FC4: - ldr r0, _08157FD8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157FDC @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x21 - bl SetMonData - b _0815809A - .align 2, 0 -_08157FD8: .4byte gActiveBattler -_08157FDC: .4byte gBattleBufferA + 3 -_08157FE0: - ldr r0, _08157FF4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08157FF8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x2F - bl SetMonData - b _0815809A - .align 2, 0 -_08157FF4: .4byte gActiveBattler -_08157FF8: .4byte gBattleBufferA + 3 -_08157FFC: - ldr r0, _08158010 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08158014 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x30 - bl SetMonData - b _0815809A - .align 2, 0 -_08158010: .4byte gActiveBattler -_08158014: .4byte gBattleBufferA + 3 -_08158018: - ldr r0, _0815802C @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08158030 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x32 - bl SetMonData - b _0815809A - .align 2, 0 -_0815802C: .4byte gActiveBattler -_08158030: .4byte gBattleBufferA + 3 -_08158034: - ldr r0, _08158048 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _0815804C @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x33 - bl SetMonData - b _0815809A - .align 2, 0 -_08158048: .4byte gActiveBattler -_0815804C: .4byte gBattleBufferA + 3 -_08158050: - ldr r0, _08158064 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08158068 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x34 - bl SetMonData - b _0815809A - .align 2, 0 -_08158064: .4byte gActiveBattler -_08158068: .4byte gBattleBufferA + 3 -_0815806C: - ldr r0, _08158080 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _08158084 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x35 - bl SetMonData - b _0815809A - .align 2, 0 -_08158080: .4byte gActiveBattler -_08158084: .4byte gBattleBufferA + 3 -_08158088: - ldr r0, _081580C4 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - ldr r0, _081580C8 @ =gBattleBufferA + 3 - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x36 - bl SetMonData -_0815809A: - ldr r2, _081580CC @ =gBattlerPartyIndexes - ldr r0, _081580C4 @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081580D0 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081580C4: .4byte gActiveBattler -_081580C8: .4byte gBattleBufferA + 3 -_081580CC: .4byte gBattlerPartyIndexes -_081580D0: .4byte gPlayerParty - thumb_func_end SetPokedudeMonData - - thumb_func_start PokedudeHandleSetRawMonData -PokedudeHandleSetRawMonData: @ 81580D4 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleSetRawMonData - thumb_func_start PokedudeHandleLoadMonSprite PokedudeHandleLoadMonSprite: @ 81580E0 push {r4-r7,lr} diff --git a/include/party_menu.h b/include/party_menu.h index c07371a5d..d7c2f1248 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -88,5 +88,6 @@ void CB2_PartyMenuFromStartMenu(void); void sub_8128198(void); void sub_8127FF4(u8 slot, u8 slot2); void LoadHeldItemIcons(void); +void sub_8127968(void); #endif // GUARD_PARTY_MENU_H diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index 99391ab3e..a6730cbbb 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -181,7 +181,7 @@ static void OakOldManBufferRunCommand(void) { if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) { - if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOakOldManBufferCommands)) + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sOakOldManBufferCommands)) sOakOldManBufferCommands[gBattleBufferA[gActiveBattler][0]](); else OakOldManBufferExecCompleted(); @@ -463,7 +463,7 @@ static void sub_80E7CD8(void) static void Task_GiveExpToMon(u8 taskId) { - u32 monId = (u8)(gTasks[taskId].tExpTask_monId); + u32 monId = (u8)gTasks[taskId].tExpTask_monId; u8 battlerId = gTasks[taskId].tExpTask_battler; s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; @@ -487,7 +487,7 @@ static void Task_GiveExpToMon(u8 taskId) BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); gActiveBattler = savedActiveBattler; if (IsDoubleBattle() == TRUE - && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + && ((u16)monId == gBattlerPartyIndexes[battlerId] || (u16)monId == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) gTasks[taskId].func = Task_LaunchLvlUpAnim; else gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 599ce3c01..20627de09 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -2,6 +2,7 @@ #include "task.h" #include "pokemon.h" #include "party_menu.h" +#include "pokeball.h" #include "bg.h" #include "data.h" #include "palette.h" @@ -9,6 +10,7 @@ #include "m4a.h" #include "link.h" #include "sound.h" +#include "event_data.h" #include "item.h" #include "item_menu.h" #include "text.h" @@ -104,6 +106,22 @@ void PokedudeCmdEnd(void); void sub_8159BA8(void); void sub_8159D04(void); +void PokedudeBufferExecCompleted(void); +void sub_8159824(void); +void PokedudeBufferRunCommand(void); +bool8 sub_8159AB8(void); +void sub_8159998(void); +void WaitForMonSelection_PokedudeTmp(void); +void CompleteWhenChoseItem_PokedudeTmp(void); +void sub_81567B0(void); +void Task_LaunchLvlUpAnim_PokedudeTmp(u8 taskId); +void DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp(u8 taskId); +void CompleteOnInactiveTextPrinter2_PokedudeTmp(void); +void Task_PrepareToGiveExpWithExpBar_PokedudeTmp(u8 taskId); +void sub_8156B24(u8 taskId); +void Task_UpdateLvlInHealthbox_PokedudeTmp(u8 taskId); +u32 CopyPokedudeMonData(u8 monId, u8 *dst); +void SetPokedudeMonData(u8 monId); void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) = { @@ -535,3 +553,1111 @@ const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[] = sParties_Matchups, sParties_Catching, }; + +void nullsub_99(void) +{ +} + +void SetControllerToPokedude(void) +{ + gBattlerControllerFuncs[gActiveBattler] = PokedudeBufferRunCommand; + *(&gBattleStruct->field_96) = gSpecialVar_0x8004; + gBattleStruct->field_97 = 0; +} + +void PokedudeBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sPokedudeBufferCommands)) + { + if (!sub_8159AB8()) + sPokedudeBufferCommands[gBattleBufferA[gActiveBattler][0]](); + } + else + { + PokedudeBufferExecCompleted(); + } + } +} + +void sub_8156140(void) +{ + sub_8159824(); +} + +void CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + PokedudeBufferExecCompleted(); +} + +void sub_8156184(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE + && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + { + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + } + else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + PokedudeBufferExecCompleted(); + } + } +} + +void CompleteOnInactiveTextPrinter_PokedudeTmp(void) +{ + if (!IsTextPrinterActive(0)) + PokedudeBufferExecCompleted(); +} + +void sub_8156254(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void sub_8156294(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CreateTask(c3_0802FDF4, 10); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PokedudeBufferExecCompleted(); + } +} + +void sub_81562F0(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattlerControllerFuncs[gActiveBattler] = sub_8156294; + } +} + +void sub_81563A8(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy + && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + CopyBattleSpriteInvisibility(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_81562F0; + } +} + +void CompleteOnSpecialAnimDone_PokedudeTmp(void) +{ + if (!gDoingBattleAnim) + PokedudeBufferExecCompleted(); +} + +void sub_815649C(void) +{ + if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 255) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + PokedudeBufferExecCompleted(); + } +} + +void sub_81564E4(void) +{ + sub_8159998(); +} + +void OpenPartyMenuToChooseMon_PokedudeTmp(void) +{ + if (!gPaletteFade.active) + { + gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection_PokedudeTmp; + DestroyTask(gUnknown_3004FFC[gActiveBattler]); + FreeAllWindowBuffers(); + sub_8127968(); + } +} + +void WaitForMonSelection_PokedudeTmp(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (gUnknown_203B0C0 == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + else + BtlController_EmitChosenMonReturnValue(1, 6, NULL); + PokedudeBufferExecCompleted(); + } +} + +void OpenBagAndChooseItem_PokedudeTmp(void) +{ + u8 callbackId; + + if (!gPaletteFade.active) + { + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem_PokedudeTmp; + nullsub_44(); + FreeAllWindowBuffers(); + switch (gSpecialVar_0x8004) + { + case 1: + default: + callbackId = 7; + break; + case 3: + callbackId = 8; + break; + } + sub_810B108(callbackId); + } +} + +void CompleteWhenChoseItem_PokedudeTmp(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + PokedudeBufferExecCompleted(); + } +} + +void sub_8156624(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_81567B0; + } +} + +void sub_81567B0(void) +{ + bool32 r4 = FALSE; + + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + r4 = TRUE; + if (r4 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_815649C; + } +} + +#define tExpTask_monId data[0] +#define tExpTask_gainedExp data[1] +#define tExpTask_battler data[2] +#define tExpTask_frames data[10] + +void Task_GiveExpToMon_PokedudeTmp(u8 taskId) +{ + u32 monId = (u8)gTasks[taskId].tExpTask_monId; + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + + if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // Give exp without moving the expbar. + { + struct Pokemon *mon = &gPlayerParty[monId]; + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u32 currExp = GetMonData(mon, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBattler; + + SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + CalculateMonStats(mon); + gainedExp -= nextLvlExp - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + if (IsDoubleBattle() == TRUE + && ((u16)monId == gBattlerPartyIndexes[battlerId] || (u16)monId == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + gTasks[taskId].func = Task_LaunchLvlUpAnim_PokedudeTmp; + else + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp; + } + else + { + currExp += gainedExp; + SetMonData(mon, MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_PokedudeTmp; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar_PokedudeTmp; + } +} + +void Task_PrepareToGiveExpWithExpBar_PokedudeTmp(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + s32 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + struct Pokemon *mon = &gPlayerParty[monIndex]; + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 exp = GetMonData(mon, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_8156B24; +} + +void sub_8156B24(u8 taskId) +{ + if (gTasks[taskId].tExpTask_frames < 13) + { + ++gTasks[taskId].tExpTask_frames; + } + else + { + u8 monId = gTasks[taskId].tExpTask_monId; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 newExpPoints; + + newExpPoints = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]); + if (newExpPoints == -1) // The bar has been filled with given exp points. + { + u8 level; + s32 currExp; + u16 species; + s32 expOnNextLvl; + + m4aSongNumStop(SE_EXP); + level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + if (currExp + gainedExp >= expOnNextLvl) + { + u8 savedActiveBattler; + + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + CalculateMonStats(&gPlayerParty[monId]); + gainedExp -= expOnNextLvl - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + gTasks[taskId].func = Task_LaunchLvlUpAnim_PokedudeTmp; + } + else + { + currExp += gainedExp; + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_PokedudeTmp; + DestroyTask(taskId); + } + } + } +} + +void Task_LaunchLvlUpAnim_PokedudeTmp(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + u8 monIndex = gTasks[taskId].tExpTask_monId; + + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + battlerId ^= BIT_FLANK; + InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); + gTasks[taskId].func = Task_UpdateLvlInHealthbox_PokedudeTmp; +} + +void Task_UpdateLvlInHealthbox_PokedudeTmp(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + + if (!gBattleSpritesDataPtr->healthBoxesData[battlerId].specialAnimActive) + { + u8 monIndex = gTasks[taskId].tExpTask_monId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value. + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + else + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp; + } +} + +void DestroyExpTaskAndCompleteOnInactiveTextPrinter_PokedudeTmp(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + u8 battlerId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value + battlerId = gTasks[taskId].tExpTask_battler; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_PokedudeTmp; + DestroyTask(taskId); +} + +void sub_8156DCC(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PokedudeBufferExecCompleted(); + } + } + else + { + if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse) + { + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PokedudeBufferExecCompleted(); + } + } +} + +void CompleteOnHealthbarDone_PokedudeTmp(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PokedudeBufferExecCompleted(); + } +} + +void CompleteOnInactiveTextPrinter2_PokedudeTmp(void) +{ + if (!IsTextPrinterActive(0)) + PokedudeBufferExecCompleted(); +} + +void DoHitAnimBlinkSpriteEffect_PokedudeTmp(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + PokedudeBufferExecCompleted(); + } + else + { + if ((gSprites[spriteId].data[1] % 4) == 0) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +void sub_8156F7C(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PokedudeBufferExecCompleted(); + } +} + +void CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + PokedudeBufferExecCompleted(); +} + +void CompleteOnFinishedBattleAnimation_PokedudeTmp(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + PokedudeBufferExecCompleted(); +} + +void CompleteOnFinishedStatusAnimation_PokedudeTmp(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + PokedudeBufferExecCompleted(); +} + +void PokedudeBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = PokedudeBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +// not used +void CompleteOnFinishedStatusAnimation2_PokedudeTmp(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + size += CopyPokedudeMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyPokedudeMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + PokedudeBufferExecCompleted(); +} + +u32 CopyPokedudeMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + struct Pokemon *mon; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[monId]; + else + mon = &gEnemyParty[monId]; + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(mon, MON_DATA_SPECIES); + battleMon.item = GetMonData(mon, MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(mon, MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(mon, MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(mon, MON_DATA_EXP); + battleMon.hpIV = GetMonData(mon, MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(mon, MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(mon, MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(mon, MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(mon, MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(mon, MON_DATA_STATUS); + battleMon.level = GetMonData(mon, MON_DATA_LEVEL); + battleMon.hp = GetMonData(mon, MON_DATA_HP); + battleMon.maxHP = GetMonData(mon, MON_DATA_MAX_HP); + battleMon.attack = GetMonData(mon, MON_DATA_ATK); + battleMon.defense = GetMonData(mon, MON_DATA_DEF); + battleMon.speed = GetMonData(mon, MON_DATA_SPEED); + battleMon.spAttack = GetMonData(mon, MON_DATA_SPATK); + battleMon.spDefense = GetMonData(mon, MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(mon, MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(mon, MON_DATA_OT_ID); + GetMonData(mon, MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(mon, MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(mon, MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(mon, MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(mon, MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(mon, MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); + src = (u8 *)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(mon, MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(mon, MON_DATA_PP1 + size); + dst[size] = GetMonData(mon, MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(mon, MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(mon, MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_HP_IV); + dst[1] = GetMonData(mon, MON_DATA_ATK_IV); + dst[2] = GetMonData(mon, MON_DATA_DEF_IV); + dst[3] = GetMonData(mon, MON_DATA_SPEED_IV); + dst[4] = GetMonData(mon, MON_DATA_SPATK_IV); + dst[5] = GetMonData(mon, MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(mon, MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(mon, MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(mon, MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(mon, MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(mon, MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(mon, MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(mon, MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(mon, MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(mon, MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(mon, MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(mon, MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void PokedudeHandleGetRawMonData(void) +{ + PlayerHandleGetRawMonData(); +} + +void PokedudeHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + SetPokedudeMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetPokedudeMonData(i); + monToCheck >>= 1; + } + } + PokedudeBufferExecCompleted(); +} + +void SetPokedudeMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + struct Pokemon *mon; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[monId]; + else + mon = &gEnemyParty[monId]; + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(mon, MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(mon, MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(mon, MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(mon, MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(mon, MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(mon, MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(mon, MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(mon, MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(mon, MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(mon, MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(mon, MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(mon, MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(mon, MON_DATA_SPDEF_IV, &iv); + SetMonData(mon, MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(mon, MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(mon, MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(mon, MON_DATA_HP, &battlePokemon->hp); + SetMonData(mon, MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(mon, MON_DATA_ATK, &battlePokemon->attack); + SetMonData(mon, MON_DATA_DEF, &battlePokemon->defense); + SetMonData(mon, MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(mon, MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(mon, MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(mon, MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(mon, MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(mon, MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(mon, MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(mon, MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(mon, MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(mon, MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(mon, MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(mon, MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(mon, MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(mon, MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(mon, MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(mon, MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(mon, MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(mon, MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(mon, MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(mon, MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(mon, MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(mon, MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(mon, MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(mon, MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(mon, MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(mon, MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(mon, MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(mon, MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(mon, MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(mon, MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(mon, MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(mon, MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(mon, MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(mon, MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(mon, MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(mon, MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(mon, MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(mon, MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(mon, MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(mon, MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(mon, MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(mon, MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(mon, MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(mon, MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(mon, MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(mon, MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(mon, MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(mon, MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(mon, MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(mon, MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(mon, MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(mon, MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(mon, MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(mon, MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(mon, MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(mon, MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(mon, MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(mon, MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(mon, MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(mon, MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(mon, MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(mon, MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); +} + +void PokedudeHandleSetRawMonData(void) +{ + PokedudeBufferExecCompleted(); +} |