diff options
author | entrpntr <12521136+entrpntr@users.noreply.github.com> | 2020-05-28 23:05:00 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-28 23:05:00 -0400 |
commit | c688dd59fba5ddc1275b098cff9662aeb2794043 (patch) | |
tree | 92f7215305b29d25a308163567cbbddbbf4cbf2d | |
parent | 10d0d5d02babaace5c2af4a2e03bb0a4762c9c38 (diff) | |
parent | 3a9930b9d4348cf0a67861438d7af32fbb60d812 (diff) |
Merge pull request #38 from libjet/bank21
Disassemble bank $21
108 files changed, 3291 insertions, 135 deletions
@@ -62,3 +62,4 @@ gfx/pokedex/slowpoke.2bpp gfx/pokedex/pokedex_sgb.2bpp gfx/pokedex/question_mark.2bpp gfx/tilesets/*.2bpp +gfx/battle_anims/*.2bpp @@ -10,6 +10,7 @@ data/maps/map_data.o \ data/pokemon/dex_entries.o \ data/pokemon/egg_moves.o \ data/pokemon/evos_attacks.o \ +engine/movie/credits.o \ engine/overworld/events.o \ gfx/sprites.o \ gfx/tilesets.o diff --git a/constants/credits_constants.asm b/constants/credits_constants.asm index 686f73ba..9a786ee6 100644 --- a/constants/credits_constants.asm +++ b/constants/credits_constants.asm @@ -76,3 +76,13 @@ const US_COORDINATION const TEXT_TRANSLATION const PAAD_TESTING + +; CreditsScript indexes (see data/credits_script.asm) + const_def -7 + const CREDITS_THEEND + const CREDITS_WAIT2 + const CREDITS_MUSIC + const CREDITS_CLEAR + const CREDITS_SCENE + const CREDITS_WAIT + const CREDITS_END diff --git a/data/credits_script.asm b/data/credits_script.asm new file mode 100755 index 00000000..5c1dc40d --- /dev/null +++ b/data/credits_script.asm @@ -0,0 +1,257 @@ +CreditsScript: + +; Clear the banner. + db CREDITS_CLEAR + +; Pokemon Gold/Silver Version Staff + db STAFF, 0 + + db CREDITS_WAIT, 8 + +; Play the credits music. + db CREDITS_MUSIC + + db CREDITS_WAIT2, 10 + + db CREDITS_WAIT, 1 + +; Update the banner. + db CREDITS_SCENE, 0 ; Bellossom + + db DIRECTOR, 1 + db SATOSHI_TAJIRI, 2 + + db CREDITS_WAIT, 12 + + db SUBDIRECTOR, 1 + db JUNICHI_MASUDA, 2 + + db CREDITS_WAIT, 12 + + db PROGRAMMERS, 0 + db TETSUYA_WATANABE, 1 + db SHIGEKI_MORIMOTO, 2 + + db CREDITS_WAIT, 12 + + db PROGRAMMERS, 0 + db SOUSUKE_TAMADA, 1 + db TAKENORI_OOTA, 2 + + db CREDITS_WAIT, 12 + + db GRAPHICS_DIRECTOR, 1 + db KEN_SUGIMORI, 2 + + db CREDITS_WAIT, 12 + + db MONSTER_DESIGN, 0 + db KEN_SUGIMORI, 1 + db MOTOFUMI_FUJIWARA, 2 + + db CREDITS_WAIT, 12 + + db MONSTER_DESIGN, 0 + db SHIGEKI_MORIMOTO, 1 + db ATSUKO_NISHIDA, 2 + + db CREDITS_WAIT, 12 + + db MONSTER_DESIGN, 0 + db HIRONOBU_YOSHIDA, 1 + db MUNEO_SAITO, 2 + + db CREDITS_WAIT, 12 + db CREDITS_WAIT, 0 + +; Clear the banner. + db CREDITS_CLEAR + + db CREDITS_WAIT, 1 + +; Update the banner. + db CREDITS_SCENE, 1 ; Togepi + + db MONSTER_DESIGN, 0 + db SATOSHI_OOTA, 1 + db RENA_YOSHIKAWA, 2 + + db CREDITS_WAIT, 12 + + db GRAPHICS_DESIGN, 0 + db JUN_OKUTANI, 1 + db ASUKA_IWASHITA, 2 + db TETSUYA_WATANABE, 3 + + db CREDITS_WAIT, 12 + + db CREDIT_MUSIC, 0 + db JUNICHI_MASUDA, 1 + db GO_ICHINOSE, 2 + + db CREDITS_WAIT, 12 + + db CREDIT_SOUND_EFFECTS, 0 + db MORIKAZU_AOKI, 1 + db JUNICHI_MASUDA, 2 + db TETSUYA_WATANABE, 3 + + db CREDITS_WAIT, 12 + + db GAME_DESIGN, 0 + db SATOSHI_TAJIRI, 1 + db KOHJI_NISHINO, 2 + db SHIGEKI_MORIMOTO, 3 + + db CREDITS_WAIT, 12 + + db GAME_DESIGN, 0 + db JUNICHI_MASUDA, 1 + db KENJI_MATSUSHIMA, 2 + + db CREDITS_WAIT, 12 + + db GAME_SCENARIO, 0 + db TOSHINOBU_MATSUMIYA, 1 + db KENJI_MATSUSHIMA, 2 + + db CREDITS_WAIT, 12 + + db TOOL_PROGRAMMING, 1 + db TAKENORI_OOTA, 2 + + db CREDITS_WAIT, 12 + db CREDITS_WAIT, 0 + +; Clear the banner. + db CREDITS_CLEAR + + db CREDITS_WAIT, 1 + +; Update the banner. + db CREDITS_SCENE, 2 ; Elekid + + db PARAMETRIC_DESIGN, 1 + db KOHJI_NISHINO, 2 + + db CREDITS_WAIT, 12 + + db SCRIPT_DESIGN, 1 + db NOBUHIRO_SEYA, 2 + + db CREDITS_WAIT, 12 + + db MAP_DATA_DESIGN, 1 + db KAZUHITO_SEKINE, 2 + + db CREDITS_WAIT, 12 + + db MAP_DESIGN, 0 + db TETSUJI_OOTA, 1 + db KOHJI_NISHINO, 2 + db NOBUHIRO_SEYA, 3 + + db CREDITS_WAIT, 12 + + db PRODUCERS, 1 + db TAKEHIRO_IZUSHI, 2 + + db CREDITS_WAIT, 12 + + db PRODUCERS, 1 + db TAKASHI_KAWAGUCHI, 2 + + db CREDITS_WAIT, 12 + + db PRODUCERS, 1 + db TSUNEKAZU_ISHIHARA, 2 + + db CREDITS_WAIT, 12 + db CREDITS_WAIT, 0 + +; Clear the banner. + db CREDITS_CLEAR + + db CREDITS_WAIT, 1 + +; Update the banner. + db CREDITS_SCENE, 3 ; Sentret + + db US_VERSION_STAFF, 1 + + db CREDITS_WAIT, 12 + + db US_COORDINATION, 0 + db GAIL_TILDEN, 1 + db HIRO_NAKAMURA, 2 + + db CREDITS_WAIT, 12 + + db US_COORDINATION, 0 + db JUNICHI_MASUDA, 1 + db NAOKO_KAWAKAMI, 2 + + db CREDITS_WAIT, 12 + + db US_COORDINATION, 0 + db JEFF_KALLES, 1 + db WILLIAM_GIESE, 2 + + db CREDITS_WAIT, 12 + + db TEXT_TRANSLATION, 1 + db NOB_OGASAWARA, 2 + + db CREDITS_WAIT, 12 + + db PROGRAMMERS, 0 + db TERUKI_MURAKAWA, 1 + db KAZUYOSHI_OSAWA, 2 + + db CREDITS_WAIT, 12 + + db PAAD_TESTING, 0 + db RANDY_SHOEMAKE, 1 + db KATHY_HUGUENARD, 2 + db JOEL_SIMON, 3 + + db CREDITS_WAIT, 12 + + db PRODUCT_TESTING, 0 + db NCL_SUPER_MARIO_CLUB, 1 + db KENJI_SAIKI, 2 + db ATSUSHI_TADA, 3 + + db CREDITS_WAIT, 12 + + db SPECIAL_THANKS, 0 + db AKITO_MORI, 1 + db TAKAHIRO_HARADA, 2 + db SATORU_IWATA, 3 + + db CREDITS_WAIT, 12 + + db SPECIAL_THANKS, 0 + db HIROYUKI_ZINNAI, 1 + db KUNIMI_KAWAMURA, 2 + db KIMIKO_NAKAMICHI, 3 + + db CREDITS_WAIT, 12 + + db EXECUTIVE_PRODUCER, 1 + db HIROSHI_YAMAUCHI, 2 + + db CREDITS_WAIT, 12 + + db COPYRIGHT, 0 + + db CREDITS_WAIT, 20 + + db CREDITS_WAIT, 19 + +; Display "The End" graphic. + db CREDITS_THEEND + + db CREDITS_WAIT, 20 + + db CREDITS_END diff --git a/data/credits_strings.asm b/data/credits_strings.asm index d863b56c..53baa850 100644 --- a/data/credits_strings.asm +++ b/data/credits_strings.asm @@ -1,88 +1,88 @@ -CreditsStrings: ; used for BANK(CreditsStrings) +CreditsStrings:: ; used for BANK(CreditsStrings) -Credits_SatoshiTajiri: db " SATOSHI TAJIRI@" ; "たじり さとし@" -Credits_JunichiMasuda: db " JUNICHI MASUDA@" ; "ますだ じゅんいち@" -Credits_TetsuyaWatanabe: db " TETSUYA WATANABE@" ; "わたなべ てつや@" -Credits_ShigekiMorimoto: db " SHIGEKI MORIMOTO@" ; "もりもと しげき@" -Credits_SousukeTamada: db " SOUSUKE TAMADA@" ; "たまだ そうすけ@" -Credits_TakenoriOota: db " TAKENORI OOTA@" ; "おおた たけのり@" -Credits_KenSugimori: db " KEN SUGIMORI@" ; "すぎもり けん@" -Credits_MotofumiFujiwara: db " MOTOFUMI FUJIWARA@" ; "ふじわら もとふみ@" -Credits_AtsukoNishida: db " ATSUKO NISHIDA@" ; "にしだ あつこ@" -Credits_MuneoSaito: db " MUNEO SAITO@" ; "さいとう むねお@" -Credits_SatoshiOota: db " SATOSHI OOTA@" ; "おおた さとし@" -Credits_RenaYoshikawa: db " RENA YOSHIKAWA@" ; "よしかわ れな@" -Credits_JunOkutani: db " JUN OKUTANI@" ; "おくたに じゅん@" -Credits_HironobuYoshida: db " HIRONOBU YOSHIDA@" ; "よしだ ひろのぶ@" -Credits_AsukaIwashita: db " ASUKA IWASHITA@" ; "いわした あすか@" -Credits_GoIchinose: db " GO ICHINOSE@" ; "いちのせ ごう@" -Credits_MorikazuAoki: db " MORIKAZU AOKI@" ; "あおき もりかず@" -Credits_KohjiNishino: db " KOHJI NISHINO@" ; "にしの こうじ@" -Credits_KenjiMatsushima: db " KENJI MATSUSHIMA@" ; "まつしま けんじ@" -Credits_ToshinobuMatsumiya: db "TOSHINOBU MATSUMIYA@" ; "まつみや としのぶ@" -Credits_SatoruIwata: db " SATORU IWATA@" ; "いわた さとる@" -Credits_NobuhiroSeya: db " NOBUHIRO SEYA@" ; "せや のぶひろ@" -Credits_KazuhitoSekine: db " KAZUHITO SEKINE@" ; "せきね かずひと@" -Credits_TetsujiOota: db " TETSUJI OOTA@" ; "おおた てつじ@" -Credits_NclSuperMarioClub: db "NCL SUPER MARIO CLUB@" ; "スーパーマりオクラブ@" -Credits_Sarugakucho: db " SARUGAKUCHO@" ; "さるがくちょう@" -Credits_AkitoMori: db " AKITO MORI@" ; "もり あきと@" -Credits_TakahiroHarada: db " TAKAHIRO HARADA@" ; "はらだ たかひろ@" -Credits_TohruHashimoto: db " TOHRU HASHIMOTO@" ; "はしもと とおる@" -Credits_NoboruMatsumoto: db " NOBORU MATSUMOTO@" ; "まつもと のぼる@" -Credits_TakehiroIzushi: db " TAKEHIRO IZUSHI@" ; "いずし たけひろ@" -Credits_TakashiKawaguchi: db " TAKASHI KAWAGUCHI@" ; "かわぐち たかし@" -Credits_TsunekazuIshihara: db " TSUNEKAZU ISHIHARA@" ; "いしはら つねかず@" -Credits_HiroshiYamauchi: db " HIROSHI YAMAUCHI@" ; "やまうち ひろし@" -Credits_KenjiSaiki: db " KENJI SAIKI@" ; "さいき けんじ@" -Credits_AtsushiTada: db " ATSUSHI TADA@" ; "ただ あつし@" -Credits_NaokoKawakami: db " NAOKO KAWAKAMI@" ; "かわかみ なおこ@" -Credits_HiroyukiZinnai: db " HIROYUKI ZINNAI@" ; "じんない ひろゆき@" -Credits_KunimiKawamura: db " KUNIMI KAWAMURA@" ; "かわむら くにみ@" -Credits_GailTilden: db " GAIL TILDEN@" -Credits_HiroNakamura: db " HIRO NAKAMURA@" -Credits_JeffKalles: db " JEFF KALLES@" -Credits_WilliamGiese: db " WILLIAM GIESE@" -Credits_NobOgasawara: db " NOB OGASAWARA@" -Credits_RandyShoemake: db " RANDY SHOEMAKE@" -Credits_KathyHuguenard: db " KATHY HUGUENARD@" -Credits_JoelSimon: db " JOEL SIMON@" -Credits_TerukiMurakawa: db " TERUKI MURAKAWA@" -Credits_KazuyoshiOsawa: db " KAZUYOSHI OSAWA@" -Credits_KimikoNakamichi: db " KIMIKO NAKAMICHI@" -Credits_End: db "END@" ; "おしまい@" -Credits_Staff: db " #MON" ; "ポケットモンスター" - IF DEF(_GOLD) - next " GOLD VERSION" - ELIF DEF(_SILVER) - next " SILVER VERSION" - ENDC - next " STAFF@" -Credits_Director: db " DIRECTOR@" ; "エグゼクティブ ディレクター@" -Credits_SubDirector: db " SUB DIRECTOR@" -Credits_Programmers: db " PROGRAMMERS@" ; "プログラム@" -Credits_GraphicsDirector: db " GRAPHICS DIRECTOR@" ; "グラフィック ディレクター@" -Credits_MonsterDesign: db " MONSTER DESIGN@" ; "# デザイン@" -Credits_GraphicsDesign: db " GRAPHICS DESIGN@" ; "グラフィック デザイン@" -Credits_Music: db " MUSIC@" ; "おんがく@" -Credits_SoundEffects: db " SOUND EFFECTS@" ; "サウンド エフェクト@" -Credits_GameDesign: db " GAME DESIGN@" ; "ゲームデザイン@" -Credits_GameScenario: db " GAME SCENARIO@" ; "シナりオ@" -Credits_ToolProgramming: db " TOOL PROGRAMMING@" ; "ツール プログラム@" -Credits_ParametricDesign: db " PARAMETRIC DESIGN@" ; "パラメーター せってい@" -Credits_ScriptDesign: db " SCRIPT DESIGN@" ; "スクりプト せってい@" -Credits_MapDataDesign: db " MAP DATA DESIGN@" ; "マップデータ せってい@" -Credits_MapDesign: db " MAP DESIGN@" ; "マップ デザイン@" -Credits_ProductTesting: db " PRODUCT TESTING@" ; "デバッグプレイ@" -Credits_SpecialThanks: db " SPECIAL THANKS@" ; "スぺシャルサンクス@" -Credits_Producers: db " PRODUCERS@" ; "プロデューサー@" -Credits_ExecutiveProducer: db " EXECUTIVE PRODUCER@" ; "エグゼクティブ プロデューサー@" -Credits_UsVersionStaff: db " US VERSION STAFF@" -Credits_UsCoordination: db " US COORDINATION@" -Credits_TextTranslation: db " TEXT TRANSLATION@" -Credits_PaadTesting: db " PAAD TESTING@" +Credits_SatoshiTajiri:: db " SATOSHI TAJIRI@" ; "たじり さとし@" +Credits_JunichiMasuda:: db " JUNICHI MASUDA@" ; "ますだ じゅんいち@" +Credits_TetsuyaWatanabe:: db " TETSUYA WATANABE@" ; "わたなべ てつや@" +Credits_ShigekiMorimoto:: db " SHIGEKI MORIMOTO@" ; "もりもと しげき@" +Credits_SousukeTamada:: db " SOUSUKE TAMADA@" ; "たまだ そうすけ@" +Credits_TakenoriOota:: db " TAKENORI OOTA@" ; "おおた たけのり@" +Credits_KenSugimori:: db " KEN SUGIMORI@" ; "すぎもり けん@" +Credits_MotofumiFujiwara:: db " MOTOFUMI FUJIWARA@" ; "ふじわら もとふみ@" +Credits_AtsukoNishida:: db " ATSUKO NISHIDA@" ; "にしだ あつこ@" +Credits_MuneoSaito:: db " MUNEO SAITO@" ; "さいとう むねお@" +Credits_SatoshiOota:: db " SATOSHI OOTA@" ; "おおた さとし@" +Credits_RenaYoshikawa:: db " RENA YOSHIKAWA@" ; "よしかわ れな@" +Credits_JunOkutani:: db " JUN OKUTANI@" ; "おくたに じゅん@" +Credits_HironobuYoshida:: db " HIRONOBU YOSHIDA@" ; "よしだ ひろのぶ@" +Credits_AsukaIwashita:: db " ASUKA IWASHITA@" ; "いわした あすか@" +Credits_GoIchinose:: db " GO ICHINOSE@" ; "いちのせ ごう@" +Credits_MorikazuAoki:: db " MORIKAZU AOKI@" ; "あおき もりかず@" +Credits_KohjiNishino:: db " KOHJI NISHINO@" ; "にしの こうじ@" +Credits_KenjiMatsushima:: db " KENJI MATSUSHIMA@" ; "まつしま けんじ@" +Credits_ToshinobuMatsumiya:: db "TOSHINOBU MATSUMIYA@" ; "まつみや としのぶ@" +Credits_SatoruIwata:: db " SATORU IWATA@" ; "いわた さとる@" +Credits_NobuhiroSeya:: db " NOBUHIRO SEYA@" ; "せや のぶひろ@" +Credits_KazuhitoSekine:: db " KAZUHITO SEKINE@" ; "せきね かずひと@" +Credits_TetsujiOota:: db " TETSUJI OOTA@" ; "おおた てつじ@" +Credits_NclSuperMarioClub:: db "NCL SUPER MARIO CLUB@" ; "スーパーマりオクラブ@" +Credits_Sarugakucho:: db " SARUGAKUCHO@" ; "さるがくちょう@" +Credits_AkitoMori:: db " AKITO MORI@" ; "もり あきと@" +Credits_TakahiroHarada:: db " TAKAHIRO HARADA@" ; "はらだ たかひろ@" +Credits_TohruHashimoto:: db " TOHRU HASHIMOTO@" ; "はしもと とおる@" +Credits_NoboruMatsumoto:: db " NOBORU MATSUMOTO@" ; "まつもと のぼる@" +Credits_TakehiroIzushi:: db " TAKEHIRO IZUSHI@" ; "いずし たけひろ@" +Credits_TakashiKawaguchi:: db " TAKASHI KAWAGUCHI@" ; "かわぐち たかし@" +Credits_TsunekazuIshihara:: db " TSUNEKAZU ISHIHARA@" ; "いしはら つねかず@" +Credits_HiroshiYamauchi:: db " HIROSHI YAMAUCHI@" ; "やまうち ひろし@" +Credits_KenjiSaiki:: db " KENJI SAIKI@" ; "さいき けんじ@" +Credits_AtsushiTada:: db " ATSUSHI TADA@" ; "ただ あつし@" +Credits_NaokoKawakami:: db " NAOKO KAWAKAMI@" ; "かわかみ なおこ@" +Credits_HiroyukiZinnai:: db " HIROYUKI ZINNAI@" ; "じんない ひろゆき@" +Credits_KunimiKawamura:: db " KUNIMI KAWAMURA@" ; "かわむら くにみ@" +Credits_GailTilden:: db " GAIL TILDEN@" +Credits_HiroNakamura:: db " HIRO NAKAMURA@" +Credits_JeffKalles:: db " JEFF KALLES@" +Credits_WilliamGiese:: db " WILLIAM GIESE@" +Credits_NobOgasawara:: db " NOB OGASAWARA@" +Credits_RandyShoemake:: db " RANDY SHOEMAKE@" +Credits_KathyHuguenard:: db " KATHY HUGUENARD@" +Credits_JoelSimon:: db " JOEL SIMON@" +Credits_TerukiMurakawa:: db " TERUKI MURAKAWA@" +Credits_KazuyoshiOsawa:: db " KAZUYOSHI OSAWA@" +Credits_KimikoNakamichi:: db " KIMIKO NAKAMICHI@" +Credits_End:: db "END@" ; "おしまい@" +Credits_Staff:: db " #MON" ; "ポケットモンスター" + IF DEF(_GOLD) + next " GOLD VERSION" + ELIF DEF(_SILVER) + next " SILVER VERSION" + ENDC + next " STAFF@" +Credits_Director:: db " DIRECTOR@" ; "エグゼクティブ ディレクター@" +Credits_SubDirector:: db " SUB DIRECTOR@" +Credits_Programmers:: db " PROGRAMMERS@" ; "プログラム@" +Credits_GraphicsDirector:: db " GRAPHICS DIRECTOR@" ; "グラフィック ディレクター@" +Credits_MonsterDesign:: db " MONSTER DESIGN@" ; "# デザイン@" +Credits_GraphicsDesign:: db " GRAPHICS DESIGN@" ; "グラフィック デザイン@" +Credits_Music:: db " MUSIC@" ; "おんがく@" +Credits_SoundEffects:: db " SOUND EFFECTS@" ; "サウンド エフェクト@" +Credits_GameDesign:: db " GAME DESIGN@" ; "ゲームデザイン@" +Credits_GameScenario:: db " GAME SCENARIO@" ; "シナりオ@" +Credits_ToolProgramming:: db " TOOL PROGRAMMING@" ; "ツール プログラム@" +Credits_ParametricDesign:: db " PARAMETRIC DESIGN@" ; "パラメーター せってい@" +Credits_ScriptDesign:: db " SCRIPT DESIGN@" ; "スクりプト せってい@" +Credits_MapDataDesign:: db " MAP DATA DESIGN@" ; "マップデータ せってい@" +Credits_MapDesign:: db " MAP DESIGN@" ; "マップ デザイン@" +Credits_ProductTesting:: db " PRODUCT TESTING@" ; "デバッグプレイ@" +Credits_SpecialThanks:: db " SPECIAL THANKS@" ; "スぺシャルサンクス@" +Credits_Producers:: db " PRODUCERS@" ; "プロデューサー@" +Credits_ExecutiveProducer:: db " EXECUTIVE PRODUCER@" ; "エグゼクティブ プロデューサー@" +Credits_UsVersionStaff:: db " US VERSION STAFF@" +Credits_UsCoordination:: db " US COORDINATION@" +Credits_TextTranslation:: db " TEXT TRANSLATION@" +Credits_PaadTesting:: db " PAAD TESTING@" -Credits_Copyright: +Credits_Copyright:: ; (C) 1 9 9 5 - 2 0 0 0 N i n t e n d o db $60,$61,$62,$63,$7a,$7b,$7c,$7d,$65,$66,$67,$68,$69,$6a ; (C) 1 9 9 5 - 2 0 0 0 C r e a t u r e s i n c . diff --git a/engine/events/halloffame.asm b/engine/events/halloffame.asm new file mode 100755 index 00000000..53ab9f9a --- /dev/null +++ b/engine/events/halloffame.asm @@ -0,0 +1,610 @@ +HALLOFFAME_COLON EQU $63 + +HallOfFame:: + call HallOfFame_FadeOutMusic + ld a, [wStatusFlags] + push af + ld a, 1 + ld [wGameLogicPaused], a + call DisableSpriteUpdates + ld a, SPAWN_LANCE + ld [wSpawnAfterChampion], a + + ; Enable the Pokégear map to cycle through all of Kanto + ld hl, wStatusFlags + set STATUSFLAGS_HALL_OF_FAME_F, [hl] + +; Bug: Gold/Silver fail to (conditionally) erase the previous save and +; initialize the current save, if the player did not save on this playthrough! + + ld hl, wHallOfFameCount + ld a, [hl] + cp HOF_MASTER_COUNT + jr nc, .ok + inc [hl] +.ok + farcall SaveGameData + call GetHallOfFameParty + farcall AddHallOfFameEntry + + xor a + ld [wGameLogicPaused], a + call AnimateHallOfFame + pop af + jp Credits + +RedCredits:: + ld a, LOW(MUSIC_NONE) + ld [wMusicFadeID], a + ld a, HIGH(MUSIC_NONE) + ld [wMusicFadeID + 1], a + ld a, 10 + ld [wMusicFade], a + farcall FadeOutPalettes + xor a + ld [wVramState], a + ldh [hMapAnims], a + farcall InitDisplayForRedCredits + ld c, 8 + call DelayFrames + call DisableSpriteUpdates + ld a, SPAWN_RED + ld [wSpawnAfterChampion], a + ld a, [wStatusFlags] + jp Credits + +HallOfFame_FadeOutMusic: + ld a, LOW(MUSIC_NONE) + ld [wMusicFadeID], a + ld a, HIGH(MUSIC_NONE) + ld [wMusicFadeID + 1], a + ld a, 10 + ld [wMusicFade], a + farcall FadeOutPalettes + xor a + ld [wVramState], a + ldh [hMapAnims], a + farcall InitDisplayForHallOfFame + ld c, 100 + jp DelayFrames + +HallOfFame_PlayMusicDE:: + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + call PlayMusic + ret + +AnimateHallOfFame: + xor a + ld [wJumptableIndex], a + call LoadHOFTeam + jr c, .done + ld de, MUSIC_HALL_OF_FAME + call HallOfFame_PlayMusicDE + xor a + ld [wHallOfFameMonCounter], a +.loop + ld a, [wHallOfFameMonCounter] + cp PARTY_LENGTH + jr nc, .done + ld hl, wHallOfFameTempMon1 + ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1 + call AddNTimes + ld a, [hl] + cp -1 + jr z, .done + push hl + call AnimateHOFMonEntrance + pop hl + call .DisplayNewHallOfFamer + jr c, .done + ld hl, wHallOfFameMonCounter + inc [hl] + jr .loop + +.done + call HOF_AnimatePlayerPic + ld a, 4 + ld [wMusicFade], a + call RotateThreePalettesRight + ld c, 8 + call DelayFrames + ret + +.DisplayNewHallOfFamer: + call DisplayHOFMon + ld de, .String_NewHallOfFamer + hlcoord 1, 2 + call PlaceString + call WaitBGMap + ld a, [wCurPartySpecies] + call PlayMonCry + ld c, 180 + call DelayFrames + and a + ret + +.String_NewHallOfFamer: + db "New Hall of Famer!@" + +GetHallOfFameParty: + ld hl, wHallOfFamePokemonList + ld bc, wHallOfFamePokemonListEnd - wHallOfFamePokemonList + 1 + xor a + call ByteFill + ld a, [wHallOfFameCount] + ld de, wHallOfFamePokemonList + ld [de], a + inc de + ld hl, wPartySpecies + ld c, 0 +.next + ld a, [hli] + cp -1 + jr z, .done + cp EGG + jr nz, .mon + inc c + jr .next + +.mon + push hl + push de + push bc + + ld a, c + ld hl, wPartyMons + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld c, l + ld b, h + + ld hl, MON_SPECIES + add hl, bc + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_ID + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_DVS + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + ld [de], a + inc de + + pop bc + push bc + ld a, c + ld hl, wPartyMonNicknames + ld bc, MON_NAME_LENGTH + call AddNTimes + ld bc, MON_NAME_LENGTH - 1 + call CopyBytes + + pop bc + inc c + pop de + ld hl, wHallOfFamePokemonListMon1End - wHallOfFamePokemonListMon1 + add hl, de + ld e, l + ld d, h + pop hl + jr .next + +.done + ld a, -1 + ld [de], a + ret + +AnimateHOFMonEntrance: + push hl + call ClearBGPalettes + pop hl + ld a, [hli] + ld [wTempMonSpecies], a + ld [wCurPartySpecies], a + inc hl + inc hl + ld a, [hli] + ld [wTempMonDVs], a + ld a, [hli] + ld [wTempMonDVs + 1], a + ld hl, wTempMonDVs + predef GetUnownLetter + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ld de, vTiles2 tile $31 + predef GetMonBackpic + ld a, $31 + ldh [hGraphicStartTile], a + hlcoord 6, 6 + lb bc, 6, 6 + predef PlaceGraphic + ld a, $d0 + ldh [hSCY], a + ld a, $90 + ldh [hSCX], a + call WaitBGMap + xor a + ldh [hBGMapMode], a + ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call SetPalettes + call HOF_SlideBackpic + xor a + ld [wBoxAlignment], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + hlcoord 6, 5 + call _PrepMonFrontpic + call WaitBGMap + xor a + ldh [hBGMapMode], a + ldh [hSCY], a + call HOF_SlideFrontpic + ret + +HOF_SlideBackpic: +.backpicloop + ldh a, [hSCX] + cp $70 + ret z + add 4 + ldh [hSCX], a + call DelayFrame + jr .backpicloop + +HOF_SlideFrontpic: +.frontpicloop + ldh a, [hSCX] + and a + ret z + dec a + dec a + ldh [hSCX], a + call DelayFrame + jr .frontpicloop + +_HallOfFamePC: + call LoadFontsBattleExtra + xor a + ld [wJumptableIndex], a +.MasterLoop: + call LoadHOFTeam + ret c + call .DisplayTeam + ret c + ld hl, wJumptableIndex + inc [hl] + jr .MasterLoop + +.DisplayTeam: + xor a + ld [wHallOfFameMonCounter], a +.next + call .DisplayMonAndStrings + jr c, .start_button +.loop + call JoyTextDelay + ld hl, hJoyLast + ld a, [hl] + and B_BUTTON + jr nz, .b_button + ld a, [hl] + and A_BUTTON + jr nz, .a_button + ld a, [hl] + and START + jr nz, .start_button + call DelayFrame + jr .loop + +.a_button + ld hl, wHallOfFameMonCounter + inc [hl] + jr .next + +.b_button + scf + ret + +.start_button + and a + ret + +.DisplayMonAndStrings: +; Print the number of times the player has entered the Hall of Fame. +; If that number is at least HOF_MASTER_COUNT, print "HOF Master!" instead. + ld a, [wHallOfFameMonCounter] + cp PARTY_LENGTH + jr nc, .fail + ld hl, wHallOfFameTempMon1 + ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1 + call AddNTimes + ld a, [hl] + cp -1 + jr nz, .okay + +.fail + scf + ret + +.okay + push hl + call ClearBGPalettes + pop hl + call DisplayHOFMon + ld a, [wHallOfFameTempWinCount] + cp HOF_MASTER_COUNT + 1 ; should be HOF_MASTER_COUNT + jr c, .print_num_hof + ld de, .HOFMaster + hlcoord 1, 2 + call PlaceString + hlcoord 13, 2 + jr .finish + +.print_num_hof + ld de, .TimeFamer + hlcoord 1, 2 + call PlaceString + hlcoord 2, 2 + ld de, wHallOfFameTempWinCount + lb bc, 1, 3 + call PrintNum + hlcoord 11, 2 + +.finish + ld de, .EmptyString1 + call PlaceString + call WaitBGMap + ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call SetPalettes + ld a, [wCurPartySpecies] + call PlayMonCry + and a + ret + +.EmptyString1: + db "@" + +.EmptyString2: + db "@" + +.HOFMaster: + db " HOF Master!@" + +.TimeFamer: + db " -Time Famer@" + +LoadHOFTeam: + ld a, [wJumptableIndex] + cp NUM_HOF_TEAMS + jr nc, .invalid + ld hl, sHallOfFame + ld bc, wHallOfFameTempEnd - wHallOfFameTemp + 1 + call AddNTimes + ld a, BANK(sHallOfFame) + call OpenSRAM + ld a, [hl] + and a + jr z, .absent + ld de, wHallOfFameTemp + ld bc, wHallOfFameTempEnd - wHallOfFameTemp + 1 + call CopyBytes + call CloseSRAM + and a + ret + +.absent + call CloseSRAM + +.invalid + scf + ret + +DisplayHOFMon: + xor a + ldh [hBGMapMode], a + ld a, [hli] + ld [wTempMonSpecies], a + ld a, [hli] + ld [wTempMonID], a + ld a, [hli] + ld [wTempMonID + 1], a + ld a, [hli] + ld [wTempMonDVs], a + ld a, [hli] + ld [wTempMonDVs + 1], a + ld a, [hli] + ld [wTempMonLevel], a + ld de, wStringBuffer2 + ld bc, MON_NAME_LENGTH - 1 + call CopyBytes + ld a, "@" + ld [wStringBuffer2 + MON_NAME_LENGTH - 1], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + hlcoord 0, 0 + lb bc, 3, SCREEN_WIDTH - 2 + call Textbox + hlcoord 0, 12 + lb bc, 4, SCREEN_WIDTH - 2 + call Textbox + ld a, [wTempMonSpecies] + ld [wCurPartySpecies], a + ld [wDeciramBuffer], a + ld hl, wTempMonDVs + predef GetUnownLetter + xor a + ld [wBoxAlignment], a + hlcoord 6, 5 + call _PrepMonFrontpic + ld a, [wCurPartySpecies] + cp EGG + jr z, .print_id_no + hlcoord 1, 13 + ld a, "№" + ld [hli], a + ld [hl], "." + hlcoord 3, 13 + ld de, wDeciramBuffer + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + call GetBasePokemonName + hlcoord 7, 13 + call PlaceString + ld a, TEMPMON + ld [wMonType], a + farcall GetGender + ld a, " " + jr c, .got_gender + ld a, "♂" + jr nz, .got_gender + ld a, "♀" + +.got_gender + hlcoord 18, 13 + ld [hli], a + hlcoord 8, 14 + ld a, "/" + ld [hli], a + ld de, wStringBuffer2 + call PlaceString + hlcoord 1, 16 + call PrintLevel + +.print_id_no + hlcoord 7, 16 + ld a, "<ID>" + ld [hli], a + ld a, "№" + ld [hli], a + ld [hl], "/" + hlcoord 10, 16 + ld de, wTempMonID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ret + +HOF_AnimatePlayerPic: + call ClearBGPalettes + ld hl, vTiles2 tile HALLOFFAME_COLON + ld de, FontExtra + 13 tiles ; "<COLON>" + lb bc, BANK(FontExtra), 1 + call Request2bpp + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + + ld hl, ChrisBackpic + ld de, vTiles2 tile $31 + ld b, BANK(ChrisBackpic) + ld c, 7 * 7 + predef DecompressGet2bpp + + ld a, $31 + ldh [hGraphicStartTile], a + hlcoord 6, 6 + lb bc, 6, 6 + predef PlaceGraphic + ld a, $d0 + ldh [hSCY], a + ld a, $90 + ldh [hSCX], a + call WaitBGMap + xor a + ldh [hBGMapMode], a + ld [wCurPartySpecies], a + ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call SetPalettes + call HOF_SlideBackpic + xor a + ld [wBoxAlignment], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ld a, CAL + ld [wTrainerClass], a + ld de, vTiles2 + farcall GetTrainerPic + xor a + ldh [hGraphicStartTile], a + hlcoord 12, 5 + lb bc, 7, 7 + predef PlaceGraphic + ld a, $c0 + ldh [hSCX], a + call WaitBGMap + xor a + ldh [hBGMapMode], a + ldh [hSCY], a + call HOF_SlideFrontpic + xor a + ldh [hBGMapMode], a + hlcoord 0, 2 + lb bc, 8, 9 + call Textbox + hlcoord 0, 12 + lb bc, 4, 18 + call Textbox + hlcoord 2, 4 + ld de, wPlayerName + call PlaceString + hlcoord 1, 6 + ld a, "<ID>" + ld [hli], a + ld a, "№" + ld [hli], a + ld [hl], "/" + hlcoord 4, 6 + ld de, wPlayerID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + hlcoord 1, 8 + ld de, .PlayTime + call PlaceString + hlcoord 3, 9 + ld de, wGameTimeHours + lb bc, 2, 3 + call PrintNum + ld [hl], HALLOFFAME_COLON + inc hl + ld de, wGameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + call WaitBGMap + farcall ProfOaksPCRating + ret + +.PlayTime: + db "PLAY TIME@" diff --git a/engine/gfx/color.asm b/engine/gfx/color.asm index a39ab794..37b1d7ba 100755 --- a/engine/gfx/color.asm +++ b/engine/gfx/color.asm @@ -76,7 +76,7 @@ Unused_CheckShininess: and a ret -Function908e: +SGB_ApplyCreditsPals:: push de push bc ld hl, PalPacket_a155 diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm new file mode 100755 index 00000000..533c3d79 --- /dev/null +++ b/engine/movie/credits.asm @@ -0,0 +1,632 @@ +INCLUDE "constants.asm" + + +SECTION "Credits", ROMX + +Credits:: + ld b, a + bit 6, b ; Hall Of Fame + ld a, $0 + jr z, .okay + ld a, $40 +.okay + ld [wJumptableIndex], a + + call ClearBGPalettes + call ClearTilemap + call ClearSprites + + ld hl, wCreditsBlankFrame2bpp + ld c, (wCreditsBlankFrame2bppEnd - wCreditsBlankFrame2bpp) / 2 + ld de, `22222222 ; eight pixels, each color #2 (dark) + +; Fill wCreditsBlankFrame2bpp with 4x4=16 tiles, all solid dark color +; (the same color used for the four border frame mons' backgrounds) + +.load_loop + ld a, e + ld [hli], a + ld a, d + ld [hli], a + dec c + jr nz, .load_loop + + ld de, CreditsBorderGFX + ld hl, vTiles2 tile $20 + lb bc, BANK(CreditsBorderGFX), 9 + call Request2bpp + + ld de, CopyrightGFX + ld hl, vTiles2 tile $60 + lb bc, BANK(CopyrightGFX), 30 + call Request2bpp + + ld de, TheEndGFX + ld hl, vTiles2 tile $40 + lb bc, BANK(TheEndGFX), 16 + call Request2bpp + + ld a, $ff + ld [wCreditsBorderFrame], a + xor a + ld [wCreditsBorderMon], a + + call Credits_LoadBorderGFX + ld e, l + ld d, h + ld hl, vTiles2 + lb bc, BANK(CreditsMonsGFX), 16 + call Request2bpp + + call ConstructCreditsTilemap + xor a + ld [wCreditsLYOverride], a + + ld hl, wLYOverrides + ld bc, $100 + xor a + call ByteFill + + ld a, LOW(rSCX) + ldh [hLCDCPointer], a + + call GetCreditsPalette + call SetPalettes + ldh a, [hVBlank] + push af + ld a, 5 + ldh [hVBlank], a + ld a, 1 + ldh [hInMenu], a + xor a + ldh [hBGMapMode], a + ld [wCreditsPos], a + ld [wCreditsPos + 1], a + ld [wCreditsTimer], a + +.execution_loop + call Credits_HandleBButton + call Credits_HandleAButton + jr nz, .exit_credits + + call Credits_Jumptable + call DelayFrame + jr .execution_loop + +.exit_credits + call ClearBGPalettes + xor a + ldh [hLCDCPointer], a + ldh [hBGMapAddress], a + pop af + ldh [hVBlank], a + ret + +Credits_HandleAButton: + ldh a, [hJoypadDown] + and A_BUTTON + ret z + ld a, [wJumptableIndex] + bit 7, a + ret + +Credits_HandleBButton: + ldh a, [hJoypadDown] + and B_BUTTON + ret z + ld a, [wJumptableIndex] + bit 6, a + ret z + ld hl, wCreditsPos + ld a, [hli] + cp $d + jr nc, .okay + ld a, [hli] + and a + ret z +.okay + ld hl, wCreditsTimer + ld a, [hl] + and a + ret z + dec [hl] + ret + +Credits_Jumptable: + ld a, [wJumptableIndex] + and $f + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable: + dw ParseCredits + dw Credits_Next + dw Credits_Next + dw Credits_Next + dw Credits_PrepBGMapUpdate + dw Credits_UpdateGFXRequestPath + dw Credits_RequestGFX + dw Credits_LYOverride + dw Credits_Next + dw Credits_Next + dw Credits_Next + dw Credits_Next + dw Credits_LoopBack + +Credits_Next: + ld hl, wJumptableIndex + inc [hl] + ret + +Credits_LoopBack: + ld hl, wJumptableIndex + ld a, [hl] + and $f0 + ld [hl], a + ret + +Credits_PrepBGMapUpdate: + xor a + ldh [hBGMapMode], a + jp Credits_Next + +Credits_UpdateGFXRequestPath: + call Credits_LoadBorderGFX + ld a, l + ld [wRequested2bppSource], a + ld a, h + ld [wRequested2bppSource + 1], a + ld a, LOW(vTiles2) + ld [wRequested2bppDest], a + ld a, HIGH(vTiles2) + ld [wRequested2bppDest + 1], a + jr Credits_RequestGFX + +Credits_RequestGFX: + xor a + ldh [hBGMapMode], a + ld a, 8 + ld [wRequested2bpp], a + jp Credits_Next + +Credits_LYOverride: + ldh a, [rLY] + cp $30 + jr c, Credits_LYOverride + ld a, [wCreditsLYOverride] + inc a + inc a + ld [wCreditsLYOverride], a + ld hl, wLYOverrides + $1f + call .Fill + ld hl, wLYOverrides + $67 + call .Fill + jp Credits_Next + +.Fill: + ld c, 8 +.loop + ld [hli], a + dec c + jr nz, .loop + ret + +ParseCredits: + ld hl, wJumptableIndex + bit 7, [hl] + jp nz, .done + +; Wait until the timer has run out to parse the next command. + ld hl, wCreditsTimer + ld a, [hl] + and a + jr z, .parse + +; One tick has passed. + dec [hl] + jp .done + +.parse +; First, let's clear the current text display, +; starting from line 5. + xor a + ldh [hBGMapMode], a + hlcoord 0, 5 + ld bc, SCREEN_WIDTH * 8 + ld a, " " + call ByteFill + +; Then read the script. + +.loop + call .get + +; Commands: + cp CREDITS_END + jp z, .end + cp CREDITS_WAIT + jr z, .wait + cp CREDITS_SCENE + jr z, .scene + cp CREDITS_CLEAR + jr z, .clear + cp CREDITS_MUSIC + jr z, .music + cp CREDITS_WAIT2 + jr z, .wait2 + cp CREDITS_THEEND + jr z, .theend + +; If it's not a command, it's a string identifier. + + push af + ld e, a + ld d, 0 + ld hl, CreditsStringsPointers + add hl, de + add hl, de + ld a, [hli] + ld d, [hl] + ld e, a + pop af + +; Strings spanning multiple lines have special cases. + + cp COPYRIGHT + jr z, .copyright + + cp STAFF + jr c, .staff + +; The rest start from line 6. + + hlcoord 0, 6 + jr .print + +.copyright + hlcoord 2, 6 + jr .print + +.staff + hlcoord 0, 6 + +.print +; Print strings spaced every two lines. + call .get + ld bc, SCREEN_WIDTH * 2 + call AddNTimes + ld a, BANK(CreditsStrings) + call FarString + jr .loop + +.theend +; Display "The End" graphic. + call Credits_TheEnd + jr .loop + +.scene +; Update the scene number and corresponding palette. + call .get + ld [wCreditsBorderMon], a ; scene + xor a + ld [wCreditsBorderFrame], a ; frame + call GetCreditsPalette + call SetPalettes ; update hw pal registers + jr .loop + +.clear +; Clear the banner. + ld a, $ff + ld [wCreditsBorderFrame], a ; frame + jr .loop + +.music +; Play the credits music. + ld de, MUSIC_CREDITS + call HallOfFame_PlayMusicDE + jr .loop + +.wait2 +; Wait for some amount of ticks. + call .get + ld [wCreditsTimer], a + jr .done + +.wait +; Wait for some amount of ticks, and do something else. + call .get + ld [wCreditsTimer], a + + xor a + ldh [hBGMapThird], a + ld a, 1 + ldh [hBGMapMode], a + +.done + jp Credits_Next + +.end +; Stop execution. + ld hl, wJumptableIndex + set 7, [hl] + ld a, 32 + ld [wMusicFade], a + ld a, LOW(MUSIC_POST_CREDITS) + ld [wMusicFadeID], a + ld a, HIGH(MUSIC_POST_CREDITS) + ld [wMusicFadeID + 1], a + ret + +.get +; Get byte wCreditsPos from CreditsScript + push hl + push de + ld a, [wCreditsPos] + ld e, a + ld a, [wCreditsPos + 1] + ld d, a + ld hl, CreditsScript + add hl, de + + inc de + ld a, e + ld [wCreditsPos], a + ld a, d + ld [wCreditsPos + 1], a + ld a, [hl] + pop de + pop hl + ret + +ConstructCreditsTilemap: + xor a + ldh [hBGMapMode], a + ld a, $c + ldh [hBGMapAddress], a + + ld a, $28 + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + call ByteFill + + ld a, $7f + hlcoord 0, 4 + ld bc, 10 * SCREEN_WIDTH + call ByteFill + + hlcoord 0, 4 + ld a, $24 + call DrawCreditsBorder + + hlcoord 0, 13 + ld a, $20 + call DrawCreditsBorder + + hlcoord 0, 0, wAttrmap + ld bc, 4 * SCREEN_WIDTH + xor a + call ByteFill + + hlcoord 0, 4, wAttrmap + ld bc, 10 * SCREEN_WIDTH + ld a, $1 + call ByteFill + + hlcoord 0, 14, wAttrmap + ld bc, 4 * SCREEN_WIDTH + xor a + call ByteFill + + call WaitBGMap2 + xor a + ldh [hBGMapMode], a + ldh [hBGMapAddress], a + hlcoord 0, 0 + call .InitTopPortion + hlcoord 0, 14 + call .InitTopPortion + call WaitBGMap2 + ret + +.InitTopPortion: + ld b, 5 +.outer_loop + push hl + ld de, SCREEN_WIDTH - 3 + ld c, 4 + xor a +.inner_loop +rept 3 + ld [hli], a + inc a +endr + ld [hl], a + inc a + add hl, de + dec c + jr nz, .inner_loop + pop hl +rept 4 + inc hl +endr + dec b + jr nz, .outer_loop + ret + +DrawCreditsBorder: + ld c, SCREEN_WIDTH / 4 +.loop + push af +rept 3 + ld [hli], a + inc a +endr + ld [hli], a + pop af + dec c + jr nz, .loop + ret + +GetCreditsPalette: + ldh a, [hCGB] + and a + jr nz, .asm_6bcf + + ldh a, [hSGB] + and a + ret z + + call .GetPalAddress + inc hl + inc hl + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld d, [hl] + farcall SGB_ApplyCreditsPals + ret + +.asm_6bcf + call .GetPalAddress + + push hl + ld a, 0 + call .UpdatePals + pop hl + ld a, 8 + call .UpdatePals + + ld hl, wBGPals1 palette PAL_BG_RED color 3 + xor a + ld [hli], a + ld [hl], a + ld hl, wBGPals2 palette PAL_BG_RED color 3 + xor a + ld [hli], a + ld [hl], a + ret + +.GetPalAddress: +; Each set of palette data is 8 bytes long. + ld a, [wCreditsBorderMon] ; scene + and %11 + add a + add a ; * 8 + add a + ld e, a + ld d, 0 + ld hl, CreditsPalettes + add hl, de + ret + +.UpdatePals: +; Update the first three colors in both palette buffers. + push af + push hl + add LOW(wBGPals1) + ld e, a + ld a, 0 + adc HIGH(wBGPals1) + ld d, a + ld bc, 8 + call CopyBytes + + pop hl + pop af + add LOW(wBGPals2) + ld e, a + ld a, 0 + adc HIGH(wBGPals2) + ld d, a + ld bc, 8 + call CopyBytes + ret + +CreditsPalettes: +INCLUDE "gfx/credits/credits.pal" + +Credits_LoadBorderGFX: + ld hl, wCreditsBorderFrame + ld a, [hl] + cp $ff + jr z, .init + + and %11 + ld e, a + inc a + and %11 + ld [hl], a + ld a, [wCreditsBorderMon] + and %11 + add a + add a + add e + add a + ld e, a + ld d, 0 + ld hl, .Frames + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret + +.init + ld hl, wCreditsBlankFrame2bpp + ret + +.Frames: + dw CreditsBellossomGFX + dw CreditsBellossomGFX + 16 tiles + dw CreditsBellossomGFX + dw CreditsBellossomGFX + 32 tiles + + dw CreditsTogepiGFX + dw CreditsTogepiGFX + 16 tiles + dw CreditsTogepiGFX + dw CreditsTogepiGFX + 32 tiles + + dw CreditsElekidGFX + dw CreditsElekidGFX + 16 tiles + dw CreditsElekidGFX + dw CreditsElekidGFX + 32 tiles + + dw CreditsSentretGFX + dw CreditsSentretGFX + 16 tiles + dw CreditsSentretGFX + 32 tiles + dw CreditsSentretGFX + 48 tiles + +Credits_TheEnd: + ld a, $40 + hlcoord 6, 8 + call .Load + hlcoord 6, 9 +.Load: + ld c, 8 +.loop + ld [hli], a + inc a + dec c + jr nz, .loop + ret + +CreditsBorderGFX: INCBIN "gfx/credits/border.2bpp" + +CreditsMonsGFX: ; used only for BANK(CreditsMonsGFX) +CreditsBellossomGFX: INCBIN "gfx/credits/bellossom.2bpp" +CreditsTogepiGFX: INCBIN "gfx/credits/togepi.2bpp" +CreditsElekidGFX: INCBIN "gfx/credits/elekid.2bpp" +CreditsSentretGFX: INCBIN "gfx/credits/sentret.2bpp" + +INCLUDE "data/credits_script.asm" +INCLUDE "data/credits_strings_pointers.asm" diff --git a/engine/printer/printer.asm b/engine/printer/printer.asm new file mode 100755 index 00000000..df8ca355 --- /dev/null +++ b/engine/printer/printer.asm @@ -0,0 +1,918 @@ +SendScreenToPrinter: +.loop + call JoyTextDelay + call CheckCancelPrint + jr c, .cancel + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finished + call PrinterJumptableIteration + call CheckPrinterStatus + call PlacePrinterStatusString + call DelayFrame + jr .loop + +.finished + and a + ret + +.cancel + scf + ret + +Printer_CleanUpAfterSend: + xor a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + ret + +Printer_PrepareTilemapForPrint: + push af + call Printer_StartTransmission + pop af + ld [wPrinterMargins], a + call Printer_CopyTilemapToBuffer + ret + +Printer_ExitPrinter: + call ReturnToMapFromSubmenu + call Printer_RestartMapMusic + ret + +PrintDexEntry: + ld a, [wPrinterQueueLength] + push af + + ld hl, vTiles1 + ld de, FontInversed + lb bc, BANK(FontInversed), $80 + call Request1bpp + + xor a + ldh [hPrinter], a + call Printer_PlayMusic + + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + + call Printer_StartTransmission + ln a, 1, 0 + ld [wPrinterMargins], a + farcall PrintPage1 + call ClearTilemap + ld a, %11100100 + call DmgToCgbBGPals + call DelayFrame + + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + + ld a, 8 ; 16 rows + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter + jr c, .skip_second_page ; canceled or got an error + + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + xor a + ldh [hBGMapMode], a + + call Printer_StartTransmission + ln a, 0, 3 + ld [wPrinterMargins], a + farcall PrintPage2 + call Printer_ResetJoypadRegisters + ld a, 4 + ld [wPrinterQueueLength], a + call SendScreenToPrinter + +.skip_second_page + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + + xor a + ldh [rIF], a + pop af + ldh [rIE], a + + call Printer_ExitPrinter + ld c, 8 +.low_volume_delay_frames + call LowVolume + call DelayFrame + dec c + jr nz, .low_volume_delay_frames + + pop af + ld [wPrinterQueueLength], a + ret + +PrintPCBox: + ld a, [wPrinterQueueLength] + push af + ld a, 18 / 2 + ld [wPrinterQueueLength], a + + ld a, e + ld [wAddrOfBoxToPrint], a + ld a, d + ld [wAddrOfBoxToPrint + 1], a + ld a, b + ld [wBankOfBoxToPrint], a + ld a, c + ld [wWhichBoxToPrint], a + + xor a + ldh [hPrinter], a + ld [wFinishedPrintingBox], a + call Printer_PlayMusic + + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + + xor a + ldh [hBGMapMode], a + call PrintPCBox_Page1 + ln a, 1, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + xor a + ldh [hBGMapMode], a + call PrintPCBox_Page2 + ln a, 0, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + + xor a + ldh [hBGMapMode], a + call PrintPCBox_Page3 + ln a, 0, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + + xor a + ldh [hBGMapMode], a + call PrintPCBox_Page4 + ln a, 0, 3 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call Printer_ResetRegistersAndStartDataSend +.cancel + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + + xor a + ldh [rIF], a + pop af + ldh [rIE], a + call Printer_ExitPrinter + + pop af + ld [wPrinterQueueLength], a + ret + +Printer_ResetRegistersAndStartDataSend: + call Printer_ResetJoypadRegisters + call SendScreenToPrinter + ret + +PrintUnownStamp: + ld a, [wPrinterQueueLength] + push af + xor a + ldh [hPrinter], a + call Printer_PlayMusic + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + xor a + ldh [hBGMapMode], a + call LoadTilemapToTempTilemap + farcall PlaceUnownPrinterFrontpic + ln a, 0, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call SafeLoadTempTilemapToTilemap + call Printer_ResetJoypadRegisters + ld a, 18 / 2 + ld [wPrinterQueueLength], a +.loop + call JoyTextDelay + call CheckCancelPrint + jr c, .done + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done + call PrinterJumptableIteration + ld a, [wJumptableIndex] + cp $2 + jr nc, .check_status + ld a, 6 / 2 + ld [wPrinterRowIndex], a + +.check_status + call CheckPrinterStatus + call PlacePrinterStatusString + call DelayFrame + jr .loop + +.done + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + call SafeLoadTempTilemapToTilemap + xor a + ldh [rIF], a + pop af + ldh [rIE], a + pop af + ld [wPrinterQueueLength], a + ret + +PrintMailAndExit: + ld a, [wPrinterQueueLength] + push af + xor a + ldh [hPrinter], a + call Printer_PlayMusic + + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + + xor a + ldh [hBGMapMode], a + + ln a, 1, 3 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], 4 + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter + + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + call Printer_CopyBufferToTilemap + + xor a + ldh [rIF], a + pop af + ldh [rIE], a + + call Printer_ExitPrinter + pop af + ld [wPrinterQueueLength], a + ret + +PrintPartymon: + ld a, [wPrinterQueueLength] + push af + xor a + ldh [hPrinter], a + call Printer_PlayMusic + + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + + xor a + ldh [hBGMapMode], a + farcall PrintPartyMonPage1 + ln a, 1, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], 4 + + ld a, 16 / 2 + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter + jr c, .cancel + + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + + xor a + ldh [hBGMapMode], a + farcall PrintPartyMonPage2 + ln a, 0, 3 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter +.cancel + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + + call Printer_CopyBufferToTilemap + xor a + ldh [rIF], a + pop af + ldh [rIE], a + call Printer_ExitPrinter + + pop af + ld [wPrinterQueueLength], a + ret + +_PrintDiploma: + ld a, [wPrinterQueueLength] + push af + + farcall PlaceDiplomaOnScreen + + xor a + ldh [hPrinter], a + call Printer_PlayMusic + + ldh a, [rIE] + push af + xor a + ldh [rIF], a + ld a, (1 << SERIAL) | (1 << VBLANK) + ldh [rIE], a + + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + + ln a, 1, 0 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call Printer_ResetJoypadRegisters + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter + jr c, .cancel + call Printer_CleanUpAfterSend + ld c, 12 + call DelayFrames + + call LoadTilemapToTempTilemap + xor a + ldh [hBGMapMode], a + + farcall PrintDiplomaPage2 + + ln a, 0, 3 ; to be loaded to wPrinterMargins + call Printer_PrepareTilemapForPrint + call SafeLoadTempTilemapToTilemap + call Printer_ResetJoypadRegisters + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter +.cancel + pop af + ldh [hVBlank], a + call Printer_CleanUpAfterSend + + xor a + ldh [rIF], a + pop af + ldh [rIE], a + call Printer_ExitPrinter + + pop af + ld [wPrinterQueueLength], a + ret + +CheckCancelPrint: + ldh a, [hJoyDown] + and B_BUTTON + jr nz, .pressed_b + and a + ret + +.pressed_b + ld a, [wc980] + cp $c + jr nz, .cancel +.loop + ld a, [wPrinterOpcode] + and a + jr nz, .loop + ld a, $16 ; cancel + ld [wPrinterOpcode], a + ld a, $88 + ldh [rSB], a + ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a + ld a, (1 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a +.loop2 + ld a, [wPrinterOpcode] + and a + jr nz, .loop2 + +.cancel + ld a, $1 + ldh [hPrinter], a + scf + ret + +Printer_CopyTilemapToBuffer: + hlcoord 0, 0 + ld de, wPrinterTilemapBuffer + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret + +Printer_CopyBufferToTilemap: + ld hl, wPrinterTilemapBuffer + decoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret + +Printer_ResetJoypadRegisters: + xor a + ldh [hJoyReleased], a + ldh [hJoyPressed], a + ldh [hJoyDown], a + ldh [hJoyLast], a + ret + +Printer_PlayMusic: + ld de, MUSIC_PRINTER + call PlayMusic2 + ret + +Printer_RestartMapMusic: + call RestartMapMusic + ret + +CheckPrinterStatus: +; Check for printer errors +; If [ca88] == -1, we're disconnected + ld a, [wPrinterHandshake] + cp -1 + jr nz, .printer_connected + ld a, [wPrinterStatusFlags] + cp -1 + jr z, .error_2 +.printer_connected +; ca89 contains printer status flags + ld a, [wPrinterStatusFlags] + and %11100000 + ret z ; no error + + bit 7, a + jr nz, .error_1 + bit 6, a + jr nz, .error_4 + ; paper error + ld a, PRINTER_ERROR_3 + jr .load_text_index + +.error_4 + ; temperature error + ld a, PRINTER_ERROR_4 + jr .load_text_index + +.error_1 + ; printer battery low + ld a, PRINTER_ERROR_1 + jr .load_text_index + +.error_2 + ; connection error + ld a, PRINTER_ERROR_2 +.load_text_index + ld [wPrinterStatus], a + ret + +PlacePrinterStatusString: +; Print nonzero printer status + ld a, [wPrinterStatus] + and a + ret z + push af + xor a + ldh [hBGMapMode], a + hlcoord 0, 5 + lb bc, 10, 18 + call Textbox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 1, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 2, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ldh [hBGMapMode], a + xor a + ld [wPrinterStatus], a + ret + +Unreferenced_Function847b9: + ld a, [wPrinterStatus] + and a + ret z + push af + xor a + ldh [hBGMapMode], a + hlcoord 2, 4 + lb bc, 13, 16 + call ClearBox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 4, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 4, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ldh [hBGMapMode], a + xor a + ld [wPrinterStatus], a + ret + +String_PressBToCancel: + db "Press B to Cancel@" + +PrinterStatusStringPointers: + dw GBPrinterString_Null ; @ + dw GBPrinterString_CheckingLink ; CHECKING LINK + dw GBPrinterString_Transmitting ; TRANSMITTING + dw GBPrinterString_Printing ; PRINTING + dw GBPrinterString_PrinterError1 ; error 1 + dw GBPrinterString_PrinterError2 ; error 2 + dw GBPrinterString_PrinterError3 ; error 3 + dw GBPrinterString_PrinterError4 ; error 4 + +PrintPCBox_Page1: + xor a + ld [wWhichBoxMonToPrint], a + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Printer_PlaceEmptyBoxSlotString + + hlcoord 0, 0 + ld bc, 9 * SCREEN_WIDTH + ld a, " " + call ByteFill + + call Printer_PlaceSideBorders + call Printer_PlaceTopBorder + + hlcoord 4, 3 + ld de, .String_PokemonList + call PlaceString + + ld a, [wWhichBoxToPrint] + ld bc, BOX_NAME_LENGTH + ld hl, wBoxNames + call AddNTimes + ld d, h + ld e, l + hlcoord 6, 5 + call PlaceString + ld a, 1 + call Printer_GetBoxMonSpecies + hlcoord 2, 9 + ld c, 3 + call Printer_PrintBoxListSegment + ret + +.String_PokemonList: + db "#MON LIST@" + +PrintPCBox_Page2: + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Printer_PlaceEmptyBoxSlotString + call Printer_PlaceSideBorders + ld a, [wFinishedPrintingBox] + and a + ret nz + ld a, 4 + call Printer_GetBoxMonSpecies + hlcoord 2, 0 + ld c, 6 + call Printer_PrintBoxListSegment + ret + +PrintPCBox_Page3: + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Printer_PlaceEmptyBoxSlotString + call Printer_PlaceSideBorders + ld a, [wFinishedPrintingBox] + and a + ret nz + ld a, 10 + call Printer_GetBoxMonSpecies + hlcoord 2, 0 + ld c, 6 + call Printer_PrintBoxListSegment + ret + +PrintPCBox_Page4: + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Printer_PlaceEmptyBoxSlotString + hlcoord 1, 15 + lb bc, 2, 18 + call ClearBox + call Printer_PlaceSideBorders + call Printer_PlaceBottomBorders + ld a, [wFinishedPrintingBox] + and a + ret nz + ld a, 16 + call Printer_GetBoxMonSpecies + hlcoord 2, 0 + ld c, 5 + call Printer_PrintBoxListSegment + ret + +Printer_PrintBoxListSegment: + ld a, [wBankOfBoxToPrint] + call OpenSRAM +.loop + ld a, c + and a + jp z, .max_length + dec c + ld a, [de] + cp $ff + jp z, .finish + ld [wNamedObjectIndexBuffer], a + ld [wCurPartySpecies], a + + push bc + push hl + push de + + push hl + ld bc, 16 + ld a, " " + call ByteFill + pop hl + + push hl + call GetBasePokemonName + pop hl + + push hl + call PlaceString + ld a, [wCurPartySpecies] + cp EGG + pop hl + jr z, .ok2 + + ld bc, MON_NAME_LENGTH + add hl, bc + call Printer_GetMonGender + ld bc, SCREEN_WIDTH - MON_NAME_LENGTH + add hl, bc + ld a, "/" + ld [hli], a + + push hl + ld bc, 14 + ld a, " " + call ByteFill + pop hl + + push hl + ld a, [wAddrOfBoxToPrint] + ld l, a + ld a, [wAddrOfBoxToPrint + 1] + ld h, a + ld bc, sBoxMonNicknames - sBox + add hl, bc + ld bc, MON_NAME_LENGTH + ld a, [wWhichBoxMonToPrint] + call AddNTimes + ld e, l + ld d, h + pop hl + + push hl + call PlaceString + pop hl + + ld bc, MON_NAME_LENGTH + add hl, bc + push hl + ld a, [wAddrOfBoxToPrint] + ld l, a + ld a, [wAddrOfBoxToPrint + 1] + ld h, a + ld bc, 2 + MONS_PER_BOX + MON_LEVEL + add hl, bc + ld bc, BOXMON_STRUCT_LENGTH + ld a, [wWhichBoxMonToPrint] + call AddNTimes + ld a, [hl] + pop hl + call PrintLevel_Force3Digits +.ok2 + ld hl, wWhichBoxMonToPrint + inc [hl] + pop de + pop hl + ld bc, 3 * SCREEN_WIDTH + add hl, bc + pop bc + inc de + jp .loop + +.finish + ld a, $1 + ld [wFinishedPrintingBox], a +.max_length + call CloseSRAM + ret + +Printer_GetMonGender: + push hl + ld a, [wAddrOfBoxToPrint] + ld l, a + ld a, [wAddrOfBoxToPrint + 1] + ld h, a + ld bc, 2 + MONS_PER_BOX + MON_DVS + add hl, bc + ld bc, BOXMON_STRUCT_LENGTH + ld a, [wWhichBoxMonToPrint] + call AddNTimes + ld de, wTempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld a, [wWhichBoxMonToPrint] + ld [wCurPartyMon], a + ld a, TEMPMON + ld [wMonType], a + farcall GetGender + ld a, " " + jr c, .got_gender + ld a, "♂" + jr nz, .got_gender + ld a, "♀" +.got_gender + pop hl + ld [hli], a + ret + +Printer_GetBoxMonSpecies: + push hl + ld e, a + ld d, $0 + ld a, [wAddrOfBoxToPrint] + ld l, a + ld a, [wAddrOfBoxToPrint + 1] + ld h, a + add hl, de + ld e, l + ld d, h + pop hl + ret + +Printer_PlaceTopBorder: + hlcoord 0, 0 + ld a, "┌" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.loop + ld [hli], a + dec c + jr nz, .loop + ld a, "┐" + ld [hl], a + ret + +Printer_PlaceSideBorders: + hlcoord 0, 0 + ld de, SCREEN_WIDTH - 1 + ld c, SCREEN_HEIGHT +.loop + ld a, "│" + ld [hl], a + add hl, de + ld a, "│" + ld [hli], a + dec c + jr nz, .loop + ret + +Printer_PlaceBottomBorders: + hlcoord 0, 17 + ld a, "└" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.loop + ld [hli], a + dec c + jr nz, .loop + ld a, "┘" + ld [hl], a + ret + +Printer_PlaceEmptyBoxSlotString: + hlcoord 2, 0 + ld c, 6 +.loop + push bc + push hl + ld de, String84a21 + call PlaceString + pop hl + ld bc, 3 * SCREEN_WIDTH + add hl, bc + pop bc + dec c + jr nz, .loop + ret + +String84a21: + db " ------@" diff --git a/engine/printer/printer_serial.asm b/engine/printer/printer_serial.asm new file mode 100755 index 00000000..37b06a9f --- /dev/null +++ b/engine/printer/printer_serial.asm @@ -0,0 +1,637 @@ +Printer_StartTransmission: + ld hl, wGameboyPrinterRAM + ld bc, wGameboyPrinterRAMEnd - wGameboyPrinterRAM + xor a + call Printer_ByteFill + xor a + ldh [rSB], a + ldh [rSC], a + ld [wPrinterOpcode], a + ld hl, wPrinterConnectionOpen + set 0, [hl] + ld a, [wGBPrinterBrightness] + ld [wPrinterExposureTime], a + xor a + ld [wJumptableIndex], a + ret + +PrinterJumptableIteration: + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable: + dw Print_InitPrinterHandshake ; 00 + dw Printer_CheckConnectionStatus ; 01 + dw Printer_WaitSerial ; 02 + dw Printer_StartTransmittingTilemap ; 03 + dw Printer_TransmissionLoop ; 04 + dw Printer_WaitSerialAndLoopBack2 ; 05 + + dw Printer_EndTilemapTransmission ; 06 + dw Printer_TransmissionLoop ; 07 + dw Printer_WaitSerial ; 08 + dw Printer_SignalSendHeader ; 09 + dw Printer_TransmissionLoop ; 0a + dw Printer_WaitSerial ; 0b + dw Printer_WaitUntilFinished ; 0c + dw Printer_Quit ; 0d + + dw Printer_NextSection ; 0e + dw Printer_WaitSerial ; 0f + dw Printer_SignalLoopBack ; 10 + dw Printer_SectionOne ; 11 + dw Printer_NextSectionWaitLoopBack ; 12 + dw Printer_WaitLoopBack ; 13 + +_Printer_NextSection: + ld hl, wJumptableIndex + inc [hl] + ret + +Printer_PrevSection: + ld hl, wJumptableIndex + dec [hl] + ret + +Printer_Quit: + xor a + ld [wPrinterStatusFlags], a + ld hl, wJumptableIndex + set 7, [hl] + ret + +Printer_NextSection: + call _Printer_NextSection + ret + +Printer_SectionOne: + ld a, 1 + ld [wJumptableIndex], a + ret + +Print_InitPrinterHandshake: + call Printer_ResetData + ld hl, PrinterDataPacket1 + call Printer_CopyPacket + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld a, [wPrinterQueueLength] + ld [wPrinterRowIndex], a + call _Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_CHECKING + ld [wPrinterStatus], a + ret + +Printer_StartTransmittingTilemap: + call Printer_ResetData + ; check ??? + ld hl, wPrinterRowIndex + ld a, [hl] + and a + jr z, Printer_EndTilemapTransmission + ; send packet 3 + ld hl, PrinterDataPacket3 ; signal start of transmission + call Printer_CopyPacket + ; prepare to send 40 tiles + call Printer_Convert2RowsTo2bpp + ld a, LOW(40 tiles) + ld [wPrinterSendByteCounter], a + ld a, HIGH(40 tiles) + ld [wPrinterSendByteCounter + 1], a + ; compute the checksum + call Printer_ComputeChecksum + call _Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_TRANSMITTING + ld [wPrinterStatus], a + ret + +Printer_EndTilemapTransmission: + ; ensure that we go from here to routine 7 + ld a, 6 + ld [wJumptableIndex], a + ; send packet 4 + ld hl, PrinterDataPacket4 ; signal no transmission + call Printer_CopyPacket + ; send no tile data + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + call _Printer_NextSection + call Printer_WaitHandshake + ret + +Printer_SignalSendHeader: + call Printer_ResetData + ld hl, PrinterDataPacket2 ; signal request print + call Printer_CopyPacket + ; prepare to send 1 tile + call Printer_StageHeaderForSend + ld a, LOW(4) + ld [wPrinterSendByteCounter], a + ld a, HIGH(4) + ld [wPrinterSendByteCounter + 1], a + ; compute the checksum + call Printer_ComputeChecksum + call _Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_PRINTING + ld [wPrinterStatus], a + ret + +Printer_SignalLoopBack: + call Printer_ResetData + ; send packet 1 + ld hl, PrinterDataPacket1 ; signal no transmission + call Printer_CopyPacket + ; send no tile data + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld a, [wPrinterQueueLength] + ld [wPrinterRowIndex], a + call _Printer_NextSection + call Printer_WaitHandshake + ret + +Printer_WaitSerial: + ld hl, wPrinterSerialFrameDelay + inc [hl] + ld a, [hl] + cp 6 + ret c + xor a + ld [hl], a + call _Printer_NextSection + ret + +Printer_WaitSerialAndLoopBack2: + ld hl, wPrinterSerialFrameDelay + inc [hl] + ld a, [hl] + cp 6 + ret c + xor a + ld [hl], a + ld hl, wPrinterRowIndex + dec [hl] + call Printer_PrevSection + call Printer_PrevSection + ret + +Printer_CheckConnectionStatus: + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterHandshake] + cp $ff + jr nz, .printer_connected + ld a, [wPrinterStatusFlags] + cp $ff + jr z, .printer_error + +.printer_connected + ld a, [wPrinterHandshake] + cp $81 + jr nz, .printer_error + ld a, [wPrinterStatusFlags] + cp 0 + jr nz, .printer_error + ld hl, wPrinterConnectionOpen + set 1, [hl] + ld a, 5 + ld [wHandshakeFrameDelay], a + call _Printer_NextSection + ret + +.printer_error + ld a, $ff + ld [wPrinterHandshake], a + ld [wPrinterStatusFlags], a + ld a, $e + ld [wJumptableIndex], a + ret + +Printer_TransmissionLoop: + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f0 + jr nz, .enter_wait_loop + ld a, [wPrinterStatusFlags] + and $1 + jr nz, .cycle_back + call _Printer_NextSection + ret + +.cycle_back + call Printer_PrevSection + ret + +.enter_wait_loop + ld a, $12 ; Printer_NextSectionWaitLoopBack + ld [wJumptableIndex], a + ret + +Printer_WaitUntilFinished: + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f3 + ret nz + call _Printer_NextSection + ret + +Printer_NextSectionWaitLoopBack: + call _Printer_NextSection +Printer_WaitLoopBack: + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f0 + ret nz + xor a + ld [wJumptableIndex], a + ret + +Printer_WaitHandshake: +.loop + ld a, [wPrinterOpcode] + and a + jr nz, .loop + xor a + ld [wPrinterSendByteOffset], a + ld [wPrinterSendByteOffset + 1], a + ld a, 1 + ld [wPrinterOpcode], a + ld a, $88 + ldh [rSB], a + ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a + ld a, (1 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a + ret + +Printer_CopyPacket: + ld a, [hli] + ld [wPrinterData], a + ld a, [hli] + ld [wPrinterData + 1], a + ld a, [hli] + ld [wPrinterData + 2], a + ld a, [hli] + ld [wPrinterData + 3], a + ld a, [hli] + ld [wPrinterChecksum], a + ld a, [hl] + ld [wPrinterChecksum + 1], a + ret + +Printer_ResetData: + xor a + ld hl, wPrinterData + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, wPrinterChecksum + ld [hli], a + ld [hl], a + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld hl, wGameboyPrinterRAM + ld bc, wGameboyPrinter2bppSourceEnd - wGameboyPrinter2bppSource + call Printer_ByteFill + ret + +Printer_ComputeChecksum: + ld hl, 0 + ld bc, 4 + ld de, wPrinterData + call .ComputeChecksum + ld a, [wPrinterSendByteCounter] + ld c, a + ld a, [wPrinterSendByteCounter + 1] + ld b, a + ld de, wGameboyPrinterRAM + call .ComputeChecksum + ld a, l + ld [wPrinterChecksum], a + ld a, h + ld [wPrinterChecksum + 1], a + ret + +.ComputeChecksum: +.loop + ld a, [de] + inc de + add l + jr nc, .no_overflow + inc h +.no_overflow + ld l, a + dec bc + ld a, c + or b + jr nz, .loop + ret + +Printer_StageHeaderForSend: + ld a, 1 + ld [wGameboyPrinter2bppSource + 0], a + ld a, [wPrinterMargins] + ld [wGameboyPrinter2bppSource + 1], a + ld a, %11100100 ; 3,2,1,0 + ld [wGameboyPrinter2bppSource + 2], a + ld a, [wPrinterExposureTime] + ld [wGameboyPrinter2bppSource + 3], a + ret + +Printer_Convert2RowsTo2bpp: + ; de = wPrinterTilemapBuffer + 2 * SCREEN_WIDTH * ([wPrinterQueueLength] - [wPrinterRowIndex]) + ld a, [wPrinterRowIndex] + xor $ff + ld d, a + ld a, [wPrinterQueueLength] + inc a + add d + ld hl, wPrinterTilemapBuffer + ld de, 2 * SCREEN_WIDTH +.loop1 + and a + jr z, .okay1 + add hl, de + dec a + jr .loop1 +.okay1 + ld e, l + ld d, h + ld hl, wGameboyPrinter2bppSource + ld c, 2 * SCREEN_WIDTH +.loop2 + ld a, [de] + inc de + push bc + push de + push hl + ; convert tile index to vram address + swap a + ld d, a + and $f0 + ld e, a + ld a, d + and $f + ld d, a + and $8 + ld a, d + jr nz, .vtiles_8xxx + or $90 + jr .got_vtile_addr + +.vtiles_8xxx + or $80 +.got_vtile_addr + ld d, a + ; copy 1 vtile to hl + lb bc, BANK(Printer_Convert2RowsTo2bpp), 1 + call Request2bpp + pop hl + ld de, 1 tiles + add hl, de + pop de + pop bc + dec c + jr nz, .loop2 + ret + +Printer_ByteFill: + push de + ld e, a +.loop + ld [hl], e + inc hl + dec bc + ld a, c + or b + jr nz, .loop + ld a, e + pop de + ret + +PrinterDataPacket1: + db 1, 0, $00, 0 + dw 1 +PrinterDataPacket2: + db 2, 0, $04, 0 + dw 0 +PrinterDataPacket3: + db 4, 0, $80, 2 + dw 0 +PrinterDataPacket4: + db 4, 0, $00, 0 + dw 4 +PrinterDataPacket5: ; unused + db 8, 0, $00, 0 + dw 8 +PrinterDataPacket6: ; unused + db 15, 0, $00, 0 + dw 15 + +_PrinterReceive:: + ld a, [wPrinterOpcode] + add a + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable: + dw Printer_DoNothing ; 00 + + dw Printer_Send0x33 ; 01 + dw Printer_SendPrinterData1 ; 02 + dw Printer_SendPrinterData2 ; 03 + dw Printer_SendPrinterData3 ; 04 + dw Printer_SendPrinterData4 ; 05 + dw Printer_SendNextByte ; 06 + dw Printer_SendwPrinterChecksumLo ; 07 + dw Printer_SendwPrinterChecksumHi ; 08 + dw Printer_Send0x00_2 ; 09 + dw Printer_ReceiveTwoPrinterHandshakeAndSend0x00 ; 0a + dw Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop ; 0b + + dw Printer_Send0x33 ; 0c triggered by AskSerial + dw Printer_Send0x0f ; 0d + dw Printer_Send0x00 ; 0e + dw Printer_Send0x00 ; 0f + dw Printer_Send0x00 ; 10 + dw Printer_Send0x0f ; 11 + dw Printer_Send0x00 ; 12 + dw Printer_Send0x00_2 ; 13 + dw Printer_ReceiveTwoPrinterHandshakeAndSend0x00 ; 14 + dw Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop_2 ; 15 + + dw Printer_Send0x33 ; 16 triggered by pressing B + dw Printer_Send0x08 ; 17 + dw Printer_Send0x00 ; 18 + dw Printer_Send0x00 ; 19 + dw Printer_Send0x00 ; 1a + dw Printer_Send0x08 ; 1b + dw Printer_Send0x00 ; 1c + dw Printer_Send0x00_2 ; 1d + dw Printer_ReceiveTwoPrinterHandshakeAndSend0x00 ; 1e + dw Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop ; 1f + +Printer_NextInstruction: + ld hl, wPrinterOpcode + inc [hl] + ret + +Printer_DoNothing: + ret + +Printer_Send0x33: + ld a, $33 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData1: + ld a, [wPrinterData] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData2: + ld a, [wPrinterData + 1] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData3: + ld a, [wPrinterData + 2] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData4: + ld a, [wPrinterData + 3] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendNextByte: + ; decrement 16-bit counter + ld hl, wPrinterSendByteCounter + ld a, [hli] + ld d, [hl] + ld e, a + or d + jr z, .done + dec de + ld [hl], d + dec hl + ld [hl], e + + ld a, [wPrinterSendByteOffset] + ld e, a + ld a, [wPrinterSendByteOffset + 1] + ld d, a + ld hl, wGameboyPrinterRAM + add hl, de + inc de + ld a, e + ld [wPrinterSendByteOffset], a + ld a, d + ld [wPrinterSendByteOffset + 1], a + ld a, [hl] + call Printer_SerialSend + ret + +.done + call Printer_NextInstruction +Printer_SendwPrinterChecksumLo: + ld a, [wPrinterChecksum] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendwPrinterChecksumHi: + ld a, [wPrinterChecksum + 1] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x00_2: +; identical to Printer_Send0x00, but referenced less + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_ReceiveTwoPrinterHandshakeAndSend0x00: + ldh a, [rSB] + ld [wPrinterHandshake], a + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop: + ldh a, [rSB] + ld [wPrinterStatusFlags], a + xor a + ld [wPrinterOpcode], a + ret + +Printer_Send0x0f: + ld a, $f + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x00: + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x08: + ld a, $8 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SerialSend: + ldh [rSB], a + ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a + ld a, (1 << rSC_ON) | (1 << rSC_CLOCK) + ldh [rSC], a + ret + +Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop_2: +; identical to Printer_ReceiveTwoPrinterStatusFlagsAndExitSendLoop, but referenced less + ldh a, [rSB] + ld [wPrinterStatusFlags], a + xor a + ld [wPrinterOpcode], a + ret diff --git a/gfx/battle_anims.asm b/gfx/battle_anims.asm new file mode 100755 index 00000000..7f8f5918 --- /dev/null +++ b/gfx/battle_anims.asm @@ -0,0 +1,40 @@ +AnimObj00GFX: +AnimObjHitGFX: INCBIN "gfx/battle_anims/hit.2bpp.lz" +AnimObjCutGFX: INCBIN "gfx/battle_anims/cut.2bpp.lz" +AnimObjFireGFX: INCBIN "gfx/battle_anims/fire.2bpp.lz" +AnimObjWaterGFX: INCBIN "gfx/battle_anims/water.2bpp.lz" +AnimObjLightningGFX: INCBIN "gfx/battle_anims/lightning.2bpp.lz" +AnimObjSmokeGFX: INCBIN "gfx/battle_anims/smoke.2bpp.lz" +AnimObjExplosionGFX: INCBIN "gfx/battle_anims/explosion.2bpp.lz" +AnimObjIceGFX: INCBIN "gfx/battle_anims/ice.2bpp.lz" +AnimObjRocksGFX: INCBIN "gfx/battle_anims/rocks.2bpp.lz" +AnimObjPoisonGFX: INCBIN "gfx/battle_anims/poison.2bpp.lz" +AnimObjPlantGFX: INCBIN "gfx/battle_anims/plant.2bpp.lz" +AnimObjPokeBallGFX: INCBIN "gfx/battle_anims/pokeball.2bpp.lz" +AnimObjBubbleGFX: INCBIN "gfx/battle_anims/bubble.2bpp.lz" +AnimObjNoiseGFX: INCBIN "gfx/battle_anims/noise.2bpp.lz" +AnimObjReflectGFX: INCBIN "gfx/battle_anims/reflect.2bpp.lz" +AnimObjPowderGFX: INCBIN "gfx/battle_anims/powder.2bpp.lz" +AnimObjBeamGFX: INCBIN "gfx/battle_anims/beam.2bpp.lz" +AnimObjSpeedGFX: INCBIN "gfx/battle_anims/speed.2bpp.lz" +AnimObjChargeGFX: INCBIN "gfx/battle_anims/charge.2bpp.lz" +AnimObjWindGFX: INCBIN "gfx/battle_anims/wind.2bpp.lz" +AnimObjWhipGFX: INCBIN "gfx/battle_anims/whip.2bpp.lz" +AnimObjRopeGFX: INCBIN "gfx/battle_anims/rope.2bpp.lz" +AnimObjEggGFX: INCBIN "gfx/battle_anims/egg.2bpp.lz" +AnimObjPsychicGFX: INCBIN "gfx/battle_anims/psychic.2bpp.lz" +AnimObjSandGFX: INCBIN "gfx/battle_anims/sand.2bpp.lz" +AnimObjWebGFX: INCBIN "gfx/battle_anims/web.2bpp.lz" +AnimObjHazeGFX: INCBIN "gfx/battle_anims/haze.2bpp.lz" +AnimObjHornGFX: INCBIN "gfx/battle_anims/horn.2bpp.lz" +AnimObjFlowerGFX: INCBIN "gfx/battle_anims/flower.2bpp.lz" +AnimObjMiscGFX: INCBIN "gfx/battle_anims/misc.2bpp.lz" +AnimObjSkyAttackGFX: INCBIN "gfx/battle_anims/skyattack.2bpp.lz" +AnimObjGlobeGFX: INCBIN "gfx/battle_anims/globe.2bpp.lz" +AnimObjShapesGFX: INCBIN "gfx/battle_anims/shapes.2bpp.lz" +AnimObjStatusGFX: INCBIN "gfx/battle_anims/status.2bpp.lz" +AnimObjObjectsGFX: INCBIN "gfx/battle_anims/objects.2bpp.lz" +AnimObjShineGFX: INCBIN "gfx/battle_anims/shine.2bpp.lz" +AnimObjAngelsGFX: INCBIN "gfx/battle_anims/angels.2bpp.lz" +AnimObjWaveGFX: INCBIN "gfx/battle_anims/wave.2bpp.lz" +AnimObjAeroblastGFX: INCBIN "gfx/battle_anims/aeroblast.2bpp.lz" diff --git a/gfx/battle_anims/aeroblast.2bpp.lz b/gfx/battle_anims/aeroblast.2bpp.lz Binary files differnew file mode 100755 index 00000000..5e203cb6 --- /dev/null +++ b/gfx/battle_anims/aeroblast.2bpp.lz diff --git a/gfx/battle_anims/aeroblast.png b/gfx/battle_anims/aeroblast.png Binary files differnew file mode 100755 index 00000000..1fdc07c2 --- /dev/null +++ b/gfx/battle_anims/aeroblast.png diff --git a/gfx/battle_anims/angels.2bpp.lz b/gfx/battle_anims/angels.2bpp.lz Binary files differnew file mode 100755 index 00000000..61d89d22 --- /dev/null +++ b/gfx/battle_anims/angels.2bpp.lz diff --git a/gfx/battle_anims/angels.png b/gfx/battle_anims/angels.png Binary files differnew file mode 100755 index 00000000..ef38c61d --- /dev/null +++ b/gfx/battle_anims/angels.png diff --git a/gfx/battle_anims/battle_anims.pal b/gfx/battle_anims/battle_anims.pal index 70b31a04..d2ebb6ce 100644 --- a/gfx/battle_anims/battle_anims.pal +++ b/gfx/battle_anims/battle_anims.pal @@ -1,29 +1,30 @@ +; gray RGB 31, 31, 31 RGB 25, 25, 25 RGB 13, 13, 13 - RGB 0, 0, 0 - + RGB 00, 00, 00 +; yellow RGB 31, 31, 31 - RGB 31, 31, 7 - RGB 31, 16, 1 - RGB 0, 0, 0 - + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 00, 00, 00 +; red RGB 31, 31, 31 RGB 31, 19, 24 - RGB 30, 10, 6 - RGB 0, 0, 0 - + RGB 30, 10, 06 + RGB 00, 00, 00 +; green RGB 31, 31, 31 - RGB 12, 25, 1 - RGB 5, 14, 0 - RGB 0, 0, 0 - + RGB 12, 25, 01 + RGB 05, 14, 00 + RGB 00, 00, 00 +; blue RGB 31, 31, 31 - RGB 8, 12, 31 - RGB 1, 4, 31 - RGB 0, 0, 0 - + RGB 08, 12, 31 + RGB 01, 04, 31 + RGB 00, 00, 00 +; brown RGB 31, 31, 31 - RGB 24, 18, 7 - RGB 20, 15, 3 - RGB 0, 0, 0 + RGB 24, 18, 07 + RGB 20, 15, 03 + RGB 00, 00, 00 diff --git a/gfx/battle_anims/beam.2bpp.lz b/gfx/battle_anims/beam.2bpp.lz Binary files differnew file mode 100755 index 00000000..1ce9ab82 --- /dev/null +++ b/gfx/battle_anims/beam.2bpp.lz diff --git a/gfx/battle_anims/beam.png b/gfx/battle_anims/beam.png Binary files differnew file mode 100755 index 00000000..e8bc6cde --- /dev/null +++ b/gfx/battle_anims/beam.png diff --git a/gfx/battle_anims/bubble.2bpp.lz b/gfx/battle_anims/bubble.2bpp.lz Binary files differnew file mode 100755 index 00000000..3d546191 --- /dev/null +++ b/gfx/battle_anims/bubble.2bpp.lz diff --git a/gfx/battle_anims/bubble.png b/gfx/battle_anims/bubble.png Binary files differnew file mode 100755 index 00000000..b6febb0a --- /dev/null +++ b/gfx/battle_anims/bubble.png diff --git a/gfx/battle_anims/charge.2bpp.lz b/gfx/battle_anims/charge.2bpp.lz Binary files differnew file mode 100755 index 00000000..32c82243 --- /dev/null +++ b/gfx/battle_anims/charge.2bpp.lz diff --git a/gfx/battle_anims/charge.png b/gfx/battle_anims/charge.png Binary files differnew file mode 100755 index 00000000..90cb72f9 --- /dev/null +++ b/gfx/battle_anims/charge.png diff --git a/gfx/battle_anims/cut.2bpp.lz b/gfx/battle_anims/cut.2bpp.lz Binary files differnew file mode 100755 index 00000000..740a4879 --- /dev/null +++ b/gfx/battle_anims/cut.2bpp.lz diff --git a/gfx/battle_anims/cut.png b/gfx/battle_anims/cut.png Binary files differnew file mode 100755 index 00000000..e227ad41 --- /dev/null +++ b/gfx/battle_anims/cut.png diff --git a/gfx/battle_anims/egg.2bpp.lz b/gfx/battle_anims/egg.2bpp.lz Binary files differnew file mode 100755 index 00000000..fb55f2ed --- /dev/null +++ b/gfx/battle_anims/egg.2bpp.lz diff --git a/gfx/battle_anims/egg.png b/gfx/battle_anims/egg.png Binary files differnew file mode 100755 index 00000000..38aab505 --- /dev/null +++ b/gfx/battle_anims/egg.png diff --git a/gfx/battle_anims/explosion.2bpp.lz b/gfx/battle_anims/explosion.2bpp.lz Binary files differnew file mode 100755 index 00000000..4303302a --- /dev/null +++ b/gfx/battle_anims/explosion.2bpp.lz diff --git a/gfx/battle_anims/explosion.png b/gfx/battle_anims/explosion.png Binary files differnew file mode 100755 index 00000000..0af9f1a0 --- /dev/null +++ b/gfx/battle_anims/explosion.png diff --git a/gfx/battle_anims/fire.2bpp.lz b/gfx/battle_anims/fire.2bpp.lz Binary files differnew file mode 100755 index 00000000..e15e9f9b --- /dev/null +++ b/gfx/battle_anims/fire.2bpp.lz diff --git a/gfx/battle_anims/fire.png b/gfx/battle_anims/fire.png Binary files differnew file mode 100755 index 00000000..19f01141 --- /dev/null +++ b/gfx/battle_anims/fire.png diff --git a/gfx/battle_anims/flower.2bpp.lz b/gfx/battle_anims/flower.2bpp.lz Binary files differnew file mode 100755 index 00000000..ef628afb --- /dev/null +++ b/gfx/battle_anims/flower.2bpp.lz diff --git a/gfx/battle_anims/flower.png b/gfx/battle_anims/flower.png Binary files differnew file mode 100755 index 00000000..61b4f58c --- /dev/null +++ b/gfx/battle_anims/flower.png diff --git a/gfx/battle_anims/globe.2bpp.lz b/gfx/battle_anims/globe.2bpp.lz Binary files differnew file mode 100755 index 00000000..99fa15c6 --- /dev/null +++ b/gfx/battle_anims/globe.2bpp.lz diff --git a/gfx/battle_anims/globe.png b/gfx/battle_anims/globe.png Binary files differnew file mode 100755 index 00000000..8d3a3568 --- /dev/null +++ b/gfx/battle_anims/globe.png diff --git a/gfx/battle_anims/haze.2bpp.lz b/gfx/battle_anims/haze.2bpp.lz Binary files differnew file mode 100755 index 00000000..e0cdc644 --- /dev/null +++ b/gfx/battle_anims/haze.2bpp.lz diff --git a/gfx/battle_anims/haze.png b/gfx/battle_anims/haze.png Binary files differnew file mode 100755 index 00000000..8a870ba9 --- /dev/null +++ b/gfx/battle_anims/haze.png diff --git a/gfx/battle_anims/hit.2bpp.lz b/gfx/battle_anims/hit.2bpp.lz Binary files differnew file mode 100755 index 00000000..5d9ffbe5 --- /dev/null +++ b/gfx/battle_anims/hit.2bpp.lz diff --git a/gfx/battle_anims/hit.png b/gfx/battle_anims/hit.png Binary files differnew file mode 100755 index 00000000..22806633 --- /dev/null +++ b/gfx/battle_anims/hit.png diff --git a/gfx/battle_anims/horn.2bpp.lz b/gfx/battle_anims/horn.2bpp.lz Binary files differnew file mode 100755 index 00000000..a92f7479 --- /dev/null +++ b/gfx/battle_anims/horn.2bpp.lz diff --git a/gfx/battle_anims/horn.png b/gfx/battle_anims/horn.png Binary files differnew file mode 100755 index 00000000..56e8ca24 --- /dev/null +++ b/gfx/battle_anims/horn.png diff --git a/gfx/battle_anims/ice.2bpp.lz b/gfx/battle_anims/ice.2bpp.lz Binary files differnew file mode 100755 index 00000000..3d059700 --- /dev/null +++ b/gfx/battle_anims/ice.2bpp.lz diff --git a/gfx/battle_anims/ice.png b/gfx/battle_anims/ice.png Binary files differnew file mode 100755 index 00000000..62a67641 --- /dev/null +++ b/gfx/battle_anims/ice.png diff --git a/gfx/battle_anims/lightning.2bpp.lz b/gfx/battle_anims/lightning.2bpp.lz Binary files differnew file mode 100755 index 00000000..81de5850 --- /dev/null +++ b/gfx/battle_anims/lightning.2bpp.lz diff --git a/gfx/battle_anims/lightning.png b/gfx/battle_anims/lightning.png Binary files differnew file mode 100755 index 00000000..fcc9376f --- /dev/null +++ b/gfx/battle_anims/lightning.png diff --git a/gfx/battle_anims/misc.2bpp.lz b/gfx/battle_anims/misc.2bpp.lz Binary files differnew file mode 100755 index 00000000..d0c5f0df --- /dev/null +++ b/gfx/battle_anims/misc.2bpp.lz diff --git a/gfx/battle_anims/misc.png b/gfx/battle_anims/misc.png Binary files differnew file mode 100755 index 00000000..7540508a --- /dev/null +++ b/gfx/battle_anims/misc.png diff --git a/gfx/battle_anims/noise.2bpp.lz b/gfx/battle_anims/noise.2bpp.lz Binary files differnew file mode 100755 index 00000000..e195da45 --- /dev/null +++ b/gfx/battle_anims/noise.2bpp.lz diff --git a/gfx/battle_anims/noise.png b/gfx/battle_anims/noise.png Binary files differnew file mode 100755 index 00000000..328d94c9 --- /dev/null +++ b/gfx/battle_anims/noise.png diff --git a/gfx/battle_anims/objects.2bpp.lz b/gfx/battle_anims/objects.2bpp.lz Binary files differnew file mode 100755 index 00000000..1a52d635 --- /dev/null +++ b/gfx/battle_anims/objects.2bpp.lz diff --git a/gfx/battle_anims/objects.png b/gfx/battle_anims/objects.png Binary files differnew file mode 100755 index 00000000..80117f18 --- /dev/null +++ b/gfx/battle_anims/objects.png diff --git a/gfx/battle_anims/plant.2bpp.lz b/gfx/battle_anims/plant.2bpp.lz Binary files differnew file mode 100755 index 00000000..589fc48b --- /dev/null +++ b/gfx/battle_anims/plant.2bpp.lz diff --git a/gfx/battle_anims/plant.png b/gfx/battle_anims/plant.png Binary files differnew file mode 100755 index 00000000..ec112505 --- /dev/null +++ b/gfx/battle_anims/plant.png diff --git a/gfx/battle_anims/poison.2bpp.lz b/gfx/battle_anims/poison.2bpp.lz Binary files differnew file mode 100755 index 00000000..df2cbe60 --- /dev/null +++ b/gfx/battle_anims/poison.2bpp.lz diff --git a/gfx/battle_anims/poison.png b/gfx/battle_anims/poison.png Binary files differnew file mode 100755 index 00000000..ebbbc52b --- /dev/null +++ b/gfx/battle_anims/poison.png diff --git a/gfx/battle_anims/pokeball.2bpp.lz b/gfx/battle_anims/pokeball.2bpp.lz Binary files differnew file mode 100755 index 00000000..e09b082d --- /dev/null +++ b/gfx/battle_anims/pokeball.2bpp.lz diff --git a/gfx/battle_anims/pokeball.png b/gfx/battle_anims/pokeball.png Binary files differnew file mode 100755 index 00000000..ff76a3f7 --- /dev/null +++ b/gfx/battle_anims/pokeball.png diff --git a/gfx/battle_anims/powder.2bpp.lz b/gfx/battle_anims/powder.2bpp.lz Binary files differnew file mode 100755 index 00000000..375d0bf9 --- /dev/null +++ b/gfx/battle_anims/powder.2bpp.lz diff --git a/gfx/battle_anims/powder.png b/gfx/battle_anims/powder.png Binary files differnew file mode 100755 index 00000000..b2cb4d45 --- /dev/null +++ b/gfx/battle_anims/powder.png diff --git a/gfx/battle_anims/psychic.2bpp.lz b/gfx/battle_anims/psychic.2bpp.lz Binary files differnew file mode 100755 index 00000000..d6402dd3 --- /dev/null +++ b/gfx/battle_anims/psychic.2bpp.lz diff --git a/gfx/battle_anims/psychic.png b/gfx/battle_anims/psychic.png Binary files differnew file mode 100755 index 00000000..a6d22db2 --- /dev/null +++ b/gfx/battle_anims/psychic.png diff --git a/gfx/battle_anims/reflect.2bpp.lz b/gfx/battle_anims/reflect.2bpp.lz Binary files differnew file mode 100755 index 00000000..a563de1a --- /dev/null +++ b/gfx/battle_anims/reflect.2bpp.lz diff --git a/gfx/battle_anims/reflect.png b/gfx/battle_anims/reflect.png Binary files differnew file mode 100755 index 00000000..48fbd7d0 --- /dev/null +++ b/gfx/battle_anims/reflect.png diff --git a/gfx/battle_anims/rocks.2bpp.lz b/gfx/battle_anims/rocks.2bpp.lz Binary files differnew file mode 100755 index 00000000..d5481ea6 --- /dev/null +++ b/gfx/battle_anims/rocks.2bpp.lz diff --git a/gfx/battle_anims/rocks.png b/gfx/battle_anims/rocks.png Binary files differnew file mode 100755 index 00000000..78814028 --- /dev/null +++ b/gfx/battle_anims/rocks.png diff --git a/gfx/battle_anims/rope.2bpp.lz b/gfx/battle_anims/rope.2bpp.lz Binary files differnew file mode 100755 index 00000000..f7d6a480 --- /dev/null +++ b/gfx/battle_anims/rope.2bpp.lz diff --git a/gfx/battle_anims/rope.png b/gfx/battle_anims/rope.png Binary files differnew file mode 100755 index 00000000..a12553c7 --- /dev/null +++ b/gfx/battle_anims/rope.png diff --git a/gfx/battle_anims/sand.2bpp.lz b/gfx/battle_anims/sand.2bpp.lz Binary files differnew file mode 100755 index 00000000..3508a1f5 --- /dev/null +++ b/gfx/battle_anims/sand.2bpp.lz diff --git a/gfx/battle_anims/sand.png b/gfx/battle_anims/sand.png Binary files differnew file mode 100755 index 00000000..7ecdeaee --- /dev/null +++ b/gfx/battle_anims/sand.png diff --git a/gfx/battle_anims/shapes.2bpp.lz b/gfx/battle_anims/shapes.2bpp.lz Binary files differnew file mode 100755 index 00000000..d7d48020 --- /dev/null +++ b/gfx/battle_anims/shapes.2bpp.lz diff --git a/gfx/battle_anims/shapes.png b/gfx/battle_anims/shapes.png Binary files differnew file mode 100755 index 00000000..b99fc601 --- /dev/null +++ b/gfx/battle_anims/shapes.png diff --git a/gfx/battle_anims/shine.2bpp.lz b/gfx/battle_anims/shine.2bpp.lz Binary files differnew file mode 100755 index 00000000..3e47170b --- /dev/null +++ b/gfx/battle_anims/shine.2bpp.lz diff --git a/gfx/battle_anims/shine.png b/gfx/battle_anims/shine.png Binary files differnew file mode 100755 index 00000000..1b7e9834 --- /dev/null +++ b/gfx/battle_anims/shine.png diff --git a/gfx/battle_anims/skyattack.2bpp.lz b/gfx/battle_anims/skyattack.2bpp.lz Binary files differnew file mode 100755 index 00000000..e0412dd8 --- /dev/null +++ b/gfx/battle_anims/skyattack.2bpp.lz diff --git a/gfx/battle_anims/skyattack.png b/gfx/battle_anims/skyattack.png Binary files differnew file mode 100755 index 00000000..e731c691 --- /dev/null +++ b/gfx/battle_anims/skyattack.png diff --git a/gfx/battle_anims/smoke.2bpp.lz b/gfx/battle_anims/smoke.2bpp.lz Binary files differnew file mode 100755 index 00000000..bf26fed2 --- /dev/null +++ b/gfx/battle_anims/smoke.2bpp.lz diff --git a/gfx/battle_anims/smoke.png b/gfx/battle_anims/smoke.png Binary files differnew file mode 100755 index 00000000..1b09874b --- /dev/null +++ b/gfx/battle_anims/smoke.png diff --git a/gfx/battle_anims/speed.2bpp.lz b/gfx/battle_anims/speed.2bpp.lz Binary files differnew file mode 100755 index 00000000..5d09f9a6 --- /dev/null +++ b/gfx/battle_anims/speed.2bpp.lz diff --git a/gfx/battle_anims/speed.png b/gfx/battle_anims/speed.png Binary files differnew file mode 100755 index 00000000..e219b38c --- /dev/null +++ b/gfx/battle_anims/speed.png diff --git a/gfx/battle_anims/status.2bpp.lz b/gfx/battle_anims/status.2bpp.lz Binary files differnew file mode 100755 index 00000000..e5ce7df8 --- /dev/null +++ b/gfx/battle_anims/status.2bpp.lz diff --git a/gfx/battle_anims/status.png b/gfx/battle_anims/status.png Binary files differnew file mode 100755 index 00000000..cb852796 --- /dev/null +++ b/gfx/battle_anims/status.png diff --git a/gfx/battle_anims/water.2bpp.lz b/gfx/battle_anims/water.2bpp.lz Binary files differnew file mode 100755 index 00000000..6a81bbb6 --- /dev/null +++ b/gfx/battle_anims/water.2bpp.lz diff --git a/gfx/battle_anims/water.png b/gfx/battle_anims/water.png Binary files differnew file mode 100755 index 00000000..4e3c3b71 --- /dev/null +++ b/gfx/battle_anims/water.png diff --git a/gfx/battle_anims/wave.2bpp.lz b/gfx/battle_anims/wave.2bpp.lz Binary files differnew file mode 100755 index 00000000..d94a5cb3 --- /dev/null +++ b/gfx/battle_anims/wave.2bpp.lz diff --git a/gfx/battle_anims/wave.png b/gfx/battle_anims/wave.png Binary files differnew file mode 100755 index 00000000..55d4faa5 --- /dev/null +++ b/gfx/battle_anims/wave.png diff --git a/gfx/battle_anims/web.2bpp.lz b/gfx/battle_anims/web.2bpp.lz Binary files differnew file mode 100755 index 00000000..84b4018e --- /dev/null +++ b/gfx/battle_anims/web.2bpp.lz diff --git a/gfx/battle_anims/web.png b/gfx/battle_anims/web.png Binary files differnew file mode 100755 index 00000000..2aeffef0 --- /dev/null +++ b/gfx/battle_anims/web.png diff --git a/gfx/battle_anims/whip.2bpp.lz b/gfx/battle_anims/whip.2bpp.lz Binary files differnew file mode 100755 index 00000000..da62ba91 --- /dev/null +++ b/gfx/battle_anims/whip.2bpp.lz diff --git a/gfx/battle_anims/whip.png b/gfx/battle_anims/whip.png Binary files differnew file mode 100755 index 00000000..92d7ded6 --- /dev/null +++ b/gfx/battle_anims/whip.png diff --git a/gfx/battle_anims/wind.2bpp.lz b/gfx/battle_anims/wind.2bpp.lz Binary files differnew file mode 100755 index 00000000..9c2769b8 --- /dev/null +++ b/gfx/battle_anims/wind.2bpp.lz diff --git a/gfx/battle_anims/wind.png b/gfx/battle_anims/wind.png Binary files differnew file mode 100755 index 00000000..b0203139 --- /dev/null +++ b/gfx/battle_anims/wind.png diff --git a/gfx/credits/bellossom.2bpp b/gfx/credits/bellossom.2bpp Binary files differnew file mode 100755 index 00000000..d5f0b80c --- /dev/null +++ b/gfx/credits/bellossom.2bpp diff --git a/gfx/credits/bellossom.png b/gfx/credits/bellossom.png Binary files differnew file mode 100644 index 00000000..4cd421cb --- /dev/null +++ b/gfx/credits/bellossom.png diff --git a/gfx/credits/border.2bpp b/gfx/credits/border.2bpp Binary files differnew file mode 100755 index 00000000..32b3fead --- /dev/null +++ b/gfx/credits/border.2bpp diff --git a/gfx/credits/border.png b/gfx/credits/border.png Binary files differnew file mode 100644 index 00000000..d93bddc8 --- /dev/null +++ b/gfx/credits/border.png diff --git a/gfx/credits/credits.pal b/gfx/credits/credits.pal new file mode 100755 index 00000000..69d550cc --- /dev/null +++ b/gfx/credits/credits.pal @@ -0,0 +1,11 @@ + RGB 31,31,31, 29,08,27, 15,24,12, 07,07,07 + + RGB 31,31,31, 30,26,11, 31,11,27, 07,07,07 + + RGB 31,31,31, 31,31,05, 17,23,31, 07,07,07 + + RGB 31,31,31, 22,15,10, 31,19,09, 07,07,07 + + RGB 21,25,31, 31,31,31, 31,31,31, 19,00,00 + + RGB 31,31,31, 18,23,31, 15,20,31, 00,00,00 diff --git a/gfx/credits/elekid.2bpp b/gfx/credits/elekid.2bpp Binary files differnew file mode 100755 index 00000000..297a827d --- /dev/null +++ b/gfx/credits/elekid.2bpp diff --git a/gfx/credits/elekid.png b/gfx/credits/elekid.png Binary files differnew file mode 100755 index 00000000..900a921f --- /dev/null +++ b/gfx/credits/elekid.png diff --git a/gfx/credits/sentret.2bpp b/gfx/credits/sentret.2bpp Binary files differnew file mode 100755 index 00000000..852dff70 --- /dev/null +++ b/gfx/credits/sentret.2bpp diff --git a/gfx/credits/sentret.png b/gfx/credits/sentret.png Binary files differnew file mode 100755 index 00000000..0c704c6a --- /dev/null +++ b/gfx/credits/sentret.png diff --git a/gfx/credits/theend.2bpp b/gfx/credits/theend.2bpp Binary files differnew file mode 100755 index 00000000..b689688b --- /dev/null +++ b/gfx/credits/theend.2bpp diff --git a/gfx/credits/theend.png b/gfx/credits/theend.png Binary files differnew file mode 100644 index 00000000..165f8ba8 --- /dev/null +++ b/gfx/credits/theend.png diff --git a/gfx/credits/togepi.2bpp b/gfx/credits/togepi.2bpp Binary files differnew file mode 100755 index 00000000..145c391c --- /dev/null +++ b/gfx/credits/togepi.2bpp diff --git a/gfx/credits/togepi.png b/gfx/credits/togepi.png Binary files differnew file mode 100755 index 00000000..a60cc4b8 --- /dev/null +++ b/gfx/credits/togepi.png diff --git a/layout.link b/layout.link index 7487d0b1..bbe9185a 100644 --- a/layout.link +++ b/layout.link @@ -104,6 +104,7 @@ ROMX $20 "Pics 13" ROMX $21 "bank21" + "Credits" ROMX $23 "bank23" ROMX $24 @@ -220,28 +220,10 @@ INCBIN "gfx/pokemon/egg/front.2bpp.lz" SECTION "bank21", ROMX -Printer_StartTransmission:: - dr $84000, $842db -_PrinterReceive:: - dr $842db, $8442c -PrintDexEntry:: - dr $8442c, $84560 -PrintUnownStamp:: - dr $84560, $845d4 -PrintMailAndExit:: - dr $845d4, $84616 -PrintPartymon:: - dr $84616, $84684 -_PrintDiploma:: - dr $84684, $8640a - -HallOfFame:: - dr $8640a, $86446 -RedCredits:: - dr $86446, $86632 -_HallOfFamePC:: - dr $86632, $87b65 -INCLUDE "data/credits_strings_pointers.asm" +INCLUDE "engine/printer/printer_serial.asm" +INCLUDE "engine/printer/printer.asm" +INCLUDE "gfx/battle_anims.asm" +INCLUDE "engine/events/halloffame.asm" SECTION "bank23", ROMX @@ -319,7 +301,11 @@ FreezeMonIcons:: UnfreezeMonIcons:: dr $8e922, $8e93d HoldSwitchmonIcon:: - dr $8e93d, $8fe43 + dr $8e93d, $8fdbe +InitDisplayForHallOfFame:: + dr $8fdbe, $8fdff +InitDisplayForRedCredits:: + dr $8fdff, $8fe43 ELIF DEF(_SILVER) dr $8d332, $8e6e3 @@ -338,7 +324,11 @@ FreezeMonIcons:: UnfreezeMonIcons:: dr $8e908, $8e923 HoldSwitchmonIcon:: - dr $8e923, $8fe29 + dr $8e923, $8fda4 +InitDisplayForHallOfFame:: + dr $8fda4, $8fde5 +InitDisplayForRedCredits:: + dr $8fde5, $8fe43 ENDC @@ -403,7 +393,9 @@ DummyPredef2F:: INCLUDE "data/moves/animations.asm" LoadPoisonBGPals:: - dr $cbc76, $cbdba + dr $cbc76, $cbcbd +TheEndGFX:: +INCBIN "gfx/credits/theend.2bpp" SECTION "Move Animations", ROMX @@ -441,7 +433,11 @@ SECTION "bank38", ROMX ret ret _Diploma:: - dr $e0002, $e081b + dr $e0002, $e0009 +PlaceDiplomaOnScreen:: + dr $e0009, $e00ae +PrintDiplomaPage2:: + dr $e00ae, $e081b RotateUnownFrontpic:: dr $e081b, $e0909 _CardFlip:: @@ -514,7 +510,10 @@ LoadHPBar:: StatsScreen_LoadFont:: dr $f80a6, $f80d9 LoadStatsScreenPageTilesGFX:: - dr $f80d9, $f8aa2 + dr $f80d9, $f80f2 + +FontExtra: + dr $f80f2, $f8aa2 StatsScreenPageTilesGFX:: dr $f8aa2, $f8bb2 EnemyHPBarBorderGFX:: @@ -525,13 +524,14 @@ ExpBarGFX:: dr $f8c02, $f8c92 TownMapGFX:: dr $f8c92, $f930e - Footprints:: dr $f930e, $fb30e UnownFont:: dr $fb30e, $fb4be + INCLUDE "data/collision_permissions.asm" + Shrink1Pic:: dr $fb5be, $fb64e Shrink2Pic:: diff --git a/tools/gfx.py b/tools/gfx.py index ba3e3d3d..05b18cae 100644 --- a/tools/gfx.py +++ b/tools/gfx.py @@ -106,6 +106,14 @@ def filepath_rules(filepath): args['pic_dimensions'] = 6, 6 elif name == 'balls': args['width'] = 32 + + elif 'gfx/credits' in filedir: + if name in ['bellossom', 'togepi', 'elekid', 'sentret']: + args['width'] = 32 + elif name == 'theend': + args['width'] = 64 + elif name == 'border': + args['width'] = 72 elif 'gfx/debug' in filedir: if name == 'color_test': @@ -218,10 +226,11 @@ def filepath_rules(filepath): args['width'] = 16 elif 'gfx/tilesets' in filedir: - if filedir != 'gfx/tilesets': + if filedir == 'gfx/tilesets/roofs': + args['width'] = 24 + elif filedir != 'gfx/tilesets': args['width'] = 8 else: - args['width'] = 128 args['tileset'] = True elif 'gfx/trainer_card' in filedir: diff --git a/tools/unused_sources.sh b/tools/unused_sources.sh index 68ae5a96..b0b9e368 100755 --- a/tools/unused_sources.sh +++ b/tools/unused_sources.sh @@ -5,7 +5,8 @@ toplevel='audio.asm data/text/common.asm data/pokemon/dex_entries.asm wram.asm main.asm home.asm gfx/sprites.asm gfx/pics_gold.asm gfx/pics_silver.asm data/maps/map_data.asm engine/overworld/events.asm rgbdscheck.asm -data/pokemon/egg_moves.asm data/pokemon/evos_attacks.asm gfx/tilesets.asm' +data/pokemon/egg_moves.asm data/pokemon/evos_attacks.asm gfx/tilesets.asm +engine/movie/credits.asm' for asm in $toplevel; do echo "$asm" @@ -287,6 +287,10 @@ wInitMinuteBuffer:: db ; c526 wTimeSetBufferEnd:: NEXTU ; c508 +; hall of fame temp struct +wHallOfFameTemp:: hall_of_fame wHallOfFameTemp + +NEXTU ; c508 ; link engine data wLink_c508:: ds 10 wc512:: ds 10 @@ -415,6 +419,12 @@ wOverworldMapBlocks:: ds 1300 ; c700 wOverworldMapBlocksEnd:: NEXTU ; c700 +; GB Printer screen RAM +wGameboyPrinterRAM:: +wGameboyPrinterScreen:: ds SCREEN_HEIGHT * SCREEN_WIDTH ; c700 +wGameboyPrinterScreenEnd:: ; c868 + +NEXTU ; c700 ; GB Printer data wGameboyPrinter2bppSource:: ds 40 tiles wGameboyPrinter2bppSourceEnd:: @@ -543,6 +553,11 @@ wLYOverridesBackup:: ds SCREEN_HEIGHT_PX wLYOverridesBackupEnd:: ds 112 UNION ; c900 +; blank credits tile buffer +wCreditsBlankFrame2bpp:: ds 4 * 4 tiles +wCreditsBlankFrame2bppEnd:: + +NEXTU ; c900 ; mystery gift data wc900:: db wc901:: db @@ -1009,6 +1024,12 @@ wTitleScreenTimer:: dw ENDU NEXTU ; ce64 +; credits data +wCreditsBorderFrame:: db +wCreditsBorderMon:: db +wCreditsLYOverride:: db + +NEXTU ; ce64 ; pokedex wPrevDexEntryJumptableIndex:: db wPrevDexEntryBackup:: @@ -1037,6 +1058,7 @@ NEXTU ; ce64 wFrameCounter:: wMomBankDigitCursorPosition:: wNamingScreenLetterCase:: +wHallOfFameMonCounter:: wSlotsDelay:: db wPrinterQueueLength:: db @@ -1208,6 +1230,11 @@ UNION ; ceed wTempMail:: mailmsg wTempMail NEXTU ; ceed +; credits +wCreditsPos:: dw +wCreditsTimer:: db + +NEXTU ; ceed ; mon buffer wBufferMonNick:: ds MON_NAME_LENGTH ; ceed wBufferMonOT:: ds NAME_LENGTH ; cef8 |