From a2acee24e70f5c6abd5b8ab478812375ab1a6ca5 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Thu, 4 Jan 2024 22:18:45 +0000 Subject: [PATCH 01/21] Music fadeout before Champion fight --- scripts/ChampionsRoom.asm | 20 ++++++++++++++++++++ text/ChampionsRoom.asm | 6 ++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm index cef930e4..ac447474 100644 --- a/scripts/ChampionsRoom.asm +++ b/scripts/ChampionsRoom.asm @@ -276,9 +276,25 @@ ChampionsRoom_TextPointers: GaryText1: text_asm CheckEvent EVENT_BEAT_CHAMPION_RIVAL + jr nz, .championBeaten ld hl, GaryChampionIntroText + call PrintText + ld a, 5 + ld [wMusicFade], a + xor a + ld [wMusicFadeID], a +.waitloop + ld a, [wMusicFade] + and a + jr nz, .waitloop + + ld a, SFX_STOP_ALL_MUSIC + call PlaySound + ld hl, GaryChampionIntroTextPart2 jr z, .printText +.championBeaten ld hl, GaryText_76103 + jr z, .printText .printText call PrintText jp TextScriptEnd @@ -287,6 +303,10 @@ GaryChampionIntroText: text_far _GaryChampionIntroText text_end +GaryChampionIntroTextPart2: + text_far _GaryChampionIntroTextPart2 + text_end + GaryDefeatedText: text_far _GaryDefeatedText text_end diff --git a/text/ChampionsRoom.asm b/text/ChampionsRoom.asm index 6408ec54..37fbc1b9 100644 --- a/text/ChampionsRoom.asm +++ b/text/ChampionsRoom.asm @@ -19,9 +19,11 @@ _GaryChampionIntroText:: cont "that would beat" cont "any #MON type!" - para "And now!" + para "And now..." + prompt - para "I'm the #MON" +_GaryChampionIntroTextPart2:: + text "I'm the #MON" line "LEAGUE champion!" para "! Do you" From a486ec76576409c3c5cd53acbf846dd96972f77d Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Thu, 4 Jan 2024 22:49:02 +0000 Subject: [PATCH 02/21] Update LancesRoom.asm this always bugged me so I'm importing this small change from PureRGB --- scripts/LancesRoom.asm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm index 020923ba..e50a3cae 100644 --- a/scripts/LancesRoom.asm +++ b/scripts/LancesRoom.asm @@ -61,6 +61,7 @@ LanceScript0: ld a, [wCoordIndex] cp $3 ; Is player standing next to Lance's sprite? jr nc, .notStandingNextToLance + call DoFacings ld a, $1 ldh [hSpriteIndexOrTextID], a jp DisplayTextID @@ -179,3 +180,19 @@ LanceRematchAfterBattleText: text_asm SetEvent EVENT_BEAT_LANCE jp TextScriptEnd + +DoFacings: ; PureRGBnote: ADDED: when about to fight Lance, lance and the player will face each other properly to talk. + ld a, [wYCoord] + cp 1 + jr z, .leftOfLance + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ret +.leftOfLance + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a + ld a, 1 + ldh [hSpriteIndex], a + ld a, SPRITE_FACING_LEFT + ldh [hSpriteFacingDirection], a + jp SetSpriteFacingDirection From e6763371e4fcb26da70709fe0566ab4a8d1d2083 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Fri, 5 Jan 2024 13:59:27 +0000 Subject: [PATCH 03/21] AI Improvements This fixes some of the issues with the current AI system to make them better. In short: - Most Trainers should correctly recognise when a move is not very effective, and not use it. If they have a supereffective move and a regular-effective move, they will slightly prioritise the supereffective one, but not always use it like in regular RBY. This prevents the Lorelei softlock, for example. - Trainers won't attempt to set status effects on Pokemon that already have one, won't try recovering at full health, and won't attempt to set up multiple Reflects or Light Screen - Certain high-level trainers will recognise when a Pokemon does not have a status, and will try to inflict one if so. This makes Agatha's, Erika's and Koga's team types much more effective. - Youngsters and Cue Balls no longer pick moves randomly and will actually give it some thought - Brock and the Engineers now recognize type effectiveness, Students do not given how early they're encountered. - General improvements to move choices for all Gym Leaders, E4 and Shinjuku Jacky. We're almost done. --- README.md | 2 +- data/predef_pointers.asm | 2 +- data/trainers/move_choices.asm | 50 ++++---- engine/battle/trainer_ai.asm | 145 ++++++++++++----------- engine/battle/unused_stats_functions.asm | 81 ++++++++----- main.asm | 4 +- 6 files changed, 157 insertions(+), 127 deletions(-) diff --git a/README.md b/README.md index 855d2203..c02def00 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,7 @@ and more! Known Bugs ==== -- The new AI (possibly bugged?) behaves quite oddly, such as using Recover at full HP, spamming status-inflicting moves like Lovely Kiss, neglecting supereffective moves, setting up multiple Reflects, etc. +- Currently testing... Evolution Methods for new Pokemon ==== diff --git a/data/predef_pointers.asm b/data/predef_pointers.asm index 559d990d..eba3a0e4 100644 --- a/data/predef_pointers.asm +++ b/data/predef_pointers.asm @@ -50,7 +50,7 @@ PredefPointers:: add_predef UpdateHPBar add_predef HPBarLength add_predef Diploma_TextBoxBorder -; add_predef DoubleOrHalveSelectedStats + add_predef DoubleOrHalveSelectedStats add_predef ShowPokedexMenu add_predef EvolutionAfterBattle add_predef SaveSAVtoSRAM0 diff --git a/data/trainers/move_choices.asm b/data/trainers/move_choices.asm index 306c7c7c..7facfddb 100644 --- a/data/trainers/move_choices.asm +++ b/data/trainers/move_choices.asm @@ -9,7 +9,7 @@ ENDM ; move choice modification methods that are applied for each trainer class TrainerClassMoveChoiceModifications: list_start TrainerClassMoveChoiceModifications - move_choices ; YOUNGSTER + move_choices 1 ; YOUNGSTER move_choices 1 ; BUG CATCHER move_choices 1 ; LASS move_choices 1, 3 ; SAILOR @@ -20,10 +20,10 @@ TrainerClassMoveChoiceModifications: move_choices 1 ; HIKER move_choices 1 ; BIKER move_choices 1, 3 ; BURGLAR - move_choices 1 ; ENGINEER + move_choices 1, 3 ; ENGINEER move_choices 1, 3 ; FISHER move_choices 1, 3 ; SWIMMER - move_choices ; CUE_BALL + move_choices 1 ; CUE_BALL move_choices 1 ; GAMBLER move_choices 1, 3 ; BEAUTY move_choices 1, 2 ; PSYCHIC_TR @@ -33,32 +33,32 @@ TrainerClassMoveChoiceModifications: move_choices 1 ; BIRD_KEEPER move_choices 1 ; BLACKBELT move_choices 1 ; RIVAL1 - move_choices 1, 3 ; PROF_OAK - move_choices 1, 2 ; CHIEF - move_choices 1, 2 ; SCIENTIST - move_choices 1, 3 ; GIOVANNI + move_choices 1, 2, 3, 4 ; PROF_OAK + move_choices 1, 2, 3, 4 ; CHIEF + move_choices 1, 2, 4 ; SCIENTIST + move_choices 1, 2, 3 ; GIOVANNI move_choices 1 ; ROCKET - move_choices 1, 3 ; COOLTRAINER_M - move_choices 1, 3 ; COOLTRAINER_F - move_choices 1 ; BRUNO - move_choices 1 ; BROCK - move_choices 1, 3 ; MISTY - move_choices 1, 3 ; LT_SURGE - move_choices 1, 3 ; ERIKA - move_choices 1, 3 ; KOGA - move_choices 1, 3 ; BLAINE - move_choices 1, 3 ; SABRINA + move_choices 1, 3, 4 ; COOLTRAINER_M + move_choices 1, 3, 4 ; COOLTRAINER_F + move_choices 1, 2, 3 ; BRUNO + move_choices 1, 3 ; BROCK + move_choices 1, 3, 4 ; MISTY + move_choices 1, 2, 3 ; LT_SURGE + move_choices 1, 3, 4 ; ERIKA + move_choices 1, 3, 4 ; KOGA + move_choices 1, 2, 3 ; BLAINE + move_choices 1, 3, 4 ; SABRINA move_choices 1, 2 ; GENTLEMAN move_choices 1, 3 ; RIVAL2 - move_choices 1, 3 ; RIVAL3 - move_choices 1, 2, 3 ; LORELEI + move_choices 1, 2, 3, 4 ; RIVAL3 + move_choices 1, 2, 3, 4 ; LORELEI move_choices 1 ; CHANNELER - move_choices 1 ; AGATHA - move_choices 1, 3 ; LANCE - move_choices 1, 3, ; YUJIROU, was UNUSED_JUGGLER - move_choices 1, 3, ; STUDENT + move_choices 1, 2, 3, 4 ; AGATHA + move_choices 1, 2, 3, 4 ; LANCE + move_choices 1, 3, ; YUJIROU + move_choices 1 ; STUDENT move_choices 1, 3, ; FIREFIGHTER - move_choices 1, 3, ; KOICHI - move_choices 1, 3, ; JACK + move_choices 1, 2, 3 ; KOICHI + move_choices 1, 2, 3, 4 ; JACK move_choices 1, 3, ; JESSIE_JAMES assert_list_length NUM_TRAINERS diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index dca83aa9..1223359c 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -7,6 +7,18 @@ AIEnemyTrainerChooseMoves: ld [hli], a ; move 2 ld [hli], a ; move 3 ld [hl], a ; move 4 + +;;;;;;;;;; shinpokerednote: ADDED: make a backup buffer + push hl + ld a, $ff + inc hl + ld [hli], a ;backup 1 + ld [hli], a ;backup 2 + ld [hli], a ;backup 3 + ld [hl], a ;backup 4 + pop hl +;;;;;;;;;; + ld a, [wEnemyDisabledMove] ; forbid disabled move (if any) swap a and $f @@ -52,6 +64,11 @@ AIEnemyTrainerChooseMoves: ld de, .nextMoveChoiceModification ; set return address push de jp hl ; execute modification function +.loopFindMinimumEntries_backupfirst ;shinpokerednote: ADDED: make a backup of the scores + ld hl, wBuffer ; temp move selection array + ld de, wBuffer + NUM_MOVES ;backup buffer + ld bc, NUM_MOVES + rst _CopyData .loopFindMinimumEntries ; all entries will be decremented sequentially until one of them is zero ld hl, wBuffer ; temp move selection array ld de, wEnemyMonMoves ; enemy moves @@ -466,10 +483,8 @@ AIMoveChoiceModification3: jr c, .notEffectiveMove ;ld a, [wEnemyMoveEffect] ; check for reasons not to use a super effective move here - dec [hl] ; slightly encourage this super effective move .checkSpecificEffects ; we'll further encourage certain moves - call EncouragePriorityIfSlow call EncourageDrainingMoveIfLowHealth jr .nextMove .notEffectiveMove ; discourages non-effective moves if better moves are available @@ -479,7 +494,7 @@ AIMoveChoiceModification3: ld a, [wEnemyMoveType] ld d, a ld hl, wEnemyMonMoves ; enemy moves - ld b, NUM_MOVES + 1 + ld bc, NUM_MOVES + 1 ld c, $0 .loopMoves dec b @@ -543,18 +558,6 @@ CompareSpeed: ret ;;;;;;;;;; -; PureRGBnote: ADDED: encourages priority moves if the enemy's pokemon is slower than the player's and the move is neutral or super effective. -; BUT this effect is only applied after you have the soulbadge to prevent priority moves from being spammed early game. -; Applies to trainers that use AI subroutine 3 -EncouragePriorityIfSlow: - ld a, [wObtainedBadges] - bit BIT_SOULBADGE, a - ret z - call CompareSpeed - ret nc - dec [hl] ; encourage the move if it's a priority move and the pokemon is slower - ret - ; PureRGBnote: ADDED: if the opponent has less than 1/2 health they will prefer healing moves if they use AI subroutine 3 EncourageDrainingMoveIfLowHealth: ld a, [wEnemyMoveEffect] @@ -576,11 +579,11 @@ AIMoveChoiceModification4: ld b, NUM_MOVES + 1 .nextMove dec b - jr z, .done ; processed all 4 moves + ret z ; processed all 4 moves inc hl ld a, [de] and a - jr z, .done ; no more moves in move set + ret z ; no more moves in move set inc de call ReadMove ld a, [wEnemyMoveEffect] @@ -626,8 +629,7 @@ AIMoveChoiceModification4: jr z, .nextMove ; if the AI thinks the player IS NOT asleep before they switch, we shouldn't encourage based on the new mon's status ld a, [wBattleMonStatus] and SLP_MASK - jr nz, .preferMoveEvenMore ; heavier favor for dream eater if the opponent is asleep - jr .nextMove + jr z, .nextMove .preferMoveEvenMore dec [hl] jr .preferMove @@ -676,9 +678,6 @@ TrainerAI: ld a, [wIsInBattle] dec a ret z ; if not a trainer, we're done here - ld a, [wCurMap] - cp BATTLE_TENT - ret z ; if we are in battle tent, we are done ld a, [wLinkState] cp LINK_STATE_BATTLING ret z ; if in a link battle, we're done as well @@ -732,12 +731,9 @@ BlackbeltAI: jp AIUseXAttack GiovanniAI: - cp 20 percent + 1 + cp 25 percent + 1 ret nc - ld a, [wEnemyBattleStatus2] - bit GETTING_PUMPED, a - ret nz - jp AIUseDireHit + jp AIUseXAttack ; Used to use a Guard Spec. This will make the item use have a proper impact - healing doesn't feel right for a trainer fixated on strength. CooltrainerMAI: cp 20 percent + 1 @@ -765,41 +761,46 @@ BrockAI: jp AIUseFullHeal MistyAI: - cp 20 percent + 1 + cp 25 percent + 1 ret nc - jp AIUseXDefend + ld a, 10 + call AICheckIfHPBelowFraction + ret nc + jp AIUseSuperPotion ; Replicates Starmie using Recover. Unlike other trainers that heal, Misty will do this 26% of the time instead of 51%. LtSurgeAI: - cp 10 percent + 1 + cp 20 percent + 1 ret nc - jp AIUseXSpeed + jp AIUseXSpecial ErikaAI: cp 50 percent + 1 ret nc - ld a, 5 + ld a, 10 call AICheckIfHPBelowFraction ret nc jp AIUseSuperPotion KogaAI: - cp 10 percent + 1 + cp 50 percent + 1 ret nc - jp AIUseXAttack + ld a, 10 + call AICheckIfHPBelowFraction + ret nc + jp AIUseSuperPotion ; Koga is weird - I don't think anything fits. X Attack is certainly not the move though... -BlaineAI: ;blaine needs to check HP. this was an oversight - cp 40 percent + 1 - jr nc, .blainereturn - ld a, 2 - call AICheckIfHPBelowFraction - jp c, AIUseSuperPotion -.blainereturn - ret +BlaineAI: + cp 25 percent + 1 + ret nc + ld a, 10 + call AICheckIfHPBelowFraction + ret nc ; this fixes the super potion thing - PvK + jp AIUseHyperPotion ; Instead of a Super Potion though, let's give him this. More impactful for the sixth gym while staying true to the meme that everyone knows Gen 1 Blaine for. SabrinaAI: cp 25 percent + 1 ret nc - ld a, 5 + ld a, 10 call AICheckIfHPBelowFraction ret nc jp AIUseHyperPotion @@ -810,7 +811,7 @@ Rival2AI: ld a, 5 call AICheckIfHPBelowFraction ret nc - jp AIUseHyperPotion + jp AIUseSuperPotion Rival3AI: cp 40 percent - 1 @@ -821,43 +822,51 @@ Rival3AI: jp AIUseFullRestore LoreleiAI: - cp 50 percent + 1 + cp 15 percent + 1 + ret nc + jp AIUseXSpecial + cp 40 percent + 1 ret nc ld a, 5 call AICheckIfHPBelowFraction ret nc - jp AIUseHyperPotion + jp AIUseFullRestore BrunoAI: - ;cp 10 percent + 1 - ;ret nc - ;jp AIUseXDefend - cp 30 percent + 1 - jr nc, .brunoreturn + cp 15 percent + 1 + ret nc + jp AIUseXAttack + cp 40 percent + 1 + ret nc ld a, 5 call AICheckIfHPBelowFraction - jp c, AIUseHyperPotion -.brunoreturn - ret + ret nc + jp AIUseFullRestore AgathaAI: cp 8 percent jp c, AISwitchIfEnoughMons - cp 50 percent + 1 + cp 15 percent + 1 ret nc - ld a, 4 - call AICheckIfHPBelowFraction - ret nc - jp AIUseHyperPotion - -LanceAI: - cp 50 percent + 1 + jp AIUseXAccuracy ; hahahahahahahaha + cp 40 percent + 1 ret nc ld a, 5 call AICheckIfHPBelowFraction ret nc jp AIUseFullRestore +LanceAI: + cp 15 percent + 1 + ret nc + jp AIUseXSpecial + cp 50 percent + 1 + ret nc + ld a, 10 + call AICheckIfHPBelowFraction + ret nc + jp AIUseFullRestore + GenericAI: and a ; clear carry ret @@ -1087,12 +1096,12 @@ AICureStatus: ;shinpokerednote: CHANGED: modified to be more robust and also und res BADLY_POISONED, [hl] ;clear toxic bit ret -;AIUseXAccuracy: ; unused -; call AIPlayRestoringSFX -; ld hl, wEnemyBattleStatus2 -; set 0, [hl] -; ld a, X_ACCURACY -; jp AIPrintItemUse +AIUseXAccuracy: + call AIPlayRestoringSFX + ld hl, wEnemyBattleStatus2 + set 0, [hl] + ld a, X_ACCURACY + jp AIPrintItemUse ;AIUseGuardSpec: ; PureRGBnote: CHANGED: now unused ; call AIPlayRestoringSFX diff --git a/engine/battle/unused_stats_functions.asm b/engine/battle/unused_stats_functions.asm index d9f637ac..fc07098d 100644 --- a/engine/battle/unused_stats_functions.asm +++ b/engine/battle/unused_stats_functions.asm @@ -1,4 +1,54 @@ -; Used by the pureRGB AI +;shinpokerednote: ADDED: doubles the given stat +DoubleSelectedStats: + ldh a, [hWhoseTurn] + and a + ld a, [wPlayerStatsToDouble] + ld hl, wBattleMonAttack + jr z, .notEnemyTurn + ld a, [wEnemyStatsToDouble] + ld hl, wEnemyMonAttack +.notEnemyTurn + ld c, 4 + ld b, a +.loop + srl b + call c, .doubleStat + inc hl + inc hl + dec c + ret z + jr .loop +.doubleStat + push bc + ld a, [hli] + ld b, a + ld c, [hl] ; bc holds value of stat to double +;double the stat + sla c + rl b +;cap stat at 999 + ;b register contains high byte & c register contains low byte + ld a, c ;let's work on low byte first. Note that decimal 999 is $03E7 in hex. + sub 999 % $100 ;a = a - ($03E7 % $100). Gives a = a - $E7. A byte % $100 always gives the lesser nibble. + ;Note that if a < $E7 then the carry bit 'c' in the flag register gets set due to overflowing with a negative result. + ld a, b ;now let's work on the high byte + sbc 999 / $100 ;a = a - ($03E7 / $100 + c_flag). Gives a = a - ($03 + c_flag). A byte / $100 always gives the greater nibble. + ;Note again that if a < $03 then the carry bit remains set. + ;If the bit is already set from the lesser nibble, then its addition here can still make it remain set if a is low enough. + jr c, .donecapping ;jump to next marker if the c_flag is set. This only remains set if BC < the cap of $03E7. + ;else let's continue and set the 999 cap + ld a, 999 / $100 ; else load $03 into a + ld b, a ;and store it as the high byte + ld a, 999 % $100 ; else load $E7 into a + ld c, a ;and store it as the low byte + ;now registers b & c together contain $03E7 for a capped stat value of 999 +.donecapping + ld a, c + ld [hld], a + ld [hl], b + pop bc + ret + ;shinpokerednote: ADDED: doubles attack if burned or quadruples speed if paralyzed. ;It's meant to be run right before healing paralysis or burn so as to ;undo the stat changes. @@ -31,35 +81,6 @@ UndoBurnParStats: ld [de], a ;reset the stat change bits ret -; Reused for pureRGB AI -DoubleSelectedStats: - ldh a, [hWhoseTurn] - and a - ld a, [wPlayerStatsToDouble] - ld hl, wBattleMonAttack + 1 - jr z, .notEnemyTurn - ld a, [wEnemyStatsToDouble] - ld hl, wEnemyMonAttack + 1 -.notEnemyTurn - ld c, 4 - ld b, a -.loop - srl b - call c, .doubleStat - inc hl - inc hl - dec c - ret z - jr .loop -.doubleStat - ld a, [hl] - add a - ld [hld], a - ld a, [hl] - rl a - ld [hli], a - ret - ; does nothing since no stats are ever selected (barring glitches) ;HalveSelectedStats: ; ldh a, [hWhoseTurn] diff --git a/main.asm b/main.asm index 84324740..06dd64bf 100644 --- a/main.asm +++ b/main.asm @@ -186,6 +186,8 @@ SECTION "Battle Engine 7", ROMX INCLUDE "data/moves/moves.asm" INCLUDE "data/pokemon/cries.asm" +INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" +INCLUDE "engine/battle/trainer_ai.asm" INCLUDE "engine/battle/unused_stats_functions.asm" INCLUDE "engine/battle/move_effects/heal.asm" INCLUDE "engine/battle/move_effects/transform.asm" @@ -249,8 +251,6 @@ INCLUDE "engine/events/hidden_objects/indigo_plateau_hq.asm" SECTION "Battle Engine 9", ROMX -INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" -INCLUDE "engine/battle/trainer_ai.asm" INCLUDE "engine/battle/draw_hud_pokeball_gfx.asm" From b8c15158639ef09ab16f024216c12742011cd5f1 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Fri, 5 Jan 2024 14:06:22 +0000 Subject: [PATCH 04/21] hmm Maybe we need some more work on this...Chief's Porygon-Z wouldn't use Nasty Plot or Recover no matter what --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c02def00..88ba2286 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,7 @@ and more! Known Bugs ==== -- Currently testing... +- The highest AI level seems to prioritise offensive moves a bit too much? Evolution Methods for new Pokemon ==== From 8a59ed4b8e9ff7dd644ce60169962685de319f68 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Fri, 5 Jan 2024 15:59:45 +0000 Subject: [PATCH 05/21] Mr. Rime had the wrong Special for HOW long? Mr. Mime's 100 Gen 1 Special became its Special Attack in Gen 2 Mr. Rime has 110 Special Attack and 100 Sp. Def Oops --- data/maps/objects/SSAnne1FRooms.asm | 2 +- data/pokemon/base_stats/mrrime.asm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/maps/objects/SSAnne1FRooms.asm b/data/maps/objects/SSAnne1FRooms.asm index 71430ce1..fddebf84 100644 --- a/data/maps/objects/SSAnne1FRooms.asm +++ b/data/maps/objects/SSAnne1FRooms.asm @@ -23,7 +23,7 @@ SSAnne1FRooms_Object: object_event 10, 13, SPRITE_GIRL, STAY, RIGHT, 9 ; person object_event 12, 15, SPRITE_POKE_BALL, STAY, NONE, 10, TM_BODY_SLAM object_event 21, 13, SPRITE_GENTLEMAN, WALK, LEFT_RIGHT, 11 ; person - object_event 0, 4, SPRITE_GAMEBOY_KID, STAY, DOWN, 12 ; Perrserker Trader + object_event 20, 14, SPRITE_GAMEBOY_KID, STAY, DOWN, 12 ; Perrserker Trader object_event 20, 4, SPRITE_GAMEBOY_KID, STAY, DOWN, 13 ; Weezing Trader object_event 23, 1, SPRITE_NURSE, STAY, LEFT, 14 ; Healer diff --git a/data/pokemon/base_stats/mrrime.asm b/data/pokemon/base_stats/mrrime.asm index dbbf1278..e97acb69 100644 --- a/data/pokemon/base_stats/mrrime.asm +++ b/data/pokemon/base_stats/mrrime.asm @@ -1,6 +1,6 @@ db DEX_MR_RIME ; pokedex id - db 80, 85, 75, 70, 100 + db 80, 85, 75, 70, 110 ; hp atk def spd spc db ICE, PSYCHIC_TYPE ; type From c8f27d8bce0a0708d347f510694be4fba8158c65 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sat, 6 Jan 2024 00:00:18 +0000 Subject: [PATCH 06/21] More (very small) AI improvements - Fixed a bug where the Elite 4 wouldn't use Full Restores. Apparently the game only allows one item per trainer. - Gave Oak and Chief custom AI found from proto assets (then changed to be less ass) - Small amount of balancing - Minor text fixes - Figured out roughly how the current high-level AI works (Stat boosting moves are only used sometimes on the first turn, Recover is only used sometimes when below half health, otherwise just attack with a move that isn't ineffective. More testing needed for stat lowering moves and things like Barrier) --- data/trainers/ai_pointers.asm | 18 +++++------ engine/battle/trainer_ai.asm | 56 +++++++++++++++++++---------------- text/GiovannisRoom.asm | 4 +-- 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/data/trainers/ai_pointers.asm b/data/trainers/ai_pointers.asm index e783308c..90130edf 100644 --- a/data/trainers/ai_pointers.asm +++ b/data/trainers/ai_pointers.asm @@ -28,28 +28,28 @@ TrainerAIPointers: dbw 3, GenericAI dbw 2, BlackbeltAI ; blackbelt dbw 3, GenericAI ; rival1 - dbw 3, GenericAI - dbw 1, GenericAI ; chief + dbw 2, OakAI + dbw 3, ChiefAI ; chief dbw 3, GenericAI dbw 1, GiovanniAI ; giovanni dbw 3, GenericAI dbw 2, CooltrainerMAI ; cooltrainerm dbw 1, CooltrainerFAI ; cooltrainerf - dbw 2, BrunoAI ; bruno + dbw 1, BrunoAI ; bruno dbw 5, BrockAI ; brock - dbw 1, MistyAI ; misty + dbw 2, MistyAI ; misty dbw 1, LtSurgeAI ; surge dbw 1, ErikaAI ; erika dbw 2, KogaAI ; koga dbw 2, BlaineAI ; blaine dbw 1, SabrinaAI ; sabrina dbw 3, GenericAI - dbw 1, Rival2AI ; rival2 - dbw 1, Rival3AI ; rival3 - dbw 2, LoreleiAI ; lorelei + dbw 2, Rival2AI ; rival2 + dbw 3, Rival3AI ; rival3 + dbw 1, LoreleiAI ; lorelei dbw 3, GenericAI - dbw 2, AgathaAI ; agatha - dbw 1, LanceAI ; lance + dbw 1, AgathaAI ; agatha + dbw 2, LanceAI ; lance dbw 3, GenericAI ; Yujirou dbw 3, GenericAI ; Student dbw 3, GenericAI ; Firefighter diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index 1223359c..c6e82b15 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -725,8 +725,8 @@ JugglerAI: ret nc jp AISwitchIfEnoughMons -BlackbeltAI: - cp 13 percent - 1 +BlackbeltAI: ; Fun fact! Jacky uses this same AI routine in the proto assets, but only 6% of the time. + cp 25 percent + 1 ret nc jp AIUseXAttack @@ -763,10 +763,10 @@ BrockAI: MistyAI: cp 25 percent + 1 ret nc - ld a, 10 + ld a, 5 call AICheckIfHPBelowFraction ret nc - jp AIUseSuperPotion ; Replicates Starmie using Recover. Unlike other trainers that heal, Misty will do this 26% of the time instead of 51%. + jp AIUsePotion ; Replicates Starmie using Recover. Unlike other trainers that heal, Misty will do this 26% of the time instead of 51%. LtSurgeAI: cp 20 percent + 1 @@ -774,25 +774,25 @@ LtSurgeAI: jp AIUseXSpecial ErikaAI: - cp 50 percent + 1 + cp 25 percent + 1 ret nc - ld a, 10 + ld a, 5 call AICheckIfHPBelowFraction ret nc jp AIUseSuperPotion KogaAI: - cp 50 percent + 1 + cp 25 percent + 1 ret nc - ld a, 10 + ld a, 5 call AICheckIfHPBelowFraction ret nc jp AIUseSuperPotion ; Koga is weird - I don't think anything fits. X Attack is certainly not the move though... BlaineAI: - cp 25 percent + 1 + cp 40 percent + 1 ret nc - ld a, 10 + ld a, 5 call AICheckIfHPBelowFraction ret nc ; this fixes the super potion thing - PvK jp AIUseHyperPotion ; Instead of a Super Potion though, let's give him this. More impactful for the sixth gym while staying true to the meme that everyone knows Gen 1 Blaine for. @@ -800,13 +800,13 @@ BlaineAI: SabrinaAI: cp 25 percent + 1 ret nc - ld a, 10 + ld a, 5 call AICheckIfHPBelowFraction ret nc jp AIUseHyperPotion Rival2AI: - cp 13 percent - 1 + cp 20 percent - 1 ret nc ld a, 5 call AICheckIfHPBelowFraction @@ -822,9 +822,6 @@ Rival3AI: jp AIUseFullRestore LoreleiAI: - cp 15 percent + 1 - ret nc - jp AIUseXSpecial cp 40 percent + 1 ret nc ld a, 5 @@ -833,9 +830,6 @@ LoreleiAI: jp AIUseFullRestore BrunoAI: - cp 15 percent + 1 - ret nc - jp AIUseXAttack cp 40 percent + 1 ret nc ld a, 5 @@ -844,11 +838,8 @@ BrunoAI: jp AIUseFullRestore AgathaAI: - cp 8 percent + cp 10 percent jp c, AISwitchIfEnoughMons - cp 15 percent + 1 - ret nc - jp AIUseXAccuracy ; hahahahahahahaha cp 40 percent + 1 ret nc ld a, 5 @@ -857,15 +848,28 @@ AgathaAI: jp AIUseFullRestore LanceAI: - cp 15 percent + 1 - ret nc - jp AIUseXSpecial cp 50 percent + 1 ret nc - ld a, 10 + ld a, 4 call AICheckIfHPBelowFraction ret nc jp AIUseFullRestore + +OakAI: + cp 25 percent + 1 + ret nc + ld a, 5 + call AICheckIfHPBelowFraction + ret nc + jp AIUseFullRestore + +ChiefAI: + cp 25 percent + 1 + ret nc + ld a, 5 + call AICheckIfHPBelowFraction + ret nc + jp AIUseFullRestore ; this was a Dire Hit in the proto assets but we all know how useful that item is in Gen 1 GenericAI: and a ; clear carry diff --git a/text/GiovannisRoom.asm b/text/GiovannisRoom.asm index 68bcd2a6..5d3ad1a4 100644 --- a/text/GiovannisRoom.asm +++ b/text/GiovannisRoom.asm @@ -77,11 +77,11 @@ _GiovannisRoomText3:: para "PROTECTOR: ¥3,000" ; Giovanni discovered the Protector's use with Rhyperior. - para "DIRE HIT: ¥5,200" ; Giovanni uses this in battle. + para "X ATTACK: ¥8,000" ; Giovanni uses this in battle. 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" + para "Business: ¥250,000" para "It keeps going..." From b85850ab6d543593648101d5a21c6f56af256cf6 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sat, 6 Jan 2024 00:05:47 +0000 Subject: [PATCH 07/21] The Sciz and the Shroom --- gfx/pokemon/front/scizor.png | Bin 884 -> 923 bytes gfx/pokemon/front/toedscruel.png | Bin 668 -> 856 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gfx/pokemon/front/scizor.png b/gfx/pokemon/front/scizor.png index a6cdfea1f464d57dfcb4a0ea0de52faf82e32600..dbb1336e8570d391cee9bbfd2f0af7079eb088cc 100644 GIT binary patch delta 684 zcmeyuHk*Bd%0v?<*~1JBe1{p2=dVa%U|?V`@$_|Nf5FJcz%2IBaPh{8lU1ZlbPWu3 z4a`Ce46F={t&EJcK@5Xehc`-2yeRI6U3T_7&ZR)(G)i0}N>UO_Qmsldb5n~;5_1a} zj0}vh>p9b{Q8k%~F|+==r;B5V#(CdMd-H`2MHoJ$tA@F@xU4?L6M1XmGUn7L&bG@v z6BZPdcioRaaBb?`*G&@AooTNEI9V@NBqlhw2CSUOpg3_Sw=lQUsrE%JO)n3ZPiKkV zv~>QTKRNc&9WVCyY-Zc`-N&WG;(7EhH}T1qi?2^^J~_KM-|PMMN~22i`Z}|xR$H&j z%genR~{{Le;u|~H&0w@g-&{a%Ry~hk@ z2Q?gs*?7`vW&qQ1nd1s~#0>o#+b#L(9VP5~EpI#sWn-M&v2W?i^qEh(^gCM2q?)wY zW(t2vTE~>&%3v%IfBy}W@Kb(<%(ZO{F%`-a0uS{wI8}taTBovQrj%&(QNb9`N>1nb z84ZrRwlz*Yu$a%=%t$vRX=TphOUVUWLQmy8*zOek>Zoz_-Kncnt~j;^tl7N8qVSwR zetkx3uvFmD80~JIryHbJCCQ2@##-|@hfeSo`eRZN&&sj%!KUe(CQj$Ltu@)syi-f# zS)pmFdSboVZT@YaZvH&4csQ&3^ncF<``%gJIT}6ju->|fhbQiO{%QKBSgEaVCM~;t z?xf9h*$=UNDaV!umd6O~f4B3^{r(uC?BkE^ms@@PDRBC#UM(>3FnGH9xvX-K}|sb0I`n?{9y%=Aw?a;000ie0hKEb8vplB(h7HSaF+RMl)g*4? zisfV{!tO3!j|a44`Qj;JZ;!Pu#XHJ!EkYDW?7=}i%(#k(aBc)&9!0%uRWdx^An4j0 z%PYXJ)*O&fS^#1GSV7Uc6o4|G$a>K_o649iqAt%Eb$C{SXH4J%hPLTr^o!gG zJCYlZ<{N25#g=?iC&e)+w$by}7d8qez?33)#YTSStcXHbleA=te<9u&Du#7%^81 duhKxye~=dI;u65w4GRDO002ovPDHLkV1hTwA#VTx diff --git a/gfx/pokemon/front/toedscruel.png b/gfx/pokemon/front/toedscruel.png index a8dad95bcb7dc7311b354412ed5f7cab0d8ba91c..f5859725eac89fe8edc044a4c4cdbf796fafaeb2 100644 GIT binary patch delta 733 zcmbQkdV_6(%0v?oJK-ndllA>Kd4Z7#LU?7+V<`X@eLBuMTgNoE*<2UXNXR_B_s|K%+EDTq8<_U=l`X0Lp=Y2M~kQfob`m?*uKPbfq1sz^f;wwLd^fzz0;?*c8PB`ihfZqQ1#MYVD7UEr-kk`JW-mGaZP^q zUtzC>RRT_YbF=GTrY`&zkZ;)BdG%zT>CKsU8@}ANJ7Z9De>VF=pM#U%EKi$pOvN$p zQOz0Yqb8dS&HFa+MIQVpo-dc+T2OKQ3S->Fjy1_yD~}b6e0;ufWvbN7up{q%g++4D z_T9*Sl+Mt$B+|^`;(ZsH8LK0Lc~q0+wfUDvs0YV6L|s2H$30jtqdxOJYein2Q{J90 z2R={P{;lPD6>Am4{15G%?Qv_T)XzV;beaDDR@U{;@-jEYTk!I2RQ_EW^`zXV?q&X` z7{_^iFO-&aH#PoW8xVAj_5I6joBwRou~-zk{Kg4I&#jN;4$P65yMEWZz%>5}3r}@c z_Z&@i>wf#~leJ*-Avd$WkBj%_*PoV{Q}%uBv^OubUq|hB*>tKd(rnV5H0JIjE>{~{ zg+hM*@3<1VXsJrPx}_X@3g=0QImPw7KMnIU?=C9}TkPJ)BDwq1Yct_5f4zgsk2Ou1 zrxe0*RA|!N^Nd<-Nv{J|{!)K4^~kKb^V?T$s8_2~4E)c~E#~X@)x`4zC|*5X{a9Vr IIVCg!0Al?Xn*aa+ delta 539 zcmcb?HivbB3NK5#qpu?a!^VE@KZ&dp6&pI&hg(cc zN8_^HNuUs8evw}Y0c9 z=E6l)U%7Yu&~#xJZ_@Nm7fcHJEjTB_hogD>?kguAb<7EL;?r_^e=BLv(|6PNJo$Ul zx}HObJ?y&1)C9Kc$thy@`hI9erkOnol$M_GbdGJ6YlH2%^(&JZp1e|g*}Qall%>e0 zr}r*BomM0L>E=df>!&mOQ zKej2(yD7)xlTNVMk`#6o*9-2cqI{P7JFkW6anC6^S<)K((|ay|&)j>H_s2EC>W%=*2b1@#xPNA%(evo=l^O33Iy`ND z`?V>=;MK Date: Sat, 6 Jan 2024 08:57:43 +0000 Subject: [PATCH 08/21] Update KEPBorder.png Misty added the polished Paradox Pokemon sprites, everyone say thank you to Misty :3 --- 3DS Border/KEPBorder.png | Bin 9768 -> 30007 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/3DS Border/KEPBorder.png b/3DS Border/KEPBorder.png index d34ec1778662f6d2acb08e6b445e4624c07b899a..8ae6df0eeee88bda9bb9a1c11058094e72a04b31 100644 GIT binary patch literal 30007 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 KLaTun>;5my!us9- literal 9768 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 From f9bbabbcca00f437b7c96b92c0840f1aab5240ae Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sat, 6 Jan 2024 17:11:31 +0000 Subject: [PATCH 09/21] WE ARE TEAM ROCKET, YOU CANNOT BEAT US - Adds a slightly remade version of the Rocket battle theme that plays when fighting Rocket Grunts, Jessie & James, and Giovanni (1 and 2) - Giovanni 3 and Chief now share a new battle theme composed by myself and LuciShrimp, which is a slower, more intimidating remix of the regular Rocket fight theme. - Gave Giovanni 3 his own trainer class, allowing for better AI routines and smarter move choices. - Removed Giovanni's name from the Viridian City Gym statues to keep his identity a further secret. It also made more sense than in vanilla. - Gave the postgame Morimoto fight a better selection of moves. --- README.md | 10 +- audio.asm | 2 + audio/play_battle_music.asm | 20 +- constants/music_constants.asm | 2 + constants/trainer_constants.asm | 1 + crysaudio/music/RBY/giovannibattle.asm | 1097 ++++++++++++++++++++++++ crysaudio/music/RBY/mewtwo01.asm | 3 + crysaudio/music/RBY/rocketrby.asm | 1047 ++++++++++++++++++++++ crysaudio/music_pointers_red.asm | 2 + data/maps/objects/ViridianGym.asm | 2 +- data/trainers/ai_pointers.asm | 1 + data/trainers/encounter_types.asm | 1 + data/trainers/move_choices.asm | 1 + data/trainers/names.asm | 1 + data/trainers/parties.asm | 1 + data/trainers/pic_pointers_money.asm | 1 + data/trainers/scaled_parties.asm | 5 +- data/trainers/special_moves.asm | 23 +- engine/battle/core.asm | 5 + gfx/pics.asm | 1 + gfx/trainers/giovanni2.png | Bin 0 -> 368 bytes scripts/ViridianGym.asm | 4 +- 22 files changed, 2216 insertions(+), 14 deletions(-) create mode 100644 crysaudio/music/RBY/giovannibattle.asm create mode 100644 crysaudio/music/RBY/rocketrby.asm create mode 100644 gfx/trainers/giovanni2.png diff --git a/README.md b/README.md index 88ba2286..18893fab 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ New Music - Mew and the Legendary Birds have their own battle theme, a demake of the FireRed/LeafGreen pitch-shifted remix. Not simply pitching it up, percussion elements have been added to give it that rustic FRLG "feel" that distinguishes it from the original games. Composed by LuciShrimp. - Limited static encounters, such as the two sleeping Snorlax, and the restored prototype Omega, also use this theme. - Mt. Moon Crater uses a demake of Scarlet and Violet's Area Zero theme! Composed by LuciShrimp. +- Team Rocket's battle theme from GSC has been backported with some small changes to give it more of an RBY feel. Plays during Rocket Grunt fights, including Jessie and James, as well as the initial 2 Giovanni battles. Composed by LuciShrimp. + - In addition to the aforementioned Team Rocket battle theme, a slower, pitched-down arrangement plays when battling Giovanni in his gym, as well as against a postgame boss. Composed by LuciShrimp and Martha's Against Humanity. - Pokemon Yellow's various tracks have been backported, such as Jessie and James's encounter theme. - Several pieces of unused music, including Digda01, Victory4, Field6, Kincho01, and Giovanni's theme have been implemented. - A remix of the unused Koukan (trading) music is also used as a town theme. Composed by BGVC. @@ -360,11 +362,11 @@ KEP spriters hold the policy of requiring sprites to be used with direct credit If you use our implementations of anything at all, it is encouraged to submit Pull Requests for bug fixes if you find any issues! We very much appreciate them! * Plague von Karma - Creator of the Showdown Mod, Director, Developer, Scenarios, Balancing, Dialogue, Pokedex entries, Maps (Mt. Moon Crater, Galarian Bird dungeons, Rock Tunnel, Cinnabar Volcano floors, enhanced Diglett's Cave, Shinjuku Jacky's room, and more), Event scripting, Hyper Training, FRLG Tea, post-game rematches, male/female character selection, Meltan implementation, Yellow backports, and occasional spriter (assisting with Bellignan, Carapthor) -* Martha's Against Humanity - Developer, Pokémon implementation, Pokedex entries, Event scripting, tweaks of Albatross's sprites, Sylveon, Bellignan and Mimmeo sprites, Maps (Citrine City, Cinnabar Volcano, Underwater Tunnel, Silph Gauntlet,), SGB border, new palettes for postgame areas and Game Corner, etc. +* Martha's Against Humanity - Developer, Pokémon implementation, Pokedex entries, event scripting, tweaks of Albatross's sprites, Sylveon, Bellignan, Galarian Slowking, Galarian Slowbro and Mimmeo sprites, Maps (Citrine City, Cinnabar Volcano, Underwater Tunnel, Silph Gauntlet,), Giovanni's battle theme, SGB border, new palettes for postgame areas and Game Corner, etc. * Ema Skye - Developer, Maps (Silph Co. and Pokemon Tower shortening), Mt. Moon Crater Guard, Showdown Mod assistance. * BlueZangoose / Vimescarrot - Pokemon box expansion, Instatext option, general assistance. * Albatross - Many of the new sprites used in the hack (A significant number of post-Gen 1 evolutions, all regional variants, Meltan and Carapthor lines, etc.) -* LuciShrimp - Mewtwo & FireRed/LeafGreen Legendary custom battle music; Area Zero map theme for Mt. Moon Crater. +* LuciShrimp - Mewtwo & FireRed/LeafGreen Legendary custom battle music; Area Zero map theme for Mt. Moon Crater, Team Rocket theme changes and Giovanni's battle theme. * jojobear13 & Mateo - DV/StatExp display, move deleter, & move relearner functionality from Shin Pokered, followed [this guide](https://github.com/jojobear13/shinpokered/blob/master/how%20to%20guides/how%20to%20add%20the%20move%20relearner%26deleter.txt). Tweaks were made to make it compatible with the pokered version we worked off of. Thanks specifically to Mateo's Red++ for the ferry system! Jojobear also provided bug fixes! * thornAvery - Various bug fixes, notably to text speed errors, as well as making the Battle Tent a lot more functional. * LadyMisticus - Bug fixes and minor adjustments, and made a well-documented spreadsheet for the hack that details every Pokemon's stats, movepools and locations, plus more! @@ -396,9 +398,9 @@ If you use our implementations of anything at all, it is encouraged to submit Pu * Dr. Lava - Translations of some content used in this hack, particularly the 1996 Pokedex book's entries for DYKG. * Nob Ogasawara - Prototype Pokemon names, produced for DYKG. -Albatross sprites: Articuno-G, Blissey, Dugtrio-A, Electivire, Electrode-H, Espeon (back), Exeggutor-A, Gentlarva, Glaceon, Golem-A, Hitmontop, Iguanarch, Kleavor, Leafeon, Lickilicky, Marowak-A, Melmetal, Meltan, Moltres-G, Mr. Rime, Muk-A, Ninetales-A, Perrserker, Persian-A, Politoed, Porygon-Z, Pupal, Raichu-A, Rapidash-G, Raticate-A, Rhyperior, Sandslash-A, Sandy Shocks, Scizor, Sirfetch’d, Slowbro-G, Slowking (back), Slowking-G, Sylveon (back), Tangrowth, Tauros-P (all forms), Toedscool, Toedscruel, Umbreon (back), Weezing-G, Wiglett, Zapdos-G +Albatross sprites: Articuno-G, Blissey, Dugtrio-A, Electivire, Electrode-H, Espeon (back), Exeggutor-A, Gentlarva, Glaceon, Golem-A, Hitmontop, Iguanarch, Kleavor, Leafeon, Lickilicky, Marowak-A, Melmetal, Meltan, Moltres-G, Mr. Rime, Muk-A, Ninetales-A, Perrserker, Persian-A, Politoed, Porygon-Z, Pupal, Raichu-A, Rapidash-G, Raticate-A, Rhyperior, Sandslash-A, Sandy Shocks, Scizor, Sirfetch’d, Slowbro-G, Slowking (back), Slowking-G (back), Sylveon (back), Tangrowth, Tauros-P (all forms), Toedscool, Toedscruel, Umbreon (back), Weezing-G, Wiglett, Zapdos-G -Martha’s Against Humanity sprites: Bellignan (front, with help from PvK), Mimmeo (front), Sylveon (front, with help from Albatross) +Martha’s Against Humanity sprites: Bellignan (front, with help from PvK), Mimmeo (front), Slowking-G, Slowbro-G, Sylveon (front, with help from Albatross) Albatross sprites refined by either Martha’s Against Humanity or PvK: Annihilape, Arcanine-H, Bellossom, Carapthor, Gorillaimo, Kingdra, Magmortar, Magnezone, Ministare, Porygon2, Scream Tail, Squeamata, Tauros-P (all forms), Wugtrio diff --git a/audio.asm b/audio.asm index b1defe61..26aa7f43 100644 --- a/audio.asm +++ b/audio.asm @@ -381,6 +381,8 @@ INCLUDE "crysaudio/music/RBY/kinchou01.asm" INCLUDE "crysaudio/music/RBY/mewtwo01.asm" INCLUDE "crysaudio/music/RBY/legendarybattle.asm" INCLUDE "crysaudio/music/RBY/giovannisroom.asm" +INCLUDE "crysaudio/music/RBY/rocketrby.asm" +INCLUDE "crysaudio/music/RBY/giovannibattle.asm" SECTION "TCG Songs 1", ROMX diff --git a/audio/play_battle_music.asm b/audio/play_battle_music.asm index cbe0526a..4a2eb0cf 100644 --- a/audio/play_battle_music.asm +++ b/audio/play_battle_music.asm @@ -60,6 +60,16 @@ PlayBattleMusic:: jp z, .GymOrElite4Battle cp OPP_BLAINE jp z, .GymOrElite4Battle + cp OPP_ROCKET + jr z, .RocketBattle + cp OPP_JESSIE_JAMES + jr z, .RocketBattle + cp OPP_GIOVANNI + jr z, .RocketBattle + cp OPP_LEADER_GIOVANNI + jr z, .Giovanni + cp OPP_CHIEF + jr z, .Giovanni cp OPP_LORELEI ; elite four now play the gym leader battle theme jr z, .GymOrElite4Battle cp OPP_BRUNO @@ -71,9 +81,7 @@ PlayBattleMusic:: cp OPP_PROF_OAK ; could also use the final battle theme, but I think the gym leader/elite 4 theme fits better instead. I'm happy to change this if it isn't well-liked. jr z, .GymOrElite4Battle cp OPP_RIVAL3 - jr z, .finalBattle - cp OPP_CHIEF - jr z, .finalBattle + jr z, .finalBattle jr nz, .normalTrainerBattle .GymOrElite4Battle ld a, MUSIC_GYM_LEADER_BATTLE @@ -81,6 +89,12 @@ PlayBattleMusic:: .normalTrainerBattle ld a, MUSIC_TRAINER_BATTLE jr .playSong +.RocketBattle + ld a, MUSIC_ROCKET_RBY + jr .playSong +.Giovanni + ld a, MUSIC_GIOVANNI_BATTLE + jr .playSong .finalBattle ld a, MUSIC_FINAL_BATTLE jr .playSong diff --git a/constants/music_constants.asm b/constants/music_constants.asm index 40a645eb..55fdcfb1 100644 --- a/constants/music_constants.asm +++ b/constants/music_constants.asm @@ -65,6 +65,8 @@ const MUSIC_MEWTWO01 const MUSIC_LEGENDARYBATTLE const MUSIC_GIOVANNIS_ROOM + const MUSIC_ROCKET_RBY + const MUSIC_GIOVANNI_BATTLE const NUM_SONGS diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index 6287488b..b61d3764 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -67,4 +67,5 @@ ENDM trainer_const KOICHI trainer_const JACK trainer_const JESSIE_JAMES + trainer_const LEADER_GIOVANNI DEF NUM_TRAINERS EQU const_value - 1 diff --git a/crysaudio/music/RBY/giovannibattle.asm b/crysaudio/music/RBY/giovannibattle.asm new file mode 100644 index 00000000..a1687c0d --- /dev/null +++ b/crysaudio/music/RBY/giovannibattle.asm @@ -0,0 +1,1097 @@ +Music_GiovanniBattle: + channel_count 3 + channel 1, Music_GiovanniBattle_Ch1 + channel 2, Music_GiovanniBattle_Ch2 + channel 3, Music_GiovanniBattle_Ch3 + +Music_GiovanniBattle_Ch1: + tempo 112 + volume 7, 7 + duty_cycle 3 + pitch_offset 2 + note_type 12, 11, 2 + octave 4 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note E_, 1 + note D#, 1 + note D_, 1 + note C#, 1 + note D_, 1 + note C#, 1 + note C_, 1 + octave 3 + note B_, 1 + octave 4 + note C_, 1 + octave 3 + note B_, 1 + note A#, 1 + note A_, 1 + note A#, 1 + note A_, 1 + note G#, 1 + note G_, 1 + note G#, 1 + note G_, 1 + note F#, 1 + note F_, 1 + note F#, 1 + note F_, 1 + note E_, 1 + note D#, 1 + note E_, 1 + note D#, 1 + tempo 115 + note D_, 1 + note C#, 1 + tempo 120 + note D_, 1 + note C#, 1 + tempo 125 + note C_, 1 + octave 2 + note B_, 1 + tempo 130 + octave 3 + note C_, 1 + octave 2 + note B_, 1 + tempo 135 + note A#, 1 + note A_, 1 + tempo 140 + note A#, 1 + note A_, 1 + tempo 145 + note G#, 1 + note G_, 1 + tempo 150 + note G#, 1 + note G_, 1 + note F#, 1 + note F_, 1 + note F#, 1 + note F_, 1 + note E_, 1 + note D#, 1 + note D#, 1 + note D#, 1 +.loop1: + tempo 150 + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 2 + note G_, 6 + note G_, 4 + note B_, 2 + note A_, 4 + octave 3 + sound_loop 3, .loop1 + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 2 + note G_, 6 + note G_, 6 + note A_, 4 + octave 3 +.loop2: + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 2 + note B_, 6 + note B_, 4 + octave 3 + note D_, 2 + note C_, 4 + octave 4 + sound_loop 3, .loop2 + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 2 + note B_, 6 + note B_, 4 + note A_, 2 + note A#, 4 + octave 3 + note G_, 2 + octave 2 + note B_, 2 + note B_, 2 + octave 3 + note F_, 2 + note C_, 2 + note C_, 2 + note E_, 2 + octave 2 + note A_, 2 + note A_, 2 + octave 3 + note G_, 2 + octave 2 + note B_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note B_, 2 + note A_, 2 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + octave 3 + note C_, 2 + note D_, 4 + note D_, 2 + note C_, 2 + octave 2 + note A#, 2 + note A_, 2 + note G#, 2 + note A_, 2 + note A#, 4 + note A#, 2 + note A_, 2 + octave 3 + note C_, 2 +.mainloop: + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 3 + note B_, 2 + octave 2 + note B_, 2 + note B_, 2 + octave 3 + note A_, 2 + note C_, 2 + note C_, 2 + note G_, 2 + octave 2 + note A_, 2 + note A_, 2 + octave 3 + note B_, 2 + octave 2 + note B_, 2 + note B_, 2 + octave 3 + note A_, 2 + octave 2 + note B_, 2 + note A_, 2 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + octave 3 + note C_, 2 + note D_, 4 + note D_, 2 + note C_, 2 + note G_, 2 + note A_, 2 + note G_, 2 + note A_, 2 + octave 4 + note C_, 4 + octave 3 + note C_, 2 + note D_, 2 + note D#, 4 + octave 2 + note A_, 4 + note G_, 4 + note A_, 4 + note B_, 2 + octave 3 + note C_, 2 + note E_, 4 + note E_, 4 + note E_, 2 + note D_, 2 + note C_, 4 + octave 2 + note A_, 4 + note G_, 4 + note A_, 4 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + note A_, 2 + note G_, 2 + octave 3 + note F_, 2 + note D_, 2 + note E_, 2 + note F_, 2 + note B_, 6 + note A_, 4 + note D_, 2 + note F_, 4 + note E_, 6 + note D_, 4 + octave 2 + note B_, 2 + octave 3 + note C_, 4 + octave 2 + note B_, 6 + note A_, 6 + note A#, 4 + volume_envelope 10, 3 + note B_, 8 + note B_, 8 + volume_envelope 11, 3 + note E_, 8 + note D_, 8 + note E_, 8 + note F_, 8 + note E_, 8 + note D_, 8 + note E_, 8 + note G#, 8 + note A_, 8 + note G#, 8 + note F_, 8 + note E_, 8 + note A_, 8 + note G#, 8 + note A_, 8 + note B_, 8 + note F_, 6 + note A_, 6 + note G_, 4 + note F_, 2 + note G_, 2 + note A_, 2 + note B_, 2 + octave 3 + note C_, 2 + note D_, 2 + note E_, 2 + note F_, 2 + note E_, 2 + octave 2 + note B_, 2 + octave 3 + note E_, 2 + note F_, 2 + note E_, 2 + octave 2 + note B_, 2 + note A_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note B_, 2 + octave 3 + note E_, 2 + note G#, 2 + note A_, 2 + note G#, 2 + note F_, 2 + note D_, 2 + octave 2 + note B_, 6 + note B_, 6 + note B_, 4 + note B_, 6 + note B_, 4 + octave 3 + note D_, 2 + note C_, 4 + octave 2 + note B_, 6 + note B_, 4 + octave 3 + note D_, 2 + note C_, 4 + octave 2 + note B_, 6 + octave 3 + note A_, 1 + note A#, 1 + volume_envelope 10, 3 + note B_, 8 + volume_envelope 11, 3 + note C_, 6 + note C_, 4 + note F_, 2 + note D_, 4 +.loop3: + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note C_, 6 + note C_, 4 + note E_, 2 + note D_, 4 + sound_loop 2, .loop3 + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note C_, 6 + note A_, 1 + note B_, 1 + octave 4 + volume_envelope 10, 3 + note C_, 8 + volume_envelope 11, 3 + octave 3 + note A_, 2 + note E_, 2 + octave 2 + note B_, 2 + octave 3 + note E_, 4 + note E_, 2 + note A_, 4 + note A#, 2 + note F_, 2 + note D_, 2 + note F_, 4 + note F_, 2 + note A_, 4 + note B_, 2 + note G_, 2 + note E_, 2 + note G_, 4 + note G_, 2 + note A#, 4 + volume_envelope 10, 3 + note B_, 4 + note B_, 6 + note D#, 6 + volume_envelope 11, 3 + octave 2 + note G_, 2 + note B_, 2 + note B_, 2 + note F_, 2 + octave 3 + note C_, 2 + note C_, 2 + octave 2 + note E_, 2 + note A_, 2 + note A_, 2 + note G_, 2 + note B_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note A_, 2 + note G_, 2 + note G_, 2 + note F_, 2 + note G_, 2 + note A_, 4 + note A_, 2 + note G_, 2 + note F_, 2 + note A_, 2 + note G#, 2 + note A_, 2 + note A#, 4 + note A#, 2 + note A_, 2 + octave 3 + note C_, 2 + sound_loop 0, .mainloop + +Music_GiovanniBattle_Ch2: + pitch_offset 1 + note_type 12, 11, 2 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + octave 3 + note A_, 4 + note A#, 4 + note B_, 4 + octave 4 + note C_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note C#, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note D_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note D#, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note E_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + volume_envelope 12, 4 + note A_, 2 + volume_envelope 8, 4 + note A_, 2 + volume_envelope 6, 4 + note A_, 2 + note A_, 2 + note G#, 1 + note G_, 1 + note F#, 1 + note F_, 1 + note F#, 1 + note F_, 1 + volume_envelope 8, 4 + note E_, 1 + volume_envelope 9, 4 + note D#, 1 + volume_envelope 10, 4 + note D_, 1 + volume_envelope 11, 4 + note F_, 1 + octave 4 +.loop1: + octave 3 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + note E_, 6 + note E_, 4 + note G_, 2 + note F_, 4 + sound_loop 3, .loop1 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + note E_, 6 + note E_, 6 + note D#, 4 +.loop2: + octave 4 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note E_, 6 + note E_, 4 + note G_, 2 + note F_, 4 + sound_loop 3, .loop2 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note E_, 6 + note E_, 4 + note D_, 2 + note D#, 4 + sound_call .sub1 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 7 + note C_, 16 + note C_, 16 +.mainloop: + sound_call .sub1 + volume_envelope 11, 7 + octave 4 + note C_, 16 + note F_, 16 + volume_envelope 12, 4 + octave 3 + note E_, 2 + note D_, 2 + note E_, 2 + volume_envelope 12, 7 + note G_, 4 + note F_, 2 + note E_, 2 + note D_, 2 + volume_envelope 12, 2 + note E_, 2 + note G_, 4 + volume_envelope 11, 8 + note G_, 6 + volume_envelope 11, 7 + note G_, 4 + volume_envelope 12, 4 + note F_, 2 + note E_, 2 + note F_, 2 + volume_envelope 12, 7 + note A_, 4 + note G_, 2 + note F_, 2 + note E_, 2 + volume_envelope 12, 2 + note F_, 2 + note A_, 4 + volume_envelope 11, 7 + note A_, 10 + octave 4 + volume_envelope 11, 8 + note E_, 6 + volume_envelope 10, 8 + note D_, 6 + note C_, 4 + octave 3 + note B_, 6 + octave 4 + note C_, 6 + note D_, 4 + note E_, 6 + note F_, 6 + note D#, 4 + note E_, 6 + volume_envelope 10, 7 + note E_, 10 + volume_envelope 10, 8 + octave 2 + note A_, 16 + note G#, 16 + note A_, 16 + note B_, 16 + octave 3 + note C_, 16 + octave 2 + note B_, 16 + octave 3 + note C_, 16 + note E_, 16 + volume_envelope 3, -7 + note C_, 16 + volume_envelope 12, 7 + note A_, 8 + note G#, 8 + volume_envelope 11, 8 + note B_, 8 + volume_envelope 11, 7 + note B_, 8 + octave 4 + volume_envelope 12, 8 + note E_, 6 + volume_envelope 12, 7 + note E_, 10 + volume_envelope 12, 2 + octave 3 + note E_, 6 + note E_, 6 + note E_, 4 + note E_, 6 + note E_, 4 + volume_envelope 12, 7 + note G_, 2 + note F_, 4 + volume_envelope 12, 2 + note E_, 6 + note E_, 4 + volume_envelope 12, 7 + note G_, 2 + note F_, 4 + volume_envelope 12, 2 + note E_, 6 + volume_envelope 12, 7 + octave 4 + note_type 12, 12, 7 + note D_, 1 + note D#, 1 + note E_, 8 +.loop3: + volume_envelope 12, 2 + octave 3 + note F_, 6 + note F_, 4 + volume_envelope 12, 7 + note A_, 2 + note G_, 4 + octave 4 + sound_loop 3, .loop3 + volume_envelope 12, 2 + octave 3 + note F_, 6 + volume_envelope 12, 7 + octave 4 + note_type 12, 12, 7 + note D_, 1 + note E_, 1 + note F_, 8 + note E_, 6 + note D_, 6 + note E_, 4 + note F_, 6 + note A_, 6 + note F_, 4 + note E_, 6 + note D_, 6 + volume_envelope 12, 5 + note E_, 4 + volume_envelope 11, 8 + note E_, 8 + volume_envelope 11, 7 + note E_, 8 + octave 3 + volume_envelope 12, 4 + note E_, 6 + note D#, 6 + octave 2 + note B_, 4 + octave 3 + note E_, 6 + note D#, 6 + octave 2 + note B_, 4 + octave 3 + volume_envelope 12, 6 + note C_, 16 + note F_, 16 + sound_loop 0, .mainloop + +.sub1: + octave 4 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note E_, 6 + note D#, 6 + octave 3 + note B_, 4 + octave 4 + note E_, 6 + note D#, 6 + octave 3 + note B_, 4 + octave 4 + sound_ret + +Music_GiovanniBattle_Ch3: + note_type 12, 1, 9 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 4 + note E_, 2 + octave 3 + note G#, 2 + octave 4 + note E_, 2 + octave 3 + note G_, 2 + octave 4 + note E_, 2 + octave 3 + note F#, 2 + octave 4 + note E_, 2 + octave 3 + note F_, 2 + octave 4 + note E_, 2 + octave 3 + note E_, 2 + octave 4 + note E_, 2 + octave 2 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + note A#, 2 + note B_, 2 + note B_, 2 + note A#, 2 + note B_, 2 + volume_envelope 2, 4 + note A#, 2 + note A_, 2 + volume_envelope 3, 4 + note B_, 2 + note A_, 2 + volume_envelope 2, 4 + note G_, 2 +.loop1: + sound_call .sub1 + sound_loop 3, .loop1 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + note A_, 2 + note E_, 2 + octave 3 + note D_, 2 + note C_, 2 + octave 2 + note B_, 2 + note A_, 2 + octave 3 +.loop2: + sound_call .sub1 + sound_loop 3, .loop2 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + note A_, 2 + note E_, 2 + octave 3 + note D_, 2 + octave 2 + note D_, 2 + note E_, 2 + note F_, 2 + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note C_, 2 + sound_call .sub4 +.mainloop: + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + note A_, 2 + octave 3 + sound_call .sub5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note E_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note E_, 2 + note B_, 2 + octave 3 +.loop3: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 3 + note C_, 2 + sound_loop 5, .loop3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + note F_, 2 + note C_, 2 + octave 2 + note F_, 2 + octave 3 + sound_call .sub5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note E_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + note A_, 2 + octave 3 + sound_call .sub5 + sound_call .sub5 +.loop4: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note E_, 1 + note B_, 1 + note A_, 2 + note F_, 2 + note E_, 2 + note A_, 2 + octave 3 + note D_, 2 + note C_, 2 + sound_loop 7, .loop4 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + note A_, 2 + note F_, 2 + note E_, 2 + octave 3 + note E_, 2 + note D_, 2 + note C_, 2 +.loop5: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 3 + note C_, 2 + sound_loop 4, .loop5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 3 + note C_, 2 + note D_, 2 + note C_, 2 + octave 2 + note B_, 2 + note A_, 2 + note G#, 2 + note A_, 2 + octave 3 +.loop6: + volume_envelope 1, 4 + vibrato 0, 2, 0 + octave 2 + note E_, 1 + note B_, 1 + note B_, 2 + octave 3 + sound_loop 13, .loop6 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 4 + note A_, 2 + note G_, 2 + note F_, 2 +.loop7: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 1 + note B_, 1 + note B_, 2 + octave 3 + sound_loop 4, .loop7 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + octave 3 + note A_, 2 + note E_, 2 + note F_, 4 + note E_, 2 + note D_, 2 + note F_, 2 +.loop8: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 1 + octave 3 + note C_, 1 + note C_, 2 + sound_loop 7, .loop8 + volume_envelope 1, 4 + vibrato 0, 2, 0 + octave 2 + note B_, 2 + octave 3 + note C_, 2 +.loop9: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 1 + octave 3 + note C_, 1 + note C_, 2 + sound_loop 5, .loop9 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + note A_, 4 + note G_, 2 + note F_, 2 + note D_, 2 + sound_call .sub6 + volume_envelope 1, 4 + vibrato 0, 2, 0 + octave 2 + note B_, 2 + octave 3 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note C_, 2 + sound_call .sub6 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + octave 2 + note E_, 2 + note E_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + octave 3 + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note C_, 2 + sound_call .sub4 + sound_loop 0, .mainloop + +.sub1: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + note A_, 2 + note E_, 2 + note F_, 2 + note B_, 2 + octave 3 + note D_, 2 + note C_, 2 + sound_ret + +.sub2: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note E_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note E_, 2 + note E_, 2 + note B_, 2 + note E_, 2 + note B_, 2 + note B_, 2 + note E_, 2 + note A_, 2 + octave 3 + sound_ret + +.sub3: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + note F_, 2 + octave 3 + note F_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + note C_, 2 + octave 2 + note F_, 2 + sound_ret + +.sub4: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + octave 3 + note C_, 2 + note F_, 2 + note C_, 2 + note F_, 2 + note C_, 2 + octave 2 + note F_, 2 + octave 3 + note C_, 2 + sound_ret + +.sub5: +.sub5loop1: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + octave 3 + sound_loop 4, .sub5loop1 + sound_ret + +.sub6: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note E_, 2 + note B_, 2 + octave 3 + note E_, 2 + octave 2 + note E_, 2 + sound_ret diff --git a/crysaudio/music/RBY/mewtwo01.asm b/crysaudio/music/RBY/mewtwo01.asm index 07f7d82e..9fba6314 100644 --- a/crysaudio/music/RBY/mewtwo01.asm +++ b/crysaudio/music/RBY/mewtwo01.asm @@ -1,3 +1,6 @@ +; Demake of Stadium Mewtwo's theme by LuciShrimp +; Features space-like sparkles, making use of the Game Boy's sound library. + Music_Mewtwo01: channel_count 4 channel 1, Music_Mewtwo01_Ch1 diff --git a/crysaudio/music/RBY/rocketrby.asm b/crysaudio/music/RBY/rocketrby.asm new file mode 100644 index 00000000..d05e4684 --- /dev/null +++ b/crysaudio/music/RBY/rocketrby.asm @@ -0,0 +1,1047 @@ +Music_RocketRBY: + channel_count 3 + channel 1, Music_RocketRBY_Ch1 + channel 2, Music_RocketRBY_Ch2 + channel 3, Music_RocketRBY_Ch3 + +Music_RocketRBY_Ch1: + tempo 101 + volume 7, 7 + duty_cycle 3 + pitch_offset 2 + note_type 12, 11, 2 + octave 4 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note E_, 1 + note D#, 1 + note D_, 1 + note C#, 1 + note D_, 1 + note C#, 1 + note C_, 1 + octave 3 + note B_, 1 + octave 4 + note C_, 1 + octave 3 + note B_, 1 + note A#, 1 + note A_, 1 + note A#, 1 + note A_, 1 + note G#, 1 + note G_, 1 + note G#, 1 + note G_, 1 + note F#, 1 + note F_, 1 + note F#, 1 + note F_, 1 + note E_, 1 + note D#, 1 + note E_, 1 + note D#, 1 + note D_, 1 + note C#, 1 + note D_, 1 + note C#, 1 + note C_, 1 + octave 2 + note B_, 1 +.loop1: + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note C_, 6 + note C_, 4 + note E_, 2 + note D_, 4 + sound_loop 3, .loop1 + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note C_, 6 + note C_, 6 + note D_, 4 +.loop2: + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 3 + note E_, 6 + note E_, 4 + note G_, 2 + note F_, 4 + octave 4 + sound_loop 3, .loop2 + volume_envelope 11, 3 + vibrato 8, 3, 2 + octave 3 + note E_, 6 + note E_, 4 + note D_, 2 + note D#, 4 + octave 4 + note C_, 2 + octave 3 + note E_, 2 + note E_, 2 + note A#, 2 + note F_, 2 + note F_, 2 + note A_, 2 + note D_, 2 + note D_, 2 + octave 4 + note C_, 2 + octave 3 + note E_, 2 + note E_, 2 + note A_, 2 + note E_, 2 + note D_, 2 + note E_, 2 + note F_, 2 + note E_, 2 + note F_, 2 + note G_, 4 + note G_, 2 + note F_, 2 + note D#, 2 + note D_, 2 + note C#, 2 + note D_, 2 + note D#, 4 + note D#, 2 + note D_, 2 + note F_, 2 +.mainloop: + octave 4 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note E_, 2 + octave 3 + note E_, 2 + note E_, 2 + octave 4 + note D_, 2 + octave 3 + note F_, 2 + note F_, 2 + octave 4 + note C_, 2 + octave 3 + note D_, 2 + note D_, 2 + octave 4 + note E_, 2 + octave 3 + note E_, 2 + note E_, 2 + octave 4 + note D_, 2 + octave 3 + note E_, 2 + note D_, 2 + note E_, 2 + note F_, 2 + note E_, 2 + note F_, 2 + note G_, 4 + note G_, 2 + note F_, 2 + octave 4 + note C_, 2 + note D_, 2 + note C_, 2 + note D_, 2 + note F_, 4 + octave 3 + note F_, 2 + note G_, 2 + note G#, 4 + note D_, 4 + note C_, 4 + note D_, 4 + note E_, 2 + note F_, 2 + note A_, 4 + note A_, 4 + note A_, 2 + note G_, 2 + note F_, 4 + note D_, 4 + note C_, 4 + note D_, 4 + note E_, 2 + note F_, 2 + note E_, 2 + note D_, 2 + note C_, 2 + note A#, 2 + note G_, 2 + note A_, 2 + note A#, 2 + octave 4 + note E_, 6 + note D_, 4 + octave 3 + note G_, 2 + note A#, 4 + note A_, 6 + note G_, 4 + note E_, 2 + note F_, 4 + note E_, 6 + note D_, 6 + note D#, 4 + volume_envelope 10, 3 + note E_, 8 + note E_, 8 + octave 2 + volume_envelope 11, 3 + note A_, 8 + note G_, 8 + note A_, 8 + note A#, 8 + note A_, 8 + note G_, 8 + note A_, 8 + octave 3 + note C#, 8 + note D_, 8 + note C#, 8 + octave 2 + note A#, 8 + note A_, 8 + octave 3 + note D_, 8 + note C#, 8 + note D_, 8 + note E_, 8 + octave 2 + note A#, 6 + octave 3 + note D_, 6 + note C_, 4 + octave 2 + note A#, 2 + octave 3 + note C_, 2 + note D_, 2 + note E_, 2 + note F_, 2 + note G_, 2 + note A_, 2 + note A#, 2 + note A_, 2 + note E_, 2 + note A_, 2 + note A#, 2 + note A_, 2 + note E_, 2 + note D_, 2 + note E_, 2 + note A_, 2 + note E_, 2 + note A_, 2 + octave 4 + note C#, 2 + note D_, 2 + note C#, 2 + octave 3 + note A#, 2 + note G_, 2 + note E_, 6 + note E_, 6 + note E_, 4 + note E_, 6 + note E_, 4 + note G_, 2 + note F_, 4 + note E_, 6 + note E_, 4 + note G_, 2 + note F_, 4 + note E_, 6 + octave 4 + note D_, 1 + note D#, 1 + volume_envelope 10, 3 + note E_, 8 + octave 3 + volume_envelope 11, 3 + note F_, 6 + note F_, 4 + note A#, 2 + note G_, 4 +.loop3: + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note F_, 6 + note F_, 4 + note A_, 2 + note G_, 4 + sound_loop 2, .loop3 + octave 3 + volume_envelope 11, 3 + vibrato 8, 3, 2 + note F_, 6 + octave 4 + note D_, 1 + note E_, 1 + volume_envelope 10, 3 + note F_, 8 + volume_envelope 11, 3 + note D_, 2 + octave 3 + note A_, 2 + note E_, 2 + note A_, 4 + note A_, 2 + octave 4 + note D_, 4 + note D#, 2 + octave 3 + note A#, 2 + note G_, 2 + note A#, 4 + note A#, 2 + octave 4 + note D_, 4 + note E_, 2 + note C_, 2 + octave 3 + note A_, 2 + octave 4 + note C_, 4 + note C_, 2 + note D#, 4 + volume_envelope 10, 3 + note E_, 4 + note E_, 6 + octave 3 + note G#, 6 + volume_envelope 11, 3 + note C_, 2 + note E_, 2 + note E_, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + note F_, 2 + octave 2 + note A_, 2 + octave 3 + note D_, 2 + note D_, 2 + note C_, 2 + note E_, 2 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note D_, 2 + note C_, 2 + note C_, 2 + octave 2 + note A#, 2 + octave 3 + note C_, 2 + note D_, 4 + note D_, 2 + note C_, 2 + octave 2 + note A#, 2 + octave 3 + note D_, 2 + note C#, 2 + note D_, 2 + note D#, 4 + note D#, 2 + note D_, 2 + note F_, 2 + sound_loop 0, .mainloop + +Music_RocketRBY_Ch2: + pitch_offset 1 + note_type 12, 11, 2 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + octave 3 + note A_, 4 + note A#, 4 + note B_, 4 + octave 4 + note C_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note C#, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note D_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note D#, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 + note E_, 1 + octave 3 + note G#, 1 + note A_, 1 + note G#, 1 + octave 4 +.loop1: + octave 3 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + note A_, 6 + note A_, 4 + octave 4 + note C_, 2 + octave 3 + note A#, 4 + sound_loop 3, .loop1 + volume_envelope 12, 3 + vibrato 8, 2, 5 + duty_cycle 3 + note A_, 6 + note A_, 6 + note G#, 4 +.loop2: + octave 4 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note A_, 6 + note A_, 4 + octave 5 + note C_, 2 + octave 4 + note A#, 4 + sound_loop 3, .loop2 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note A_, 6 + note A_, 4 + note G_, 2 + note G#, 4 + sound_call .sub1 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 7 + note F_, 16 + note F_, 16 +.mainloop: + sound_call .sub1 + volume_envelope 11, 7 + octave 4 + note F_, 16 + note A#, 16 + volume_envelope 12, 4 + octave 3 + note A_, 2 + note G_, 2 + note A_, 2 + volume_envelope 12, 7 + octave 4 + note C_, 4 + octave 3 + note A#, 2 + note A_, 2 + note G_, 2 + volume_envelope 12, 2 + note A_, 2 + octave 4 + note C_, 4 + volume_envelope 11, 8 + note C_, 6 + volume_envelope 11, 7 + note C_, 4 + volume_envelope 12, 4 + octave 3 + note A#, 2 + note A_, 2 + note A#, 2 + volume_envelope 12, 7 + octave 4 + note D_, 4 + note C_, 2 + octave 3 + note A#, 2 + note A_, 2 + volume_envelope 12, 2 + note A#, 2 + octave 4 + note D_, 4 + volume_envelope 11, 7 + note D_, 10 + volume_envelope 11, 8 + note A_, 6 + volume_envelope 10, 8 + note G_, 6 + note F_, 4 + note E_, 6 + note F_, 6 + note G_, 4 + note A_, 6 + note A#, 6 + note G#, 4 + note A_, 6 + volume_envelope 10, 7 + note A_, 10 + volume_envelope 10, 8 + octave 3 + note D_, 16 + note C#, 16 + note D_, 16 + note E_, 16 + note F_, 16 + note E_, 16 + note F_, 16 + note A_, 16 + volume_envelope 3, -7 + note F_, 16 + volume_envelope 12, 7 + octave 4 + note D_, 8 + note C#, 8 + volume_envelope 11, 8 + note E_, 8 + volume_envelope 11, 7 + note E_, 8 + volume_envelope 12, 8 + note A_, 6 + volume_envelope 12, 7 + note A_, 10 + volume_envelope 12, 2 + octave 3 + note A_, 6 + note A_, 6 + note A_, 4 + note A_, 6 + note A_, 4 + volume_envelope 12, 7 + octave 4 + note C_, 2 + octave 3 + note A#, 4 + volume_envelope 12, 2 + note A_, 6 + note A_, 4 + volume_envelope 12, 7 + octave 4 + note C_, 2 + octave 3 + note A#, 4 + volume_envelope 12, 2 + note A_, 6 + volume_envelope 12, 7 + octave 4 + note G_, 1 + note G#, 1 + note A_, 8 +.loop3: + volume_envelope 12, 2 + octave 3 + note A#, 6 + note A#, 4 + volume_envelope 12, 7 + octave 4 + note D_, 2 + note C_, 4 + sound_loop 3, .loop3 + volume_envelope 12, 2 + octave 3 + note A#, 6 + volume_envelope 12, 7 + octave 4 + note G_, 1 + note A_, 1 + note A#, 8 + note A_, 6 + note G_, 6 + note A_, 4 + note A#, 6 + octave 5 + note D_, 6 + octave 4 + note A#, 4 + note A_, 6 + note G_, 6 + volume_envelope 12, 5 + note A_, 4 + volume_envelope 11, 8 + note A_, 8 + volume_envelope 11, 7 + note A_, 8 + octave 3 + volume_envelope 12, 3 + note A_, 6 + note G#, 6 + note E_, 4 + note A_, 6 + note G#, 6 + note E_, 4 + volume_envelope 12, 6 + note F_, 16 + note A#, 16 + sound_loop 0, .mainloop + +.sub1: + octave 4 + duty_cycle 3 + vibrato 8, 1, 2 + volume_envelope 12, 3 + note A_, 6 + note G#, 6 + note E_, 4 + note A_, 6 + note G#, 6 + note E_, 4 + sound_ret + +Music_RocketRBY_Ch3: + note_type 12, 1, 9 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 4 + note E_, 2 + octave 3 + note G#, 2 + octave 4 + note E_, 2 + octave 3 + note G_, 2 + octave 4 + note E_, 2 + octave 3 + note F#, 2 + octave 4 + note E_, 2 + octave 3 + note F_, 2 + octave 4 + note E_, 2 + octave 3 + note E_, 2 + octave 4 + note E_, 2 + octave 2 + note B_, 2 + octave 3 + note C_, 2 + octave 2 + note B_, 2 + note A#, 2 +.loop1: + sound_call .sub1 + sound_loop 3, .loop1 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note D_, 2 + octave 2 + note A_, 2 + octave 3 + note G_, 2 + note F_, 2 + note E_, 2 + note D_, 2 +.loop2: + sound_call .sub1 + sound_loop 3, .loop2 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note D_, 2 + octave 2 + note A_, 2 + octave 3 + note G_, 2 + octave 2 + note G_, 2 + note A_, 2 + note A#, 2 + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + sound_call .sub4 +.mainloop: + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + note E_, 2 + note D_, 2 + sound_call .sub5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note A_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note A_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 +.loop3: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 3 + note F_, 2 + sound_loop 5, .loop3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + note A#, 2 + note F_, 2 + octave 2 + note A#, 2 + octave 3 + sound_call .sub5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note F_, 2 + note E_, 2 + note D_, 2 + sound_call .sub5 + sound_call .sub5 +.loop4: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + note A_, 1 + octave 3 + note E_, 1 + note D_, 2 + octave 2 + note A#, 2 + note A_, 2 + octave 3 + note D_, 2 + note G_, 2 + note F_, 2 + sound_loop 7, .loop4 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note D_, 2 + octave 2 + note A#, 2 + note A_, 2 + octave 3 + note A_, 2 + note G_, 2 + note F_, 2 +.loop5: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 3 + note F_, 2 + sound_loop 4, .loop5 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 3 + note F_, 2 + note G_, 2 + note F_, 2 + note E_, 2 + note D_, 2 + note C#, 2 + note D_, 2 +.loop6: + volume_envelope 1, 4 + vibrato 0, 2, 0 + octave 2 + note A_, 1 + octave 3 + note E_, 1 + note E_, 2 + sound_loop 13, .loop6 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 4 + note D_, 2 + note C_, 2 + octave 2 + note A#, 2 +.loop7: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 1 + octave 3 + note E_, 1 + note E_, 2 + sound_loop 4, .loop7 + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 4 + note D_, 2 + octave 3 + note A_, 2 + note A#, 4 + note A_, 2 + note G_, 2 + note A#, 2 +.loop8: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 1 + octave 3 + note F_, 1 + note F_, 2 + sound_loop 7, .loop8 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + note F_, 2 +.loop9: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 1 + octave 3 + note F_, 1 + note F_, 2 + sound_loop 5, .loop9 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 4 + note D_, 4 + note C_, 2 + octave 3 + note A#, 2 + note G_, 2 + sound_call .sub6 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note E_, 2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + sound_call .sub6 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 2 + note A_, 2 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + sound_call .sub2 + sound_call .sub3 + octave 3 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note F_, 2 + sound_call .sub4 + sound_loop 0, .mainloop + +.sub1: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note D_, 2 + octave 2 + note A_, 2 + note A#, 2 + octave 3 + note E_, 2 + note G_, 2 + note F_, 2 + sound_ret + +.sub2: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + note A_, 2 + octave 3 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note E_, 2 + octave 2 + note A_, 2 + octave 3 + note D_, 2 + sound_ret + +.sub3: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + note A#, 2 + octave 3 + note A#, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + note F_, 2 + octave 2 + note A#, 2 + sound_ret + +.sub4: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A#, 2 + octave 3 + note F_, 2 + note A#, 2 + note F_, 2 + note A#, 2 + note F_, 2 + octave 2 + note A#, 2 + octave 3 + note F_, 2 + sound_ret + +.sub5: +.sub5loop1: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + sound_loop 4, .sub5loop1 + sound_ret + +.sub6: + octave 2 + volume_envelope 1, 4 + vibrato 0, 2, 0 + note A_, 2 + octave 3 + note E_, 2 + note A_, 2 + octave 2 + note A_, 2 + octave 3 + note E_, 2 + note A_, 2 + octave 2 + note A_, 2 + sound_ret diff --git a/crysaudio/music_pointers_red.asm b/crysaudio/music_pointers_red.asm index e48fa6b7..59f6ad1d 100644 --- a/crysaudio/music_pointers_red.asm +++ b/crysaudio/music_pointers_red.asm @@ -59,3 +59,5 @@ Music: dba Music_Mewtwo01 dba Music_LegendaryBattle dba Music_GiovannisRoom + dba Music_RocketRBY + dba Music_GiovanniBattle diff --git a/data/maps/objects/ViridianGym.asm b/data/maps/objects/ViridianGym.asm index d5c36e19..f02946e5 100644 --- a/data/maps/objects/ViridianGym.asm +++ b/data/maps/objects/ViridianGym.asm @@ -11,7 +11,7 @@ ViridianGym_Object: def_bg_events def_object_events - object_event 2, 2, SPRITE_GIOVANNI, STAY, DOWN, 1, OPP_GIOVANNI, 3 + object_event 2, 2, SPRITE_GIOVANNI, STAY, DOWN, 1, OPP_LEADER_GIOVANNI, 1 object_event 12, 7, SPRITE_COOLTRAINER_M, STAY, DOWN, 2, OPP_COOLTRAINER_M, 9 object_event 11, 11, SPRITE_HIKER, STAY, UP, 3, OPP_BLACKBELT, 5 object_event 10, 7, SPRITE_ROCKER, STAY, DOWN, 4, OPP_TAMER, 3 diff --git a/data/trainers/ai_pointers.asm b/data/trainers/ai_pointers.asm index 90130edf..c23aa514 100644 --- a/data/trainers/ai_pointers.asm +++ b/data/trainers/ai_pointers.asm @@ -56,4 +56,5 @@ TrainerAIPointers: dbw 2, BlackbeltAI ; Koichi dbw 2, BlackbeltAI ; Jack dbw 2, GenericAI ; Jessie & James + dbw 3, SabrinaAI assert_table_length NUM_TRAINERS diff --git a/data/trainers/encounter_types.asm b/data/trainers/encounter_types.asm index ca08d434..38e9338e 100644 --- a/data/trainers/encounter_types.asm +++ b/data/trainers/encounter_types.asm @@ -21,4 +21,5 @@ EvilTrainerList:: db OPP_CHANNELER db OPP_AGATHA db OPP_JESSIE_JAMES + db OPP_LEADER_GIOVANNI db -1 ; end diff --git a/data/trainers/move_choices.asm b/data/trainers/move_choices.asm index 7facfddb..1bbdf6cb 100644 --- a/data/trainers/move_choices.asm +++ b/data/trainers/move_choices.asm @@ -61,4 +61,5 @@ TrainerClassMoveChoiceModifications: move_choices 1, 2, 3 ; KOICHI move_choices 1, 2, 3, 4 ; JACK move_choices 1, 3, ; JESSIE_JAMES + move_choices 1, 2, 3, 4 ; LEADER_GIOVANNI assert_list_length NUM_TRAINERS diff --git a/data/trainers/names.asm b/data/trainers/names.asm index c9dae124..156d73f9 100644 --- a/data/trainers/names.asm +++ b/data/trainers/names.asm @@ -52,4 +52,5 @@ TrainerNames:: li "KOICHI" li "JACKY" ; Often called Jack, but the only source for that is the file names themselves, which are oft shortened or literal japanese translations; all other context is "Shinjuku Jacky". li "JESSIE&JAMES" + li "GIOVANNI" assert_list_length NUM_TRAINERS diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 92b995b6..cf9b89f4 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -52,6 +52,7 @@ TrainerDataPointers: dw KoichiData dw JackData dw JessieJamesData + dw LeaderGiovanniData assert_table_length NUM_TRAINERS ; if first byte != $FF, then diff --git a/data/trainers/pic_pointers_money.asm b/data/trainers/pic_pointers_money.asm index af202ba2..d18912ef 100644 --- a/data/trainers/pic_pointers_money.asm +++ b/data/trainers/pic_pointers_money.asm @@ -59,4 +59,5 @@ TrainerPicAndMoneyPointers:: pic_money KoichiPic, 9900 pic_money JackPic, 5000 pic_money JessieJamesPic, 5000 + pic_money GiovanniPic2, 9900 assert_table_length NUM_TRAINERS diff --git a/data/trainers/scaled_parties.asm b/data/trainers/scaled_parties.asm index 0d91512c..e44de497 100644 --- a/data/trainers/scaled_parties.asm +++ b/data/trainers/scaled_parties.asm @@ -78,12 +78,13 @@ BlaineData: db $FF, 47, RAPIDASH, 46, NINETALES, 46, FLAREON, 48, CHARIZARD, 48, ARCANINE, 50, MAGMORTAR, 0 ; 7 (unused) db $FF, 62, RAPIDASH, 62, ARCANINE, 61, TAUROS_PB, 61, FLAREON, 62, CHARIZARD, 65, MAGMORTAR, 0 ; 8 (postgame) -GiovanniData: ; is not scaled as he is always fought last +GiovanniData: ; Rocket Hideout B4F db $FF, 28, BEEDRILL, 30, RHYHORN, 30, KANGASKHAN, 32, PERSIAN, 0 ; Silph Co. 11F - did you know this team was weaker than the rival in vanilla level-wise? db $FF, 38, BEEDRILL, 39, RHYDON, 38, KANGASKHAN, 40, NIDOKING, 40, NIDOQUEEN, 42, PERSIAN, 0 -; Viridian Gym + +LeaderGiovanniData: db $FF, 47, TRAMPEL, 46, DUGTRIO, 46, GUARDIA, 48, NIDOQUEEN, 48, NIDOKING, 50, RHYPERIOR, 0 LoreleiData: diff --git a/data/trainers/special_moves.asm b/data/trainers/special_moves.asm index 76c500b2..8cc653fb 100644 --- a/data/trainers/special_moves.asm +++ b/data/trainers/special_moves.asm @@ -795,7 +795,7 @@ SpecialTrainerMoves: db 5, 2, SMOG db 0 - db GIOVANNI, 3 ; Gym Leader Giovanni + db LEADER_GIOVANNI, 1 db 1, 1, BUBBLEBEAM db 1, 2, EARTHQUAKE db 2, 1, FISSURE @@ -1157,6 +1157,27 @@ SpecialTrainerMoves: db 6, 3, BODY_SLAM db 6, 4, SOLARBEAM db 0 + + db COOLTRAINER_M, 11 ; GAME FREAK Morimoto + db 1, 1, BODY_SLAM + db 1, 2, HYPER_BEAM + db 1, 3, EARTHQUAKE + db 1, 4, ICE_PUNCH + db 2, 1, QUICK_ATTACK + db 2, 2, HYPER_BEAM + db 2, 3, GROWTH + db 2, 4, FIRE_BLAST + db 3, 1, QUICK_ATTACK + db 3, 2, BLIZZARD + db 3, 3, GROWTH + db 4, 1, QUICK_ATTACK + db 4, 3, GROWTH + db 5, 1, EARTHQUAKE + db 5, 2, ROCK_SLIDE + db 6, 1, BLIZZARD + db 6, 2, FIRE_BLAST + db 6, 3, THUNDER + db 0 db YUJIROU, 10 ; Yujirou postgame db 1, 1, BUBBLEBEAM diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 67c11dd9..c8447a8d 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -991,6 +991,11 @@ TrainerBattleVictory: ld hl, wFlags_D733 set 1, [hl] .notrival + ld a, [wTrainerClass] + cp LEADER_GIOVANNI ; final battle against Giovanni + jr nz, .notrivalorGio + ld b, MUSIC_DEFEATED_GYM_LEADER +.notrivalorGio ld a, [wLinkState] cp LINK_STATE_BATTLING ld a, b diff --git a/gfx/pics.asm b/gfx/pics.asm index e19cb907..db5e343c 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -594,3 +594,4 @@ FirefighterPic:: INCBIN "gfx/trainers/firefighter.pic" KoichiPic:: INCBIN "gfx/trainers/koichi.pic" JackPic:: INCBIN "gfx/trainers/jack.pic" JessieJamesPic:: INCBIN "gfx/trainers/jessiejames.pic" +GiovanniPic2:: INCBIN "gfx/trainers/giovanni2.pic" diff --git a/gfx/trainers/giovanni2.png b/gfx/trainers/giovanni2.png new file mode 100644 index 0000000000000000000000000000000000000000..505adebdd29a3e963d5f952d1afbdb0febb10f86 GIT binary patch literal 368 zcmV-$0gwKPP)z5$VtSl|GRNl(BPn9INs5{Zq4se2_lwC)wCWJXxX1eF-LLP#T! zDpw(PVn0Wy3r~uiPqLq%pB@?$b=-EF3l3bqLJV|3t+xY5%rW{c?^V(!DKz) z*`rT(R}oXN`7yv8A=bgn5-s=3D-f^M)N)9iahmHlIF8_vr?Av# zk2EuPQP6&%su-w92@|1fjtTBsXTr9w>FD~L4k>M>f6%024P6vUFY_Np#elpd?mK4m zgt(?B=mAv&>hlNK=mMpe*^o9zdVDOay!}(beb2A4J~qCzo6U5Vdh;(W{Q}Ceo=J89 O0000 Date: Sat, 6 Jan 2024 22:22:05 +0000 Subject: [PATCH 10/21] Sprite finale! --- README.md | 4 ++-- gfx/pokemon/front/porygon.png | Bin 1131 -> 733 bytes gfx/pokemon/front/raichua.png | Bin 1177 -> 791 bytes gfx/pokemon/front/slowbrog.png | Bin 863 -> 917 bytes gfx/pokemon/front/slowkingg.png | Bin 782 -> 937 bytes gfx/pokemon/front/zapdosg.png | Bin 842 -> 979 bytes main.asm | 2 +- 7 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 18893fab..75297b3a 100644 --- a/README.md +++ b/README.md @@ -262,7 +262,7 @@ and more! Known Bugs ==== -- The highest AI level seems to prioritise offensive moves a bit too much? +- Itemfinder fails at its one job of finding items. Evolution Methods for new Pokemon ==== @@ -400,7 +400,7 @@ If you use our implementations of anything at all, it is encouraged to submit Pu Albatross sprites: Articuno-G, Blissey, Dugtrio-A, Electivire, Electrode-H, Espeon (back), Exeggutor-A, Gentlarva, Glaceon, Golem-A, Hitmontop, Iguanarch, Kleavor, Leafeon, Lickilicky, Marowak-A, Melmetal, Meltan, Moltres-G, Mr. Rime, Muk-A, Ninetales-A, Perrserker, Persian-A, Politoed, Porygon-Z, Pupal, Raichu-A, Rapidash-G, Raticate-A, Rhyperior, Sandslash-A, Sandy Shocks, Scizor, Sirfetch’d, Slowbro-G, Slowking (back), Slowking-G (back), Sylveon (back), Tangrowth, Tauros-P (all forms), Toedscool, Toedscruel, Umbreon (back), Weezing-G, Wiglett, Zapdos-G -Martha’s Against Humanity sprites: Bellignan (front, with help from PvK), Mimmeo (front), Slowking-G, Slowbro-G, Sylveon (front, with help from Albatross) +Martha’s Against Humanity sprites: Bellignan (front, with help from PvK), Mimmeo (front), Slowking-G (front), Slowbro-G (front, with help from Albatross), Sylveon (front, with help from Albatross) Albatross sprites refined by either Martha’s Against Humanity or PvK: Annihilape, Arcanine-H, Bellossom, Carapthor, Gorillaimo, Kingdra, Magmortar, Magnezone, Ministare, Porygon2, Scream Tail, Squeamata, Tauros-P (all forms), Wugtrio diff --git a/gfx/pokemon/front/porygon.png b/gfx/pokemon/front/porygon.png index 993fd202e5c92b6e4163e5bfede8dcbe56bcd132..68e764309c365ae1e0d42d1151c731ec2b94bc09 100644 GIT binary patch delta 547 zcmaFOahFxGGr-TCmrII^fq{Y7)59eQNNa#F6OdqdtomPIqN2VrQ!y7ZPSw+f3*T7KMz%0bb(8|Qj z%GgNTz`)ADz$Z~8bK*g9KkTx$Hfyc|jngP`jVMV;EJ?L0$;?eHE=kNSU@$T;!mcMv zvzKeK8e>L1qot>dV~E7%+>0B%4hM*^J+Qx}bq$N^G_@@%1}-Jx9i209d~+{CjHPn%eI8coqNW|x=ngMZx7sI ziZ3dNecJ11r`M6$EZ^w%x>JLF{lTvqBK|)m*Ir%kWWTy+Z+BcS|IaC_mmif|Q2A3} zs=1QG;|(HF(TWRdC%@nJBhXgjmk!_NX-^o7g+DHua+K95bnn!zONKrLaW!YN53;r^ zO)GvK{=?dD|NE2VTHYPN&}Z;;^>bP0l+XkK D_UYE< delta 948 zcmcc1`kF(rGr-TCmrII^fq{Y7)59eQNE?7K2OE$KXZqPbQBmKRv%n*=n1O-s2naJy z)#j51N-`yRySp$j8@Cj70D0^sp1!W^&v{t+<;}er3RovLt4JB^8XD;un1&ddS{WN! znVM=F7+4t?Y}yvuHSwUhA9mTpuiu&hjngP`jVMV;EJ?L0$;?eHE=kNSU@$T;!mek^ zzcVi}uf)~W8ADSdpN zr_<@5*^j>*`&0EL|Mc+#tA9#Vn94JUuDkyFWsTkP-i@Jr<_Zs|pMH8oT|K);aPyIA z4-Cu_|)!U%m+!Ccm7ew0CNvTw3+&^)Zn=XV%zFDRVel zW!<=QT7~=WiH6#8LCh)>C*0WXW3X-p$N9+0-gLF7V)v4A1+lPxPL~9iT(R>jv$K4k z-wNB!d3cNN$Nh2F3ty#WiND`yr@l>M@xD_R9K!arOD|m85gwoTBmc_w5`p?(@-n>@ z_p0qn=H)*s|GOgX<$Dvgq(rU@t2EfR@VM-|+HfeurmMjCqQu6kvt9Ez<)u&l{`+FL z0taKDN^6x<+6S9e!6##HF(!y7CD{vYxhD9LbwXiBp+I)e6JJS&LwgObn{a+kRuXyt zIci5^*OrBhVSXnUF}%yv;<}Trrm$~fz0&4K3xBI#o4r^|ZpZnSV?TAL1Y6rJ%486X zV%67ss5M2<_s1WxGaq-X>U<`6=@oY;8|V9(4D#iLwkb!Rf9(st&Y+=~W+WJ=QBr&n#{Ou~nlKW1#TIVq?TqHSD;qLD_5r>ms7_VIVp5a~c z#vYxdW3GnJ_G>>Co%QQfMk@0DI4?o4V}(c z*BwpYW#5#4cGk>5>#n8BUnak(W53tf-x&Vc@I#c}a{Gsqi>8IoSb7_n9T+@a{an^L HB{Ts5JZX?m diff --git a/gfx/pokemon/front/raichua.png b/gfx/pokemon/front/raichua.png index e77a2d33484bc7709e0ba817ec7314dccc1c30be..436a84c4873faa1fe7224d712318cf0ce45e20b6 100644 GIT binary patch delta 584 zcmbQqIh}2S1Sb;%5FC%KNuFq^Z_JeB?e4lBSEK+1 z*-JcqUD;nSvWXfC-2EB&X5wTODHB}-LtO*25FEaloaenP3 zd+);zA`Bn2O~qn1%~q1rx*qH+WyR*H03ZIl^=I7pK<0nbscdJ0wLlYKeH==JP(?B(z8RhPFcYx*;F;haVG9v|=e1{MbCESIqA z*=<;#*In}N$d}vEB`tSnxJHN72Syw2*l{gzf|%%u?#(3}8~!W2V0>dL6k56<%y&c0 znruVn#}4@&O3h*W=RH_+b$S)2l&P|3#=7?%A#xhK?hCJ(YPN)Bw$?p$Gx@qln?0V+ z?b#ondXVY1X4D5S)!sa}xBNFO)6v8$~YZt=j~?GZdJeN z@6vmPzd9t{rd*A4N$w=9i@P%C9h{h|*}H<3`+x!Csy{k&okXP0uW7v$^lMSiofeH4-%7(? tp_hI}JvW~gJj>xxRD2R&x4R?W>3&+uv>k=kJiv%!@O1TaS?83{1ONd7?oI#z delta 973 zcmV;;12X)V2AK(v7#Ro#0001}hC3br000DMK}|sb0I`n?{9y%=Aulrta7bBm000ie z000ie0hKEb8vpl2NAnmF85!{ayp%s=r~X7ARTi#KoIFjo+g;eeSLkc zpV5+kYLP*jfn*e+f_oMW$uXE8wdjNiYQcX{z!6b8#yrra8YLMbNDu`SE}DbYGIuF5 zN0MpHErbZxg0Rme`K}>2#$_YKM96cHu&q!MNV~>7&DA~$M?4e59`q$iE;j`(p?NME z6f0JcV7@T)$T<>>l7rA!HAy-ng23^Sf}zhrf~gD8l2eBrj`syHqK&QbOJ>U^^lu z*uOX4lnx@Lvrj;mPzPIbQG|EUJBEPDOE@Q0lV#tYh|>ghIZD>0Q?xB7`sV}zNrDni zVl^a{liw>i?K#*J?07t`o#wa+=Xrl6T#)XmgMdT|+qB&~oUXDV+|FDWl)H(oV+4=E zT(7e?Vn_$muC?wv9q;q>ow=$L!O$YZ8;OT!DxthY`rBb2cnxG~LL8f`=UHkB-5sQ$ zifTyadcCg4@X2q90N*tB%n9B`7(^&$<>2J|&k*jfka4YD9lbG%wMT zoI1rHbFq;>Ub{TKPOYZ0lxPY{!ttV8#6&9CD8=c;b0k00000NkvXXu0mjfSfQn4 diff --git a/gfx/pokemon/front/slowbrog.png b/gfx/pokemon/front/slowbrog.png index 3130a8cc6bbba0363ab38681cbcb489f44e15e6b..4d6a797c90a177bfb251085dcec03796a29c00d3 100644 GIT binary patch delta 678 zcmcc5HkEyX%0v?<*~1JBe1{p2=dVa%U|?V`@$_|Nf5FHms;j<{^|Z~z$tqGNx(0^2 z24*2fhE^t~R>qdv1_o9J21^5fPndX7+z-3#6&`0Dpm7={t`Q|Ei6yC4C7HRY#U+Wk z1q?<8M%eWk|IyRMF+}5h>*cfA!j2MbA3Ud3aCqp69r0c&K6!7)1IK_l zVk}Fix27#;fA4kns$7*u)v9Rk)7wv)3nEZU4-eTY0}SZQ9Fvxo`F7F5KSE^E)EtTHf6cOXjueaM(S%=)+mRB5jV~ z;m-DoH~S1joYt&AZz@!y@@!RF-VDLKW2I+L%?%K77QFs;)uhGGD$j_;Y4+Uo3>7is z@h`3lS}640r(3?aa@E($vNL%C8TyV=Q#sddY-Y`o(yE;{X~ofpHyWlt5KA#TC_9a9 z<9unshWN{?B+j>f*;>@@>vn``=^^EJg7w}ztR(p=YTA$GgfsmmdHxBdL#-nQdyyi{SQ(ACqkbP0l+XkK^ZGDx delta 621 zcmV-z0+Rie2j2#eBn<>-K}|sb0I`n?{9y%=Aw?a;000ie0hKEb8vp`Vs+<_GiO|K5xt;F30$#!TOLb-LnA3%T^~=Sbt-VfwGeg-Z2_M$5vK z&P@Y#B3`GX@e0vuD*A{!9=b6rxX&@3hQEV&$BH=`VdIhUZpz=69@t`b%D&$K5a(06 zZ4)4WbHb}&unmx|PWY$Of8Gbk@N~r00dlanTBjk0*hWm2Qeu-4d$Jv@-a5$NbBPYI zRuGFH=(23*`55c>(?_p~m*{;ADtmr?%!pm&2SM}I5f5DAZET8h?S=ThL@|88S}^ch zzs3v13vg;3nazfy6UNI~Dk&70A+D|ecc({Me<`-O00000NkvXX Hu0mjfiDMZG diff --git a/gfx/pokemon/front/slowkingg.png b/gfx/pokemon/front/slowkingg.png index dfd85100481c103de877830e24ed6abfdb064e56..5c0bba1b3aa202ec1bf69851be6e3549c29422d7 100644 GIT binary patch delta 699 zcmeBUTgg5_Wul3b>|q85zQc^i^H-!WFfg!}c>21szhGn&)zwhkb#3j$$tqGNx(0^2 z24*2fhE^t~R>qdv1_o9J21^5fPndX7+z-3#6&`0Dpm7={t`Q|Ei6yC4C7HRY#U+Wk z1q?<8MyPsB3?L@Txae6^ZR!Wf37P?`dokc*(m<;BipUh_6WB2Xa6bm&5TlwpSIGzYEQkA z;9a9>e_WlV_C%jus#hAfR+XP~`?NDQi{rLWx}d&%+kWxO`8vC-K}|sb0I`n?{9y%=Aw?a;000ie0hKEb8vpv%fN`z>E>YW9JE-^MtF;*-xJV+nxmov*}TS=ZgZut3-So^fK3;IzA0`jP$tIFU$DwtFDc00000NkvXXu0mjfJr(XE diff --git a/gfx/pokemon/front/zapdosg.png b/gfx/pokemon/front/zapdosg.png index 821e17b194c11a97c436211374b09b04ca0e7614..e942f6e2124b9249ff6e90186d7391dc810432d3 100644 GIT binary patch delta 875 zcmX@bcA0&G%0v^V=)(*Qe1{p2=dVa%U|?V`@$_|Nf5FHmCd_{Fh2I6B5MzFkUkKy* zMdh=A9Muxnh?11Vl2ohYqEsNoU}RuqqHAENYhV^)WMpM%X=PxhZD3$!V8Cs@X2xV* zX7PIL(p6a^DnRoz;O3QN=B5^xB<2=iG144jWH*PMKTuCpYJ_K+uP=iZkj=rs$|%IZ z3}i6^Ap@fn11p%#z~IFw4QAH^g&BevHK2-^7#Ns@5gLGUAm9PSAa!6`KIpp%P?f%? zi(`n!`O?e#^DjGyuz%oQnXKZpa!Q1goYd6b-c1ZsJst&Eg*a&4OiNhmF+nimMUrwt z!$RKuEJ=!r_F47+S*E#ph-w7aFXHh~Sg0hi$cHmRb%Dk8-Nmuzi<#^B ze0;wzdU^6v$MpBFquo#5`IS+;MtBE&qQl z^98O-lW9$C0y)&-J8-;kAPv z9a*!VSLELWOT<%=j#Q?0Dt2<9r+0YQGBVHM-oeIVinGKSb=b z&NSW6A?6~*7gJ{j2K;a=bPG{&FshU^JbLECfj^TDcJE1;rKlEebok&6-+Aq=U3Khj zjv>=;^8LEHyuO2F+q*WF&BCc~PsKjisn}NhEuw8kTNJ0&qULt?&XkO_D4zDJ&%z7W zNveAtc-NyA?0G7$>&%wI&neT&(!a(X_|hFLW}iPHAtzQP{m9a3N1yMz>(&1K{pSC< sruBdH_szH4wBh{2x$pn~4=!VPttYl``I}gEP@3{|^>bP0l)%^o0Q%lk0RR91 delta 714 zcmV;*0yX{92g(MJBn<>-K}|sb0I`n?{9y%=Aw_@0000ie0hKEb8vp7xI$f0<56++E{>Gn_jorE|Jr?nb|jq5^!dcz?up z>GRLy5uI>{-QlO_bZKSP;z#`VSsSFy*GS{GV<@(D=&cOT9QynYAQ$$+$&%vWCD?d; z814FN2Tx%QgZ5<0r<+f+VbqLS=X|wc-=u%!N1y#fBQ$Z3dOK%)blap24ez;aNQP2| z*^R;Q3`u9Oz7$|dl#aS;R{ff%u^#i5EyW*e!!ZWd5n+-CyTcgJT85^mKe49)tH)Ha z*Q?q|;2oN(*!{ClMVP>rA$j_%RqwGYz+5{nc=8Dh^$1u_-;o>a!9rO_BLdmgp-6uP zQKXE9T&n|3Mx;;WXEfs8KCoSVUV0>37YchTu)`( z(6yDXSw(wxAGC4XiHY+eNIxsLI w(`3|%HaapnIx#gXFfckWFk)uL^#A|>07*qoM6N<$f<}T!ga7~l diff --git a/main.asm b/main.asm index 06dd64bf..aa065b11 100644 --- a/main.asm +++ b/main.asm @@ -339,13 +339,13 @@ INCLUDE "engine/items/itemfinder.asm" SECTION "Vending Machine", ROMX INCLUDE "engine/events/vending_machine.asm" +INCLUDE "gfx/fishing.asm" SECTION "Itemfinder 2", ROMX INCLUDE "engine/menus/league_pc.asm" INCLUDE "engine/events/hidden_items.asm" -INCLUDE "gfx/fishing.asm" SECTION "bank1E", ROMX From bc4f0b83e8966d16e618cda772f6329d15edc847 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 00:53:01 +0000 Subject: [PATCH 11/21] okay did you know they misspelled this move until X and Y adding it back for the sake of consistency! this is Gen 1, dammit! --- data/moves/names.asm | 2 +- data/text/item_descriptions.asm | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/data/moves/names.asm b/data/moves/names.asm index a16812c7..ffded4b8 100644 --- a/data/moves/names.asm +++ b/data/moves/names.asm @@ -171,7 +171,7 @@ MoveNames:: ; 12chr limit li "IRON DEFENSE" li "DAZZLE GLEAM" li "NIGHT SLASH" - li "FEINT ATTACK" + li "FAINT ATTACK" li "IRON HEAD" li "BRUTAL SWING" li "CHARM" diff --git a/data/text/item_descriptions.asm b/data/text/item_descriptions.asm index 96404035..45b19468 100644 --- a/data/text/item_descriptions.asm +++ b/data/text/item_descriptions.asm @@ -155,7 +155,8 @@ _HelixFossilDescription:: prompt _SecretKeyDescription:: - text "Opens doors." + text "Opens the door to" + next "CINNABAR GYM." prompt _BikeVoucherDescription:: From c9044a3f485357b32dd1d2941bacb9468e1d307f Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 01:02:56 +0000 Subject: [PATCH 12/21] Slight Galar Bird rebalance Took them down a bit from Level 70 to 65, and mostly increased their learnset levels, so going to Citrine first to catch them shouldn't make Silph Gauntlet WAY easier. In order to stay consistent with the number of moves they were each given, I've added Psychic to Garticuno's level up learnset. --- data/maps/objects/BrunswickGrotto.asm | 2 +- data/maps/objects/CelesteHill.asm | 2 +- data/maps/objects/GarnetCavernB1F.asm | 2 +- data/pokemon/evos_moves.asm | 47 ++++++++++++++------------- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/data/maps/objects/BrunswickGrotto.asm b/data/maps/objects/BrunswickGrotto.asm index 466f0c74..f662429f 100644 --- a/data/maps/objects/BrunswickGrotto.asm +++ b/data/maps/objects/BrunswickGrotto.asm @@ -9,6 +9,6 @@ BrunswickGrotto_Object: bg_event 22, 10, 2 ; signage def_object_events - object_event 5, 5, SPRITE_BIRD, STAY, LEFT, 1, ZAPDOS_G, 70 | OW_POKEMON ; person + object_event 5, 5, SPRITE_BIRD, STAY, LEFT, 1, ZAPDOS_G, 65 | OW_POKEMON ; person def_warps_to BRUNSWICK_GROTTO diff --git a/data/maps/objects/CelesteHill.asm b/data/maps/objects/CelesteHill.asm index be7a53dc..a830932f 100644 --- a/data/maps/objects/CelesteHill.asm +++ b/data/maps/objects/CelesteHill.asm @@ -9,6 +9,6 @@ CelesteHill_Object: bg_event 10, 12, 2 def_object_events - object_event 11, 6, SPRITE_BIRD, STAY, DOWN, 1, MOLTRES_G, 70 | OW_POKEMON ; person + object_event 11, 6, SPRITE_BIRD, STAY, DOWN, 1, MOLTRES_G, 65 | OW_POKEMON ; person def_warps_to CELESTE_HILL \ No newline at end of file diff --git a/data/maps/objects/GarnetCavernB1F.asm b/data/maps/objects/GarnetCavernB1F.asm index f0ef0475..edfa8f15 100644 --- a/data/maps/objects/GarnetCavernB1F.asm +++ b/data/maps/objects/GarnetCavernB1F.asm @@ -7,7 +7,7 @@ GarnetCavernB1F_Object: def_bg_events def_object_events - object_event 5, 11, SPRITE_BIRD, STAY, RIGHT, 1, ARTICUNO_G, 70 | OW_POKEMON ; person + object_event 5, 11, SPRITE_BIRD, STAY, RIGHT, 1, ARTICUNO_G, 65 | OW_POKEMON ; person object_event 24, 1, SPRITE_POKE_BALL, STAY, DOWN, 2, MAX_REVIVE object_event 19, 2, SPRITE_POKE_BALL, STAY, DOWN, 3, ESCAPE_ROPE object_event 9, 1, SPRITE_BIRD, STAY, DOWN, 4 ; cuno copy 1 diff --git a/data/pokemon/evos_moves.asm b/data/pokemon/evos_moves.asm index 0ee3d981..ab00821c 100644 --- a/data/pokemon/evos_moves.asm +++ b/data/pokemon/evos_moves.asm @@ -2612,41 +2612,42 @@ ArticunoGEvosMoves: ; Evolutions db 0 ; Learnset - db 40, REFLECT - db 45, HYPNOSIS - db 51, PSYBEAM - db 55, AGILITY - db 60, LIGHT_SCREEN - db 65, RECOVER - db 70, DREAM_EATER + db 45, REFLECT + db 50, HYPNOSIS + db 55, PSYBEAM + db 60, AGILITY + db 65, LIGHT_SCREEN + db 70, PSYCHIC_M + db 75, RECOVER + db 80, DREAM_EATER db 0 ZapdosGEvosMoves: ; Evolutions db 0 ; Learnset - db 40, DOUBLE_KICK - db 45, LIGHT_SCREEN - db 51, LOW_KICK - db 55, AGILITY - db 58, JUMP_KICK - db 62, DRILL_PECK - db 66, ROLLING_KICK - db 70, HI_JUMP_KICK + db 45, DOUBLE_KICK + db 50, LIGHT_SCREEN + db 55, LOW_KICK + db 60, AGILITY + db 65, JUMP_KICK + db 70, DRILL_PECK + db 75, ROLLING_KICK + db 80, HI_JUMP_KICK db 0 MoltresGEvosMoves: ; Evolutions db 0 ; Learnset - db 40, FAKE_TEARS ; Fake Tears - db 45, WING_ATTACK - db 51, BRUTAL_SWING - db 55, AGILITY - db 58, FEINT_ATTACK - db 62, NASTY_PLOT ; Nasty Plot - db 66, FALSE_SURRENDER ; False Surrender - db 70, SKY_ATTACK + db 45, FAKE_TEARS + db 50, WING_ATTACK + db 55, BRUTAL_SWING + db 60, AGILITY + db 65, FEINT_ATTACK + db 70, NASTY_PLOT + db 75, FALSE_SURRENDER + db 80, SKY_ATTACK db 0 OddishEvosMoves: From a25f68187582223620dda87a809c43d09fce6fe7 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 01:30:56 +0000 Subject: [PATCH 13/21] "One more commit before bed," she said. --- data/maps/objects/BrunswickTrail.asm | 5 +++-- data/maps/objects/CelesteHillOutside.asm | 2 ++ scripts/BrunswickTrail.asm | 5 +++++ scripts/CelesteHillOutside.asm | 10 ++++++++++ text/BrunswickTrail.asm | 15 ++++++++++++++- 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/data/maps/objects/BrunswickTrail.asm b/data/maps/objects/BrunswickTrail.asm index e05370d3..d91d17e6 100644 --- a/data/maps/objects/BrunswickTrail.asm +++ b/data/maps/objects/BrunswickTrail.asm @@ -6,11 +6,12 @@ BrunswickTrail_Object: warp_event 40, 5, BRUNSWICK_GLADE, 1 def_bg_events + bg_event 55, 8, 10 ; sign def_object_events object_event 23, 11, SPRITE_FAKE_TREE, STAY, NONE, 1, CACTORMUS, 60 | OW_POKEMON ; person - object_event 40, 21, SPRITE_COOLTRAINER_M, STAY, UP, 2, OPP_BIRD_KEEPER, 12 ; person - object_event 29, 14, SPRITE_BEAUTY, STAY, DOWN, 3, OPP_BEAUTY, 16 ; person + object_event 45, 19, SPRITE_COOLTRAINER_M, STAY, UP, 2, OPP_BIRD_KEEPER, 12 ; person + object_event 19, 14, SPRITE_BEAUTY, STAY, DOWN, 3, OPP_BEAUTY, 16 ; person object_event 25, 21, SPRITE_FISHER, STAY, DOWN, 4, OPP_FISHER, 13 ; person object_event 10, 10, SPRITE_HIKER, STAY, RIGHT, 5 ; person, Cave guy object_event 54, 9, SPRITE_BIRD, STAY, UP, 6 ; person, GZap diff --git a/data/maps/objects/CelesteHillOutside.asm b/data/maps/objects/CelesteHillOutside.asm index 1a939a40..dd385ba5 100644 --- a/data/maps/objects/CelesteHillOutside.asm +++ b/data/maps/objects/CelesteHillOutside.asm @@ -12,11 +12,13 @@ CelesteHillOutside_Object: warp_event 19, 4, CELESTE_HILL, 2 def_bg_events + bg_event 18, 7, 5 ; Sign def_object_events object_event 30, 16, SPRITE_BEAUTY, STAY, LEFT, 1, OPP_BEAUTY, 18 ; Selphy reference Trainer object_event 1, 16, SPRITE_COOLTRAINER_M, STAY, RIGHT, 2, OPP_COOLTRAINER_M, 14 ; Will reference Trainer object_event 11, 16, SPRITE_GENTLEMAN, STAY, DOWN, 3, OPP_GENTLEMAN, 7; Fan Club Chairman reference Trainer + object_event 18, 28, SPRITE_HIKER, STAY, DOWN, 4 ; person def_warps_to CELESTE_HILL_OUTSIDE diff --git a/scripts/BrunswickTrail.asm b/scripts/BrunswickTrail.asm index 34b4c6e4..84deb796 100644 --- a/scripts/BrunswickTrail.asm +++ b/scripts/BrunswickTrail.asm @@ -22,6 +22,7 @@ BrunswickTrail_TextPointers: dw Lover1 dw Lover2 dw PickUpItemText + dw TrailDirections BrunswickTrailTrainerHeaders: def_trainers @@ -101,6 +102,10 @@ CaveGuy: text_far _CaveGuy text_end +TrailDirections: + text_far _TrailDirections + text_end + FakeTreeNoCut: text_far _FakeTreeNoCut text_end diff --git a/scripts/CelesteHillOutside.asm b/scripts/CelesteHillOutside.asm index 3c86a22f..4c4c77d2 100644 --- a/scripts/CelesteHillOutside.asm +++ b/scripts/CelesteHillOutside.asm @@ -16,6 +16,8 @@ CelesteHillOutside_TextPointers: dw CelesteHillOutsideTrainer1 dw CelesteHillOutsideTrainer2 dw CelesteHillOutsideTrainer3 + dw HikerNPC + dw CelesteSign CelesteHillOutsideTrainerHeaders: def_trainers @@ -79,4 +81,12 @@ CelesteHillOutsideEndBattleText3: CelesteHillOutsideAfterBattleText3: text_far _CelesteHillOutsideAfterBattleText3 + text_end + +HikerNPC: + text_far _HikerNPC + text_end + +CelesteSign: + text_far _CelesteSign text_end \ No newline at end of file diff --git a/text/BrunswickTrail.asm b/text/BrunswickTrail.asm index 40c97b8f..e504cdf7 100644 --- a/text/BrunswickTrail.asm +++ b/text/BrunswickTrail.asm @@ -124,4 +124,17 @@ _FakeTreeAttack:: line "a rage!" prompt -; Martha can do the text for her things... +_TrailDirections:: + text "BRUNSWICK TRAIL" + + para "Go north for" + line "CITRINE CITY!" + + para "Follow the path" + line "to reach GARNET" + cont "CAVERN!" + + para "Go northwest to" + line "find BRUNSWICK" + cont "GLADE!" + done From 6434c918f03367459dd0043d5b2a3f91781713d0 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 01:50:02 +0000 Subject: [PATCH 14/21] Moved some trades That's my last commit for tonight, I swear! --- data/events/trades.asm | 12 ++++++------ data/maps/objects/CinnabarLabFossilRoom.asm | 1 - data/maps/objects/ViridianForestNorthGate.asm | 1 + gfx/blocksets/fossillab.bst | Bin 944 -> 944 bytes scripts/CinnabarLabFossilRoom.asm | 8 -------- scripts/Route11Gate2F.asm | 2 +- scripts/ViridianForestNorthGate.asm | 8 ++++++++ 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/data/events/trades.asm b/data/events/trades.asm index 4c3c8c56..05c67699 100644 --- a/data/events/trades.asm +++ b/data/events/trades.asm @@ -8,8 +8,8 @@ TradeMons: db RAICHU, KADABRA, TRADE_DIALOGSET_EVOLUTION, "HARRY@@@@@@" ; Citrine City, new trade to complete the 4 main trade evos db SPEAROW, FARFETCHD, TRADE_DIALOGSET_HAPPY, "DUX@@@@@@@@" ; Vermilion City db PERSIAN, TAUROS, TRADE_DIALOGSET_CASUAL, "JIMBO@@@@@@" ; Route 17-18 gate, from JP Blue - db MACHOKE, HAUNTER, TRADE_DIALOGSET_EVOLUTION, "MICHELLE@@@" ; Cinnabar Lab, from JP Blue - db KADABRA, GRAVELER, TRADE_DIALOGSET_EVOLUTION, "JENNY@@@@@@" ; Cinnabar Lab, from JP Blue (probably going to move these since you get the Trader here anyway...) + db MACHOKE, HAUNTER, TRADE_DIALOGSET_EVOLUTION, "MICHELLE@@@" ; Route 11 Gate, from JP Blue + db KADABRA, GRAVELER, TRADE_DIALOGSET_EVOLUTION, "JENNY@@@@@@" ; Route 10 Gate db CUBONE, MACHOKE, TRADE_DIALOGSET_HAPPY, "RICKY@@@@@@" ; Route 5-6 Underground Path, from Yellow db NO_MON, NO_MON, TRADE_DIALOGSET_SELF, "Unseen@@@@@" ; The Trader db RATICATE, RATICATE_A, TRADE_DIALOGSET_REGION, "RATICATE@@@" ; Viridian - LGPE trades begin here @@ -29,9 +29,9 @@ TradeMons: db SLOWBRO, SLOWBRO_G, TRADE_DIALOGSET_REGION, "SLOWBRO@@@@" db SLOWKING, SLOWKING_G, TRADE_DIALOGSET_REGION, "SLOWKING@@@" db WEEZING, WEEZING_G, TRADE_DIALOGSET_REGION, "WEEZING@@@@" - db MR_MIME, MR_RIME, TRADE_DIALOGSET_CASUAL, "CHURCHILL@@" ; Winston Churchill, notable "city gent" - db PERSIAN, PERRSERKER, TRADE_DIALOGSET_HAPPY, "ERIK@@@@@@@" ; One of the most famous vikings - db LUXWAN, SIRFETCHD, TRADE_DIALOGSET_HAPPY, "LANCELOT@@@" ; Influential knight of the round table - db ARCANINE, ARCANINE_H, TRADE_DIALOGSET_BILL, "ARCANINE@@@" + db MR_MIME, MR_RIME, TRADE_DIALOGSET_CASUAL, "MR.RIME@@@@" + db PERSIAN, PERRSERKER, TRADE_DIALOGSET_HAPPY, "PERRSERKER@" + db LUXWAN, SIRFETCHD, TRADE_DIALOGSET_HAPPY, "SIRFETCH'D@" + db ARCANINE, ARCANINE_H, TRADE_DIALOGSET_BILL, "ARCANINE@@@" db ELECTRODE, ELECTRODE_H, TRADE_DIALOGSET_GRAMPS, "ELECTRODE@@" assert_table_length NUM_NPC_TRADES diff --git a/data/maps/objects/CinnabarLabFossilRoom.asm b/data/maps/objects/CinnabarLabFossilRoom.asm index 29a805f7..cefd9193 100644 --- a/data/maps/objects/CinnabarLabFossilRoom.asm +++ b/data/maps/objects/CinnabarLabFossilRoom.asm @@ -9,6 +9,5 @@ CinnabarLabFossilRoom_Object: def_object_events object_event 5, 2, SPRITE_SCIENTIST, WALK, LEFT_RIGHT, 1 ; person - object_event 7, 6, SPRITE_SCIENTIST, STAY, UP, 2 ; person def_warps_to CINNABAR_LAB_FOSSIL_ROOM diff --git a/data/maps/objects/ViridianForestNorthGate.asm b/data/maps/objects/ViridianForestNorthGate.asm index fcb0fc2b..3f709c4a 100644 --- a/data/maps/objects/ViridianForestNorthGate.asm +++ b/data/maps/objects/ViridianForestNorthGate.asm @@ -12,5 +12,6 @@ ViridianForestNorthGate_Object: def_object_events object_event 3, 2, SPRITE_SUPER_NERD, STAY, NONE, 1 ; person object_event 2, 5, SPRITE_GRAMPS, STAY, NONE, 2 ; person + object_event 7, 4, SPRITE_YOUNGSTER, WALK, LEFT_RIGHT, 3 ; person def_warps_to VIRIDIAN_FOREST_NORTH_GATE diff --git a/gfx/blocksets/fossillab.bst b/gfx/blocksets/fossillab.bst index 6b5d55b39b21f9ebf97f899a6004f1da839bada0..88cda793782c6f8cd830a1f95ca2409481a3d20e 100644 GIT binary patch delta 15 VcmdnMzJYzh2^N1K*m&j%696$G25JBR delta 15 VcmdnMzJYzh2^MuA*m&j%696p{1 Date: Sun, 7 Jan 2024 01:51:06 +0000 Subject: [PATCH 15/21] Update trades.asm No, THIS is my last commit for tonight. --- data/events/trades.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/events/trades.asm b/data/events/trades.asm index 05c67699..e13fb91e 100644 --- a/data/events/trades.asm +++ b/data/events/trades.asm @@ -4,7 +4,7 @@ TradeMons: ; give mon, get mon, dialog id, nickname db POLIWHIRL, JYNX, TRADE_DIALOGSET_CASUAL, "LOLA@@@@@@@" ; Cerulean City db ABRA, MR_MIME, TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@" ; Route 2 - db BUTTERFREE, BEEDRILL, TRADE_DIALOGSET_HAPPY, "CHIKUCHIKU@" ; Route 11-12 gate, will be moved to Viridian Forest gate + db BUTTERFREE, BEEDRILL, TRADE_DIALOGSET_HAPPY, "CHIKUCHIKU@" ; Viridian Forest gate db RAICHU, KADABRA, TRADE_DIALOGSET_EVOLUTION, "HARRY@@@@@@" ; Citrine City, new trade to complete the 4 main trade evos db SPEAROW, FARFETCHD, TRADE_DIALOGSET_HAPPY, "DUX@@@@@@@@" ; Vermilion City db PERSIAN, TAUROS, TRADE_DIALOGSET_CASUAL, "JIMBO@@@@@@" ; Route 17-18 gate, from JP Blue From c0727f30448c50ebf6fd19e8fd8b3a2633e5c32c Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 11:02:17 +0000 Subject: [PATCH 16/21] The Itemfinder can once again find items (who actually uses this thing?) --- README.md | 3 ++- main.asm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 75297b3a..e963eeb9 100644 --- a/README.md +++ b/README.md @@ -262,7 +262,8 @@ and more! Known Bugs ==== -- Itemfinder fails at its one job of finding items. +- Trying to teach a TM/HM twice in a row may cause a game crash, so it's advised to save when teaching moves. +- Trying to Surf from the overworld on Cycling Road has an invisible textbox stopping you, but just pressing A again lets you regain control. Evolution Methods for new Pokemon ==== diff --git a/main.asm b/main.asm index aa065b11..2cd8fb52 100644 --- a/main.asm +++ b/main.asm @@ -333,7 +333,6 @@ SECTION "Itemfinder 1", ROMX INCLUDE "engine/movie/credits.asm" INCLUDE "engine/pokemon/status_ailments.asm" -INCLUDE "engine/items/itemfinder.asm" SECTION "Vending Machine", ROMX @@ -344,6 +343,7 @@ INCLUDE "gfx/fishing.asm" SECTION "Itemfinder 2", ROMX +INCLUDE "engine/items/itemfinder.asm" INCLUDE "engine/menus/league_pc.asm" INCLUDE "engine/events/hidden_items.asm" From 6bd93e635cf991f9dbdc877eb13e4f4adbe5d119 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 12:42:00 +0000 Subject: [PATCH 17/21] Slight postgame encounter balancing --- data/maps/objects/BrunswickTrail.asm | 2 +- data/wild/grass_water.asm | 3 +-- data/wild/maps/BrunswickGrotto.asm | 20 ++++++++++---------- data/wild/maps/BrunswickTrail.asm | 18 +++++++++--------- data/wild/maps/CelesteHill.asm | 20 ++++++++++---------- data/wild/maps/CelesteHillCave.asm | 20 ++++++++++---------- data/wild/maps/CeruleanCave1F.asm | 20 ++++++++++---------- data/wild/maps/CeruleanCave2F.asm | 20 ++++++++++---------- data/wild/maps/CeruleanCaveB1F.asm | 18 +++++++++--------- data/wild/maps/GarnetCavern1F.asm | 20 ++++++++++---------- data/wild/maps/GarnetCavern2F.asm | 20 ++++++++++---------- data/wild/maps/GarnetCavernB1F.asm | 20 ++++++++++---------- data/wild/maps/MtMoonCrater.asm | 24 +++++++----------------- data/wild/maps/PokemonTower5F.asm | 2 +- data/wild/maps/PokemonTower6F.asm | 4 ++-- data/wild/maps/SilphGauntlet1F.asm | 20 ++++++++++---------- data/wild/maps/SilphGauntlet2F.asm | 20 ++++++++++---------- data/wild/maps/SilphGauntlet3F.asm | 20 ++++++++++---------- data/wild/maps/SilphGauntlet4F.asm | 20 ++++++++++---------- data/wild/maps/SilphGauntlet5F.asm | 20 ++++++++++---------- data/wild/maps/SilphGauntlet6F.asm | 16 ---------------- 21 files changed, 160 insertions(+), 187 deletions(-) delete mode 100644 data/wild/maps/SilphGauntlet6F.asm diff --git a/data/maps/objects/BrunswickTrail.asm b/data/maps/objects/BrunswickTrail.asm index d91d17e6..5baf3233 100644 --- a/data/maps/objects/BrunswickTrail.asm +++ b/data/maps/objects/BrunswickTrail.asm @@ -9,7 +9,7 @@ BrunswickTrail_Object: bg_event 55, 8, 10 ; sign def_object_events - object_event 23, 11, SPRITE_FAKE_TREE, STAY, NONE, 1, CACTORMUS, 60 | OW_POKEMON ; person + object_event 23, 11, SPRITE_FAKE_TREE, STAY, NONE, 1, CACTORMUS, 50 | OW_POKEMON ; person object_event 45, 19, SPRITE_COOLTRAINER_M, STAY, UP, 2, OPP_BIRD_KEEPER, 12 ; person object_event 19, 14, SPRITE_BEAUTY, STAY, DOWN, 3, OPP_BEAUTY, 16 ; person object_event 25, 21, SPRITE_FISHER, STAY, DOWN, 4, OPP_FISHER, 13 ; person diff --git a/data/wild/grass_water.asm b/data/wild/grass_water.asm index 207bbfb9..e5e4ceb7 100644 --- a/data/wild/grass_water.asm +++ b/data/wild/grass_water.asm @@ -114,7 +114,7 @@ WildDataPointers: dw VictoryRoad1FWildMons dw BrunswickGrottoWildMons dw Gauntlet5FWildMons - dw Gauntlet6FWildMons + dw NothingWildMons dw NothingWildMons dw NothingWildMons dw NothingWildMons @@ -335,7 +335,6 @@ INCLUDE "data/wild/maps/SilphGauntlet2F.asm" INCLUDE "data/wild/maps/SilphGauntlet3F.asm" INCLUDE "data/wild/maps/SilphGauntlet4F.asm" INCLUDE "data/wild/maps/SilphGauntlet5F.asm" -INCLUDE "data/wild/maps/SilphGauntlet6F.asm" INCLUDE "data/wild/maps/FarawayIslandInside.asm" INCLUDE "data/wild/maps/MtMoonCrater.asm" INCLUDE "data/wild/maps/UnderwaterTunnel.asm" diff --git a/data/wild/maps/BrunswickGrotto.asm b/data/wild/maps/BrunswickGrotto.asm index fd2de2a1..16c60bd7 100644 --- a/data/wild/maps/BrunswickGrotto.asm +++ b/data/wild/maps/BrunswickGrotto.asm @@ -1,16 +1,16 @@ ; Another way to obtain Virdian Forest bugs, which are hard to bring up to speed post-game. BrunswickGrottoWildMons: def_grass_wildmons 10 ; encounter rate - db 51, BEEDRILL - db 52, BUTTERFREE - db 52, CARAPTHOR - db 51, MINISTARE - db 53, PARASECT - db 53, PARASECT - db 53, GORILLAIMO - db 54, SCYTHER - db 54, PINSIR - db 55, PINSIR + db 45, BEEDRILL + db 45, BUTTERFREE + db 47, CARAPTHOR + db 45, SQUEAMATA + db 46, PARASECT + db 47, PARASECT + db 50, SCYTHER + db 50, PINSIR + db 48, GORILLAIMO + db 50, MINISTARE end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/BrunswickTrail.asm b/data/wild/maps/BrunswickTrail.asm index e56113a2..e6adf8cc 100644 --- a/data/wild/maps/BrunswickTrail.asm +++ b/data/wild/maps/BrunswickTrail.asm @@ -2,16 +2,16 @@ ; Some of these are Pokemon featured in the Big P Pokemon Race from the anime. BrunswickTrailMons: def_grass_wildmons 10 ; encounter rate - db 49, TOEDSCOOL + db 45, TOEDSCOOL db 47, DODRIO - db 53, TOEDSCOOL - db 52, DODRIO - db 52, RAPIDASH - db 55, TAUROS - db 55, CACTORMUS - db 56, TOEDSCRUEL - db 56, TOEDSCRUEL - db 55, CACTORMUS + db 45, TOEDSCOOL + db 48, DODRIO + db 48, RAPIDASH + db 50, CACTORMUS + db 47, TOEDSCRUEL + db 48, TOEDSCRUEL + db 49, TAUROS + db 50, TAUROS end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/CelesteHill.asm b/data/wild/maps/CelesteHill.asm index 112ce57c..0788b4aa 100644 --- a/data/wild/maps/CelesteHill.asm +++ b/data/wild/maps/CelesteHill.asm @@ -1,15 +1,15 @@ CelesteHillWildMons: def_grass_wildmons 10 ; encounter rate - db 55, FARFETCHD - db 55, NIDORINO - db 56, FARFETCHD - db 56, NIDORINA - db 57, NIDORINA - db 57, LUXWAN - db 57, BUU - db 57, WIGGLYTUFF - db 56, BALUMBA - db 59, DRAGONAIR + db 47, FARFETCHD + db 47, NIDORINO + db 48, FARFETCHD + db 47, NIDORINA + db 47, NIDORINA + db 49, LUXWAN + db 49, BUU + db 49, WIGGLYTUFF + db 48, BALUMBA + db 50, DRAGONAIR end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/CelesteHillCave.asm b/data/wild/maps/CelesteHillCave.asm index df6abbd0..e62281de 100644 --- a/data/wild/maps/CelesteHillCave.asm +++ b/data/wild/maps/CelesteHillCave.asm @@ -1,15 +1,15 @@ CelesteHillCaveWildMons: def_grass_wildmons 10 ; encounter rate - db 51, GRAVELER - db 52, BUU - db 52, GRAVELER - db 51, BUU - db 53, CROBAT - db 53, JYNX - db 53, STEELIX - db 54, NIDOREIGN - db 54, CLEFABLE - db 55, CLEFABLE + db 47, GRAVELER + db 48, BUU + db 47, GRAVELER + db 49, BUU + db 49, CROBAT + db 49, JYNX + db 49, STEELIX + db 50, NIDOREIGN + db 50, CLEFABLE + db 50, CLEFABLE end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/CeruleanCave1F.asm b/data/wild/maps/CeruleanCave1F.asm index aaaf8111..70768c4a 100644 --- a/data/wild/maps/CeruleanCave1F.asm +++ b/data/wild/maps/CeruleanCave1F.asm @@ -1,15 +1,15 @@ CeruleanCave1FWildMons: def_grass_wildmons 10 ; encounter rate - db 46, GOLBAT - db 46, HYPNO - db 46, MAGNETON - db 49, DODRIO - db 49, VENOMOTH - db 52, ARBOK - db 49, KADABRA - db 52, PARASECT - db 53, RAICHU - db 53, CLEFAIRY + db 60, GRAVELER + db 60, GOLBAT + db 61, ELECTRODE + db 61, DODRIO + db 61, VENOMOTH + db 60, GRAVELER + db 62, KADABRA + db 62, MAGNETON + db 60, DITTO + db 63, CLEFAIRY end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/CeruleanCave2F.asm b/data/wild/maps/CeruleanCave2F.asm index 545afeb6..b42db8fa 100644 --- a/data/wild/maps/CeruleanCave2F.asm +++ b/data/wild/maps/CeruleanCave2F.asm @@ -1,15 +1,15 @@ CeruleanCave2FWildMons: def_grass_wildmons 15 ; encounter rate - db 51, DODRIO - db 51, VENOMOTH - db 51, WEEPINBELL - db 52, RHYDON - db 52, MAROWAK - db 52, ELECTRODE - db 56, CHANSEY - db 54, WIGGLYTUFF - db 55, LICKITUNG - db 60, RATICATE + db 61, CROBAT + db 61, GLOOM + db 62, RAPIDASH + db 61, WEEPINBELL + db 61, WEEPINBELL + db 63, STEELIX + db 63, WIGGLYTUFF + db 65, DITTO + db 63, LICKITUNG + db 64, SNORLAX end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/CeruleanCaveB1F.asm b/data/wild/maps/CeruleanCaveB1F.asm index dc051382..4407e309 100644 --- a/data/wild/maps/CeruleanCaveB1F.asm +++ b/data/wild/maps/CeruleanCaveB1F.asm @@ -1,15 +1,15 @@ CeruleanCaveB1FWildMons: def_grass_wildmons 25 ; encounter rate - db 55, RHYDON - db 55, MAROWAK - db 55, ELECTRODE - db 64, CHANSEY - db 64, PARASECT + db 62, GRAVELER + db 62, CROBAT + db 63, CLEFAIRY + db 64, LICKITUNG + db 64, KADABRA db 64, RAICHU - db 57, SANDSLASH - db 65, GLOOM - db 63, RAPIDASH - db 67, DITTO + db 64, CHANSEY + db 65, DITTO + db 65, SNORLAX + db 70, DITTO end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/GarnetCavern1F.asm b/data/wild/maps/GarnetCavern1F.asm index 613851e6..8570d55f 100644 --- a/data/wild/maps/GarnetCavern1F.asm +++ b/data/wild/maps/GarnetCavern1F.asm @@ -1,15 +1,15 @@ GarnetCavern1FWildMons: def_grass_wildmons 10 ; encounter rate - db 52, MR_MIME - db 52, GRAVELER - db 53, MAGNETON - db 51, HYPNO - db 50, CROAKOZUNA - db 55, SLOWBRO - db 54, SLOWBRO - db 55, HAUNTER - db 54, GAVILLAIN - db 55, GAVILLAIN + db 47, MR_MIME + db 47, GRAVELER + db 48, MAGNETON + db 48, HYPNO + db 47, CROAKOZUNA + db 49, SLOWBRO + db 48, SLOWBRO + db 49, HAUNTER + db 49, GAVILLAIN + db 50, GAVILLAIN end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/GarnetCavern2F.asm b/data/wild/maps/GarnetCavern2F.asm index 45d23619..fa5f7cc1 100644 --- a/data/wild/maps/GarnetCavern2F.asm +++ b/data/wild/maps/GarnetCavern2F.asm @@ -1,15 +1,15 @@ GarnetCavern2FWildMons: def_grass_wildmons 10 ; encounter rate - db 52, MR_MIME - db 52, GRAVELER - db 53, MAGNETON - db 51, HYPNO - db 50, CROAKOZUNA - db 55, SLOWBRO - db 54, SLOWBRO - db 55, HAUNTER - db 54, GAVILLAIN - db 55, GAVILLAIN + db 47, MR_MIME + db 47, GRAVELER + db 48, MAGNETON + db 48, HYPNO + db 47, CROAKOZUNA + db 49, SLOWBRO + db 48, SLOWBRO + db 49, HAUNTER + db 49, GAVILLAIN + db 50, GAVILLAIN end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/GarnetCavernB1F.asm b/data/wild/maps/GarnetCavernB1F.asm index 991470b9..97ab5493 100644 --- a/data/wild/maps/GarnetCavernB1F.asm +++ b/data/wild/maps/GarnetCavernB1F.asm @@ -1,15 +1,15 @@ GarnetCavernB1FWildMons: def_grass_wildmons 5 ; encounter rate - db 52, MR_MIME - db 52, GRAVELER - db 53, MAGNETON - db 51, HYPNO - db 50, CROAKOZUNA - db 55, SLOWBRO - db 54, SLOWBRO - db 55, HAUNTER - db 54, GAVILLAIN - db 55, GAVILLAIN + db 47, MR_MIME + db 47, GRAVELER + db 48, MAGNETON + db 48, HYPNO + db 47, CROAKOZUNA + db 49, SLOWBRO + db 48, SLOWBRO + db 49, HAUNTER + db 49, GAVILLAIN + db 50, GAVILLAIN end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/MtMoonCrater.asm b/data/wild/maps/MtMoonCrater.asm index 4a090114..a1a45728 100644 --- a/data/wild/maps/MtMoonCrater.asm +++ b/data/wild/maps/MtMoonCrater.asm @@ -1,26 +1,16 @@ MtMoonCraterMons: def_grass_wildmons 10 ; encounter rate db 49, DUGTRIO - db 47, VENOMOTH - db 53, RAICHU - db 52, VENOMOTH - db 52, DUGTRIO - db 55, RAICHU - db 55, CHANSEY + db 49, VENOMOTH + db 49, RAICHU + db 50, VENOMOTH + db 50, DUGTRIO + db 50, RAICHU + db 50, CHANSEY db 50, SANDY_SHOCKS db 50, SCREAM_TAIL db 50, SCREAM_TAIL end_grass_wildmons - def_water_wildmons 10 ; encounter rate - db 52, GOLDUCK - db 54, GOLDUCK - db 50, GOLDUCK - db 52, JABETTA - db 50, JABETTA - db 52, CROAKOZUNA - db 54, CROAKOZUNA - db 50, WUGTRIO - db 51, WUGTRIO - db 52, WUGTRIO + def_water_wildmons 0 ; encounter rate end_water_wildmons \ No newline at end of file diff --git a/data/wild/maps/PokemonTower5F.asm b/data/wild/maps/PokemonTower5F.asm index c5960350..3a67189a 100644 --- a/data/wild/maps/PokemonTower5F.asm +++ b/data/wild/maps/PokemonTower5F.asm @@ -9,7 +9,7 @@ PokemonTower5FWildMons: db 25, HAUNTER db 20, CUBONE db 22, CUBONE - db 24, VULPIX + db 25, BALUMBA end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/PokemonTower6F.asm b/data/wild/maps/PokemonTower6F.asm index eaa3391b..ad33d6b1 100644 --- a/data/wild/maps/PokemonTower6F.asm +++ b/data/wild/maps/PokemonTower6F.asm @@ -2,12 +2,12 @@ PokemonTower6FWildMons: def_grass_wildmons 15 ; encounter rate db 21, GASTLY db 22, GASTLY - db 23, GASTLY + db 22, CUBONE db 20, VULPIX db 23, VULPIX db 24, CUBONE db 26, HAUNTER - db 22, CUBONE + db 18, VULPIII db 27, HAUNTER db 28, BALUMBA end_grass_wildmons diff --git a/data/wild/maps/SilphGauntlet1F.asm b/data/wild/maps/SilphGauntlet1F.asm index 8729106a..44862103 100644 --- a/data/wild/maps/SilphGauntlet1F.asm +++ b/data/wild/maps/SilphGauntlet1F.asm @@ -1,15 +1,15 @@ Gauntlet1FWildMons: def_grass_wildmons 8 ; encounter rate - db 50, BUTTERFREE - db 50, BEEDRILL - db 51, VENOMOTH - db 51, TANGELA - db 51, BEEDRILL - db 52, VENOMOTH - db 52, CARAPTHOR - db 53, TANGELA - db 53, CARAPTHOR - db 55, GOROTORA + db 45, BUTTERFREE + db 45, BEEDRILL + db 46, VENOMOTH + db 47, PIDGEOT + db 46, BEEDRILL + db 46, BUTTERFREE + db 47, CARAPTHOR + db 48, PIDGEOT + db 48, CARAPTHOR + db 50, GOROTORA end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SilphGauntlet2F.asm b/data/wild/maps/SilphGauntlet2F.asm index fbe62f67..741a3bc3 100644 --- a/data/wild/maps/SilphGauntlet2F.asm +++ b/data/wild/maps/SilphGauntlet2F.asm @@ -1,15 +1,15 @@ Gauntlet2FWildMons: def_grass_wildmons 10 ; encounter rate - db 51, GRAVELER - db 51, SANDSLASH - db 52, MACHOKE - db 52, PARASECT - db 52, SANDSLASH - db 53, MACHOKE - db 53, CROBAT - db 54, CLEFABLE - db 54, CROBAT - db 56, KLEAVOR + db 46, GRAVELER + db 46, SANDSLASH + db 47, MACHOKE + db 47, PARASECT + db 47, GRAVELER + db 48, MACHOKE + db 48, CROBAT + db 49, CLEFABLE + db 49, CROBAT + db 51, KLEAVOR end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SilphGauntlet3F.asm b/data/wild/maps/SilphGauntlet3F.asm index 391debd7..1f634a10 100644 --- a/data/wild/maps/SilphGauntlet3F.asm +++ b/data/wild/maps/SilphGauntlet3F.asm @@ -1,15 +1,15 @@ Gauntlet3FWildMons: def_grass_wildmons 10 ; encounter rate - db 52, POLIWHIRL - db 52, JABETTA - db 53, KINGLER - db 53, SLOWBRO - db 53, JABETTA - db 54, KINGLER - db 54, GOLDUCK - db 55, BLASTOISE - db 55, GOLDUCK - db 57, LAPRAS + db 47, POLIWHIRL + db 47, JABETTA + db 48, KINGLER + db 48, SLOWBRO + db 48, POLIWHIRL + db 49, KINGLER + db 49, CROAKOZUNA + db 50, BLASTOISE + db 50, CROAKOZUNA + db 52, LAPRAS end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SilphGauntlet4F.asm b/data/wild/maps/SilphGauntlet4F.asm index d30d8651..5953a220 100644 --- a/data/wild/maps/SilphGauntlet4F.asm +++ b/data/wild/maps/SilphGauntlet4F.asm @@ -1,15 +1,15 @@ Gauntlet4FWildMons: def_grass_wildmons 10 ; encounter rate - db 53, HAUNTER - db 53, GUARDIA - db 54, NINETALES - db 54, BALUMBA - db 54, GUARDIA - db 55, NINETALES - db 55, HYPNO - db 56, KADABRA - db 56, HYPNO - db 58, ANNIHILAPE + db 48, HAUNTER + db 48, MAROWAK + db 49, NINETALES + db 49, BALUMBA + db 49, HAUNTER + db 50, NINETALES + db 50, HYPNO + db 51, KADABRA + db 51, HYPNO + db 53, GENGAR end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SilphGauntlet5F.asm b/data/wild/maps/SilphGauntlet5F.asm index 3f3eed24..4ff07bd9 100644 --- a/data/wild/maps/SilphGauntlet5F.asm +++ b/data/wild/maps/SilphGauntlet5F.asm @@ -1,15 +1,15 @@ Gauntlet5FWildMons: def_grass_wildmons 20 ; encounter rate - db 54, DODRIO - db 54, RHYDON - db 55, EXEGGUTOR - db 55, SCYTHER - db 55, PINSIR - db 56, TAUROS - db 56, KANGASKHAN - db 57, TRAMPEL - db 57, CHANSEY - db 59, DRAGONITE + db 49, DODRIO + db 49, RHYDON + db 49, EXEGGUTOR + db 50, SCYTHER + db 50, PINSIR + db 51, TAUROS + db 51, GORILLAIMO + db 52, KANGASKHAN + db 52, TRAMPEL + db 54, CHANSEY end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SilphGauntlet6F.asm b/data/wild/maps/SilphGauntlet6F.asm deleted file mode 100644 index 17d82a61..00000000 --- a/data/wild/maps/SilphGauntlet6F.asm +++ /dev/null @@ -1,16 +0,0 @@ -Gauntlet6FWildMons: ; the pokemon on this floor represent the 9 gym leaders (including Yujirou!) - def_grass_wildmons 10 ; encounter rate - db 55, STEELIX - db 55, STARMIE - db 56, ELECTABUZZ - db 56, BELLOSSOM - db 56, WEEZING - db 57, MR_MIME - db 57, MAGMAR - db 58, NIDOKING - db 60, LICKILICKY - db 60, LICKILICKY - end_grass_wildmons - - def_water_wildmons 0 ; encounter rate - end_water_wildmons From 8fd91dcb90a17e5a184af0ba26642e31b82fa4a6 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 14:12:28 +0000 Subject: [PATCH 18/21] More wild data changes Already added to the spreadsheet. Did you know that Seafoam Islands' water didn't give wild encounters until Yellow? --- data/wild/maps/Route21.asm | 10 +++++----- data/wild/maps/SeafoamIslands1F.asm | 2 +- data/wild/maps/SeafoamIslandsB1F.asm | 4 ++-- data/wild/maps/SeafoamIslandsB2F.asm | 8 ++++---- data/wild/maps/SeafoamIslandsB3F.asm | 20 +++++++++++++++----- data/wild/maps/SeafoamIslandsB4F.asm | 18 ++++++++++++++---- data/wild/maps/VictoryRoad1F.asm | 18 +++++++++--------- data/wild/maps/VictoryRoad2F.asm | 18 +++++++++--------- data/wild/maps/VictoryRoad3F.asm | 20 ++++++++++---------- 9 files changed, 69 insertions(+), 49 deletions(-) diff --git a/data/wild/maps/Route21.asm b/data/wild/maps/Route21.asm index 1e1eeee1..58d3c050 100644 --- a/data/wild/maps/Route21.asm +++ b/data/wild/maps/Route21.asm @@ -13,14 +13,14 @@ Route21WildMons: end_grass_wildmons def_water_wildmons 5 ; encounter rate - db 30, TENTACOOL + db 25, TENTACOOL db 30, TENTACOOL db 35, BLOTTLE db 35, BLOTTLE - db 30, TENTACOOL - db 35, BALUMBA - db 30, TENTACOOL + db 30, CHEEP + db 30, CHEEP + db 30, TENTACRUEL db 35, TENTACRUEL db 35, PENDRAKEN - db 40, PENDRAKEN + db 35, SHARPOON end_water_wildmons diff --git a/data/wild/maps/SeafoamIslands1F.asm b/data/wild/maps/SeafoamIslands1F.asm index f20c5811..13859738 100644 --- a/data/wild/maps/SeafoamIslands1F.asm +++ b/data/wild/maps/SeafoamIslands1F.asm @@ -2,7 +2,7 @@ SeafoamIslands1FWildMons: def_grass_wildmons 15 ; encounter rate db 35, SEEL db 35, GOLBAT - db 35, HORSEA + db 35, WEIRDUCK db 35, KRABBY db 36, WEIRDUCK db 33, SEEL diff --git a/data/wild/maps/SeafoamIslandsB1F.asm b/data/wild/maps/SeafoamIslandsB1F.asm index b1753b56..8007fe02 100644 --- a/data/wild/maps/SeafoamIslandsB1F.asm +++ b/data/wild/maps/SeafoamIslandsB1F.asm @@ -1,13 +1,13 @@ SeafoamIslandsB1FWildMons: def_grass_wildmons 10 ; encounter rate - db 35, SHELLDER + db 35, WEIRDUCK db 35, BLASTYKE db 36, SEEL db 36, BLASTYKE db 34, SLOWPOKE db 35, SEEL db 35, SLOWPOKE - db 35, SEADRA + db 37, GOLDUCK db 38, JYNX db 39, SLOWBRO end_grass_wildmons diff --git a/data/wild/maps/SeafoamIslandsB2F.asm b/data/wild/maps/SeafoamIslandsB2F.asm index 1523ae27..aeb55551 100644 --- a/data/wild/maps/SeafoamIslandsB2F.asm +++ b/data/wild/maps/SeafoamIslandsB2F.asm @@ -5,11 +5,11 @@ SeafoamIslandsB2FWildMons: db 36, SEEL db 36, SLOWPOKE db 34, WEIRDUCK - db 35, STARYU - db 35, WEIRDUCK + db 35, KRABBY + db 35, BLASTYKE db 38, JYNX - db 36, KRABBY - db 39, GOLDUCK + db 36, BLASTYKE + db 39, BUU end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SeafoamIslandsB3F.asm b/data/wild/maps/SeafoamIslandsB3F.asm index 9b75e01b..02948ff2 100644 --- a/data/wild/maps/SeafoamIslandsB3F.asm +++ b/data/wild/maps/SeafoamIslandsB3F.asm @@ -2,15 +2,25 @@ SeafoamIslandsB3FWildMons: def_grass_wildmons 10 ; encounter rate db 36, BLASTYKE db 36, SEEL - db 37, BLASTYKE + db 35, SLOWPOKE db 37, SEEL db 35, KRABBY - db 36, STARYU + db 36, WEIRDUCK db 36, KINGLER db 38, JYNX - db 39, JYNX - db 39, BLASTOISE + db 39, BUU + db 39, BUU end_grass_wildmons - def_water_wildmons 0 ; encounter rate + def_water_wildmons 5 ; encounter rate + db 30, TENTACOOL + db 30, TENTACOOL + db 35, SHELLDER + db 35, STARYU + db 35, TENTACOOL + db 35, HORSEA + db 35, STARYU + db 35, HORSEA + db 35, SHARPOON + db 40, LAPRAS end_water_wildmons diff --git a/data/wild/maps/SeafoamIslandsB4F.asm b/data/wild/maps/SeafoamIslandsB4F.asm index 8b19a29d..d00cb3a5 100644 --- a/data/wild/maps/SeafoamIslandsB4F.asm +++ b/data/wild/maps/SeafoamIslandsB4F.asm @@ -1,9 +1,9 @@ SeafoamIslandsB4FWildMons: def_grass_wildmons 10 ; encounter rate db 35, WEIRDUCK - db 35, STARYU - db 35, SHELLDER - db 36, SEADRA + db 35, SEEL + db 35, BLASTYKE + db 36, SEEL db 36, DEWGONG db 36, GOLDUCK db 37, BLASTYKE @@ -12,5 +12,15 @@ SeafoamIslandsB4FWildMons: db 40, BLASTOISE end_grass_wildmons - def_water_wildmons 0 ; encounter rate + def_water_wildmons 5 ; encounter rate + db 30, TENTACOOL + db 30, TENTACOOL + db 35, SHELLDER + db 35, STARYU + db 35, TENTACOOL + db 35, HORSEA + db 35, STARYU + db 35, HORSEA + db 35, SHARPOON + db 40, LAPRAS end_water_wildmons diff --git a/data/wild/maps/VictoryRoad1F.asm b/data/wild/maps/VictoryRoad1F.asm index 74132360..7cae24bb 100644 --- a/data/wild/maps/VictoryRoad1F.asm +++ b/data/wild/maps/VictoryRoad1F.asm @@ -1,15 +1,15 @@ VictoryRoad1FWildMons: def_grass_wildmons 15 ; encounter rate - db 34, MACHOKE - db 36, STEELIX - db 32, GOLBAT - db 36, SANDSLASH + db 39, MACHOKE + db 38, ONIX + db 39, GOLBAT + db 38, GRAVELER db 39, SANDSLASH - db 42, GOLBAT - db 41, GAVILLAIN - db 41, RHYDON - db 42, MAROWAK - db 43, HITMONTOP ; LGPE Rare Spawn + db 40, GOLBAT + db 40, GAVILLAIN + db 40, RHYHORN + db 40, MAROWAK + db 42, HITMONTOP ; LGPE Rare Spawn end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/VictoryRoad2F.asm b/data/wild/maps/VictoryRoad2F.asm index 01409287..7a82bc54 100644 --- a/data/wild/maps/VictoryRoad2F.asm +++ b/data/wild/maps/VictoryRoad2F.asm @@ -1,15 +1,15 @@ VictoryRoad2FWildMons: def_grass_wildmons 10 ; encounter rate - db 32, MACHOKE - db 34, STEELIX - db 36, GOLBAT - db 36, SANDSLASH + db 39, MACHOKE + db 38, ONIX + db 39, GOLBAT + db 38, GRAVELER db 39, SANDSLASH - db 42, MACHOKE - db 41, GAVILLAIN - db 40, RHYDON - db 40, MAROWAK - db 43, HITMONLEE ; LGPE Rare Spawn + db 40, GOLBAT + db 40, GAVILLAIN + db 40, RHYHORN + db 40, VENOMOTH + db 42, HITMONLEE ; LGPE Rare Spawn end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/VictoryRoad3F.asm b/data/wild/maps/VictoryRoad3F.asm index 3ff5cab9..943940bb 100644 --- a/data/wild/maps/VictoryRoad3F.asm +++ b/data/wild/maps/VictoryRoad3F.asm @@ -1,15 +1,15 @@ VictoryRoad3FWildMons: def_grass_wildmons 15 ; encounter rate - db 34, MACHOKE - db 36, STEELIX - db 32, GOLBAT - db 42, SANDSLASH - db 40, VENOMOTH - db 45, SANDSLASH - db 43, GAVILLAIN - db 45, RHYDON ; LGPE encounters - db 45, MAROWAK - db 45, HITMONCHAN ; LGPE Rare Spawn + db 39, MACHOKE + db 38, ONIX + db 39, GOLBAT + db 38, GRAVELER + db 39, RHYHORN + db 40, GOLBAT + db 40, GAVILLAIN + db 40, SANDSLASH + db 40, PARASECT + db 42, HITMONCHAN ; LGPE Rare Spawn end_grass_wildmons def_water_wildmons 0 ; encounter rate From a031c1b3b6b2f832cc213838cb7858dbba847b0c Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 15:04:36 +0000 Subject: [PATCH 19/21] Goodbye, dev door --- data/maps/objects/RedsHouse2F.asm | 5 ----- data/wild/maps/SafariZoneCenter.asm | 20 ++++++++++---------- data/wild/maps/SafariZoneEast.asm | 16 ++++++++-------- data/wild/maps/SafariZoneNorth.asm | 10 +++++----- data/wild/maps/SafariZoneWest.asm | 10 +++++----- maps/RedsHouse2F.blk | 2 +- 6 files changed, 29 insertions(+), 34 deletions(-) diff --git a/data/maps/objects/RedsHouse2F.asm b/data/maps/objects/RedsHouse2F.asm index 8863d16b..c498ef26 100644 --- a/data/maps/objects/RedsHouse2F.asm +++ b/data/maps/objects/RedsHouse2F.asm @@ -3,11 +3,6 @@ RedsHouse2F_Object: def_warp_events warp_event 7, 1, REDS_HOUSE_1F, 3 - ;warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief - ;warp_event 5, 1, SILPH_CO_1F, 1 ; - Go through Gauntlet - ;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater - warp_event 5, 1, HALL_OF_FAME, 1 ; Test post-game setup - ;warp_event 5, 1, CERULEAN_CAVE_B1F, 1 ; Test Mewtwo theme def_bg_events diff --git a/data/wild/maps/SafariZoneCenter.asm b/data/wild/maps/SafariZoneCenter.asm index a0d13c62..8e2220c9 100644 --- a/data/wild/maps/SafariZoneCenter.asm +++ b/data/wild/maps/SafariZoneCenter.asm @@ -1,15 +1,15 @@ SafariZoneCenterWildMons: def_grass_wildmons 30 ; encounter rate - db 22, EXEGGCUTE - db 25, RHYHORN - db 22, VENONAT - db 24, TANGELA - db 24, CUBONE - db 25, SLOWPOKE - db 21, LICKITUNG - db 23, GORILLAIMO - db 23, CHANSEY - db 23, TRAMPEL + db 25, EXEGGCUTE + db 27, RHYHORN + db 25, VENONAT + db 25, TANGELA + db 26, CUBONE + db 27, DODUO + db 25, LICKITUNG + db 27, GORILLAIMO + db 25, CHANSEY + db 28, TRAMPEL end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SafariZoneEast.asm b/data/wild/maps/SafariZoneEast.asm index 0100ee88..bd79dc66 100644 --- a/data/wild/maps/SafariZoneEast.asm +++ b/data/wild/maps/SafariZoneEast.asm @@ -1,15 +1,15 @@ SafariZoneEastWildMons: def_grass_wildmons 30 ; encounter rate - db 24, EXEGGCUTE + db 26, EXEGGCUTE db 26, DODUO - db 22, TANGELA - db 25, RHYHORN - db 23, LICKITUNG - db 23, EXEGGCUTE - db 24, TAUROS + db 25, TANGELA + db 26, RHYHORN + db 25, LICKITUNG + db 27, EXEGGCUTE + db 25, TAUROS db 25, PINSIR - db 24, KANGASKHAN - db 7, CHANSEY + db 27, KANGASKHAN + db 10, CHANSEY end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/data/wild/maps/SafariZoneNorth.asm b/data/wild/maps/SafariZoneNorth.asm index 9543a202..25535496 100644 --- a/data/wild/maps/SafariZoneNorth.asm +++ b/data/wild/maps/SafariZoneNorth.asm @@ -1,12 +1,12 @@ SafariZoneNorthWildMons: def_grass_wildmons 30 ; encounter rate - db 22, EXEGGCUTE + db 25, EXEGGCUTE db 26, RHYHORN - db 23, EXEGGCUTE + db 26, EXEGGCUTE db 25, TANGELA - db 30, VENOMOTH - db 27, CUBONE - db 28, DODRIO + db 29, VENOMOTH + db 25, CUBONE + db 29, DODRIO db 27, TAUROS db 26, TRAMPEL db 28, KANGASKHAN diff --git a/data/wild/maps/SafariZoneWest.asm b/data/wild/maps/SafariZoneWest.asm index eb62a6e0..f9e127e9 100644 --- a/data/wild/maps/SafariZoneWest.asm +++ b/data/wild/maps/SafariZoneWest.asm @@ -2,14 +2,14 @@ SafariZoneWestWildMons: def_grass_wildmons 30 ; encounter rate db 25, EXEGGCUTE db 26, DODUO - db 23, EXEGGCUTE - db 24, EXEGGCUTE - db 33, VENOMOTH + db 26, EXEGGCUTE + db 25, CUBONE + db 29, VENOMOTH db 26, CUBONE - db 25, MAROWAK + db 29, MAROWAK db 25, SCYTHER db 26, TAUROS - db 7, CHANSEY + db 10, CHANSEY end_grass_wildmons def_water_wildmons 0 ; encounter rate diff --git a/maps/RedsHouse2F.blk b/maps/RedsHouse2F.blk index 14f61f24..42e666af 100644 --- a/maps/RedsHouse2F.blk +++ b/maps/RedsHouse2F.blk @@ -1 +1 @@ -   \ No newline at end of file +   \ No newline at end of file From 81597661fb77549abcdf03ef53d4b3cfc93305c2 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 15:14:26 +0000 Subject: [PATCH 20/21] Update pokedex_ratings.asm This is actually one character too many, the exclamation mark gets cut off --- text/pokedex_ratings.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/pokedex_ratings.asm b/text/pokedex_ratings.asm index aadbd426..a8f81ba7 100644 --- a/text/pokedex_ratings.asm +++ b/text/pokedex_ratings.asm @@ -111,6 +111,6 @@ _DexRatingText_Own230To249:: _DexRatingText_OwnComplete:: text "Your #DEX is" - line "entirely complete!" + line "fully complete!" cont "Congratulations!" done From 573f9083c0fae753b2d7bc72ae00cdcabcf3f582 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sun, 7 Jan 2024 18:34:07 +0000 Subject: [PATCH 21/21] All TMs are now renewable Added the TMs that weren't already available in either Celadon or Citrine to Citrine. --- data/maps/objects/CitrineRocketHouse.asm | 12 +++++++----- scripts/CitrineRocketHouse.asm | 12 ++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/data/maps/objects/CitrineRocketHouse.asm b/data/maps/objects/CitrineRocketHouse.asm index 70445c11..ad0c06d4 100644 --- a/data/maps/objects/CitrineRocketHouse.asm +++ b/data/maps/objects/CitrineRocketHouse.asm @@ -10,10 +10,12 @@ CitrineRocketHouse_Object: def_object_events object_event 4, 1, SPRITE_ROCKET, STAY, DOWN, 1 ; Mart Guy object_event 5, 1, SPRITE_ROCKET, STAY, DOWN, 2 ; Mart Guy - object_event 1, 6, SPRITE_ROCKET, STAY, RIGHT, 3 ; person - object_event 9, 3, SPRITE_ROCKET, STAY, UP, 4 ; person - object_event 9, 8, SPRITE_CAT, STAY, UP, 5 ; Meowth - object_event 9, 5, SPRITE_JAMES, STAY, DOWN, 6 ; James - object_event 7, 6, SPRITE_JESSIE, STAY, RIGHT, 7 ; Jessie + object_event 6, 1, SPRITE_ROCKET, STAY, DOWN, 3 ; Mart Guy + object_event 7, 1, SPRITE_ROCKET, STAY, DOWN, 4 ; Mart Guy + object_event 1, 6, SPRITE_ROCKET, STAY, RIGHT, 5 ; person + object_event 9, 3, SPRITE_ROCKET, STAY, UP, 6 ; person + object_event 9, 8, SPRITE_CAT, STAY, UP, 7 ; Meowth + object_event 9, 5, SPRITE_JAMES, STAY, DOWN, 8 ; James + object_event 7, 6, SPRITE_JESSIE, STAY, RIGHT, 9 ; Jessie def_warps_to CITRINE_ROCKET_HOUSE \ No newline at end of file diff --git a/scripts/CitrineRocketHouse.asm b/scripts/CitrineRocketHouse.asm index baff9072..f566e945 100644 --- a/scripts/CitrineRocketHouse.asm +++ b/scripts/CitrineRocketHouse.asm @@ -4,6 +4,8 @@ CitrineRocketHouse_Script: CitrineRocketHouse_TextPointers: dw MartGuy1Text dw MartGuy2Text + dw MartGuy3Text + dw MartGuy4Text dw RocketText1 dw RocketText2 dw MeowthText @@ -11,10 +13,16 @@ CitrineRocketHouse_TextPointers: dw JessieFight MartGuy1Text: - script_mart TM_SWORDS_DANCE, TM_TOXIC, TM_BODY_SLAM, TM_DOUBLE_EDGE, TM_BUBBLEBEAM, TM_ICE_BEAM, TM_BLIZZARD, TM_PAY_DAY, TM_COUNTER, TM_SEISMIC_TOSS, TM_MEGA_DRAIN, TM_THUNDERBOLT, TM_EARTHQUAKE, TM_DIG, + script_mart TM_SWORDS_DANCE, TM_WHIRLWIND, TM_TOXIC, TM_BODY_SLAM, TM_DOUBLE_EDGE, TM_BUBBLEBEAM, TM_WATER_GUN, TM_ICE_BEAM, TM_BLIZZARD, TM_HYPER_BEAM, TM_PAY_DAY, TM_COUNTER, TM_SEISMIC_TOSS, TM_RAGE MartGuy2Text: - script_mart TM_PSYCHIC_M, TM_FIRE_BLAST, TM_THUNDER_WAVE, TM_EXPLOSION, TM_ROCK_SLIDE, PROTECTOR, UP_GRADE, DUBIOUS_DISC, METAL_COAT, BLK_AUGURITE, DOME_FOSSIL, HELIX_FOSSIL, WING_FOSSIL, OLD_AMBER + script_mart TM_MEGA_DRAIN, TM_SOLARBEAM, TM_DRAGON_RAGE, TM_THUNDERBOLT, TM_THUNDER, TM_EARTHQUAKE, TM_DIG, TM_PSYCHIC_M, TM_TELEPORT, TM_MIMIC, TM_BIDE, TM_METRONOME, TM_SELFDESTRUCT, TM_FIRE_BLAST + +MartGuy3Text: + script_mart TM_SWIFT, TM_SKULL_BASH, TM_SOFTBOILED, TM_DREAM_EATER, TM_SKY_ATTACK, TM_REST, TM_THUNDER_WAVE, TM_PSYWAVE, TM_EXPLOSION, TM_ROCK_SLIDE, TM_TRI_ATTACK, TM_SUBSTITUTE + +MartGuy4Text: + script_mart PROTECTOR, UP_GRADE, DUBIOUS_DISC, METAL_COAT, BLK_AUGURITE, DOME_FOSSIL, HELIX_FOSSIL, WING_FOSSIL, OLD_AMBER RocketText1: text_far _RocketText1