mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-09 12:35:23 -05:00
Merge pull request #157 from PikalaxALT/dism_more_data
Evolution Graphics and others
This commit is contained in:
commit
43efafa12c
|
|
@ -466,9 +466,4 @@ _080F5944: .4byte gUnknown_841EE64
|
|||
_080F5948: .4byte gUnknown_841EE68
|
||||
thumb_func_end sub_80F5820
|
||||
|
||||
thumb_func_start nullsub_85
|
||||
nullsub_85: @ 80F594C
|
||||
bx lr
|
||||
thumb_func_end nullsub_85
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1619,7 +1619,7 @@ _080CEBA6:
|
|||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x3]
|
||||
bl sub_80F5EC0
|
||||
bl LaunchTask_PreEvoSparklesSet2
|
||||
strb r0, [r4, 0x2]
|
||||
bl _080CF528
|
||||
.align 2, 0
|
||||
|
|
@ -1641,7 +1641,7 @@ _080CEBE6:
|
|||
ldr r1, [r0]
|
||||
ldrb r0, [r1]
|
||||
ldrb r1, [r1, 0x1]
|
||||
bl sub_80F62B4
|
||||
bl LaunchTask_PrePostEvoMonSprites
|
||||
strb r0, [r4, 0x2]
|
||||
mov r0, r8
|
||||
adds r1, r0, r7
|
||||
|
|
@ -1685,7 +1685,7 @@ _080CEC38:
|
|||
_080CEC44: .4byte gUnknown_2039A20
|
||||
_080CEC48: .4byte gBattleCommunication
|
||||
_080CEC4C:
|
||||
bl sub_80F5F74
|
||||
bl LaunchTask_PostEvoSparklesSet1
|
||||
ldr r1, _080CEC60 @ =gBattleCommunication
|
||||
strb r0, [r1, 0x2]
|
||||
ldr r0, _080CEC64 @ =gTasks
|
||||
|
|
@ -2953,7 +2953,7 @@ _080CF752:
|
|||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x3]
|
||||
bl sub_80F5EC0
|
||||
bl LaunchTask_PreEvoSparklesSet2
|
||||
strb r0, [r4, 0x2]
|
||||
bl _080D003A
|
||||
.align 2, 0
|
||||
|
|
@ -2975,7 +2975,7 @@ _080CF78E:
|
|||
ldr r1, [r0]
|
||||
ldrb r0, [r1]
|
||||
ldrb r1, [r1, 0x1]
|
||||
bl sub_80F62B4
|
||||
bl LaunchTask_PrePostEvoMonSprites
|
||||
strb r0, [r4, 0x2]
|
||||
adds r1, r7, r6
|
||||
lsls r1, 3
|
||||
|
|
@ -3017,7 +3017,7 @@ _080CF7DC:
|
|||
_080CF7E4: .4byte gUnknown_2039A20
|
||||
_080CF7E8: .4byte gBattleCommunication
|
||||
_080CF7EC:
|
||||
bl sub_80F5F74
|
||||
bl LaunchTask_PostEvoSparklesSet1
|
||||
ldr r1, _080CF800 @ =gBattleCommunication
|
||||
strb r0, [r1, 0x2]
|
||||
ldr r0, _080CF804 @ =gTasks
|
||||
|
|
@ -3045,7 +3045,7 @@ _080CF820:
|
|||
lsls r4, 3
|
||||
adds r4, r5
|
||||
ldrh r0, [r4, 0xC]
|
||||
bl sub_80F6190
|
||||
bl LaunchTask_PostEvoSparklesSet2AndFlash_Trade
|
||||
mov r1, r8
|
||||
strb r0, [r1, 0x2]
|
||||
b _080CFA90
|
||||
|
|
|
|||
BIN
baserom.ips
BIN
baserom.ips
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -1,37 +1,148 @@
|
|||
#include "constants/region_map.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/moves.h"
|
||||
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_840BF3C:: @ 840BF3C
|
||||
.incbin "baserom.gba", 0x40BF3C, 0xC
|
||||
.byte 10, 2, -3, 0
|
||||
.byte 15, 0, -4, 0
|
||||
.byte -10, 2, -4, 0
|
||||
|
||||
gUnknown_840BF48:: @ 840BF48
|
||||
.incbin "baserom.gba", 0x40BF48, 0x60
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55020
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55021
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55022
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55023
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55024
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55025
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55026
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55027
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55028
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55029
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55030
|
||||
obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55031
|
||||
|
||||
gUnknown_840BFA8:: @ 840BFA8
|
||||
.incbin "baserom.gba", 0x40BFA8, 0xC0
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55020
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55021
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55022
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55023
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55024
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55025
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55026
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55027
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55028
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55029
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55030
|
||||
obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55031
|
||||
|
||||
gAnimCmd_840C008:: @ 840C008
|
||||
obj_image_anim_frame 0x0000, 1
|
||||
obj_image_anim_frame 0x0001, 1
|
||||
obj_image_anim_frame 0x0002, 1
|
||||
obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 0x0002, 1
|
||||
obj_image_anim_frame 0x0001, 1
|
||||
obj_image_anim_jump 0x0000
|
||||
|
||||
gAnimCmd_840C024:: @ 840C024
|
||||
obj_image_anim_frame 0x0003, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gAnimCmd_840C02C:: @ 840C02C
|
||||
obj_image_anim_frame 0x0004, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gAnimCmd_840C034:: @ 840C034
|
||||
obj_image_anim_frame 0x0005, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gAnimCmd_840C03C:: @ 840C03C
|
||||
obj_image_anim_frame 0x0006, 4
|
||||
obj_image_anim_frame 0x0007, 4
|
||||
obj_image_anim_jump 0x0000
|
||||
|
||||
gAnimCmd_840C048:: @ 840C048
|
||||
obj_image_anim_frame 0x0007, 4
|
||||
obj_image_anim_end
|
||||
|
||||
gSpriteAnimTable_840C050::
|
||||
.4byte gAnimCmd_840C008
|
||||
.4byte gAnimCmd_840C024
|
||||
.4byte gAnimCmd_840C02C
|
||||
.4byte gAnimCmd_840C034
|
||||
.4byte gAnimCmd_840C03C
|
||||
.4byte gAnimCmd_840C048
|
||||
|
||||
gUnknown_840C068:: @ 840C068
|
||||
.incbin "baserom.gba", 0x40C068, 0xC
|
||||
.byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03, 0x05, 0x05, 0x04, 0x04
|
||||
|
||||
gUnknown_840C074:: @ 840C074
|
||||
.incbin "baserom.gba", 0x40C074, 0x30
|
||||
.4byte sub_80F06A4
|
||||
.4byte sub_80F0C28
|
||||
.4byte sub_80F0A20
|
||||
.4byte sub_80F0B20
|
||||
.4byte sub_80F0F10
|
||||
.4byte sub_80F0A20
|
||||
.4byte sub_80F091C
|
||||
.4byte sub_80F0B20
|
||||
.4byte sub_80F0DB4
|
||||
.4byte sub_80F0818
|
||||
.4byte sub_80F0C28
|
||||
.4byte sub_80F103C
|
||||
|
||||
gUnknown_840C0A4:: @ 840C0A4
|
||||
.incbin "baserom.gba", 0x40C0A4, 0x60
|
||||
spr_template 55020, 55020, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_840C0BC::
|
||||
spr_template 55021, 55021, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55022, 55022, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55023, 55023, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_840C104:: @ 840C104
|
||||
.incbin "baserom.gba", 0x40C104, 0xC0
|
||||
spr_template 55024, 55024, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55025, 55025, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55026, 55026, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55027, 55027, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55028, 55028, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55029, 55029, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55030, 55030, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55031, 55031, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_840C1C4:: @ 840C1C4
|
||||
.incbin "baserom.gba", 0x40C1C4, 0x28
|
||||
.2byte RGB(31, 22, 30)
|
||||
.2byte RGB(16, 23, 30)
|
||||
.2byte RGB(23, 30, 20)
|
||||
.2byte RGB(31, 31, 15)
|
||||
.2byte RGB(23, 20, 28)
|
||||
.2byte RGB(21, 31, 25)
|
||||
.2byte RGB(12, 25, 30)
|
||||
.2byte RGB(30, 27, 10)
|
||||
.2byte RGB(31, 24, 16)
|
||||
.2byte RGB(29, 30, 30)
|
||||
.2byte RGB(31, 17, 10)
|
||||
.2byte RGB(31, 9, 10)
|
||||
|
||||
gUnknown_840C1DC:: @ 840C1DC
|
||||
.byte 0x00, 0x00, 0x01, 0x02, 0x03
|
||||
.byte 0x04, 0x01, 0x01, 0x00, 0x01
|
||||
.byte 0x03, 0x05, 0x06, 0x05, 0x04
|
||||
|
||||
.align 2
|
||||
gUnknown_840C1EC::
|
||||
.incbin "baserom.gba", 0x40C1EC, 0x24
|
||||
spr_template 10269, 10269, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C
|
||||
|
||||
gUnknown_840C204::
|
||||
obj_image_anim_frame 0x0040, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gSpriteAnimTable_840C20C::
|
||||
.4byte gUnknown_840C204
|
||||
|
||||
gUnknown_840C210::
|
||||
.incbin "baserom.gba", 0x40C210, 0x18
|
||||
spr_template 10058, 10058, gOamData_83AC9D8, gSpriteAnimTable_840C20C, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C
|
||||
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
#include "constants/region_map.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/moves.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_841EE84:: @ 841EE84
|
||||
.incbin "baserom.gba", 0x41EE84, 0x40
|
||||
|
||||
gUnknown_841EEC4:: @ 841EEC4
|
||||
.incbin "baserom.gba", 0x41EEC4, 0x10
|
||||
|
||||
gUnknown_841EED4:: @ 841EED4
|
||||
.incbin "baserom.gba", 0x41EED4, 0x24
|
||||
|
||||
gUnknown_841EEF8:: @ 841EEF8
|
||||
.incbin "baserom.gba", 0x41EEF8, 0x18
|
||||
|
||||
gUnknown_841EF10:: @ 841EF10
|
||||
.incbin "baserom.gba", 0x41EF10, 0x2B8
|
||||
BIN
graphics/battle_anims/unk_83E4874.bin
Normal file
BIN
graphics/battle_anims/unk_83E4874.bin
Normal file
Binary file not shown.
BIN
graphics/battle_anims/unk_83E4874.png
Normal file
BIN
graphics/battle_anims/unk_83E4874.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 286 B |
BIN
graphics/misc/evolution_sprite_841EEA4.png
Normal file
BIN
graphics/misc/evolution_sprite_841EEA4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 167 B |
BIN
graphics/unknown/unk_841EF48.png
Normal file
BIN
graphics/unknown/unk_841EF48.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 230 B |
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef GUARD_UNK_TEXT_UTIL_H
|
||||
#define GUARD_UNK_TEXT_UTIL_H
|
||||
#ifndef GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H
|
||||
#define GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
|
|
@ -9,4 +9,4 @@ u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src);
|
|||
const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx);
|
||||
u8 GetColorFromTextColorTable(u16 graphicId);
|
||||
|
||||
#endif //GUARD_UNK_TEXT_UTIL_H
|
||||
#endif //GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ u8 LaunchTask_PreEvoSparklesSet2(void);
|
|||
u8 LaunchTask_PostEvoSparklesSet1(void);
|
||||
u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species);
|
||||
u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species);
|
||||
u8 sub_817C3A0(u8 preEvoSpriteID, u8 postEvoSpriteID);
|
||||
u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId);
|
||||
|
||||
#define EvoGraphicsTaskEvoStop data[8]
|
||||
|
||||
|
|
|
|||
|
|
@ -8,5 +8,6 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID);
|
|||
void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID);
|
||||
|
||||
extern void (*gCB2_AfterEvolution)(void);
|
||||
void sub_80D0474(void);
|
||||
|
||||
#endif // GUARD_EVOLUTION_SCENE_H
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ SECTIONS {
|
|||
src/diploma.o(.text);
|
||||
asm/save_failed_screen.o(.text);
|
||||
asm/clear_save_data_screen.o(.text);
|
||||
asm/evolution_graphics.o(.text);
|
||||
src/evolution_graphics.o(.text);
|
||||
src/fldeff_teleport.o(.text);
|
||||
src/new_menu_helpers.o(.text);
|
||||
asm/box_party_pokemon_dropdown.o(.text);
|
||||
|
|
@ -494,7 +494,7 @@ SECTIONS {
|
|||
data/strings.o(.rodata);
|
||||
data/save_failed_screen.o(.rodata);
|
||||
data/clear_save_data_screen.o(.rodata);
|
||||
data/evolution_graphics.o(.rodata);
|
||||
src/evolution_graphics.o(.rodata);
|
||||
src/new_menu_helpers.o(.rodata);
|
||||
data/box_party_pokemon_dropdown.o(.rodata);
|
||||
src/map_preview_screen.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ static const union AffineAnimCmd gUnknown_83E7900[] =
|
|||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E7910[] =
|
||||
const union AffineAnimCmd *const gUnknown_83E7910[] =
|
||||
{
|
||||
gUnknown_83E7890,
|
||||
gUnknown_83E78A0,
|
||||
|
|
|
|||
638
src/evolution_graphics.c
Normal file
638
src/evolution_graphics.c
Normal file
|
|
@ -0,0 +1,638 @@
|
|||
#include "global.h"
|
||||
#include "trig.h"
|
||||
#include "random.h"
|
||||
#include "decompress.h"
|
||||
#include "palette.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "evolution_scene.h"
|
||||
#include "evolution_graphics.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite);
|
||||
static void EvoTask_PreEvoSparkleSet1Init(u8 taskId);
|
||||
static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId);
|
||||
static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId);
|
||||
static void EvoTask_PreEvoSparkleSet2Init(u8 taskId);
|
||||
static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId);
|
||||
static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet1Init(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2Init(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2TradeInit(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet2Trade(u8 taskId);
|
||||
static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId);
|
||||
static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId);
|
||||
static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId);
|
||||
static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId);
|
||||
static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId);
|
||||
|
||||
static const u16 sEvolutionSparklesPalData[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal");
|
||||
static const u32 sEvolutionSparklesTileData[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz");
|
||||
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_EvolutionSparkles[] = {
|
||||
{ sEvolutionSparklesTileData, 0x20, 1001 },
|
||||
{}
|
||||
};
|
||||
static const struct SpritePalette sSpritePalette_EvolutionSparkles[] = {
|
||||
{ sEvolutionSparklesPalData, 1001 },
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_EvolutionSparkles = {
|
||||
.y = 160,
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_EvolutionSparkles_0[] = {
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_EvolutionSparkles[] = {
|
||||
sSpriteAnim_EvolutionSparkles_0
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_EvolutionSparkles = {
|
||||
.tileTag = 1001,
|
||||
.paletteTag = 1001,
|
||||
.oam = &sOamData_EvolutionSparkles,
|
||||
.anims = sSpriteAnimTable_EvolutionSparkles,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy_EvoSparkles
|
||||
};
|
||||
|
||||
static const u16 sEvolutionSparkleMatrixScales[12] = {
|
||||
0x3C0,
|
||||
0x380,
|
||||
0x340,
|
||||
0x300,
|
||||
0x2C0,
|
||||
0x280,
|
||||
0x240,
|
||||
0x200,
|
||||
0x1C0,
|
||||
0x180,
|
||||
0x140,
|
||||
0x100
|
||||
};
|
||||
|
||||
static const s16 sUnref_841EF28[][2] = {
|
||||
{-4, 0x10},
|
||||
{-3, 0x30},
|
||||
{-2, 0x50},
|
||||
{-1, 0x70},
|
||||
{ 1, 0x70},
|
||||
{ 2, 0x50},
|
||||
{ 3, 0x30},
|
||||
{ 4, 0x10}
|
||||
};
|
||||
|
||||
static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void SetEvoSparklesMatrices(void)
|
||||
{
|
||||
u16 i;
|
||||
for (i = 0; i < NELEMS(sEvolutionSparkleMatrixScales); i++)
|
||||
SetOamMatrix(i + 20, sEvolutionSparkleMatrixScales[i], 0, 0, sEvolutionSparkleMatrixScales[i]);
|
||||
}
|
||||
|
||||
static void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite)
|
||||
{
|
||||
u8 mnum;
|
||||
if (sprite->pos1.y > 8)
|
||||
{
|
||||
sprite->pos1.y = 88 - sprite->data[7] * sprite->data[7] / 80;
|
||||
sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]) / 4;
|
||||
sprite->pos2.x = Cos((u8) sprite->data[6], sprite->data[5]);
|
||||
sprite->data[6] += 4;
|
||||
if (sprite->data[7] & 1)
|
||||
sprite->data[5]--;
|
||||
sprite->data[7]++;
|
||||
if (sprite->pos2.y > 0)
|
||||
sprite->subpriority = 1;
|
||||
else
|
||||
sprite->subpriority = 20;
|
||||
mnum = sprite->data[5] / 4 + 20;
|
||||
if (mnum > 31)
|
||||
mnum = 31;
|
||||
sprite->oam.matrixNum = mnum;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void CreatePreEvoSparkleSet1(u8 a0)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 88, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[5] = 48;
|
||||
gSprites[spriteId].data[6] = a0;
|
||||
gSprites[spriteId].data[7] = 0;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[spriteId].oam.matrixNum = 31;
|
||||
gSprites[spriteId].callback = SpriteCB_PreEvoSparkleSet1;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite)
|
||||
{
|
||||
if (sprite->pos1.y < 88)
|
||||
{
|
||||
sprite->pos1.y = 8 + sprite->data[7] * sprite->data[7] / 5;
|
||||
sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]) / 4;
|
||||
sprite->pos2.x = Cos((u8)sprite->data[6], sprite->data[5]);
|
||||
sprite->data[5] = Sin((u8)(sprite->data[7] * 4), 40) + 8;
|
||||
sprite->data[7]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void CreatePreEvoSparkleSet2(u8 a0)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 8, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[5] = 8;
|
||||
gSprites[spriteId].data[6] = a0;
|
||||
gSprites[spriteId].data[7] = 0;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[spriteId].oam.matrixNum = 25;
|
||||
gSprites[spriteId].subpriority = 1;
|
||||
gSprites[spriteId].callback = SpriteCB_PreEvoSparkleSet2;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite)
|
||||
{
|
||||
if (sprite->data[5] > 8)
|
||||
{
|
||||
sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]);
|
||||
sprite->pos2.x = Cos((u8)sprite->data[6], sprite->data[5]);
|
||||
sprite->data[5] -= sprite->data[3];
|
||||
sprite->data[6] += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void CreatePostEvoSparkleSet1(u8 a0, u8 a1)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[3] = a1;
|
||||
gSprites[spriteId].data[5] = 120;
|
||||
gSprites[spriteId].data[6] = a0;
|
||||
gSprites[spriteId].data[7] = 0;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[spriteId].oam.matrixNum = 31;
|
||||
gSprites[spriteId].subpriority = 1;
|
||||
gSprites[spriteId].callback = SpriteCB_PostEvoSparkleSet1;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite)
|
||||
{
|
||||
u8 mnum;
|
||||
if ((sprite->data[7] & 3) == 0)
|
||||
sprite->pos1.y++;
|
||||
if (sprite->data[6] < 128)
|
||||
{
|
||||
sprite->pos2.y = -Sin((u8)sprite->data[6], sprite->data[5]);
|
||||
sprite->pos1.x = 120 + sprite->data[3] * sprite->data[7] / 3;
|
||||
sprite->data[6]++;
|
||||
mnum = 31 - sprite->data[6] * 12 / 128;
|
||||
if (sprite->data[6] > 64)
|
||||
{
|
||||
sprite->subpriority = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->subpriority = 20;
|
||||
if (sprite->data[6] > 112 && (sprite->data[6] & 1))
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
if (mnum < 20)
|
||||
mnum = 20;
|
||||
sprite->oam.matrixNum = mnum;
|
||||
sprite->data[7]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void CreatePostEvoSparkleSet2(u8 unused)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[3] = 3 - (Random() % 7);
|
||||
gSprites[spriteId].data[5] = 48 + (Random() & 63);
|
||||
gSprites[spriteId].data[7] = 0;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[spriteId].oam.matrixNum = 31;
|
||||
gSprites[spriteId].subpriority = 20;
|
||||
gSprites[spriteId].callback = SpriteCB_PostEvoSparkleSet2;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadEvoSparkleSpriteAndPal(void)
|
||||
{
|
||||
LoadCompressedSpriteSheetUsingHeap(sSpriteSheet_EvolutionSparkles);
|
||||
LoadSpritePalettes(sSpritePalette_EvolutionSparkles);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PreEvoSparklesSet1(u16 a0)
|
||||
{
|
||||
u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet1Init, 0);
|
||||
gTasks[taskId].data[1] = a0;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PreEvoSparkleSet1Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
BeginNormalPaletteFade(3 << gTasks[taskId].data[1], 10, 0, 16, RGB_WHITE);
|
||||
gTasks[taskId].func = EvoTask_CreatePreEvoSparkleSet1;
|
||||
PlaySE(SE_W025);
|
||||
}
|
||||
|
||||
static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 64)
|
||||
{
|
||||
if ((gTasks[taskId].data[15] & 7) == 0)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
CreatePreEvoSparkleSet1(2 * (gTasks[taskId].data[15] & 0x78) + 64 * i);
|
||||
}
|
||||
gTasks[taskId].data[15]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[15] = 96;
|
||||
gTasks[taskId].func = EvoTask_WaitForPre1SparklesToGoUp;
|
||||
}
|
||||
}
|
||||
|
||||
static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[15] != 0)
|
||||
gTasks[taskId].data[15]--;
|
||||
else
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PreEvoSparklesSet2(void)
|
||||
{
|
||||
u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet2Init, 0);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PreEvoSparkleSet2Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
gTasks[taskId].func = EvoTask_CreatePreEvoSparklesSet2;
|
||||
PlaySE(SE_W062B);
|
||||
}
|
||||
|
||||
static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 96)
|
||||
{
|
||||
if (gTasks[taskId].data[15] < 6)
|
||||
{
|
||||
for (i = 0; i < 9; i++)
|
||||
CreatePreEvoSparkleSet2(16 * i);
|
||||
}
|
||||
gTasks[taskId].data[15]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = EvoTask_PreEvoSparkleSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PostEvoSparklesSet1(void)
|
||||
{
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet1Init, 0);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PostEvoSparklesSet1Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet1;
|
||||
PlaySE(SE_REAPOKE);
|
||||
}
|
||||
|
||||
static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 48)
|
||||
{
|
||||
if (gTasks[taskId].data[15] == 0)
|
||||
{
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
CreatePostEvoSparkleSet1(i * 16, 4);
|
||||
}
|
||||
}
|
||||
if (gTasks[taskId].data[15] == 32)
|
||||
{
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
CreatePostEvoSparkleSet1(i * 16, 8);
|
||||
}
|
||||
}
|
||||
gTasks[taskId].data[15]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet1Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species)
|
||||
{
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2Init, 0);
|
||||
gTasks[taskId].data[2] = species;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PostEvoSparklesSet2Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
sub_80D0474();
|
||||
CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96);
|
||||
BeginNormalPaletteFade(0xFFF90F1C, 0, 0, 16, RGB_WHITE);
|
||||
gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2;
|
||||
PlaySE(SE_W080);
|
||||
}
|
||||
|
||||
static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 128)
|
||||
{
|
||||
switch (gTasks[taskId].data[15])
|
||||
{
|
||||
default:
|
||||
if (gTasks[taskId].data[15] < 50)
|
||||
CreatePostEvoSparkleSet2(Random() & 7);
|
||||
break;
|
||||
case 0:
|
||||
for (i = 0; i < 8; i++)
|
||||
CreatePostEvoSparkleSet2(i);
|
||||
break;
|
||||
case 32:
|
||||
BeginNormalPaletteFade(0xFFFF0F1C, 16, 16, 0, RGB_WHITE);
|
||||
break;
|
||||
}
|
||||
gTasks[taskId].data[15]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species)
|
||||
{
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2TradeInit, 0);
|
||||
gTasks[taskId].data[2] = species;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PostEvoSparklesSet2TradeInit(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
sub_80D0474();
|
||||
CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96);
|
||||
BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE);
|
||||
gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Trade;
|
||||
PlaySE(SE_W080);
|
||||
}
|
||||
|
||||
static void EvoTask_CreatePostEvoSparklesSet2Trade(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 128)
|
||||
{
|
||||
switch (gTasks[taskId].data[15])
|
||||
{
|
||||
default:
|
||||
if (gTasks[taskId].data[15] < 50)
|
||||
CreatePostEvoSparkleSet2(Random() & 7);
|
||||
break;
|
||||
case 0:
|
||||
for (i = 0; i < 8; i++)
|
||||
CreatePostEvoSparkleSet2(i);
|
||||
break;
|
||||
case 32:
|
||||
BeginNormalPaletteFade(0xFFFF0F00, 16, 16, 0, RGB_WHITE);
|
||||
break;
|
||||
}
|
||||
gTasks[taskId].data[15]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCallbackDummy_MonSprites(struct Sprite * sprite)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#define tPreEvoSpriteId data[1]
|
||||
#define tPostEvoSpriteId data[2]
|
||||
#define tPreEvoScale data[3]
|
||||
#define tPostEvoScale data[4]
|
||||
#define tDirection data[5]
|
||||
#define tSpeed data[6]
|
||||
|
||||
u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId)
|
||||
{
|
||||
u16 i;
|
||||
u8 taskId;
|
||||
u16 palette[16];
|
||||
for (i = 0; i < 16; i++)
|
||||
palette[i] = RGB_WHITE;
|
||||
taskId = CreateTask(EvoTask_PrePostEvoMonSpritesInit, 0);
|
||||
gTasks[taskId].tPreEvoSpriteId = preEvoSpriteId;
|
||||
gTasks[taskId].tPostEvoSpriteId = postEvoSpriteId;
|
||||
gTasks[taskId].tPreEvoScale = 256;
|
||||
gTasks[taskId].tPostEvoScale = 16;
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale);
|
||||
gSprites[preEvoSpriteId].callback = SpriteCallbackDummy_MonSprites;
|
||||
gSprites[preEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[preEvoSpriteId].oam.matrixNum = 30;
|
||||
gSprites[preEvoSpriteId].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[preEvoSpriteId].oam.paletteNum], 32);
|
||||
gSprites[postEvoSpriteId].callback = SpriteCallbackDummy_MonSprites;
|
||||
gSprites[postEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[postEvoSpriteId].oam.matrixNum = 31;
|
||||
gSprites[postEvoSpriteId].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[postEvoSpriteId].oam.paletteNum], 32);
|
||||
gTasks[taskId].EvoGraphicsTaskEvoStop = FALSE;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].tDirection = FALSE;
|
||||
gTasks[taskId].tSpeed = 8;
|
||||
gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim;
|
||||
}
|
||||
|
||||
static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].EvoGraphicsTaskEvoStop)
|
||||
{
|
||||
PreEvoVisible_PostEvoInvisible_KillTask(taskId);
|
||||
}
|
||||
else if (gTasks[taskId].tSpeed == 128)
|
||||
{
|
||||
PreEvoInvisible_PostEvoVisible_KillTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tSpeed += 2;
|
||||
gTasks[taskId].tDirection ^= TRUE;
|
||||
gTasks[taskId].func = EvoTask_ShrinkOrExpandEvoSprites;
|
||||
}
|
||||
}
|
||||
|
||||
static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId)
|
||||
{
|
||||
u8 r6;
|
||||
if (gTasks[taskId].EvoGraphicsTaskEvoStop)
|
||||
{
|
||||
gTasks[taskId].func = PreEvoVisible_PostEvoInvisible_KillTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
r6 = 0;
|
||||
if (!gTasks[taskId].tDirection)
|
||||
{
|
||||
if (gTasks[taskId].tPreEvoScale < 0x100 - gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].tPreEvoScale += gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tPreEvoScale = 0x100;
|
||||
r6 = 1;
|
||||
}
|
||||
if (gTasks[taskId].tPostEvoScale > 0x10 + gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].tPostEvoScale -= gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tPostEvoScale = 0x10;
|
||||
r6++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gTasks[taskId].tPostEvoScale < 0x100 - gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].tPostEvoScale += gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tPostEvoScale = 0x100;
|
||||
r6 = 1;
|
||||
}
|
||||
if (gTasks[taskId].tPreEvoScale > 0x10 + gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].tPreEvoScale -= gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tPreEvoScale = 0x10;
|
||||
r6++;
|
||||
}
|
||||
}
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale);
|
||||
if (r6 == 2)
|
||||
{
|
||||
gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId)
|
||||
{
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = TRUE;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = FALSE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId)
|
||||
{
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = TRUE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
#undef tPreEvoSpriteId
|
||||
#undef tPostEvoSpriteId
|
||||
#undef tPreEvoScale
|
||||
#undef tPostEvoScale
|
||||
#undef tDirection
|
||||
#undef tSpeed
|
||||
|
|
@ -135,7 +135,7 @@ static const union AnimCmd *const gUnknown_83E632C[] =
|
|||
gUnknown_83E6308,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E6330[] =
|
||||
const union AnimCmd *const gUnknown_83E6330[] =
|
||||
{
|
||||
gUnknown_83E6310,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -21,11 +21,13 @@
|
|||
#define STD_WINDOW_PALETTE_NUM 14
|
||||
#define STD_WINDOW_BASE_TILE_NUM 0x214
|
||||
|
||||
static EWRAM_DATA bool8 gUnknown_203AB58[4] = {FALSE}; // knizz: bgmaps_that_need_syncing
|
||||
static EWRAM_DATA u16 gUnknown_203AB5C = {0};
|
||||
static EWRAM_DATA void *gUnknown_203AB60[0x20] = {NULL};
|
||||
static EWRAM_DATA bool8 sScheduledBgCopiesToVram[4] = {FALSE};
|
||||
static EWRAM_DATA u16 sTempTileDataBufferCursor = {0};
|
||||
static EWRAM_DATA void *sTempTileDataBuffers[0x20] = {NULL};
|
||||
static EWRAM_DATA u8 sStartMenuWindowId = {0};
|
||||
|
||||
static const u16 gUnknown_841EF48[] = INCBIN_U16("graphics/unknown/unk_841EF48.4bpp");
|
||||
|
||||
const u16 gUnknown_841F1C8[] = INCBIN_U16("graphics/text_window/unk_841F1C8.4bpp");
|
||||
const u16 gTMCaseMainWindowPalette[] = INCBIN_U16("graphics/tm_case/unk_841F408.gbapal");
|
||||
|
||||
|
|
@ -169,35 +171,35 @@ static void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId);
|
|||
|
||||
void ClearScheduledBgCopiesToVram(void)
|
||||
{
|
||||
memset(gUnknown_203AB58, 0, sizeof(gUnknown_203AB58));
|
||||
memset(sScheduledBgCopiesToVram, 0, sizeof(sScheduledBgCopiesToVram));
|
||||
}
|
||||
|
||||
void ScheduleBgCopyTilemapToVram(u8 bgId)
|
||||
{
|
||||
gUnknown_203AB58[bgId] = TRUE;
|
||||
sScheduledBgCopiesToVram[bgId] = TRUE;
|
||||
}
|
||||
|
||||
void DoScheduledBgTilemapCopiesToVram(void)
|
||||
{
|
||||
if (gUnknown_203AB58[0] == TRUE)
|
||||
if (sScheduledBgCopiesToVram[0] == TRUE)
|
||||
{
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203AB58[0] = FALSE;
|
||||
sScheduledBgCopiesToVram[0] = FALSE;
|
||||
}
|
||||
if (gUnknown_203AB58[1] == TRUE)
|
||||
if (sScheduledBgCopiesToVram[1] == TRUE)
|
||||
{
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
gUnknown_203AB58[1] = FALSE;
|
||||
sScheduledBgCopiesToVram[1] = FALSE;
|
||||
}
|
||||
if (gUnknown_203AB58[2] == TRUE)
|
||||
if (sScheduledBgCopiesToVram[2] == TRUE)
|
||||
{
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
gUnknown_203AB58[2] = FALSE;
|
||||
sScheduledBgCopiesToVram[2] = FALSE;
|
||||
}
|
||||
if (gUnknown_203AB58[3] == TRUE)
|
||||
if (sScheduledBgCopiesToVram[3] == TRUE)
|
||||
{
|
||||
CopyBgTilemapBufferToVram(3);
|
||||
gUnknown_203AB58[3] = FALSE;
|
||||
sScheduledBgCopiesToVram[3] = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -205,11 +207,11 @@ void ResetTempTileDataBuffers(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < (s32)NELEMS(gUnknown_203AB60); i++)
|
||||
for (i = 0; i < (s32)NELEMS(sTempTileDataBuffers); i++)
|
||||
{
|
||||
gUnknown_203AB60[i] = NULL;
|
||||
sTempTileDataBuffers[i] = NULL;
|
||||
}
|
||||
gUnknown_203AB5C = 0;
|
||||
sTempTileDataBufferCursor = 0;
|
||||
}
|
||||
|
||||
bool8 FreeTempTileDataBuffersIfPossible(void)
|
||||
|
|
@ -218,13 +220,13 @@ bool8 FreeTempTileDataBuffersIfPossible(void)
|
|||
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
if (gUnknown_203AB5C)
|
||||
if (sTempTileDataBufferCursor)
|
||||
{
|
||||
for (i = 0; i < gUnknown_203AB5C; i++)
|
||||
for (i = 0; i < sTempTileDataBufferCursor; i++)
|
||||
{
|
||||
FREE_AND_SET_NULL(gUnknown_203AB60[i]);
|
||||
FREE_AND_SET_NULL(sTempTileDataBuffers[i]);
|
||||
}
|
||||
gUnknown_203AB5C = 0;
|
||||
sTempTileDataBufferCursor = 0;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -238,7 +240,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of
|
|||
{
|
||||
u32 sizeOut;
|
||||
|
||||
if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60))
|
||||
if (sTempTileDataBufferCursor < NELEMS(sTempTileDataBuffers))
|
||||
{
|
||||
void *ptr = MallocAndDecompress(src, &sizeOut);
|
||||
if (!size)
|
||||
|
|
@ -246,7 +248,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of
|
|||
if (ptr)
|
||||
{
|
||||
CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode);
|
||||
gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
|
||||
sTempTileDataBuffers[sTempTileDataBufferCursor++] = ptr;
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
|
@ -257,7 +259,7 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o
|
|||
{
|
||||
u32 sizeOut;
|
||||
|
||||
if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60))
|
||||
if (sTempTileDataBufferCursor < NELEMS(sTempTileDataBuffers))
|
||||
{
|
||||
void *ptr = MallocAndDecompress(src, &sizeOut);
|
||||
if (sizeOut > size)
|
||||
|
|
@ -265,7 +267,7 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o
|
|||
if (ptr)
|
||||
{
|
||||
CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode);
|
||||
gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
|
||||
sTempTileDataBuffers[sTempTileDataBufferCursor++] = ptr;
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ static const union AffineAnimCmd gUnknown_83E6A68[] =
|
|||
AFFINEANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6A80[] =
|
||||
const union AffineAnimCmd *const gUnknown_83E6A80[] =
|
||||
{
|
||||
gUnknown_83E6A68,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user