From cf3f62e98d1ce2b55a0939ddd5b19af15ac7d839 Mon Sep 17 00:00:00 2001 From: ElectroDeoxys Date: Fri, 21 May 2021 12:10:46 +0100 Subject: Separate sequence stuff into their own files --- src/data/sequences/credits_sequence.asm | 401 ++++++ src/data/sequences/opening_sequence.asm | 48 + src/engine/bank07.asm | 1289 +------------------- src/engine/bank20.asm | 3 +- src/engine/sequences/credits_sequence_commands.asm | 483 ++++++++ src/engine/sequences/opening_sequence_commands.asm | 349 ++++++ src/macros/credits_sequence.asm | 8 +- src/main.asm | 2 + 8 files changed, 1291 insertions(+), 1292 deletions(-) create mode 100644 src/data/sequences/credits_sequence.asm create mode 100644 src/data/sequences/opening_sequence.asm create mode 100644 src/engine/sequences/credits_sequence_commands.asm create mode 100644 src/engine/sequences/opening_sequence_commands.asm (limited to 'src') diff --git a/src/data/sequences/credits_sequence.asm b/src/data/sequences/credits_sequence.asm new file mode 100644 index 0000000..bccfd1b --- /dev/null +++ b/src/data/sequences/credits_sequence.asm @@ -0,0 +1,401 @@ +INCLUDE "macros/credits_sequence.asm" + +CreditsSequence: ; 1daef (7:5aef) + credits_seq_disable_lcd + credits_seq_load_ow_map 0, 0, OVERWORLD_MAP + credits_seq_init_volcano_sprite + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_print_text_box 2, 1, OverworldMapPokemonDomeText + credits_seq_print_text 0, 0, PokemonTradingCardGameStaffText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 32, 144, 0 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 0, 0, MASON_LABORATORY + credits_seq_load_npc 14, 6, SOUTH, NPC_DRMASON + credits_seq_load_npc 4, 14, EAST, NPC_SAM + credits_seq_load_npc 6, 4, SOUTH, NPC_TECH5 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 3 + credits_seq_print_text 0, 0, ProducersText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 0, 0, DECK_MACHINE_ROOM + credits_seq_load_npc 6, 8, SOUTH, NPC_TECH6 + credits_seq_load_npc 6, 22, WEST, NPC_TECH7 + credits_seq_load_npc 10, 18, WEST, NPC_TECH8 + credits_seq_load_npc 12, 12, WEST, NPC_AARON + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, DirectorText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 0 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 5 + credits_seq_print_text 0, 0, ProgrammersText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 1 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, GBGraphicDesigners1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 3 + credits_seq_print_text 0, 4, GBGraphicDesigners2Text + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 3 + credits_seq_print_text 0, 4, GBGraphicDesigners3Text + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 2 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, MusicText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 5 + credits_seq_print_text 0, 0, SoundEffectsText + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 3 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, SoundDirectorText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 5 + credits_seq_print_text 0, 0, SoundSystemSupportText + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_CHARIZARD_INTRO + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 6 + credits_seq_print_text 0, 0, CardGameCreator1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_SCYTHER_INTRO + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 5 + credits_seq_print_text 0, 0, CardGameCreator2Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_AERODACTYL_INTRO + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 5 + credits_seq_print_text 0, 0, CardGameCreator3Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 0, 0, ISHIHARAS_HOUSE + credits_seq_load_npc 8, 8, SOUTH, NPC_ISHIHARA + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 8 + credits_seq_print_text 0, 0, CardIllustrators1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 96, 48 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 4 + credits_seq_print_text 0, 4, CardIllustrators2Text + credits_seq_transform_overlay 0, 24, 96, 48 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 16, 8, LIGHTNING_CLUB_LOBBY + credits_seq_load_npc 6, 4, SOUTH, NPC_CLERK10 + credits_seq_load_npc 10, 4, SOUTH, NPC_GIFT_CENTER_CLERK + credits_seq_load_npc 18, 16, WEST, NPC_CHAP2 + credits_seq_load_npc 18, 2, NORTH, NPC_IMAKUNI + credits_seq_load_npc 8, 12, SOUTH, NPC_LASS4 + credits_seq_load_npc 20, 8, SOUTH, NPC_HOOD1 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 8 + credits_seq_print_text 0, 0, SpecialAppearances1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 4 + credits_seq_print_text 0, 4, SpecialAppearances2Text + credits_seq_transform_overlay 0, 24, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 48, 0, CHALLENGE_HALL + credits_seq_load_npc 14, 4, SOUTH, NPC_HOST + credits_seq_load_npc 18, 8, WEST, NPC_RONALD1 + credits_seq_load_npc 12, 8, EAST, NPC_PLAYER_CREDITS + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, USCoordination1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 32, 144, 0 + credits_seq_transform_overlay 0, 32, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 32, 144, 0 + credits_seq_draw_rectangle 4, 4 + credits_seq_print_text 0, 5, USCoordination2Text + credits_seq_transform_overlay 0, 32, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 32, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, USCoordination3Text + credits_seq_transform_overlay 0, 40, 144, 0 + credits_seq_transform_overlay 0, 40, 112, 32 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 40, 144, 0 + credits_seq_draw_rectangle 6, 4 + credits_seq_print_text 0, 6, USCoordination4Text + credits_seq_transform_overlay 0, 40, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 40, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_COLOSSEUM_BOOSTER + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 8 + credits_seq_print_text 0, 0, TranslationDraftText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_EVOLUTION_BOOSTER + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 6 + credits_seq_print_text 0, 0, MasteringText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_MYSTERY_BOOSTER + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 6 + credits_seq_print_text 0, 0, ManualCreationText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_booster 6, 3, SCENE_LABORATORY_BOOSTER + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 6 + credits_seq_print_text 0, 0, ManualIllustrationsText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 4 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, PokemonOriginalStoryText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, CreatedInCooperationWithText + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 5 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, WithCooperation1Text + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 5 + credits_seq_print_text 0, 4, WithCooperation2Text + credits_seq_transform_overlay 0, 24, 96, 48 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_draw_rectangle 4, 4 + credits_seq_print_text 0, 4, WithCooperation3Text + credits_seq_transform_overlay 0, 24, 96, 48 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 6 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 8 + credits_seq_print_text 0, 0, ProjectManagerText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 120, 24 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 7 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, SupervisorText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_club_map 8 + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, ExecutiveProducerText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_ow_map 16, 16, HALL_OF_HONOR + credits_seq_load_npc 10, 8, NORTH, NPC_LEGENDARY_CARD_TOP_LEFT + credits_seq_load_npc 12, 8, NORTH, NPC_LEGENDARY_CARD_TOP_RIGHT + credits_seq_load_npc 8, 10, NORTH, NPC_LEGENDARY_CARD_LEFT_SPARK + credits_seq_load_npc 10, 10, NORTH, NPC_LEGENDARY_CARD_BOTTOM_LEFT + credits_seq_load_npc 12, 10, NORTH, NPC_LEGENDARY_CARD_BOTTOM_RIGHT + credits_seq_load_npc 14, 10, NORTH, NPC_LEGENDARY_CARD_RIGHT_SPARK + credits_seq_init_overlay 0, 0, 144, 0 + credits_seq_draw_rectangle 0, 7 + credits_seq_print_text 0, 0, CreatedByText + credits_seq_fade_in + credits_seq_wait 60 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 24, 104, 40 + credits_seq_wait 225 + credits_seq_transform_overlay 0, 24, 144, 0 + credits_seq_transform_overlay 0, 0, 144, 0 + credits_seq_fade_out + + credits_seq_load_scene 0, 0, SCENE_COMPANIES + credits_seq_init_overlay 0, 0, 144, 0 + + credits_seq_fade_in + credits_seq_wait 225 + credits_seq_end +; 0x1e1c4 diff --git a/src/data/sequences/opening_sequence.asm b/src/data/sequences/opening_sequence.asm new file mode 100644 index 0000000..1a25c31 --- /dev/null +++ b/src/data/sequences/opening_sequence.asm @@ -0,0 +1,48 @@ +INCLUDE "macros/opening_sequence.asm" + +OpeningSequence: ; 1d59d (7:559d) + opening_seq_load_charizard_scene + opening_seq_play_sfx SFX_58 + opening_seq_set_orbs_coordinates OpeningOrbCoordinates_CharizardScene + opening_seq_set_orbs_animations OpeningOrbAnimations_CharizardScene + opening_seq_wait 44 + opening_seq_fade_in + opening_seq_wait 44 + opening_seq_fade_out + opening_seq_wait 30 + + opening_seq_load_scyther_scene + opening_seq_play_sfx SFX_58 + opening_seq_set_orbs_coordinates OpeningOrbCoordinates_ScytherScene + opening_seq_set_orbs_animations OpeningOrbAnimations_ScytherScene + opening_seq_wait 44 + opening_seq_fade_in + opening_seq_wait 44 + opening_seq_fade_out + opening_seq_wait 30 + + opening_seq_load_aerodactyl_scene + opening_seq_play_sfx SFX_59 + opening_seq_set_orbs_coordinates OpeningOrbCoordinates_AerodactylScene + opening_seq_set_orbs_animations OpeningOrbAnimations_AerodactylScene + opening_seq_wait 44 + opening_seq_fade_in + opening_seq_wait 100 + opening_seq_fade_out + opening_seq_wait 60 + + opening_seq_load_title_screen_scene + opening_seq_play_sfx SFX_5A + opening_seq_set_orbs_coordinates OpeningOrbCoordinates_InitialTitleScreen + opening_seq_set_orbs_animations OpeningOrbAnimations_InitialTitleScreen + opening_seq_wait_orbs_animation + opening_seq_fade_in + opening_seq_wait 16 + opening_seq_play_sfx SFX_5B + opening_seq_set_orbs_coordinates OpeningOrbCoordinates_InTitleScreen + opening_seq_set_orbs_animations OpeningOrbAnimations_InTitleScreen + opening_seq_wait_sfx + opening_seq_play_title_screen_music + opening_seq_wait 60 + opening_seq_end +; 0x1d614 diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 1f7c97f..8c98a87 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -2371,404 +2371,9 @@ LoadTitleScreenSprites: ; 1d3ce (7:53ce) db SPRITE_FIGHTING ; 0x1d408 -Func_1d408: ; 1d408 (7:5408) - ld a, [wd633] - or a - jr z, .call_function - cp $ff - ret z - dec a - ld [wd633], a - ret - -.call_function - ld a, [wSequenceCmdPtr + 0] - ld l, a - ld a, [wSequenceCmdPtr + 1] - ld h, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld l, e - ld h, d - call CallHL2 - jr c, Func_1d408 - ret -; 0x1d42e - -AdvanceOpeningSequenceCmdPtrBy2: ; 1d42e (7:542e) - ld a, 2 - jr AdvanceOpeningSequenceCmdPtr - -AdvanceOpeningSequenceCmdPtrBy3: ; 1d432 (7:5432) - ld a, 3 - jr AdvanceOpeningSequenceCmdPtr - -AdvanceOpeningSequenceCmdPtrBy4: ; 1d436 (7:5436) - ld a, 4 -; fallthrough - -AdvanceOpeningSequenceCmdPtr: ; 1d438 (7:5438) - push hl - ld hl, wSequenceCmdPtr - add [hl] - ld [hli], a - ld a, [hl] - adc 0 - ld [hl], a - pop hl - ret -; 0x1d444 - -OpeningSequenceCmd_WaitOrbsAnimation: ; 1d444 (7:5444) - ld c, $7 - ld de, wTitleScreenSprites -.loop - ld a, [de] - ld [wWhichSprite], a - farcall GetSpriteAnimCounter - cp $ff - jr nz, .no_carry - inc de - dec c - jr nz, .loop - call AdvanceOpeningSequenceCmdPtrBy2 - scf - ret - -.no_carry - or a - ret -; 0x1d460 - -OpeningSequenceCmd_Wait: ; 1d460 (7:5460) - ld a, c - ld [wd633], a - call AdvanceOpeningSequenceCmdPtrBy3 - scf - ret -; 0x1d469 - -OpeningSequenceCmd_SetOrbsAnimations: ; 1d469 (7:5469) - ld l, c - ld h, b - - ld c, $7 - ld de, wTitleScreenSprites -.loop - push bc - push de - ld a, [de] - ld [wWhichSprite], a - ld a, [hli] - farcall StartSpriteAnimation - pop de - pop bc - inc de - dec c - jr nz, .loop - - call AdvanceOpeningSequenceCmdPtrBy4 - scf - ret -; 0x1d486 - -OpeningSequenceCmd_SetOrbsCoordinates: ; 1d486 (7:5486) - ld l, c - ld h, b - - ld c, $7 - ld de, wTitleScreenSprites -.loop - push bc - push de - ld a, [de] - ld [wWhichSprite], a - push hl - ld c, SPRITE_ANIM_COORD_X - call GetSpriteAnimBufferProperty - ld e, l - ld d, h - pop hl - ld a, [hli] - add 8 - ld [de], a ; x - inc de - ld a, [hli] - add 16 - ld [de], a ; y - pop de - pop bc - inc de - dec c - jr nz, .loop - - call AdvanceOpeningSequenceCmdPtrBy4 - scf - ret -; 0x1d4b0 - -OpeningOrbAnimations_CharizardScene: ; 1d4b0 (7:54b0) - db $c0 ; GRASS - db $c1 ; FIRE - db $c1 ; WATER - db $c0 ; COLORLESS - db $c1 ; LIGHTNING - db $c0 ; PSYCHIC - db $c1 ; FIGHTING -; 0x1d4b7 - -OpeningOrbCoordinates_CharizardScene: ; 1d4b7 (7:54b7) - ; x coord, y coord - db 240, 28 ; GRASS - db 160, 120 ; FIRE - db 160, 8 ; WATER - db 240, 64 ; COLORLESS - db 160, 84 ; LIGHTNING - db 240, 100 ; PSYCHIC - db 160, 44 ; FIGHTING -; 0x1d4c5 - -OpeningOrbAnimations_ScytherScene: ; 1d4c5 (7:54c5) - db $c1 ; GRASS - db $c0 ; FIRE - db $c0 ; WATER - db $c1 ; COLORLESS - db $c0 ; LIGHTNING - db $c1 ; PSYCHIC - db $c0 ; FIGHTING -; 0x1d4cc - -OpeningOrbCoordinates_ScytherScene: ; 1d4cc (7:54cc) - ; x coord, y coord - db 160, 28 ; GRASS - db 240, 120 ; FIRE - db 240, 8 ; WATER - db 160, 64 ; COLORLESS - db 240, 84 ; LIGHTNING - db 160, 100 ; PSYCHIC - db 240, 44 ; FIGHTING -; 0x1d4da - -OpeningOrbAnimations_AerodactylScene: ; 1d4da (7:54da) - db $c2 ; GRASS - db $c5 ; FIRE - db $c8 ; WATER - db $cb ; COLORLESS - db $ce ; LIGHTNING - db $d1 ; PSYCHIC - db $d4 ; FIGHTING -; 0x1d4e1 - -OpeningOrbCoordinates_AerodactylScene: ; 1d4e1 (7:54e1) - ; x coord, y coord - db 240, 32 ; GRASS - db 160, 112 ; FIRE - db $A0, 16 ; WATER - db 240, 64 ; COLORLESS - db 160, 80 ; LIGHTNING - db 240, 96 ; PSYCHIC - db 160, 48 ; FIGHTING -; 0x1d4ef - -OpeningOrbAnimations_InitialTitleScreen: ; 1d4ef (7:54ef) - db $c3 ; GRASS - db $c6 ; FIRE - db $c9 ; WATER - db $cc ; COLORLESS - db $cf ; LIGHTNING - db $d2 ; PSYCHIC - db $d5 ; FIGHTING -; 0x1d4f6 - -OpeningOrbCoordinates_InitialTitleScreen: ; 1d4f6 (7:54f6) - ; x coord, y coord - db 112, 144 ; GRASS - db 12, 144 ; FIRE - db 32, 144 ; WATER - db 92, 144 ; COLORLESS - db 52, 144 ; LIGHTNING - db 132, 144 ; PSYCHIC - db 72, 144 ; FIGHTING -; 0x1d504 - -OpeningOrbAnimations_InTitleScreen: ; 1d504 (7:5504) - db $c4 ; GRASS - db $c7 ; FIRE - db $ca ; WATER - db $cd ; COLORLESS - db $d0 ; LIGHTNING - db $d3 ; PSYCHIC - db $d6 ; FIGHTING -; 0x1d50b - -OpeningOrbCoordinates_InTitleScreen: ; 1d50b (7:550b) - ; x coord, y coord - db 112, 76 ; GRASS - db 0, 28 ; FIRE - db 32, 76 ; WATER - db 92, 252 ; COLORLESS - db 52, 252 ; LIGHTNING - db 144, 28 ; PSYCHIC - db 72, 76 ; FIGHTING -; 0x1d519 - -OpeningSequenceCmd_PlayTitleScreenMusic: ; 1d519 (7:5519) - ld a, MUSIC_TITLESCREEN - call PlaySong - call AdvanceOpeningSequenceCmdPtrBy2 - scf - ret -; 0x1d523 - -OpeningSequenceCmd_WaitSFX: ; 1d523 (7:5523) - call AssertSFXFinished - or a - jr nz, .no_carry - call AdvanceOpeningSequenceCmdPtrBy2 - scf - ret - -.no_carry - or a - ret -; 0x1d530 - -OpeningSequenceCmd_PlaySFX: ; 1d530 (7:5530) - ld a, c - call PlaySFX - call AdvanceOpeningSequenceCmdPtrBy3 - scf - ret -; 0x1d539 - -OpeningSequenceCmd_FadeIn: ; 1d539 (7:5539) - ld a, $01 - ld [wd634], a - call AdvanceOpeningSequenceCmdPtrBy2 - scf - ret -; 0x1d543 - -OpeningSequenceCmd_FadeOut: ; 1d543 (7:5543) - farcall Func_10d50 - ld a, $01 - ld [wd634], a - call AdvanceOpeningSequenceCmdPtrBy2 - scf - ret -; 0x1d551 - -OpeningSequenceCmd_LoadCharizardScene: ; 1d551 (7:5551) - lb bc, 6, 3 - ld a, SCENE_CHARIZARD_INTRO - jr LoadOpeningSceneAndUpdateSGBBorder - -OpeningSequenceCmd_LoadScytherScene: ; 1d558 (7:5558) - lb bc, 6, 3 - ld a, SCENE_SCYTHER_INTRO - jr LoadOpeningSceneAndUpdateSGBBorder - -OpeningSequenceCmd_LoadAerodactylScene: ; 1d55f (7:555f) - lb bc, 6, 3 - ld a, SCENE_AERODACTYL_INTRO -; fallthrough - -LoadOpeningSceneAndUpdateSGBBorder: ; 1d564 (7:5564) - call LoadOpeningScene - ld l, %001010 - lb bc, 0, 0 - lb de, 20, 18 - farcall Func_70498 - scf - ret -; 0x1d575 - -OpeningSequenceCmd_LoadTitleScreenScene: ; 1d575 (7:5575) - lb bc, 0, 0 - ld a, SCENE_TITLE_SCREEN - call LoadOpeningScene - call Func_1d59c - scf - ret -; 0x1d582 - -; a = scene ID -; bc = coordinates for scene -LoadOpeningScene: ; 1d582 (7:5582) - push af - push bc - call DisableLCD - pop bc - pop af - - farcall _LoadScene ; TODO change func name? - farcall Func_10d17 - - xor a - ld [wd634], a - call AdvanceOpeningSequenceCmdPtrBy2 - call EnableLCD - ret -; 0x1d59c - -Func_1d59c: ; 1d59c (7:559c) - ret -; 0x1d59d - -INCLUDE "macros/opening_sequence.asm" - -OpeningSequence: ; 1d59d (7:559d) - opening_seq_load_charizard_scene - opening_seq_play_sfx SFX_58 - opening_seq_set_orbs_coordinates OpeningOrbCoordinates_CharizardScene - opening_seq_set_orbs_animations OpeningOrbAnimations_CharizardScene - opening_seq_wait 44 - opening_seq_fade_in - opening_seq_wait 44 - opening_seq_fade_out - opening_seq_wait 30 - - opening_seq_load_scyther_scene - opening_seq_play_sfx SFX_58 - opening_seq_set_orbs_coordinates OpeningOrbCoordinates_ScytherScene - opening_seq_set_orbs_animations OpeningOrbAnimations_ScytherScene - opening_seq_wait 44 - opening_seq_fade_in - opening_seq_wait 44 - opening_seq_fade_out - opening_seq_wait 30 - - opening_seq_load_aerodactyl_scene - opening_seq_play_sfx SFX_59 - opening_seq_set_orbs_coordinates OpeningOrbCoordinates_AerodactylScene - opening_seq_set_orbs_animations OpeningOrbAnimations_AerodactylScene - opening_seq_wait 44 - opening_seq_fade_in - opening_seq_wait 100 - opening_seq_fade_out - opening_seq_wait 60 - - opening_seq_load_title_screen_scene - opening_seq_play_sfx SFX_5A - opening_seq_set_orbs_coordinates OpeningOrbCoordinates_InitialTitleScreen - opening_seq_set_orbs_animations OpeningOrbAnimations_InitialTitleScreen - opening_seq_wait_orbs_animation - opening_seq_fade_in - opening_seq_wait 16 - opening_seq_play_sfx SFX_5B - opening_seq_set_orbs_coordinates OpeningOrbCoordinates_InTitleScreen - opening_seq_set_orbs_animations OpeningOrbAnimations_InTitleScreen - opening_seq_wait_sfx - opening_seq_play_title_screen_music - opening_seq_wait 60 - opening_seq_end -; 0x1d614 +; TODO place in main.asm when possible +INCLUDE "engine/sequences/opening_sequence_commands.asm" +INCLUDE "data/sequences/opening_sequence.asm" Func_1d614: ; 1d614 (7:5614) INCROM $1d614, $1d6ad @@ -2911,891 +2516,3 @@ Func_1d765: ; 1d765 (7:5765) ; 0x1d7ee INCROM $1d7ee, $1d7fc - -Func_1d7fc: ; 1d7fc (7:57fc) - ld a, LOW(CreditsSequence) - ld [wSequenceCmdPtr + 0], a - ld a, HIGH(CreditsSequence) - ld [wSequenceCmdPtr + 1], a - xor a - ld [wd633], a - ret -; 0x1d80b - -Func_1d80b: ; 1d80b (7:580b) - ld a, [wd633] - or a - jr z, .call_func - cp $ff - ret z - dec a - ld [wd633], a - ret - -.call_func - ld a, [wSequenceCmdPtr + 0] - ld l, a - ld a, [wSequenceCmdPtr + 1] - ld h, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - push de - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - pop hl - call CallHL2 - jr Func_1d80b -; 0x1d834 - - ret ; stray ret - -AdvanceCreditsSequenceCmdPtrBy2: ; 1d835 (7:5835) - ld a, 2 - jr AdvanceCreditsSequenceCmdPtr - -AdvanceCreditsSequenceCmdPtrBy3: ; 1d839 (7:5839) - ld a, 3 - jr AdvanceCreditsSequenceCmdPtr - -AdvanceCreditsSequenceCmdPtrBy5: ; 1d83d (7:583d) - ld a, 5 - jr AdvanceCreditsSequenceCmdPtr - -AdvanceCreditsSequenceCmdPtrBy6: ; 1d841 (7:5841) - ld a, 6 - jr AdvanceCreditsSequenceCmdPtr - -AdvanceCreditsSequenceCmdPtrBy4: ; 1d845 (7:5845) - ld a, 4 -; fallthrough - -AdvanceCreditsSequenceCmdPtr: ; 1d847 (7:5847) - push hl - ld hl, wSequenceCmdPtr - add [hl] - ld [hli], a - ld a, [hl] - adc 0 - ld [hl], a - pop hl - ret -; 0x1d853 - -CreditsSequenceCmd_Wait: ; 1d853 (7:5853) - ld a, c - ld [wd633], a - jp AdvanceCreditsSequenceCmdPtrBy3 -; 0x1d85a - -CreditsSequenceCmd_LoadScene: ; 1d85a (7:585a) - push bc - push de - farcall Func_8047b - call EmptyScreen - xor a - ldh [hSCX], a - ldh [hSCY], a - farcall Func_1288c - pop de - pop bc - ld a, c - ld c, b - ld b, a - ld a, e - call LoadScene - jp AdvanceCreditsSequenceCmdPtrBy5 -; 0x1d878 - -CreditsSequenceCmd_LoadBooster: ; 1d878 (7:5878) - push bc - push de - farcall Func_8047b - call EmptyScreen - xor a - ldh [hSCX], a - ldh [hSCY], a - farcall Func_1288c - pop de - pop bc - ld a, c - ld c, b - ld b, a - ld a, e - farcall LoadBoosterGfx - jp AdvanceCreditsSequenceCmdPtrBy5 -; 0x1d897 - -CreditsSequenceCmd_LoadClubMap: ; 1d897 (7:5897) - ld b, $00 - ld hl, wMastersBeatenList - add hl, bc - ld a, [hl] - or a - jr nz, .at_least_1 - inc a -.at_least_1 - dec a - ld c, a - add a - add a - add c ; *5 - ld c, a - ld hl, .CreditsOWClubMaps - add hl, bc - ld a, [hli] ; map x coord - ld c, a - ld a, [hli] ; map y coord - ld b, a - ld a, [hli] ; map ID - ld e, a - push hl - call LoadOWMapForCreditsSequence - pop hl - ld a, [hli] - ld h, [hl] - ld l, a - or h - jr z, .done - -.loop_npcs - ld a, [hli] ; NPC ID - or a - jr z, .done - ld d, a - ld a, [hli] ; NPC x coord - ld c, a - ld a, [hli] ; NPC y coord - ld b, a - ld a, [hli] ; NPC direction - ld e, a - push hl - call LoadNPCForCreditsSequence - pop hl - jr .loop_npcs - -.done - jp AdvanceCreditsSequenceCmdPtrBy3 - -credits_club_map: MACRO - db \1 ; x - db \2 ; y - db \3 ; OW map - dw \4 ; list of NPCs to load -ENDM - -.CreditsOWClubMaps - credits_club_map 16, 0, FIGHTING_CLUB, .CreditsNPCs_FightingClub - credits_club_map 32, 0, ROCK_CLUB, .CreditsNPCs_RockClub - credits_club_map 64, 0, WATER_CLUB, .CreditsNPCs_WaterClub - credits_club_map 32, 0, LIGHTNING_CLUB, .CreditsNPCs_LightningClub - credits_club_map 32, 0, GRASS_CLUB, .CreditsNPCs_GrassClub - credits_club_map 32, 16, PSYCHIC_CLUB, .CreditsNPCs_PsychicClub - credits_club_map 0, 0, SCIENCE_CLUB, .CreditsNPCs_ScienceClub - credits_club_map 32, 0, FIRE_CLUB, .CreditsNPCs_FireClub - credits_club_map 32, 0, CHALLENGE_HALL, .CreditsNPCs_ChallengeHall - credits_club_map 48, 0, POKEMON_DOME, .CreditsNPCs_PokemonDome - -.CreditsNPCs_FightingClub - ; NPC ID, x, y, direction - db NPC_CHRIS, 4, 8, SOUTH - db NPC_MICHAEL, 14, 10, SOUTH - db NPC_JESSICA, 18, 6, EAST - db NPC_MITCH, 10, 4, SOUTH - db NPC_PLAYER_CREDITS, 10, 6, NORTH - db $00 - -.CreditsNPCs_RockClub - ; NPC ID, x, y, direction - db NPC_RYAN, 20, 14, EAST - db NPC_GENE, 12, 6, SOUTH - db NPC_PLAYER_CREDITS, 12, 8, NORTH - db $00 - -.CreditsNPCs_WaterClub - ; NPC ID, x, y, direction - db NPC_JOSHUA, 22, 8, SOUTH - db NPC_AMY, 22, 4, NORTH - db NPC_PLAYER_CREDITS, 18, 10, NORTH - db $00 - -.CreditsNPCs_LightningClub - ; NPC ID, x, y, direction - db NPC_NICHOLAS, 6, 10, SOUTH - db NPC_BRANDON, 22, 12, NORTH - db NPC_ISAAC, 12, 4, NORTH - db NPC_PLAYER_CREDITS, 12, 10, NORTH - db $00 - -.CreditsNPCs_GrassClub - ; NPC ID, x, y, direction - db NPC_KRISTIN, 4, 10, EAST - db NPC_HEATHER, 14, 16, SOUTH - db NPC_NIKKI, 12, 4, SOUTH - db NPC_PLAYER_CREDITS, 12, 6, NORTH - db $00 - -.CreditsNPCs_PsychicClub - ; NPC ID, x, y, direction - db NPC_DANIEL, 8, 8, NORTH - db NPC_STEPHANIE, 22, 12, EAST - db NPC_MURRAY1, 12, 6, SOUTH - db NPC_PLAYER_CREDITS, 12, 8, NORTH - db $00 - -.CreditsNPCs_ScienceClub - ; NPC ID, x, y, direction - db NPC_JOSEPH, 10, 10, WEST - db NPC_RICK, 4, 4, SOUTH - db NPC_PLAYER_CREDITS, 4, 6, NORTH - db $00 - -.CreditsNPCs_FireClub - ; NPC ID, x, y, direction - db NPC_ADAM, 8, 14, SOUTH - db NPC_JONATHAN, 18, 10, SOUTH - db NPC_KEN, 14, 4, SOUTH - db NPC_PLAYER_CREDITS, 14, 6, NORTH - db $00 - -.CreditsNPCs_ChallengeHall - ; NPC ID, x, y, direction - db NPC_HOST, 14, 4, SOUTH - db NPC_RONALD1, 18, 8, WEST - db NPC_PLAYER_CREDITS, 12, 8, EAST - db $00 - -.CreditsNPCs_PokemonDome - ; NPC ID, x, y, direction - db NPC_COURTNEY, 18, 4, SOUTH - db NPC_STEVE, 22, 4, SOUTH - db NPC_JACK, 8, 4, SOUTH - db NPC_ROD, 14, 6, SOUTH - db NPC_PLAYER_CREDITS, 14, 10, NORTH - db $00 -; 0x1d9a6 - -; bc = coordinates -; e = OW map -LoadOWMapForCreditsSequence: ; 1d9a6 (7:59a6) - push bc - push de - call EmptyScreen - pop de - pop bc - - ; set input coordinates and map - ld a, c - ldh [hSCX], a - ld a, b - ldh [hSCY], a - ld a, e - ld [wCurMap], a - - farcall LoadMapTilesAndPals - farcall Func_c9c7 - farcall SafelyCopyBGMapFromSRAMToVRAM - farcall DoMapOWFrame - xor a - ld [wd4ca], a - ld [wd4cb], a - ld a, PALETTE_29 - farcall LoadPaletteData - ret -; 0x1d9d5 - -CreditsSequenceCmd_LoadOWMap: ; 1d9d5 (7:59d5) - call LoadOWMapForCreditsSequence - jp AdvanceCreditsSequenceCmdPtrBy5 -; 0x1d9db - -CreditsSequenceCmd_DisableLCD: ; 1d9db (7:59db) - call DisableLCD - jp AdvanceCreditsSequenceCmdPtrBy2 -; 0x1d9e1 - -CreditsSequenceCmd_FadeIn: ; 1d9e1 (7:59e1) - call DisableLCD - call Set_WD_on - farcall Func_10af9 - jp AdvanceCreditsSequenceCmdPtrBy2 -; 0x1d9ee - -CreditsSequenceCmd_FadeOut: ; 1d9ee (7:59ee) - farcall Func_10ab4 - call Func_3ca4 - call EnableLCD - call DoFrameIfLCDEnabled - call DisableLCD - call Set_WD_off - jp AdvanceCreditsSequenceCmdPtrBy2 -; 0x1da04 - -CreditsSequenceCmd_DrawRectangle: ; 1da04 (7:5a04) - ld a, c - or $20 - ld e, a - ld d, $00 - ld c, b - ld b, 20 - xor a - lb hl, 0, 0 - call FillRectangle - jp AdvanceCreditsSequenceCmdPtrBy4 -; 0x1da17 - -CreditsSequenceCmd_PrintTextSpecial: ; 1da17 (7:5a17) - ld a, $01 - ld [wLineSeparation], a - push de - ld d, c - ld a, b - or $20 - ld e, a - call InitTextPrinting - pop hl - call PrintTextNoDelay - jp AdvanceCreditsSequenceCmdPtrBy6 -; 0x1da2c - -CreditsSequenceCmd_PrintText: ; 1da2c (7:5a2c) - ld a, $01 - ld [wLineSeparation], a - push de - ld d, c - ld e, b - call InitTextPrinting - pop hl - call PrintTextNoDelay - jp AdvanceCreditsSequenceCmdPtrBy6 -; 0x1da3e - -CreditsSequenceCmd_InitOverlay: ; 1da3e (7:5a3e) - ld a, c - ld [wd647], a - ld a, b - ld [wd648], a - ld a, e - ld [wd649], a - ld a, d - ld [wd64a], a - call Func_1d765 - jp AdvanceCreditsSequenceCmdPtrBy6 -; 0x1da54 - -CreditsSequenceCmd_LoadNPC: ; 1da54 (7:5a54) - call LoadNPCForCreditsSequence - jp AdvanceCreditsSequenceCmdPtrBy6 -; 0x1da5a - -; bc = coordinates -; e = direction -; d = NPC ID -LoadNPCForCreditsSequence: ; 1da5a (7:5a5a) - ld a, c - ld [wLoadNPCXPos], a - ld a, b - ld [wLoadNPCYPos], a - ld a, e - ld [wLoadNPCDirection], a - ld a, d - farcall LoadNPCSpriteData - ld a, [wNPCSpriteID] - farcall CreateSpriteAndAnimBufferEntry - - ld c, SPRITE_ANIM_COORD_X - call GetSpriteAnimBufferProperty - ldh a, [hSCX] - ld c, a - ld a, [wLoadNPCXPos] - add a - add a - add a ; *8 - add 8 - sub c - ld [hli], a ; x - ldh a, [hSCY] - ld c, a - ld a, [wLoadNPCYPos] - add a - add a - add a ; *8 - add 16 - sub c - ld [hli], a ; y - - ld a, [wNPCAnim] - ld c, a - ld a, [wLoadNPCDirection] - add c - farcall StartNewSpriteAnimation - ret -; 0x1da9e - -CreditsSequenceCmd_InitVolcanoSprite: ; 1da9e (7:5a9e) - farcall OverworldMap_InitVolcanoSprite - jp AdvanceCreditsSequenceCmdPtrBy2 -; 0x1daa5 - -CreditsSequenceCmd_TransformOverlay: ; 1daa5 (7:5aa5) -; either stretches or shrinks overlay -; to the input configurations - ld l, $00 - ld a, [wd647] - call .Func_1dade - ld [wd647], a - ld a, [wd648] - ld c, b - call .Func_1dade - ld [wd648], a - ld a, [wd649] - ld c, e - call .Func_1dade - ld [wd649], a - ld a, [wd64a] - ld c, d - call .Func_1dade - ld [wd64a], a - ld a, l - or a - jr z, .advance_sequence - ld a, $01 - ld [wd633], a - ret - -.advance_sequence - call Func_1d765 - jp AdvanceCreditsSequenceCmdPtrBy6 - -; compares a with c -; if it's smaller: increase by 2 and increment l -; if it's larger: decrease by 2 and increment l -; if it's equal or $ff: do nothing -.Func_1dade - cp $ff - jr z, .done - cp c - jr z, .done - inc l - jr c, .incr_a -; decr a - dec a - dec a - jr .done -.incr_a - inc a - inc a -.done - ret -; 0x1daef - -INCLUDE "macros/credits_sequence.asm" - -CreditsSequence: ; 1daef (7:5aef) - credits_seq_disable_lcd - credits_seq_load_ow_map 0, 0, OVERWORLD_MAP - credits_seq_init_volcano_sprite - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_print_text 2, 1, OverworldMapPokemonDomeText - credits_seq_print_text_special 0, 0, PokemonTradingCardGameStaffText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 32, 144, 0 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 0, 0, MASON_LABORATORY - credits_seq_load_npc 14, 6, SOUTH, NPC_DRMASON - credits_seq_load_npc 4, 14, EAST, NPC_SAM - credits_seq_load_npc 6, 4, SOUTH, NPC_TECH5 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 3 - credits_seq_print_text_special 0, 0, ProducersText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 0, 0, DECK_MACHINE_ROOM - credits_seq_load_npc 6, 8, SOUTH, NPC_TECH6 - credits_seq_load_npc 6, 22, WEST, NPC_TECH7 - credits_seq_load_npc 10, 18, WEST, NPC_TECH8 - credits_seq_load_npc 12, 12, WEST, NPC_AARON - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, DirectorText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 0 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 5 - credits_seq_print_text_special 0, 0, ProgrammersText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 1 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, GBGraphicDesigners1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 3 - credits_seq_print_text_special 0, 4, GBGraphicDesigners2Text - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 3 - credits_seq_print_text_special 0, 4, GBGraphicDesigners3Text - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 2 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, MusicText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 5 - credits_seq_print_text_special 0, 0, SoundEffectsText - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 3 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, SoundDirectorText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 5 - credits_seq_print_text_special 0, 0, SoundSystemSupportText - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_CHARIZARD_INTRO - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 6 - credits_seq_print_text_special 0, 0, CardGameCreator1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_SCYTHER_INTRO - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 5 - credits_seq_print_text_special 0, 0, CardGameCreator2Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_AERODACTYL_INTRO - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 5 - credits_seq_print_text_special 0, 0, CardGameCreator3Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 0, 0, ISHIHARAS_HOUSE - credits_seq_load_npc 8, 8, SOUTH, NPC_ISHIHARA - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 8 - credits_seq_print_text_special 0, 0, CardIllustrators1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 96, 48 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 4 - credits_seq_print_text_special 0, 4, CardIllustrators2Text - credits_seq_transform_overlay 0, 24, 96, 48 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 16, 8, LIGHTNING_CLUB_LOBBY - credits_seq_load_npc 6, 4, SOUTH, NPC_CLERK10 - credits_seq_load_npc 10, 4, SOUTH, NPC_GIFT_CENTER_CLERK - credits_seq_load_npc 18, 16, WEST, NPC_CHAP2 - credits_seq_load_npc 18, 2, NORTH, NPC_IMAKUNI - credits_seq_load_npc 8, 12, SOUTH, NPC_LASS4 - credits_seq_load_npc 20, 8, SOUTH, NPC_HOOD1 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 8 - credits_seq_print_text_special 0, 0, SpecialAppearances1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 4 - credits_seq_print_text_special 0, 4, SpecialAppearances2Text - credits_seq_transform_overlay 0, 24, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 48, 0, CHALLENGE_HALL - credits_seq_load_npc 14, 4, SOUTH, NPC_HOST - credits_seq_load_npc 18, 8, WEST, NPC_RONALD1 - credits_seq_load_npc 12, 8, EAST, NPC_PLAYER_CREDITS - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, USCoordination1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 32, 144, 0 - credits_seq_transform_overlay 0, 32, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 32, 144, 0 - credits_seq_draw_rectangle 4, 4 - credits_seq_print_text_special 0, 5, USCoordination2Text - credits_seq_transform_overlay 0, 32, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 32, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, USCoordination3Text - credits_seq_transform_overlay 0, 40, 144, 0 - credits_seq_transform_overlay 0, 40, 112, 32 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 40, 144, 0 - credits_seq_draw_rectangle 6, 4 - credits_seq_print_text_special 0, 6, USCoordination4Text - credits_seq_transform_overlay 0, 40, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 40, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_COLOSSEUM_BOOSTER - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 8 - credits_seq_print_text_special 0, 0, TranslationDraftText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_EVOLUTION_BOOSTER - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 6 - credits_seq_print_text_special 0, 0, MasteringText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_MYSTERY_BOOSTER - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 6 - credits_seq_print_text_special 0, 0, ManualCreationText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_booster 6, 3, SCENE_LABORATORY_BOOSTER - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 6 - credits_seq_print_text_special 0, 0, ManualIllustrationsText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 4 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, PokemonOriginalStoryText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, CreatedInCooperationWithText - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 5 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, WithCooperation1Text - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 5 - credits_seq_print_text_special 0, 4, WithCooperation2Text - credits_seq_transform_overlay 0, 24, 96, 48 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_draw_rectangle 4, 4 - credits_seq_print_text_special 0, 4, WithCooperation3Text - credits_seq_transform_overlay 0, 24, 96, 48 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 6 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 8 - credits_seq_print_text_special 0, 0, ProjectManagerText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 120, 24 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 7 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, SupervisorText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_club_map 8 - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, ExecutiveProducerText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_ow_map 16, 16, HALL_OF_HONOR - credits_seq_load_npc 10, 8, NORTH, NPC_LEGENDARY_CARD_TOP_LEFT - credits_seq_load_npc 12, 8, NORTH, NPC_LEGENDARY_CARD_TOP_RIGHT - credits_seq_load_npc 8, 10, NORTH, NPC_LEGENDARY_CARD_LEFT_SPARK - credits_seq_load_npc 10, 10, NORTH, NPC_LEGENDARY_CARD_BOTTOM_LEFT - credits_seq_load_npc 12, 10, NORTH, NPC_LEGENDARY_CARD_BOTTOM_RIGHT - credits_seq_load_npc 14, 10, NORTH, NPC_LEGENDARY_CARD_RIGHT_SPARK - credits_seq_init_overlay 0, 0, 144, 0 - credits_seq_draw_rectangle 0, 7 - credits_seq_print_text_special 0, 0, CreatedByText - credits_seq_fade_in - credits_seq_wait 60 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 24, 104, 40 - credits_seq_wait 225 - credits_seq_transform_overlay 0, 24, 144, 0 - credits_seq_transform_overlay 0, 0, 144, 0 - credits_seq_fade_out - - credits_seq_load_scene 0, 0, SCENE_COMPANIES - credits_seq_init_overlay 0, 0, 144, 0 - - credits_seq_fade_in - credits_seq_wait 225 - credits_seq_end -; 0x1e1c4 - - INCROM $1e1c4, $1e1c4 diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 6d84675..5481d17 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -867,8 +867,7 @@ LoadPaletteDataToBuffer: ; 80456 (20:4456) ret ; 0x8047b -; unreferenced? -Func_8047b: ; 8047b (20:447b) +ClearNumLoadedFramesetSubgroups: ; 8047b (20:447b) xor a ld [wNumLoadedFramesetSubgroups], a ret diff --git a/src/engine/sequences/credits_sequence_commands.asm b/src/engine/sequences/credits_sequence_commands.asm new file mode 100644 index 0000000..630760e --- /dev/null +++ b/src/engine/sequences/credits_sequence_commands.asm @@ -0,0 +1,483 @@ +Func_1d7fc: ; 1d7fc (7:57fc) + ld a, LOW(CreditsSequence) + ld [wSequenceCmdPtr + 0], a + ld a, HIGH(CreditsSequence) + ld [wSequenceCmdPtr + 1], a + xor a + ld [wd633], a + ret +; 0x1d80b + +Func_1d80b: ; 1d80b (7:580b) + ld a, [wd633] + or a + jr z, .call_func + cp $ff + ret z + dec a + ld [wd633], a + ret + +.call_func + ld a, [wSequenceCmdPtr + 0] + ld l, a + ld a, [wSequenceCmdPtr + 1] + ld h, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push de + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + pop hl + call CallHL2 + jr Func_1d80b +; 0x1d834 + + ret ; stray ret + +AdvanceCreditsSequenceCmdPtrBy2: ; 1d835 (7:5835) + ld a, 2 + jr AdvanceCreditsSequenceCmdPtr + +AdvanceCreditsSequenceCmdPtrBy3: ; 1d839 (7:5839) + ld a, 3 + jr AdvanceCreditsSequenceCmdPtr + +AdvanceCreditsSequenceCmdPtrBy5: ; 1d83d (7:583d) + ld a, 5 + jr AdvanceCreditsSequenceCmdPtr + +AdvanceCreditsSequenceCmdPtrBy6: ; 1d841 (7:5841) + ld a, 6 + jr AdvanceCreditsSequenceCmdPtr + +AdvanceCreditsSequenceCmdPtrBy4: ; 1d845 (7:5845) + ld a, 4 +; fallthrough + +AdvanceCreditsSequenceCmdPtr: ; 1d847 (7:5847) + push hl + ld hl, wSequenceCmdPtr + add [hl] + ld [hli], a + ld a, [hl] + adc 0 + ld [hl], a + pop hl + ret +; 0x1d853 + +CreditsSequenceCmd_Wait: ; 1d853 (7:5853) + ld a, c + ld [wd633], a + jp AdvanceCreditsSequenceCmdPtrBy3 +; 0x1d85a + +CreditsSequenceCmd_LoadScene: ; 1d85a (7:585a) + push bc + push de + farcall ClearNumLoadedFramesetSubgroups + call EmptyScreen + xor a + ldh [hSCX], a + ldh [hSCY], a + farcall Func_1288c + pop de + pop bc + ld a, c + ld c, b + ld b, a + ld a, e + call LoadScene + jp AdvanceCreditsSequenceCmdPtrBy5 +; 0x1d878 + +CreditsSequenceCmd_LoadBooster: ; 1d878 (7:5878) + push bc + push de + farcall ClearNumLoadedFramesetSubgroups + call EmptyScreen + xor a + ldh [hSCX], a + ldh [hSCY], a + farcall Func_1288c + pop de + pop bc + ld a, c + ld c, b + ld b, a + ld a, e + farcall LoadBoosterGfx + jp AdvanceCreditsSequenceCmdPtrBy5 +; 0x1d897 + +CreditsSequenceCmd_LoadClubMap: ; 1d897 (7:5897) + ld b, $00 + ld hl, wMastersBeatenList + add hl, bc + ld a, [hl] + or a + jr nz, .at_least_1 + inc a +.at_least_1 + dec a + ld c, a + add a + add a + add c ; *5 + ld c, a + ld hl, .CreditsOWClubMaps + add hl, bc + ld a, [hli] ; map x coord + ld c, a + ld a, [hli] ; map y coord + ld b, a + ld a, [hli] ; map ID + ld e, a + push hl + call LoadOWMapForCreditsSequence + pop hl + ld a, [hli] + ld h, [hl] + ld l, a + or h + jr z, .done + +.loop_npcs + ld a, [hli] ; NPC ID + or a + jr z, .done + ld d, a + ld a, [hli] ; NPC x coord + ld c, a + ld a, [hli] ; NPC y coord + ld b, a + ld a, [hli] ; NPC direction + ld e, a + push hl + call LoadNPCForCreditsSequence + pop hl + jr .loop_npcs + +.done + jp AdvanceCreditsSequenceCmdPtrBy3 + +credits_club_map: MACRO + db \1 ; x + db \2 ; y + db \3 ; OW map + dw \4 ; list of NPCs to load +ENDM + +.CreditsOWClubMaps + credits_club_map 16, 0, FIGHTING_CLUB, .CreditsNPCs_FightingClub + credits_club_map 32, 0, ROCK_CLUB, .CreditsNPCs_RockClub + credits_club_map 64, 0, WATER_CLUB, .CreditsNPCs_WaterClub + credits_club_map 32, 0, LIGHTNING_CLUB, .CreditsNPCs_LightningClub + credits_club_map 32, 0, GRASS_CLUB, .CreditsNPCs_GrassClub + credits_club_map 32, 16, PSYCHIC_CLUB, .CreditsNPCs_PsychicClub + credits_club_map 0, 0, SCIENCE_CLUB, .CreditsNPCs_ScienceClub + credits_club_map 32, 0, FIRE_CLUB, .CreditsNPCs_FireClub + credits_club_map 32, 0, CHALLENGE_HALL, .CreditsNPCs_ChallengeHall + credits_club_map 48, 0, POKEMON_DOME, .CreditsNPCs_PokemonDome + +.CreditsNPCs_FightingClub + ; NPC ID, x, y, direction + db NPC_CHRIS, 4, 8, SOUTH + db NPC_MICHAEL, 14, 10, SOUTH + db NPC_JESSICA, 18, 6, EAST + db NPC_MITCH, 10, 4, SOUTH + db NPC_PLAYER_CREDITS, 10, 6, NORTH + db $00 + +.CreditsNPCs_RockClub + ; NPC ID, x, y, direction + db NPC_RYAN, 20, 14, EAST + db NPC_GENE, 12, 6, SOUTH + db NPC_PLAYER_CREDITS, 12, 8, NORTH + db $00 + +.CreditsNPCs_WaterClub + ; NPC ID, x, y, direction + db NPC_JOSHUA, 22, 8, SOUTH + db NPC_AMY, 22, 4, NORTH + db NPC_PLAYER_CREDITS, 18, 10, NORTH + db $00 + +.CreditsNPCs_LightningClub + ; NPC ID, x, y, direction + db NPC_NICHOLAS, 6, 10, SOUTH + db NPC_BRANDON, 22, 12, NORTH + db NPC_ISAAC, 12, 4, NORTH + db NPC_PLAYER_CREDITS, 12, 10, NORTH + db $00 + +.CreditsNPCs_GrassClub + ; NPC ID, x, y, direction + db NPC_KRISTIN, 4, 10, EAST + db NPC_HEATHER, 14, 16, SOUTH + db NPC_NIKKI, 12, 4, SOUTH + db NPC_PLAYER_CREDITS, 12, 6, NORTH + db $00 + +.CreditsNPCs_PsychicClub + ; NPC ID, x, y, direction + db NPC_DANIEL, 8, 8, NORTH + db NPC_STEPHANIE, 22, 12, EAST + db NPC_MURRAY1, 12, 6, SOUTH + db NPC_PLAYER_CREDITS, 12, 8, NORTH + db $00 + +.CreditsNPCs_ScienceClub + ; NPC ID, x, y, direction + db NPC_JOSEPH, 10, 10, WEST + db NPC_RICK, 4, 4, SOUTH + db NPC_PLAYER_CREDITS, 4, 6, NORTH + db $00 + +.CreditsNPCs_FireClub + ; NPC ID, x, y, direction + db NPC_ADAM, 8, 14, SOUTH + db NPC_JONATHAN, 18, 10, SOUTH + db NPC_KEN, 14, 4, SOUTH + db NPC_PLAYER_CREDITS, 14, 6, NORTH + db $00 + +.CreditsNPCs_ChallengeHall + ; NPC ID, x, y, direction + db NPC_HOST, 14, 4, SOUTH + db NPC_RONALD1, 18, 8, WEST + db NPC_PLAYER_CREDITS, 12, 8, EAST + db $00 + +.CreditsNPCs_PokemonDome + ; NPC ID, x, y, direction + db NPC_COURTNEY, 18, 4, SOUTH + db NPC_STEVE, 22, 4, SOUTH + db NPC_JACK, 8, 4, SOUTH + db NPC_ROD, 14, 6, SOUTH + db NPC_PLAYER_CREDITS, 14, 10, NORTH + db $00 +; 0x1d9a6 + +; bc = coordinates +; e = OW map +LoadOWMapForCreditsSequence: ; 1d9a6 (7:59a6) + push bc + push de + call EmptyScreen + pop de + pop bc + + ; set input coordinates and map + ld a, c + ldh [hSCX], a + ld a, b + ldh [hSCY], a + ld a, e + ld [wCurMap], a + + farcall LoadMapTilesAndPals + farcall Func_c9c7 + farcall SafelyCopyBGMapFromSRAMToVRAM + farcall DoMapOWFrame + xor a + ld [wd4ca], a + ld [wd4cb], a + ld a, PALETTE_29 + farcall LoadPaletteData + ret +; 0x1d9d5 + +CreditsSequenceCmd_LoadOWMap: ; 1d9d5 (7:59d5) + call LoadOWMapForCreditsSequence + jp AdvanceCreditsSequenceCmdPtrBy5 +; 0x1d9db + +CreditsSequenceCmd_DisableLCD: ; 1d9db (7:59db) + call DisableLCD + jp AdvanceCreditsSequenceCmdPtrBy2 +; 0x1d9e1 + +CreditsSequenceCmd_FadeIn: ; 1d9e1 (7:59e1) + call DisableLCD + call Set_WD_on + farcall Func_10af9 + jp AdvanceCreditsSequenceCmdPtrBy2 +; 0x1d9ee + +CreditsSequenceCmd_FadeOut: ; 1d9ee (7:59ee) + farcall Func_10ab4 + call Func_3ca4 + call EnableLCD + call DoFrameIfLCDEnabled + call DisableLCD + call Set_WD_off + jp AdvanceCreditsSequenceCmdPtrBy2 +; 0x1da04 + +CreditsSequenceCmd_DrawRectangle: ; 1da04 (7:5a04) + ld a, c + or $20 + ld e, a + ld d, $00 + ld c, b + ld b, 20 + xor a + lb hl, 0, 0 + call FillRectangle + jp AdvanceCreditsSequenceCmdPtrBy4 +; 0x1da17 + +CreditsSequenceCmd_PrintText: ; 1da17 (7:5a17) + ld a, $01 + ld [wLineSeparation], a + push de + ld d, c + ld a, b + or $20 + ld e, a + call InitTextPrinting + pop hl + call PrintTextNoDelay + jp AdvanceCreditsSequenceCmdPtrBy6 +; 0x1da2c + +CreditsSequenceCmd_PrintTextBox: ; 1da2c (7:5a2c) + ld a, $01 + ld [wLineSeparation], a + push de + ld d, c + ld e, b + call InitTextPrinting + pop hl + call PrintTextNoDelay + jp AdvanceCreditsSequenceCmdPtrBy6 +; 0x1da3e + +CreditsSequenceCmd_InitOverlay: ; 1da3e (7:5a3e) + ld a, c + ld [wd647], a + ld a, b + ld [wd648], a + ld a, e + ld [wd649], a + ld a, d + ld [wd64a], a + call Func_1d765 + jp AdvanceCreditsSequenceCmdPtrBy6 +; 0x1da54 + +CreditsSequenceCmd_LoadNPC: ; 1da54 (7:5a54) + call LoadNPCForCreditsSequence + jp AdvanceCreditsSequenceCmdPtrBy6 +; 0x1da5a + +; bc = coordinates +; e = direction +; d = NPC ID +LoadNPCForCreditsSequence: ; 1da5a (7:5a5a) + ld a, c + ld [wLoadNPCXPos], a + ld a, b + ld [wLoadNPCYPos], a + ld a, e + ld [wLoadNPCDirection], a + ld a, d + farcall LoadNPCSpriteData + ld a, [wNPCSpriteID] + farcall CreateSpriteAndAnimBufferEntry + + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + ldh a, [hSCX] + ld c, a + ld a, [wLoadNPCXPos] + add a + add a + add a ; *8 + add 8 + sub c + ld [hli], a ; x + ldh a, [hSCY] + ld c, a + ld a, [wLoadNPCYPos] + add a + add a + add a ; *8 + add 16 + sub c + ld [hli], a ; y + + ld a, [wNPCAnim] + ld c, a + ld a, [wLoadNPCDirection] + add c + farcall StartNewSpriteAnimation + ret +; 0x1da9e + +CreditsSequenceCmd_InitVolcanoSprite: ; 1da9e (7:5a9e) + farcall OverworldMap_InitVolcanoSprite + jp AdvanceCreditsSequenceCmdPtrBy2 +; 0x1daa5 + +CreditsSequenceCmd_TransformOverlay: ; 1daa5 (7:5aa5) +; either stretches or shrinks overlay +; to the input configurations + ld l, $00 + ld a, [wd647] + call .Func_1dade + ld [wd647], a + ld a, [wd648] + ld c, b + call .Func_1dade + ld [wd648], a + ld a, [wd649] + ld c, e + call .Func_1dade + ld [wd649], a + ld a, [wd64a] + ld c, d + call .Func_1dade + ld [wd64a], a + ld a, l + or a + jr z, .advance_sequence + ld a, $01 + ld [wd633], a + ret + +.advance_sequence + call Func_1d765 + jp AdvanceCreditsSequenceCmdPtrBy6 + +; compares a with c +; if it's smaller: increase by 2 and increment l +; if it's larger: decrease by 2 and increment l +; if it's equal or $ff: do nothing +.Func_1dade + cp $ff + jr z, .done + cp c + jr z, .done + inc l + jr c, .incr_a +; decr a + dec a + dec a + jr .done +.incr_a + inc a + inc a +.done + ret +; 0x1daef diff --git a/src/engine/sequences/opening_sequence_commands.asm b/src/engine/sequences/opening_sequence_commands.asm new file mode 100644 index 0000000..6f82387 --- /dev/null +++ b/src/engine/sequences/opening_sequence_commands.asm @@ -0,0 +1,349 @@ +Func_1d408: ; 1d408 (7:5408) + ld a, [wd633] + or a + jr z, .call_function + cp $ff + ret z + dec a + ld [wd633], a + ret + +.call_function + ld a, [wSequenceCmdPtr + 0] + ld l, a + ld a, [wSequenceCmdPtr + 1] + ld h, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld l, e + ld h, d + call CallHL2 + jr c, Func_1d408 + ret +; 0x1d42e + +AdvanceOpeningSequenceCmdPtrBy2: ; 1d42e (7:542e) + ld a, 2 + jr AdvanceOpeningSequenceCmdPtr + +AdvanceOpeningSequenceCmdPtrBy3: ; 1d432 (7:5432) + ld a, 3 + jr AdvanceOpeningSequenceCmdPtr + +AdvanceOpeningSequenceCmdPtrBy4: ; 1d436 (7:5436) + ld a, 4 +; fallthrough + +AdvanceOpeningSequenceCmdPtr: ; 1d438 (7:5438) + push hl + ld hl, wSequenceCmdPtr + add [hl] + ld [hli], a + ld a, [hl] + adc 0 + ld [hl], a + pop hl + ret +; 0x1d444 + +OpeningSequenceCmd_WaitOrbsAnimation: ; 1d444 (7:5444) + ld c, $7 + ld de, wTitleScreenSprites +.loop + ld a, [de] + ld [wWhichSprite], a + farcall GetSpriteAnimCounter + cp $ff + jr nz, .no_carry + inc de + dec c + jr nz, .loop + call AdvanceOpeningSequenceCmdPtrBy2 + scf + ret + +.no_carry + or a + ret +; 0x1d460 + +OpeningSequenceCmd_Wait: ; 1d460 (7:5460) + ld a, c + ld [wd633], a + call AdvanceOpeningSequenceCmdPtrBy3 + scf + ret +; 0x1d469 + +OpeningSequenceCmd_SetOrbsAnimations: ; 1d469 (7:5469) + ld l, c + ld h, b + + ld c, $7 + ld de, wTitleScreenSprites +.loop + push bc + push de + ld a, [de] + ld [wWhichSprite], a + ld a, [hli] + farcall StartSpriteAnimation + pop de + pop bc + inc de + dec c + jr nz, .loop + + call AdvanceOpeningSequenceCmdPtrBy4 + scf + ret +; 0x1d486 + +OpeningSequenceCmd_SetOrbsCoordinates: ; 1d486 (7:5486) + ld l, c + ld h, b + + ld c, $7 + ld de, wTitleScreenSprites +.loop + push bc + push de + ld a, [de] + ld [wWhichSprite], a + push hl + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + ld e, l + ld d, h + pop hl + ld a, [hli] + add 8 + ld [de], a ; x + inc de + ld a, [hli] + add 16 + ld [de], a ; y + pop de + pop bc + inc de + dec c + jr nz, .loop + + call AdvanceOpeningSequenceCmdPtrBy4 + scf + ret +; 0x1d4b0 + +OpeningOrbAnimations_CharizardScene: ; 1d4b0 (7:54b0) + db $c0 ; GRASS + db $c1 ; FIRE + db $c1 ; WATER + db $c0 ; COLORLESS + db $c1 ; LIGHTNING + db $c0 ; PSYCHIC + db $c1 ; FIGHTING +; 0x1d4b7 + +OpeningOrbCoordinates_CharizardScene: ; 1d4b7 (7:54b7) + ; x coord, y coord + db 240, 28 ; GRASS + db 160, 120 ; FIRE + db 160, 8 ; WATER + db 240, 64 ; COLORLESS + db 160, 84 ; LIGHTNING + db 240, 100 ; PSYCHIC + db 160, 44 ; FIGHTING +; 0x1d4c5 + +OpeningOrbAnimations_ScytherScene: ; 1d4c5 (7:54c5) + db $c1 ; GRASS + db $c0 ; FIRE + db $c0 ; WATER + db $c1 ; COLORLESS + db $c0 ; LIGHTNING + db $c1 ; PSYCHIC + db $c0 ; FIGHTING +; 0x1d4cc + +OpeningOrbCoordinates_ScytherScene: ; 1d4cc (7:54cc) + ; x coord, y coord + db 160, 28 ; GRASS + db 240, 120 ; FIRE + db 240, 8 ; WATER + db 160, 64 ; COLORLESS + db 240, 84 ; LIGHTNING + db 160, 100 ; PSYCHIC + db 240, 44 ; FIGHTING +; 0x1d4da + +OpeningOrbAnimations_AerodactylScene: ; 1d4da (7:54da) + db $c2 ; GRASS + db $c5 ; FIRE + db $c8 ; WATER + db $cb ; COLORLESS + db $ce ; LIGHTNING + db $d1 ; PSYCHIC + db $d4 ; FIGHTING +; 0x1d4e1 + +OpeningOrbCoordinates_AerodactylScene: ; 1d4e1 (7:54e1) + ; x coord, y coord + db 240, 32 ; GRASS + db 160, 112 ; FIRE + db $A0, 16 ; WATER + db 240, 64 ; COLORLESS + db 160, 80 ; LIGHTNING + db 240, 96 ; PSYCHIC + db 160, 48 ; FIGHTING +; 0x1d4ef + +OpeningOrbAnimations_InitialTitleScreen: ; 1d4ef (7:54ef) + db $c3 ; GRASS + db $c6 ; FIRE + db $c9 ; WATER + db $cc ; COLORLESS + db $cf ; LIGHTNING + db $d2 ; PSYCHIC + db $d5 ; FIGHTING +; 0x1d4f6 + +OpeningOrbCoordinates_InitialTitleScreen: ; 1d4f6 (7:54f6) + ; x coord, y coord + db 112, 144 ; GRASS + db 12, 144 ; FIRE + db 32, 144 ; WATER + db 92, 144 ; COLORLESS + db 52, 144 ; LIGHTNING + db 132, 144 ; PSYCHIC + db 72, 144 ; FIGHTING +; 0x1d504 + +OpeningOrbAnimations_InTitleScreen: ; 1d504 (7:5504) + db $c4 ; GRASS + db $c7 ; FIRE + db $ca ; WATER + db $cd ; COLORLESS + db $d0 ; LIGHTNING + db $d3 ; PSYCHIC + db $d6 ; FIGHTING +; 0x1d50b + +OpeningOrbCoordinates_InTitleScreen: ; 1d50b (7:550b) + ; x coord, y coord + db 112, 76 ; GRASS + db 0, 28 ; FIRE + db 32, 76 ; WATER + db 92, 252 ; COLORLESS + db 52, 252 ; LIGHTNING + db 144, 28 ; PSYCHIC + db 72, 76 ; FIGHTING +; 0x1d519 + +OpeningSequenceCmd_PlayTitleScreenMusic: ; 1d519 (7:5519) + ld a, MUSIC_TITLESCREEN + call PlaySong + call AdvanceOpeningSequenceCmdPtrBy2 + scf + ret +; 0x1d523 + +OpeningSequenceCmd_WaitSFX: ; 1d523 (7:5523) + call AssertSFXFinished + or a + jr nz, .no_carry + call AdvanceOpeningSequenceCmdPtrBy2 + scf + ret + +.no_carry + or a + ret +; 0x1d530 + +OpeningSequenceCmd_PlaySFX: ; 1d530 (7:5530) + ld a, c + call PlaySFX + call AdvanceOpeningSequenceCmdPtrBy3 + scf + ret +; 0x1d539 + +OpeningSequenceCmd_FadeIn: ; 1d539 (7:5539) + ld a, $01 + ld [wd634], a + call AdvanceOpeningSequenceCmdPtrBy2 + scf + ret +; 0x1d543 + +OpeningSequenceCmd_FadeOut: ; 1d543 (7:5543) + farcall Func_10d50 + ld a, $01 + ld [wd634], a + call AdvanceOpeningSequenceCmdPtrBy2 + scf + ret +; 0x1d551 + +OpeningSequenceCmd_LoadCharizardScene: ; 1d551 (7:5551) + lb bc, 6, 3 + ld a, SCENE_CHARIZARD_INTRO + jr LoadOpeningSceneAndUpdateSGBBorder + +OpeningSequenceCmd_LoadScytherScene: ; 1d558 (7:5558) + lb bc, 6, 3 + ld a, SCENE_SCYTHER_INTRO + jr LoadOpeningSceneAndUpdateSGBBorder + +OpeningSequenceCmd_LoadAerodactylScene: ; 1d55f (7:555f) + lb bc, 6, 3 + ld a, SCENE_AERODACTYL_INTRO +; fallthrough + +LoadOpeningSceneAndUpdateSGBBorder: ; 1d564 (7:5564) + call LoadOpeningScene + ld l, %001010 + lb bc, 0, 0 + lb de, 20, 18 + farcall Func_70498 + scf + ret +; 0x1d575 + +OpeningSequenceCmd_LoadTitleScreenScene: ; 1d575 (7:5575) + lb bc, 0, 0 + ld a, SCENE_TITLE_SCREEN + call LoadOpeningScene + call Func_1d59c + scf + ret +; 0x1d582 + +; a = scene ID +; bc = coordinates for scene +LoadOpeningScene: ; 1d582 (7:5582) + push af + push bc + call DisableLCD + pop bc + pop af + + farcall _LoadScene ; TODO change func name? + farcall Func_10d17 + + xor a + ld [wd634], a + call AdvanceOpeningSequenceCmdPtrBy2 + call EnableLCD + ret +; 0x1d59c + +Func_1d59c: ; 1d59c (7:559c) + ret +; 0x1d59d diff --git a/src/macros/credits_sequence.asm b/src/macros/credits_sequence.asm index 62e789e..defe92e 100644 --- a/src/macros/credits_sequence.asm +++ b/src/macros/credits_sequence.asm @@ -27,8 +27,8 @@ ENDM ; x coordinate ; y coordinate ; text ID -credits_seq_print_text: MACRO - dw CreditsSequenceCmd_PrintText +credits_seq_print_text_box: MACRO + dw CreditsSequenceCmd_PrintTextBox db \1, \2 tx \3 ENDM @@ -36,8 +36,8 @@ ENDM ; x coordinate ; y coordinate ; text ID -credits_seq_print_text_special: MACRO - dw CreditsSequenceCmd_PrintTextSpecial +credits_seq_print_text: MACRO + dw CreditsSequenceCmd_PrintText db \1, \2 tx \3 ENDM diff --git a/src/main.asm b/src/main.asm index 407ea58..646c60e 100644 --- a/src/main.asm +++ b/src/main.asm @@ -23,6 +23,8 @@ INCLUDE "engine/bank06.asm" SECTION "Bank 7", ROMX INCLUDE "engine/bank07.asm" +INCLUDE "engine/sequences/credits_sequence_commands.asm" +INCLUDE "data/sequences/credits_sequence.asm" SECTION "Booster Packs", ROMX INCLUDE "engine/booster_packs.asm" -- cgit v1.2.3