diff options
Diffstat (limited to 'asm/reshow_battle_screen.s')
-rw-r--r-- | asm/reshow_battle_screen.s | 1097 |
1 files changed, 1097 insertions, 0 deletions
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s new file mode 100644 index 000000000..59b08dd01 --- /dev/null +++ b/asm/reshow_battle_screen.s @@ -0,0 +1,1097 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_14 +nullsub_14: @ 807AD54 + bx lr + thumb_func_end nullsub_14 + + thumb_func_start ReshowBattleScreenAfterMenu +ReshowBattleScreenAfterMenu: @ 807AD58 + push {lr} + ldr r2, _0807AD90 @ =gPaletteFade + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + movs r0, 0 + bl SetHBlankCallback + movs r0, 0 + bl SetVBlankCallback + ldr r0, _0807AD94 @ =REG_MOSAIC + movs r2, 0 + strh r2, [r0] + ldr r0, _0807AD98 @ =0x02000000 + ldr r3, _0807AD9C @ =0x0001ffff + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _0807ADA0 @ =0x0001fffe + adds r0, r1 + strb r2, [r0] + ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu + bl SetMainCallback2 + pop {r0} + bx r0 + .align 2, 0 +_0807AD90: .4byte gPaletteFade +_0807AD94: .4byte REG_MOSAIC +_0807AD98: .4byte 0x02000000 +_0807AD9C: .4byte 0x0001ffff +_0807ADA0: .4byte 0x0001fffe +_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu + thumb_func_end ReshowBattleScreenAfterMenu + + thumb_func_start CB2_ReshowBattleScreenAfterMenu +CB2_ReshowBattleScreenAfterMenu: @ 807ADA8 + push {r4-r7,lr} + sub sp, 0x8 + ldr r0, _0807ADC4 @ =0x02000000 + ldr r1, _0807ADC8 @ =0x0001ffff + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x13 + bls _0807ADBA + b _0807B010 +_0807ADBA: + lsls r0, 2 + ldr r1, _0807ADCC @ =_0807ADD0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807ADC4: .4byte 0x02000000 +_0807ADC8: .4byte 0x0001ffff +_0807ADCC: .4byte _0807ADD0 + .align 2, 0 +_0807ADD0: + .4byte _0807AE20 + .4byte _0807AE84 + .4byte _0807AE9C + .4byte _0807AEC8 + .4byte _0807AECE + .4byte _0807AEE0 + .4byte _0807AEE6 + .4byte _0807AF18 + .4byte _0807AF1C + .4byte _0807AF20 + .4byte _0807AF24 + .4byte _0807AF48 + .4byte _0807AF50 + .4byte _0807AF58 + .4byte _0807AF60 + .4byte _0807AF68 + .4byte _0807AF70 + .4byte _0807AF78 + .4byte _0807AF80 + .4byte _0807AF88 +_0807AE20: + bl dp12_8087EA4 + ldr r4, _0807AE5C @ =gWindowConfig_81E6C58 + adds r0, r4, 0 + bl SetUpWindowConfig + bl ResetPaletteFade + ldr r0, _0807AE60 @ =gUnknown_03004210 + adds r1, r4, 0 + bl InitWindowFromConfig + ldr r0, _0807AE64 @ =gUnknown_030042A4 + movs r1, 0 + strh r1, [r0] + ldr r0, _0807AE68 @ =gUnknown_030042A0 + strh r1, [r0] + ldr r0, _0807AE6C @ =gUnknown_030042C0 + strh r1, [r0] + ldr r0, _0807AE70 @ =gUnknown_030041B4 + strh r1, [r0] + ldr r0, _0807AE74 @ =gUnknown_03004288 + strh r1, [r0] + ldr r0, _0807AE78 @ =gUnknown_03004280 + strh r1, [r0] + ldr r0, _0807AE7C @ =gUnknown_030041B0 + strh r1, [r0] + ldr r0, _0807AE80 @ =gUnknown_030041B8 + strh r1, [r0] + b _0807B040 + .align 2, 0 +_0807AE5C: .4byte gWindowConfig_81E6C58 +_0807AE60: .4byte gUnknown_03004210 +_0807AE64: .4byte gUnknown_030042A4 +_0807AE68: .4byte gUnknown_030042A0 +_0807AE6C: .4byte gUnknown_030042C0 +_0807AE70: .4byte gUnknown_030041B4 +_0807AE74: .4byte gUnknown_03004288 +_0807AE78: .4byte gUnknown_03004280 +_0807AE7C: .4byte gUnknown_030041B0 +_0807AE80: .4byte gUnknown_030041B8 +_0807AE84: + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _0807AE98 @ =0x01006000 + add r0, sp, 0x4 + bl CpuFastSet + b _0807B040 + .align 2, 0 +_0807AE98: .4byte 0x01006000 +_0807AE9C: + ldr r5, _0807AEBC @ =0x02000000 + ldr r0, _0807AEC0 @ =0x0001fffe + adds r4, r5, r0 + ldrb r0, [r4] + bl sub_800E414 + lsls r0, 24 + cmp r0, 0 + bne _0807AEF8 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r0, _0807AEC4 @ =0x0001ffff + adds r1, r5, r0 + b _0807AF38 + .align 2, 0 +_0807AEBC: .4byte 0x02000000 +_0807AEC0: .4byte 0x0001fffe +_0807AEC4: .4byte 0x0001ffff +_0807AEC8: + bl ResetSpriteData + b _0807B040 +_0807AECE: + bl FreeAllSpritePalettes + ldr r1, _0807AEDC @ =gReservedSpritePaletteCount + movs r0, 0x4 + strb r0, [r1] + b _0807B040 + .align 2, 0 +_0807AEDC: .4byte gReservedSpritePaletteCount +_0807AEE0: + bl sub_8031EE8 + b _0807B040 +_0807AEE6: + ldr r5, _0807AF00 @ =0x02000000 + ldr r1, _0807AF04 @ =0x0001fffe + adds r4, r5, r1 + ldrb r0, [r4] + bl sub_8031C30 + lsls r0, 24 + cmp r0, 0 + beq _0807AF08 +_0807AEF8: + movs r0, 0 + strb r0, [r4] + b _0807B040 + .align 2, 0 +_0807AF00: .4byte 0x02000000 +_0807AF04: .4byte 0x0001fffe +_0807AF08: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r0, _0807AF14 @ =0x0001ffff + adds r1, r5, r0 + b _0807AF38 + .align 2, 0 +_0807AF14: .4byte 0x0001ffff +_0807AF18: + movs r0, 0 + b _0807AF26 +_0807AF1C: + movs r0, 0x1 + b _0807AF26 +_0807AF20: + movs r0, 0x2 + b _0807AF26 +_0807AF24: + movs r0, 0x3 +_0807AF26: + bl sub_807B094 + lsls r0, 24 + cmp r0, 0 + beq _0807AF32 + b _0807B040 +_0807AF32: + ldr r1, _0807AF40 @ =0x02000000 + ldr r0, _0807AF44 @ =0x0001ffff + adds r1, r0 +_0807AF38: + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + b _0807B040 + .align 2, 0 +_0807AF40: .4byte 0x02000000 +_0807AF44: .4byte 0x0001ffff +_0807AF48: + movs r0, 0 + bl sub_807B184 + b _0807B040 +_0807AF50: + movs r0, 0x1 + bl sub_807B184 + b _0807B040 +_0807AF58: + movs r0, 0x2 + bl sub_807B184 + b _0807B040 +_0807AF60: + movs r0, 0x3 + bl sub_807B184 + b _0807B040 +_0807AF68: + movs r0, 0 + bl sub_807B508 + b _0807B040 +_0807AF70: + movs r0, 0x1 + bl sub_807B508 + b _0807B040 +_0807AF78: + movs r0, 0x2 + bl sub_807B508 + b _0807B040 +_0807AF80: + movs r0, 0x3 + bl sub_807B508 + b _0807B040 +_0807AF88: + bl sub_80327CC + movs r0, 0x1 + bl GetBankByPlayerAI + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r7, _0807B000 @ =gBattlePartyID + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _0807B004 @ =gEnemyParty + adds r0, r5 + movs r1, 0xB + bl GetMonData + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8032984 + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _0807AFEC + movs r0, 0x3 + bl GetBankByPlayerAI + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0xB + bl GetMonData + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8032984 +_0807AFEC: + ldr r1, _0807B008 @ =gActionSelectionCursor + ldr r0, _0807B00C @ =gBankInMenu + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_802E3E4 + b _0807B040 + .align 2, 0 +_0807B000: .4byte gBattlePartyID +_0807B004: .4byte gEnemyParty +_0807B008: .4byte gActionSelectionCursor +_0807B00C: .4byte gBankInMenu +_0807B010: + ldr r0, _0807B054 @ =sub_800FCD4 + bl SetHBlankCallback + ldr r0, _0807B058 @ =sub_800FCFC + bl SetVBlankCallback + bl sub_807B06C + movs r0, 0x1 + str r0, [sp] + movs r0, 0xFF + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginHardwarePaletteFade + ldr r2, _0807B05C @ =gPaletteFade + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r0, _0807B060 @ =sub_800F808 + bl SetMainCallback2 +_0807B040: + ldr r1, _0807B064 @ =0x02000000 + ldr r0, _0807B068 @ =0x0001ffff + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807B054: .4byte sub_800FCD4 +_0807B058: .4byte sub_800FCFC +_0807B05C: .4byte gPaletteFade +_0807B060: .4byte sub_800F808 +_0807B064: .4byte 0x02000000 +_0807B068: .4byte 0x0001ffff + thumb_func_end CB2_ReshowBattleScreenAfterMenu + + thumb_func_start sub_807B06C +sub_807B06C: @ 807B06C + push {lr} + bl sub_800D6D4 + ldr r3, _0807B08C @ =REG_BG1CNT + ldrb r2, [r3] + movs r1, 0xD + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3] + ldr r2, _0807B090 @ =REG_BG2CNT + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0807B08C: .4byte REG_BG1CNT +_0807B090: .4byte REG_BG2CNT + thumb_func_end sub_807B06C + + thumb_func_start sub_807B094 +sub_807B094: @ 807B094 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0807B0D8 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + bcs _0807B172 + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _0807B0F2 + lsls r0, r4, 2 + ldr r1, _0807B0DC @ =0x02017800 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0807B0E8 + ldr r1, _0807B0E0 @ =gBattlePartyID + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807B0E4 @ =gEnemyParty + adds r0, r1 + adds r1, r4, 0 + bl sub_8031794 + b _0807B168 + .align 2, 0 +_0807B0D8: .4byte gNoOfAllBanks +_0807B0DC: .4byte 0x02017800 +_0807B0E0: .4byte gBattlePartyID +_0807B0E4: .4byte gEnemyParty +_0807B0E8: + adds r0, r4, 0 + movs r1, 0 + bl sub_8032350 + b _0807B168 +_0807B0F2: + ldr r2, _0807B108 @ =gBattleTypeFlags + ldrh r1, [r2] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0807B110 + cmp r4, 0 + bne _0807B110 + ldr r0, _0807B10C @ =gSaveBlock2 + ldrb r0, [r0, 0x8] + b _0807B122 + .align 2, 0 +_0807B108: .4byte gBattleTypeFlags +_0807B10C: .4byte gSaveBlock2 +_0807B110: + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0807B12A + cmp r4, 0 + bne _0807B12A + movs r0, 0x2 +_0807B122: + movs r1, 0 + bl sub_8031AF4 + b _0807B168 +_0807B12A: + lsls r0, r4, 2 + ldr r1, _0807B154 @ =0x02017800 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0807B160 + ldr r1, _0807B158 @ =gBattlePartyID + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807B15C @ =gPlayerParty + adds r0, r1 + adds r1, r4, 0 + bl sub_80318FC + b _0807B168 + .align 2, 0 +_0807B154: .4byte 0x02017800 +_0807B158: .4byte gBattlePartyID +_0807B15C: .4byte gPlayerParty +_0807B160: + adds r0, r4, 0 + movs r1, 0 + bl sub_8032350 +_0807B168: + ldr r0, _0807B17C @ =0x02000000 + ldr r1, _0807B180 @ =0x0001fffe + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807B172: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807B17C: .4byte 0x02000000 +_0807B180: .4byte 0x0001fffe + thumb_func_end sub_807B094 + + thumb_func_start sub_807B184 +sub_807B184: @ 807B184 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0807B1B8 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r7, r0 + bcc _0807B19E + b _0807B4D8 +_0807B19E: + lsls r2, r7, 2 + ldr r0, _0807B1BC @ =0x02017800 + adds r0, r2, r0 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + str r2, [sp] + cmp r0, 0 + beq _0807B1C0 + adds r0, r7, 0 + bl sub_8077F7C + b _0807B1C6 + .align 2, 0 +_0807B1B8: .4byte gNoOfAllBanks +_0807B1BC: .4byte 0x02017800 +_0807B1C0: + adds r0, r7, 0 + bl sub_8077F68 +_0807B1C6: + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r7, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0807B1DA + b _0807B2D8 +_0807B1DA: + ldr r1, _0807B2BC @ =gBattlePartyID + lsls r0, r7, 1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r1, 0x64 + mov r10, r1 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _0807B2C0 @ =gEnemyParty + mov r9, r1 + add r0, r9 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + bne _0807B1FE + b _0807B4D8 +_0807B1FE: + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl GetMonSpriteTemplate_803C56C + ldr r5, _0807B2C4 @ =gUnknown_02024E8C + adds r0, r7, 0 + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl CreateSprite + ldr r4, _0807B2C8 @ =gObjectBankIDs + adds r4, r7, r4 + strb r0, [r4] + ldr r5, _0807B2CC @ =gSprites + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r7, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0807B2D0 @ =SpriteCallbackDummy + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r7, [r0, 0x2E] + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl GetMonData + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x32] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0807B2D4 @ =gBattleMonForms + adds r1, r7, r1 + ldrb r1, [r1] + bl StartSpriteAnim + b _0807B4AC + .align 2, 0 +_0807B2BC: .4byte gBattlePartyID +_0807B2C0: .4byte gEnemyParty +_0807B2C4: .4byte gUnknown_02024E8C +_0807B2C8: .4byte gObjectBankIDs +_0807B2CC: .4byte gSprites +_0807B2D0: .4byte SpriteCallbackDummy +_0807B2D4: .4byte gBattleMonForms +_0807B2D8: + ldr r2, _0807B328 @ =gBattleTypeFlags + ldrh r1, [r2] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0807B338 + cmp r7, 0 + bne _0807B338 + ldr r5, _0807B32C @ =gSaveBlock2 + ldrb r4, [r5, 0x8] + movs r0, 0 + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl GetMonSpriteTemplate_803C5A0 + ldr r6, _0807B330 @ =gUnknown_02024E8C + ldr r1, _0807B334 @ =gTrainerBackPicCoords + ldrb r0, [r5, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 15 + adds r4, r0 + asrs r4, 16 + movs r0, 0 + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + b _0807B37C + .align 2, 0 +_0807B328: .4byte gBattleTypeFlags +_0807B32C: .4byte gSaveBlock2 +_0807B330: .4byte gUnknown_02024E8C +_0807B334: .4byte gTrainerBackPicCoords +_0807B338: + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0807B3D0 + cmp r7, 0 + bne _0807B3D0 + movs r0, 0 + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x2 + bl GetMonSpriteTemplate_803C5A0 + ldr r5, _0807B3BC @ =gUnknown_02024E8C + ldr r0, _0807B3C0 @ =gTrainerBackPicCoords + ldrb r0, [r0, 0x8] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r4, r1 + asrs r4, 16 + movs r0, 0 + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 +_0807B37C: + movs r1, 0x50 + adds r2, r4, 0 + bl CreateSprite + ldr r3, _0807B3C4 @ =gObjectBankIDs + strb r0, [r3] + ldr r4, _0807B3C8 @ =gSprites + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x5] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0807B3CC @ =SpriteCallbackDummy + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r7, [r0, 0x2E] + b _0807B4AC + .align 2, 0 +_0807B3BC: .4byte gUnknown_02024E8C +_0807B3C0: .4byte gTrainerBackPicCoords +_0807B3C4: .4byte gObjectBankIDs +_0807B3C8: .4byte gSprites +_0807B3CC: .4byte SpriteCallbackDummy +_0807B3D0: + ldr r1, _0807B4E8 @ =gBattlePartyID + lsls r0, r7, 1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r1, 0x64 + mov r10, r1 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _0807B4EC @ =gPlayerParty + mov r9, r1 + add r0, r9 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _0807B4D8 + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl GetMonSpriteTemplate_803C56C + ldr r5, _0807B4F0 @ =gUnknown_02024E8C + adds r0, r7, 0 + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl CreateSprite + ldr r4, _0807B4F4 @ =gObjectBankIDs + adds r4, r7, r4 + strb r0, [r4] + ldr r5, _0807B4F8 @ =gSprites + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r7, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0807B4FC @ =SpriteCallbackDummy + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r7, [r0, 0x2E] + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl GetMonData + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x32] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0807B500 @ =gBattleMonForms + adds r1, r7, r1 + ldrb r1, [r1] + bl StartSpriteAnim +_0807B4AC: + ldr r1, _0807B4F8 @ =gSprites + ldr r0, _0807B4F4 @ =gObjectBankIDs + adds r0, r7, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldr r0, _0807B504 @ =0x02017800 + ldr r1, [sp] + adds r0, r1, r0 + ldr r1, [r0] + lsls r1, 31 + adds r2, 0x3E + lsrs r1, 31 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_0807B4D8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807B4E8: .4byte gBattlePartyID +_0807B4EC: .4byte gPlayerParty +_0807B4F0: .4byte gUnknown_02024E8C +_0807B4F4: .4byte gObjectBankIDs +_0807B4F8: .4byte gSprites +_0807B4FC: .4byte SpriteCallbackDummy +_0807B500: .4byte gBattleMonForms +_0807B504: .4byte 0x02017800 + thumb_func_end sub_807B184 + + thumb_func_start sub_807B508 +sub_807B508: @ 807B508 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0807B530 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + bcc _0807B518 + b _0807B68A +_0807B518: + ldr r2, _0807B534 @ =gBattleTypeFlags + ldrh r1, [r2] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0807B538 + cmp r5, 0 + bne _0807B538 + bl battle_make_oam_safari_battle + b _0807B550 + .align 2, 0 +_0807B530: .4byte gNoOfAllBanks +_0807B534: .4byte gBattleTypeFlags +_0807B538: + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0807B54A + cmp r5, 0 + bne _0807B54A + b _0807B68A +_0807B54A: + adds r0, r5, 0 + bl battle_make_oam_normal_battle +_0807B550: + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0807B58C @ =gHealthboxIDs + adds r4, r5, r0 + strb r6, [r4] + adds r0, r5, 0 + bl sub_8043F44 + adds r0, r6, 0 + bl sub_8043DFC + adds r0, r5, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _0807B598 + ldrb r0, [r4] + ldr r1, _0807B590 @ =gBattlePartyID + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0807B594 @ =gEnemyParty + adds r1, r2 + movs r2, 0 + bl sub_8045A5C + b _0807B5E4 + .align 2, 0 +_0807B58C: .4byte gHealthboxIDs +_0807B590: .4byte gBattlePartyID +_0807B594: .4byte gEnemyParty +_0807B598: + ldr r0, _0807B5C0 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0807B5CC + ldrb r0, [r4] + ldr r1, _0807B5C4 @ =gBattlePartyID + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0807B5C8 @ =gPlayerParty + adds r1, r2 + movs r2, 0xA + bl sub_8045A5C + b _0807B5E4 + .align 2, 0 +_0807B5C0: .4byte gBattleTypeFlags +_0807B5C4: .4byte gBattlePartyID +_0807B5C8: .4byte gPlayerParty +_0807B5CC: + ldrb r0, [r4] + ldr r1, _0807B610 @ =gBattlePartyID + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0807B614 @ =gPlayerParty + adds r1, r2 + movs r2, 0 + bl sub_8045A5C +_0807B5E4: + adds r0, r5, 0 + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0807B600 + adds r0, r5, 0 + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0807B61C +_0807B600: + ldr r0, _0807B618 @ =gHealthboxIDs + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x1 + bl nullsub_11 + b _0807B628 + .align 2, 0 +_0807B610: .4byte gBattlePartyID +_0807B614: .4byte gPlayerParty +_0807B618: .4byte gHealthboxIDs +_0807B61C: + ldr r0, _0807B654 @ =gHealthboxIDs + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0 + bl nullsub_11 +_0807B628: + adds r0, r5, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _0807B660 + ldr r0, _0807B658 @ =gBattlePartyID + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807B65C @ =gEnemyParty + adds r0, r1 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + bne _0807B68A + adds r0, r6, 0 + bl sub_8043DB0 + b _0807B68A + .align 2, 0 +_0807B654: .4byte gHealthboxIDs +_0807B658: .4byte gBattlePartyID +_0807B65C: .4byte gEnemyParty +_0807B660: + ldr r0, _0807B690 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0807B68A + ldr r0, _0807B694 @ =gBattlePartyID + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807B698 @ =gPlayerParty + adds r0, r1 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + bne _0807B68A + adds r0, r6, 0 + bl sub_8043DB0 +_0807B68A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807B690: .4byte gBattleTypeFlags +_0807B694: .4byte gBattlePartyID +_0807B698: .4byte gPlayerParty + thumb_func_end sub_807B508 + + .align 2, 0 @ Don't pad with nop. |