From c0bf3ff49d018a4dca59f2b67691236a7948b372 Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Wed, 20 Sep 2023 01:24:35 +0100 Subject: [PATCH] Fix Giovanni's Room + bits and bobs - Fixed the Arrow Tiles, it was very silly. - Edited the text in Giovanni's Room to fix a gap, but also ended up adding citations and stuff to the file for the interested. - Edited the map in Giovanni's Room to make a little more sense. - Fixed some post-game Hall of Fame setup stuff. - Edited Install.MD to be more idiot-proof --- INSTALL.md | 10 ++++++ data/maps/objects/GiovannisRoom.asm | 6 ++-- data/maps/objects/RedsHouse2F.asm | 3 +- data/maps/objects/ViridianCity.asm | 2 +- maps/GiovannisRoom.blk | 2 +- ram/wram.asm | 3 +- scripts/GiovannisRoom.asm | 34 +++++++----------- scripts/HallOfFame.asm | 14 ++++---- text/GiovannisRoom.asm | 56 +++++++++++++++++------------ 9 files changed, 73 insertions(+), 57 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index e0204866..7ebf7207 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,3 +1,13 @@ +# NOTICE + +This file comes with base pokered. To install KEP, use https://github.com/PlagueVonKarma/kep-hack whenever the link to the pokered repository comes up. + +Also, **PLEASE** read this carefully. 99.9% of the install issues you will face will come from not reading this properly. Follow it to the letter, just with the above considered. + +Should issues persist, I cannot give much support other than directing you to [pret's Discord](https://discord.gg/hu55wwjdAT). Please be kind and respectful to them, and ask detailed questions. Don't just post the error log, so on, so forth. + +~ Plague von Karma. + # Instructions These instructions explain how to set up the tools required to build **pokered**, including [**rgbds**](https://github.com/gbdev/rgbds), which assembles the source files into a ROM. diff --git a/data/maps/objects/GiovannisRoom.asm b/data/maps/objects/GiovannisRoom.asm index e6977232..29169233 100644 --- a/data/maps/objects/GiovannisRoom.asm +++ b/data/maps/objects/GiovannisRoom.asm @@ -3,7 +3,7 @@ GiovannisRoom_Object: def_warp_events warp_event 5, 4, VIRIDIAN_GYM, 3 - warp_event 17, 4, VIRIDIAN_CITY, 6 + warp_event 15, 4, VIRIDIAN_CITY, 6 def_bg_events @@ -11,8 +11,8 @@ GiovannisRoom_Object: object_event 4, 22, SPRITE_PAPER, STAY, DOWN, 1 object_event 17, 8, SPRITE_PAPER, STAY, RIGHT, 2 object_event 17, 15, SPRITE_PAPER, STAY, DOWN, 3 - object_event 8, 16, SPRITE_PAPER, STAY, RIGHT, 4 - object_event 17, 22, SPRITE_POKE_BALL, STAY, NONE, 5, TM_EARTHQUAKE + object_event 14, 24, SPRITE_PAPER, STAY, RIGHT, 4 + object_event 16, 4, SPRITE_POKE_BALL, STAY, NONE, 5, TM_EARTHQUAKE object_event 5, 22, SPRITE_POKE_BALL, STAY, NONE, 6, PROTECTOR def_warps_to GIOVANNIS_ROOM diff --git a/data/maps/objects/RedsHouse2F.asm b/data/maps/objects/RedsHouse2F.asm index f65f2b41..8a02d3b2 100644 --- a/data/maps/objects/RedsHouse2F.asm +++ b/data/maps/objects/RedsHouse2F.asm @@ -8,9 +8,10 @@ RedsHouse2F_Object: ;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1 ;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater ;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt - warp_event 5, 1, HALL_OF_FAME, 1 ; Test post-game setup + ;warp_event 5, 1, HALL_OF_FAME, 1 ; Test post-game setup ;warp_event 5, 1, GARNET_CAVERN_B1F, 1 ; Test GCuno ;warp_event 5, 1, FARAWAY_ISLAND_INSIDE, 1 ; Test Mew + warp_event 5, 1, GIOVANNIS_ROOM, 1 ; Test spinner tiles def_bg_events diff --git a/data/maps/objects/ViridianCity.asm b/data/maps/objects/ViridianCity.asm index 2483dd6b..30f7216e 100644 --- a/data/maps/objects/ViridianCity.asm +++ b/data/maps/objects/ViridianCity.asm @@ -7,7 +7,7 @@ ViridianCity_Object: warp_event 21, 15, VIRIDIAN_SCHOOL_HOUSE, 1 warp_event 21, 9, VIRIDIAN_NICKNAME_HOUSE, 1 warp_event 32, 7, VIRIDIAN_GYM, 1 - warp_event 32, 3, GIOVANNIS_ROOM, 2 + warp_event 33, 3, GIOVANNIS_ROOM, 2 warp_event 12, 15, VIRIDIAN_PRE_GYM, 1 def_bg_events diff --git a/maps/GiovannisRoom.blk b/maps/GiovannisRoom.blk index fe968d84..6126dde8 100644 --- a/maps/GiovannisRoom.blk +++ b/maps/GiovannisRoom.blk @@ -1 +1 @@ -............@AABAAAAB..DoFnF..@*+B 55..D F GF..D F ''F..D F 59..D F'..HwEJ55..DF555..D^F*+AAB..DGGqF..S F..HIIJIIIIJ. \ No newline at end of file +............@AABAAAAB..DoF:;F..@+B 55..DwEF GF..DwEF 5'F..DwEF 59..DwEF'..H J55..DF555..DF*+AAB..DGGq^..D SCG5..HIIJ3333J. \ No newline at end of file diff --git a/ram/wram.asm b/ram/wram.asm index 9a3d34d6..40b1336a 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -2112,7 +2112,8 @@ wRoute23CurScript:: db wSeafoamIslandsB4FCurScript:: db wRoute18Gate1FCurScript:: db wBattleTentCurScript:: db - ds 5 +wGiovannisRoomCurScript:: db + ds 4 wGameProgressFlagsEnd:: UNION diff --git a/scripts/GiovannisRoom.asm b/scripts/GiovannisRoom.asm index b478e300..99afbebf 100644 --- a/scripts/GiovannisRoom.asm +++ b/scripts/GiovannisRoom.asm @@ -1,5 +1,10 @@ GiovannisRoom_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ld de, GiovannisRoom_ScriptPointers + ld a, [wGiovannisRoomCurScript] + call ExecuteCurMapScriptInTable + ld [wGiovannisRoomCurScript], a + ret GiovannisRoom_ScriptPointers: dw GiovannisRoomScript0 @@ -13,7 +18,7 @@ GiovannisRoomScript0: ld hl, GiovannisRoomArrowTilePlayerMovement call DecodeArrowMovementRLE cp $ff - jp z, CheckFightingMapTrainers + jr z, .done ; Normally this checks for map trainers, but since there's none, we can remove them. ld hl, wd736 set 7, [hl] call StartSimulatingJoypadStates @@ -21,10 +26,12 @@ GiovannisRoomScript0: call PlaySound ld a, $ff ld [wJoyIgnore], a - ld a, $3 + ld a, $1 ld [wCurMapScript], a +.done ret +; Some tile movements were removed due to either being unnecessary or ports from Viridian Gym itself. GiovannisRoomArrowTilePlayerMovement: map_coord_movement 12, 16, GiovannisRoomArrowMovement1 map_coord_movement 14, 15, GiovannisRoomArrowMovement2 @@ -34,11 +41,8 @@ GiovannisRoomArrowTilePlayerMovement: map_coord_movement 15, 8, GiovannisRoomArrowMovement7 map_coord_movement 12, 9, GiovannisRoomArrowMovement8 map_coord_movement 14, 9, GiovannisRoomArrowMovement9 - map_coord_movement 13, 10, GiovannisRoomArrowMovement10 map_coord_movement 15, 10, GiovannisRoomArrowMovement11 - map_coord_movement 12, 11, GiovannisRoomArrowMovement12 map_coord_movement 14, 11, GiovannisRoomArrowMovement13 - map_coord_movement 14, 5, GiovannisRoomArrowMovement14 db -1 ; end GiovannisRoomArrowMovement1: @@ -78,32 +82,18 @@ GiovannisRoomArrowMovement9: db D_UP, 1 db -1 ; end -GiovannisRoomArrowMovement10: - db D_RIGHT, 5 - db -1 ; end - GiovannisRoomArrowMovement11: db D_RIGHT, 3 db -1 ; end -GiovannisRoomArrowMovement12: - db D_UP, 1 - db D_RIGHT, 2 - db D_UP, 2 - db -1 ; end - GiovannisRoomArrowMovement13: db D_UP, 3 db -1 ; end - -GiovannisRoomArrowMovement14: - db D_RIGHT, 4 - db -1 ; end GiovannisRoomScript4: ld a, [wSimulatedJoypadStatesIndex] and a - jp nz, LoadSpinnerArrowTiles + jr nz, .GiovannisRoomLoadSpinnerArrow xor a ld [wJoyIgnore], a ld hl, wd736 @@ -111,6 +101,8 @@ GiovannisRoomScript4: ld a, $0 ld [wCurMapScript], a ret +.GiovannisRoomLoadSpinnerArrow + farjp LoadSpinnerArrowTiles GiovannisRoom_TextPointers: dw GiovannisRoomText1 diff --git a/scripts/HallOfFame.asm b/scripts/HallOfFame.asm index 78ea665c..283a2672 100644 --- a/scripts/HallOfFame.asm +++ b/scripts/HallOfFame.asm @@ -149,14 +149,14 @@ ResetLegendaryPokemon: .skipArticuno ; Rinse and repeat. ld a, DEX_ZAPDOS call HoFIsPokemonBitSet - jr z, .skipZapdos + jr nz, .skipZapdos ResetEvent EVENT_BEAT_ZAPDOS ld a, HS_ZAPDOS call ShowThis .skipZapdos ld a, DEX_MOLTRES call HoFIsPokemonBitSet - jr z, .skipMoltres + jr nz, .skipMoltres ResetEvent EVENT_BEAT_MOLTRES ld a, HS_MOLTRES call ShowThis @@ -175,7 +175,7 @@ ResetLegendaryPokemon: ; So, we put this here. ld a, DEX_MEW call HoFIsPokemonBitSet - jr z, .skipMew + jr nz, .skipMew ResetEvent EVENT_BEAT_MEW ld a, HS_MEW call ShowThis @@ -184,28 +184,28 @@ ResetLegendaryPokemon: jp z, .skipGalarianBirdsAndMewtwo ; If you haven't cleared the game yet, you've not met the Galarian Birds. So we may as well skip processing all this. ld a, DEX_ARTICUNO_G call HoFIsPokemonBitSet - jr z, .skipArticunoG + jr nz, .skipArticunoG ResetEvent EVENT_BEAT_ARTICUNO_G ld a, HS_GARNET_ARTICUNO_G call ShowThis .skipArticunoG ld a, DEX_ZAPDOS_G call HoFIsPokemonBitSet - jr z, .skipZapdosG + jr nz, .skipZapdosG ResetEvent EVENT_BEAT_ZAPDOSG ld a, HS_BRUNSWICK_ZAPDOS_G_2 call ShowThis .skipZapdosG ld a, DEX_MOLTRES_G call HoFIsPokemonBitSet - jr z, .skipMoltresG + jr nz, .skipMoltresG ResetEvent EVENT_BEAT_GALARIAN_MOLTRES ld a, HS_MOLTRES_G call ShowThis .skipMoltresG ld a, DEX_MEWTWO call HoFIsPokemonBitSet - jr z, .skipGalarianBirdsAndMewtwo + jr nz, .skipGalarianBirdsAndMewtwo ResetEvent EVENT_BEAT_MEWTWO ld a, HS_MEWTWO call ShowThis diff --git a/text/GiovannisRoom.asm b/text/GiovannisRoom.asm index 47684816..68bcd2a6 100644 --- a/text/GiovannisRoom.asm +++ b/text/GiovannisRoom.asm @@ -1,3 +1,9 @@ +; Much of the text here is taken from real Giovanni lore. You could say I wanted to write a love letter to Giovanni as a character here. +; If you read all this, thank you for loving this character as much as I do. +; ~ Plague von Karma + +; Mysteries of the Earth is a book written by Giovanni in the Adventures Manga. In that book, he is confirmed to have discovered Rhyperior. +; Additionally, in Adventures, his first caught Pokemon was a Weedle - this is why he uses Beedrill. _GiovannisRoomText1:: text "MYSTERIES OF THE" line "EARTH - GIOVANNI" @@ -9,19 +15,16 @@ _GiovannisRoomText1:: para "Its name is" line "RHYPERIOR." - cont "However, it" - cont "cannot be" - cont "obtained with" - cont "items found in" - cont "KANTO naturally." - para "A PROTECTOR is" - line "required, which" - cont "we managed to" - cont "import here." + para "We can't get it" + line "obtained with" + cont "items native to" + cont "KANTO. We must" + cont "use a PROTECTOR." - para "It unfortunately" - line "fails to address" + para "Unfortunately," + line "RHYPERIOR does" + cont "not address" cont "RHYDON's poor" cont "SPEED. Ergo, it" cont "cannot use my" @@ -30,20 +33,23 @@ _GiovannisRoomText1:: cont "full potential." done +; Madame Boss, Giovanni's mother, is from a Japan-exclusive Radio Drama. +; http://www.rigelatin.net/copycat/saga/origin/dramaep1.php +; In Pokemon Origins, Giovanni is confirmed to have begun with a Charmander. +; This combines those two facts. _GiovannisRoomText2:: text "It's a torn-out" line "page from an" cont "old diary..." - para "Aug 1st, 1975" - line "I managed to" - cont "get my first" - cont "#MON." + para "Aug 1st, 1975" ; Did you know we calc'd the year here? + line "I got my first" + cont "#MON!" para "It's a CHARMANDER!" - line "But...I have to" - cont "keep this a" - cont "secret from" + + para "But...I must keep" + line "it a secret from" cont "mother." para "She would auction" @@ -56,6 +62,12 @@ _GiovannisRoomText2:: line "you!" done +; We never have Giovanni use Charizard, as he's never shown doing so, even in Origins. +; My assumption is one of the following; +; - He doesn't want it involved with his Yakuza activities. +; - He released it. +; - His mother ended up selling it. +; I like giving the player the opportunity to think about this too! _GiovannisRoomText3:: text "Various financial" @@ -63,12 +75,11 @@ _GiovannisRoomText3:: cont "scattered on" cont "the floor..." - para "PROTECTOR: ¥3,000" + para "PROTECTOR: ¥3,000" ; Giovanni discovered the Protector's use with Rhyperior. - para "DIRE HIT: ¥5,200" + para "DIRE HIT: ¥5,200" ; Giovanni uses this in battle. - para "DEVELOPMENT OF" - line "TM27: ¥15,000" + para "TM27 R&D: ¥15,000" ; Giovanni is confirmed to have created Fissure in vanilla RBY. He also says he made Earthquake in FRLG, but it feels contrived. para "Business: ¥100,000" @@ -76,6 +87,7 @@ _GiovannisRoomText3:: done +; This is a reference to the Radio Drama. Jessie's mother dies trying to find it. _GiovannisRoomText4:: text "It's a document" line "about a failed"