diff --git a/3DS Border/KEPBorder.png b/3DS Border/KEPBorder.png index d34ec177..8ae6df0e 100644 Binary files a/3DS Border/KEPBorder.png and b/3DS Border/KEPBorder.png differ diff --git a/README.md b/README.md index 855d2203..e963eeb9 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. @@ -260,7 +262,8 @@ 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. +- 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 ==== @@ -360,11 +363,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 +399,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 (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/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/events/trades.asm b/data/events/trades.asm index 4c3c8c56..e13fb91e 100644 --- a/data/events/trades.asm +++ b/data/events/trades.asm @@ -4,12 +4,12 @@ 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 - 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/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/BrunswickTrail.asm b/data/maps/objects/BrunswickTrail.asm index e05370d3..5baf3233 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 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 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/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/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/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/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/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/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/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/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/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/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/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 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: 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/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:: diff --git a/data/trainers/ai_pointers.asm b/data/trainers/ai_pointers.asm index e783308c..c23aa514 100644 --- a/data/trainers/ai_pointers.asm +++ b/data/trainers/ai_pointers.asm @@ -28,32 +28,33 @@ 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 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 306c7c7c..1bbdf6cb 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,33 @@ 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 + 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/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/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/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/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/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 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 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/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index dca83aa9..c6e82b15 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 @@ -726,18 +725,15 @@ 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 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,17 +761,20 @@ BrockAI: jp AIUseFullHeal MistyAI: - cp 20 percent + 1 + cp 25 percent + 1 ret nc - jp AIUseXDefend + ld a, 5 + call AICheckIfHPBelowFraction + ret nc + jp AIUsePotion ; 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 + cp 25 percent + 1 ret nc ld a, 5 call AICheckIfHPBelowFraction @@ -783,18 +782,20 @@ ErikaAI: jp AIUseSuperPotion KogaAI: - cp 10 percent + 1 + cp 25 percent + 1 ret nc - jp AIUseXAttack + 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: ;blaine needs to check HP. this was an oversight +BlaineAI: cp 40 percent + 1 - jr nc, .blainereturn - ld a, 2 - call AICheckIfHPBelowFraction - jp c, AIUseSuperPotion -.blainereturn - ret + ret nc + 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. SabrinaAI: cp 25 percent + 1 @@ -805,12 +806,12 @@ SabrinaAI: jp AIUseHyperPotion Rival2AI: - cp 13 percent - 1 + cp 20 percent - 1 ret nc ld a, 5 call AICheckIfHPBelowFraction ret nc - jp AIUseHyperPotion + jp AIUseSuperPotion Rival3AI: cp 40 percent - 1 @@ -821,43 +822,55 @@ Rival3AI: jp AIUseFullRestore LoreleiAI: - cp 50 percent + 1 - ret nc - ld a, 5 - call AICheckIfHPBelowFraction - ret nc - jp AIUseHyperPotion - -BrunoAI: - ;cp 10 percent + 1 - ;ret nc - ;jp AIUseXDefend - cp 30 percent + 1 - jr nc, .brunoreturn - ld a, 5 - call AICheckIfHPBelowFraction - jp c, AIUseHyperPotion -.brunoreturn - ret - -AgathaAI: - cp 8 percent - jp c, AISwitchIfEnoughMons - cp 50 percent + 1 - ret nc - ld a, 4 - call AICheckIfHPBelowFraction - ret nc - jp AIUseHyperPotion - -LanceAI: - cp 50 percent + 1 + cp 40 percent + 1 ret nc ld a, 5 call AICheckIfHPBelowFraction ret nc jp AIUseFullRestore +BrunoAI: + cp 40 percent + 1 + ret nc + ld a, 5 + call AICheckIfHPBelowFraction + ret nc + jp AIUseFullRestore + +AgathaAI: + cp 10 percent + jp c, AISwitchIfEnoughMons + cp 40 percent + 1 + ret nc + ld a, 5 + call AICheckIfHPBelowFraction + ret nc + jp AIUseFullRestore + +LanceAI: + cp 50 percent + 1 + ret nc + 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 ret @@ -1087,12 +1100,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/gfx/blocksets/fossillab.bst b/gfx/blocksets/fossillab.bst index 6b5d55b3..88cda793 100644 Binary files a/gfx/blocksets/fossillab.bst and b/gfx/blocksets/fossillab.bst differ 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/pokemon/front/porygon.png b/gfx/pokemon/front/porygon.png index 993fd202..68e76430 100644 Binary files a/gfx/pokemon/front/porygon.png and b/gfx/pokemon/front/porygon.png differ diff --git a/gfx/pokemon/front/raichua.png b/gfx/pokemon/front/raichua.png index e77a2d33..436a84c4 100644 Binary files a/gfx/pokemon/front/raichua.png and b/gfx/pokemon/front/raichua.png differ diff --git a/gfx/pokemon/front/scizor.png b/gfx/pokemon/front/scizor.png index a6cdfea1..dbb1336e 100644 Binary files a/gfx/pokemon/front/scizor.png and b/gfx/pokemon/front/scizor.png differ diff --git a/gfx/pokemon/front/slowbrog.png b/gfx/pokemon/front/slowbrog.png index 3130a8cc..4d6a797c 100644 Binary files a/gfx/pokemon/front/slowbrog.png and b/gfx/pokemon/front/slowbrog.png differ diff --git a/gfx/pokemon/front/slowkingg.png b/gfx/pokemon/front/slowkingg.png index dfd85100..5c0bba1b 100644 Binary files a/gfx/pokemon/front/slowkingg.png and b/gfx/pokemon/front/slowkingg.png differ diff --git a/gfx/pokemon/front/toedscruel.png b/gfx/pokemon/front/toedscruel.png index a8dad95b..f5859725 100644 Binary files a/gfx/pokemon/front/toedscruel.png and b/gfx/pokemon/front/toedscruel.png differ diff --git a/gfx/pokemon/front/zapdosg.png b/gfx/pokemon/front/zapdosg.png index 821e17b1..e942f6e2 100644 Binary files a/gfx/pokemon/front/zapdosg.png and b/gfx/pokemon/front/zapdosg.png differ diff --git a/gfx/trainers/giovanni2.png b/gfx/trainers/giovanni2.png new file mode 100644 index 00000000..505adebd Binary files /dev/null and b/gfx/trainers/giovanni2.png differ diff --git a/main.asm b/main.asm index 84324740..2cd8fb52 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" @@ -333,19 +333,19 @@ SECTION "Itemfinder 1", ROMX INCLUDE "engine/movie/credits.asm" INCLUDE "engine/pokemon/status_ailments.asm" -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/items/itemfinder.asm" INCLUDE "engine/menus/league_pc.asm" INCLUDE "engine/events/hidden_items.asm" -INCLUDE "gfx/fishing.asm" SECTION "bank1E", ROMX 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 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/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/scripts/CinnabarLabFossilRoom.asm b/scripts/CinnabarLabFossilRoom.asm index 8b1db068..896321b9 100644 --- a/scripts/CinnabarLabFossilRoom.asm +++ b/scripts/CinnabarLabFossilRoom.asm @@ -3,7 +3,6 @@ CinnabarLabFossilRoom_Script: CinnabarLabFossilRoom_TextPointers: dw Lab4Text1 - dw Lab4Text2 Lab4Script_GetFossilsInBag: ; construct a list of all fossils in the player's bag @@ -99,12 +98,5 @@ Lab4Text_75dd5: text_far _Lab4Text_75dd5 text_end -Lab4Text2: - text_asm - ld a, TRADE_FOR_MICHELLE - ld [wWhichTrade], a - predef DoInGameTradeDialogue - jp TextScriptEnd - LoadFossilItemAndMonNameBank1D: farjp LoadFossilItemAndMonName 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 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 diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm index 17cc5ead..c469721c 100644 --- a/scripts/Route11Gate2F.asm +++ b/scripts/Route11Gate2F.asm @@ -9,7 +9,7 @@ Route11Gate2F_TextPointers: Route11GateUpstairsText1: text_asm - ld a, TRADE_FOR_CHIKUCHIKU + ld a, TRADE_FOR_MICHELLE ld [wWhichTrade], a predef DoInGameTradeDialogue Route11GateUpstairsScriptEnd: diff --git a/scripts/ViridianForestNorthGate.asm b/scripts/ViridianForestNorthGate.asm index 6aef26d3..7473cc44 100644 --- a/scripts/ViridianForestNorthGate.asm +++ b/scripts/ViridianForestNorthGate.asm @@ -4,6 +4,7 @@ ViridianForestNorthGate_Script: ViridianForestNorthGate_TextPointers: dw ViridianForestExitText1 dw ViridianForestExitText2 + dw ViridianForestExitText3 ViridianForestExitText1: text_far _ViridianForestExitText1 @@ -12,3 +13,10 @@ ViridianForestExitText1: ViridianForestExitText2: text_far _ViridianForestExitText2 text_end + +ViridianForestExitText3: + text_asm + ld a, TRADE_FOR_CHIKUCHIKU + ld [wWhichTrade], a + predef DoInGameTradeDialogue + jp TextScriptEnd diff --git a/scripts/ViridianGym.asm b/scripts/ViridianGym.asm index f22e06f3..64152f9a 100644 --- a/scripts/ViridianGym.asm +++ b/scripts/ViridianGym.asm @@ -15,7 +15,7 @@ ViridianGym_Script: db "VIRIDIAN CITY@" .LeaderName: - db "GIOVANNI@" + db "????????@" ViridianGymDoorCallbackScript: ld hl, wCurrentMapScriptFlags @@ -263,8 +263,6 @@ GiovanniText: ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ; giovanni is deliberately not scaled as he is always fought last - ld a, $8 - ld [wGymLeaderNo], a ld a, $3 ld [wViridianGymCurScript], a .done 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 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" 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..." 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