diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-08-23 19:36:25 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-08-23 19:36:25 +0200 |
commit | 9ac913c5270c7cc5fc245c2cce6b9e64e848f7e9 (patch) | |
tree | 78ae9d68e1da40bfa901c15855e074ee0ce61f32 | |
parent | 20594938e275bd3d6ec6f38b42400eaac79fa86e (diff) |
start working on reshow battle screen
-rw-r--r-- | asm/battle_anim_81258BC.s | 2 | ||||
-rw-r--r-- | asm/reshow_battle_screen.s | 483 | ||||
-rw-r--r-- | include/battle.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_10.c | 6 | ||||
-rw-r--r-- | src/battle_6.c | 16 | ||||
-rw-r--r-- | src/battle_7.c | 132 | ||||
-rw-r--r-- | src/battle_8.c | 6 | ||||
-rw-r--r-- | src/battle_811DA74.c | 12 | ||||
-rw-r--r-- | src/battle_anim_8137220.c | 6 | ||||
-rw-r--r-- | src/reshow_battle_screen.c | 262 |
11 files changed, 355 insertions, 575 deletions
diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index a50b089db..8dbb9b1c2 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -1310,7 +1310,7 @@ sub_812B8B8: @ 812B8B8 ldrb r0, [r4, 0x8] ldr r5, _0812B970 @ =gActiveBank ldrb r1, [r5] - bl sub_8031AF4 + bl LoadPlayerTrainerBankSprite ldrb r6, [r4, 0x8] ldrb r0, [r5] bl GetBankIdentity diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 59b08dd01..2b7345366 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -6,491 +6,8 @@ .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 diff --git a/include/battle.h b/include/battle.h index 9d8092197..d948dfa7d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -522,10 +522,10 @@ struct Struct2017800 { u8 unk0_0:1; u8 unk0_1:1; - u8 unk0_2:1; + u8 substituteSprite:1; u8 unk0_3:1; u8 unk0_4:1; - u16 unk2; + u16 transformedSpecies; }; struct Struct2017810 diff --git a/ld_script.txt b/ld_script.txt index c60aa3729..28254eba9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -120,6 +120,7 @@ SECTIONS { src/battle_anim.o(.text); src/rom_8077ABC.o(.text); src/task.o(.text); + src/reshow_battle_screen.o(.text); asm/reshow_battle_screen.o(.text); src/battle_anim_807B69C.o(.text); src/title_screen.o(.text); diff --git a/src/battle_10.c b/src/battle_10.c index 0237bab4b..c2053a5d1 100644 --- a/src/battle_10.c +++ b/src/battle_10.c @@ -52,7 +52,7 @@ extern u8 gUnknown_0300434C[]; extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern u8 GetBankIdentity(u8); -extern void sub_8031794(struct Pokemon *, u8); +extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8); extern void sub_8037A74(void); extern void sub_8032984(u8, u16); extern void sub_8037E30(void); @@ -696,7 +696,7 @@ void sub_8039294(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -726,7 +726,7 @@ void sub_8039430(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, diff --git a/src/battle_6.c b/src/battle_6.c index c833aef5e..6fa0e3948 100644 --- a/src/battle_6.c +++ b/src/battle_6.c @@ -98,7 +98,7 @@ extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void oamt_set_x3A_32(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern bool8 IsDoubleBattle(void); extern void sub_802D500(void); extern void dp11b_obj_free(); @@ -121,7 +121,7 @@ extern void sub_80105EC(struct Sprite *); extern void sub_802D274(void); extern void sub_802D23C(void); extern u8 GetBankIdentity(u8); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern void sub_802D204(void); extern u8 sub_8079E90(); @@ -739,7 +739,7 @@ void sub_802F7CC(void) void PlayerHandleLoadPokeSprite(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; gBattleBankFunc[gActiveBank] = bx_0802E404; } @@ -748,7 +748,7 @@ void PlayerHandleSendOutPoke(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); gActionSelectionCursor[gActiveBank] = 0; gMoveSelectionCursor[gActiveBank] = 0; sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); @@ -829,7 +829,7 @@ void PlayerHandleTrainerThrow(void) { r7 = 0; } - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -845,7 +845,7 @@ void PlayerHandleTrainerThrow(void) void PlayerHandleTrainerSlide(void) { - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1357,7 +1357,7 @@ void sub_8030E38(struct Sprite *sprite) FreeSpriteOamMatrix(sprite); FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); DestroySprite(sprite); - sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4); StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); } @@ -1383,7 +1383,7 @@ void task05_08033660(u8 taskId) sub_802F934(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_802F934(gActiveBank, 0); gActiveBank ^= 2; } diff --git a/src/battle_7.c b/src/battle_7.c index f2838467e..8c5f5f45d 100644 --- a/src/battle_7.c +++ b/src/battle_7.c @@ -182,9 +182,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) gBattleMonForms[a] = e & 0x7F; return TRUE; } - if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + if (ewram17800[a].substituteSprite && sub_803163C(d) == 0) return TRUE; - if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible) + if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible) { refresh_graphics_maybe(a, 1, gObjectBankIDs[a]); sub_80324E0(a); @@ -273,29 +273,29 @@ bool8 mplay_80342A4(u8 a) return TRUE; } -void sub_8031794(struct Pokemon *pkmn, u8 b) +void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 bank) { u32 personalityValue; u16 species; - u32 r7; + u32 transformPersonality; u32 otId; u8 var; u16 paletteOffset; const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[bank].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); - r7 = personalityValue; + transformPersonality = personalityValue; } else { - species = ewram17800[b].unk2; - r7 = gPID_perBank[b]; + species = ewram17800[bank].transformedSpecies; + transformPersonality = gPID_perBank[bank]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); - var = GetBankIdentity(b); + var = GetBankIdentity(bank); HandleLoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -303,29 +303,29 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) 0x02000000, gUnknown_081FAF4C[var], species, - r7); - paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) + transformPersonality); + paletteOffset = 0x100 + bank * 16; + if (ewram17800[bank].transformedSpecies == 0) lzPaletteData = pokemon_get_pal(pkmn); else lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); - LoadPalette(ewram, 0x80 + b * 16, 0x20); + LoadPalette(ewram, 0x80 + bank * 16, 0x20); if (species == SPECIES_CASTFORM) { - paletteOffset = 0x100 + b * 16; + paletteOffset = 0x100 + bank * 16; sub_800D238(lzPaletteData, ewram + 0x16400); - LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[bank].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } } -void sub_80318FC(struct Pokemon *pkmn, u8 b) +void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 bank) { u32 personalityValue; u16 species; @@ -336,18 +336,18 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[bank].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; - r7 = gPID_perBank[b]; + species = ewram17800[bank].transformedSpecies; + r7 = gPID_perBank[bank]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); - var = GetBankIdentity(b); + var = GetBankIdentity(bank); HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -356,21 +356,21 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) gUnknown_081FAF4C[var], species, r7); - paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) + paletteOffset = 0x100 + bank * 16; + if (ewram17800[bank].transformedSpecies == 0) lzPaletteData = pokemon_get_pal(pkmn); else lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); - LoadPalette(ewram, 0x80 + b * 16, 0x20); + LoadPalette(ewram, 0x80 + bank * 16, 0x20); if (species == SPECIES_CASTFORM) { - paletteOffset = 0x100 + b * 16; + paletteOffset = 0x100 + bank * 16; sub_800D238(lzPaletteData, ewram + 0x16400); - LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[bank].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -405,11 +405,11 @@ void sub_8031A6C(u16 a, u8 b) LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); } -void sub_8031AF4(u16 a, u8 b) +void LoadPlayerTrainerBankSprite(u16 a, u8 bank) { u8 status; - status = GetBankIdentity(b); + status = GetBankIdentity(bank); DecompressPicFromTable_2( &gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, @@ -417,7 +417,7 @@ void sub_8031AF4(u16 a, u8 b) (void *)0x02000000, gUnknown_081FAF4C[status], 0); - LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + bank * 16, 32); } void nullsub_10(int unused) @@ -615,7 +615,7 @@ void sub_8031F88(u8 a) ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible; } -void sub_8031FC4(u8 a, u8 b, bool8 c) +void sub_8031FC4(u8 bank1, u8 bank2, bool8 c) { u16 paletteOffset; u16 species; @@ -626,16 +626,16 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) if (c) { - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0); - paletteOffset = 0x100 + a * 16; + StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], ewram17840.unk0); + paletteOffset = 0x100 + bank1 * 16; LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32); - gBattleMonForms[a] = ewram17840.unk0; - if (ewram17800[a].unk2 != 0) + gBattleMonForms[bank1] = ewram17840.unk0; + if (ewram17800[bank1].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); + gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1); } else { @@ -659,15 +659,15 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } else { - r10 = GetBankIdentity(a); - if (GetBankSide(b) == 1) - species = GetMonData(&gEnemyParty[gBattlePartyID[b]], MON_DATA_SPECIES); + r10 = GetBankIdentity(bank1); + if (GetBankSide(bank2) == 1) + species = GetMonData(&gEnemyParty[gBattlePartyID[bank2]], MON_DATA_SPECIES); else - species = GetMonData(&gPlayerParty[gBattlePartyID[b]], MON_DATA_SPECIES); - if (GetBankSide(a) == 0) + species = GetMonData(&gPlayerParty[gBattlePartyID[bank2]], MON_DATA_SPECIES); + if (GetBankSide(bank1) == 0) { - personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_OT_ID); + personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_OT_ID); HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -675,12 +675,12 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) 0x02000000, gUnknown_081FAF4C[r10], species, - gPID_perBank[a]); + gPID_perBank[bank1]); } else { - personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_OT_ID); + personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_OT_ID); HandleLoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -688,13 +688,13 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) 0x02000000, gUnknown_081FAF4C[r10], species, - gPID_perBank[a]); + gPID_perBank[bank1]); } } src = gUnknown_081FAF4C[r10]; - dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); + dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[bank1]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); - paletteOffset = 0x100 + a * 16; + paletteOffset = 0x100 + bank1 * 16; lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); @@ -703,21 +703,21 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) u16 *paletteSrc = (u16 *)(ewram + 0x16400); sub_800D238(lzPaletteData, paletteSrc); - LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); + LoadPalette(paletteSrc + gBattleMonForms[bank2] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); if (!IsContest()) { - ewram17800[a].unk2 = species; - gBattleMonForms[a] = gBattleMonForms[b]; + ewram17800[bank1].transformedSpecies = species; + gBattleMonForms[bank1] = gBattleMonForms[bank2]; } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); + gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], gBattleMonForms[bank1]); } } -void sub_8032350(u8 a, u8 b) +void BattleLoadSubstituteSprite(u8 a, u8 b) { u8 r4; u16 foo; @@ -750,16 +750,16 @@ void sub_8032350(u8 a, u8 b) if (!IsContest()) { if (GetBankSide(a) != 0) - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); else - sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a); } } } void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) { - sub_8032350(a, b); + BattleLoadSubstituteSprite(a, b); StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]); if (b == 0) gSprites[spriteId].pos1.y = sub_8077F7C(a); @@ -770,12 +770,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) void sub_80324BC(u8 a, u16 b) { if (b == 0xA4) - ewram17800[a].unk0_2 = 1; + ewram17800[a].substituteSprite = 1; } void sub_80324E0(u8 a) { - ewram17800[a].unk0_2 = 0; + ewram17800[a].substituteSprite = 0; } void sub_80324F8(struct Pokemon *pkmn, u8 b) @@ -896,9 +896,9 @@ void sub_80328A4(struct Sprite *sprite) } if (gAnimScriptActive || r7->invisible) invisible = TRUE; - else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0) invisible = TRUE; - if (ewram17800[r4].unk0_2) + if (ewram17800[r4].substituteSprite) invisible = TRUE; sprite->pos1.x = r7->pos1.x; sprite->pos2.x = r7->pos2.x; @@ -914,8 +914,8 @@ void sub_8032984(u8 a, u16 b) { if (GetBankSide(a) != 0) { - if (ewram17800[a].unk2 != 0) - b = ewram17800[a].unk2; + if (ewram17800[a].transformedSpecies != 0) + b = ewram17800[a].transformedSpecies; if (gEnemyMonElevation[b] != 0) gSprites[ewram17810[a].unk7].callback = sub_80328A4; else @@ -953,7 +953,7 @@ void sub_8032A38(void) void sub_8032AA8(u8 a, u8 b) { - ewram17800[a].unk2 = 0; + ewram17800[a].transformedSpecies = 0; gBattleMonForms[a] = 0; if (b == 0) sub_80324E0(a); @@ -1168,7 +1168,7 @@ void sub_8033264(void) { if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); gBattleBankFunc[gActiveBank] = sub_80332D0; } diff --git a/src/battle_8.c b/src/battle_8.c index 75f10c4b1..6d17ecd28 100644 --- a/src/battle_8.c +++ b/src/battle_8.c @@ -58,7 +58,7 @@ extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern void sub_8033018(void); -extern void sub_8031794(); +extern void BattleLoadOpponentMonSprite(); extern u8 GetBankIdentity(u8); extern void sub_8032984(u8, u16); extern void sub_80333D4(void); @@ -714,7 +714,7 @@ void OpponentHandleLoadPokeSprite(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -746,7 +746,7 @@ void sub_803495C(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 36a287efc..47ae8246f 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -87,12 +87,12 @@ extern void oamt_set_x3A_32(); extern void sub_8078B34(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern u8 sub_8046400(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); @@ -989,7 +989,7 @@ void sub_811F664(void) void sub_811F6D8(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C( GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), GetBankIdentity(gActiveBank)); @@ -1009,7 +1009,7 @@ void sub_811F7F4(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattleBankFunc[gActiveBank] = sub_811E1BC; } @@ -1092,7 +1092,7 @@ void sub_811FAE4(void) xOffset = 0; gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; } - sub_8031AF4(gender, gActiveBank); + LoadPlayerTrainerBankSprite(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1508,7 +1508,7 @@ void sub_812071C(u8 taskId) sub_811F864(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, 0); gActiveBank ^= 2; } diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c index bb181d5fb..8d323736a 100644 --- a/src/battle_anim_8137220.c +++ b/src/battle_anim_8137220.c @@ -73,7 +73,7 @@ extern void sub_8043DFC(); extern bool8 IsDoubleBattle(void); extern void c3_0802FDF4(u8); extern void sub_802ECF0(void); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern u8 GetBankIdentity(u8); extern void sub_80313A0(struct Sprite *); extern u8 GetBankByPlayerAI(u8); @@ -981,7 +981,7 @@ void sub_8138CB4(void) void sub_8138D38(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -996,7 +996,7 @@ void sub_8138D38(void) void sub_8138E04(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c new file mode 100644 index 000000000..6643ba4b2 --- /dev/null +++ b/src/reshow_battle_screen.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "battle.h" +#include "palette.h" +#include "main.h" +#include "unknown_task.h" +#include "text.h" +#include "rom_8077ABC.h" + +extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_030042A0; +extern u8 gReservedSpritePaletteCount; +extern u8 gActionSelectionCursor[4]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[4]; +extern u8 gNoOfAllBanks; +extern u16 gBattleTypeFlags; +extern u8 gObjectBankIDs[4]; + +bool8 sub_800E414(u8 a0); +bool8 sub_8031C30(u8 a0); +void sub_8031EE8(void); +void sub_80327CC(void); +void sub_8032984(u8 a, u16 b); +void sub_800FCD4(void); +void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank); +void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank); +void BattleLoadSubstituteSprite(u8 bank, u8 b); +void LoadPlayerTrainerBankSprite(u16 a0, u8 bank); +u8 sub_8077F7C(u8 bank); +u8 sub_8077F68(u8 bank); + +// this file's functions +static void CB2_ReshowBattleScreenAfterMenu(void); +static bool8 LoadAppropiateBankSprite(u8 bank); +void sub_807B184(u8 bank); +void sub_807B508(u8 bank); +void sub_807B06C(void); + +#define RESHOW_STATE 0x1FFFF +#define HELPER_STATE 0x1FFFE + +struct BGCNT +{ + u16 priority : 2; + u16 charBaseBlock : 2; + u16 reserved : 2; + u16 mosaic : 1; + u16 colors : 1; + u16 screenBaseBlock : 5; + u16 screenSize : 2; +}; + +void nullsub_14(void) +{ + +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(0); + SetVBlankCallback(0); + REG_MOSAIC = 0; + ewram[RESHOW_STATE] = 0; + ewram[HELPER_STATE] = 0; + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + switch (ewram[RESHOW_STATE]) + { + case 0: + dp12_8087EA4(); + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + break; + case 1: + { + const u32 zero = 0; + CpuFastSet(&zero, (void*) VRAM, 0x1006000); + } + break; + case 2: + if (!sub_800E414(ewram[HELPER_STATE])) + { + ewram[HELPER_STATE]++; + ewram[RESHOW_STATE]--; + } + else + ewram[HELPER_STATE] = 0; + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + sub_8031EE8(); + break; + case 6: + if (sub_8031C30(ewram[HELPER_STATE])) + ewram[HELPER_STATE] = 0; + else + { + ewram[HELPER_STATE]++; + ewram[RESHOW_STATE]--; + } + break; + case 7: + if (!LoadAppropiateBankSprite(0)) + ewram[RESHOW_STATE]--; + break; + case 8: + if (!LoadAppropiateBankSprite(1)) + ewram[RESHOW_STATE]--; + break; + case 9: + if (!LoadAppropiateBankSprite(2)) + ewram[RESHOW_STATE]--; + break; + case 10: + if (!LoadAppropiateBankSprite(3)) + ewram[RESHOW_STATE]--; + break; + case 11: + sub_807B184(0); + break; + case 12: + sub_807B184(1); + break; + case 13: + sub_807B184(2); + break; + case 14: + sub_807B184(3); + break; + case 15: + sub_807B508(0); + break; + case 16: + sub_807B508(1); + break; + case 17: + sub_807B508(2); + break; + case 18: + sub_807B508(3); + break; + case 19: + { + u8 opponentBank; + u16 species; + + sub_80327CC(); + + opponentBank = GetBankByPlayerAI(1); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + + if (IsDoubleBattle()) + { + opponentBank = GetBankByPlayerAI(3); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + } + sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0); + } + break; + default: + SetHBlankCallback(sub_800FCD4); + SetVBlankCallback(sub_800FCFC); + sub_807B06C(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(sub_800F808); + break; + } + ewram[RESHOW_STATE]++; +} + +void sub_807B06C(void) +{ + struct BGCNT *regBgcnt1, *regBgcnt2; + + sub_800D6D4(); + + regBgcnt1 = (void*)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (void*)(®_BG2CNT); + regBgcnt2->charBaseBlock = 0; +} + +static bool8 LoadAppropiateBankSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + if (GetBankSide(bank)) + { + if (!ewram17800[bank].substituteSprite) + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + LoadPlayerTrainerBankSprite(2, 0); + else if (!ewram17800[bank].substituteSprite) + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + + ewram[HELPER_STATE] = 0; + } + return 1; +} + +void sub_807B184(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u16 species; + s16 posX, posY; + u8 subpriority; + + if (ewram17800[bank].substituteSprite) + posY = sub_8077F7C(); + else + posY = sub_8077F68(); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP)) + { + species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); + posX = sub_8077ABC(bank); + subpriority = sub_8079E90(bank); + gObjectBankIDs[] = todo; + } + } + } +} |