LOTS of things

- Replaces the Old Rod with the Candy Sack, an item to evolve Meltan into Melmetal. Meltan and Melmetal aren't in yet.
- Improves Gym Leader and Elite Four AI by a lot. They still use items, they're just better. Fixes XSpecial use while we're at it; before, it didn't actually increase the stat...
- The Scarlet Book now takes up both shelves, one section for each Paradox Pokemon. I also moved the bookshelf so it looks nicer.
- Text in Celadon University has been reduced significantly, taking up less memory and being a bit more RBY-like. It has also been made more accurate (thanks to Daiginjo for translating my booklet!)
- The Magikarp researcher in Celadon University now gives TM Dragon Rage (no longer unused!)
- Added a guard for Mt. Moon Crater.
- Removed TrainerNamePointers, Blank Leader Name Code, and Dakutens/Hakutens using a guide published by YakiNeen.
- PP no longer uses a shitty graphic and is instead properly implemented into the font, optimising the status screen. Also displays in-battle which is kinda cool.
- Lorelei, Bruno, and Agatha now play the Gym Leader theme, not just Lance.

Still unsure how to fix Celadon University's trainers, all I know is a lot of the information should be taken from the Oak fight I did. The code is radically different and doesn't call trainer headers at all. You'll likely want to start from scratch.

The Mt. Moon Crater Guard's text is a little wonky, not sure what's up there. May have been from the way I accessed Mt. Moon in testing. Anyway, if you want to mess around feel free.
This commit is contained in:
May Evans 2023-02-19 06:25:33 +00:00
parent a3f3763f4d
commit a85c26b7d3
41 changed files with 317 additions and 277 deletions

View file

@ -75,8 +75,10 @@ QoL Enhancements
- All 217 (current) Pokemon can be obtained without the use of trading or glitches, including Mew! - All 217 (current) Pokemon can be obtained without the use of trading or glitches, including Mew!
- New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it! - New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it!
- Press A beside surfable water, strength boulders or cut trees to use the HMs without needing to go into the Party menu. - Press A beside surfable water, strength boulders or cut trees to use the HMs without needing to go into the Party menu.
- PP symbol is displayed in the battle menu.
- Running Shoes by holding B. Also works with the bike! Surf speed is also doubled. - Running Shoes by holding B. Also works with the bike! Surf speed is also doubled.
- Fast text has no frame delay between text scrolling, doubling the scroll speed. It's also been made the default option, so you don't need to go into the Options menu for it. - Fast text has no frame delay between text scrolling, doubling the scroll speed. It's also been made the default option, so you don't need to go into the Options menu for it.
- Lorelei, Bruno, and Agatha now play the Gym Leader Battle theme.
- HP bar has been doubled in speed, having a 1 frame delay per pixel rather than 2. - HP bar has been doubled in speed, having a 1 frame delay per pixel rather than 2.
- Trainer DVs are perfect-15s. - Trainer DVs are perfect-15s.
- The protagonist is referred to in a gender neutral manner. - The protagonist is referred to in a gender neutral manner.
@ -101,6 +103,7 @@ QoL Enhancements
- The Moon Stone is available over TM23 (Dragon Rage). Dragon Rage has been moved to Celadon Mart, over Take Down, which can still be obtained in Silph Co. - The Moon Stone is available over TM23 (Dragon Rage). Dragon Rage has been moved to Celadon Mart, over Take Down, which can still be obtained in Silph Co.
- Bag has capacity for 30 items. - Bag has capacity for 30 items.
- Spinner tiles move faster. - Spinner tiles move faster.
- Bold P is added to the fontset over a Japanese opening quote (???), which helps the status screen and allows a PP symbol to be displayed during battle.
Bug Fixes Bug Fixes
==== ====
@ -135,6 +138,9 @@ Many non-multiplayer, non-battle related bugs have been fixed. The aforementione
- Weird behaviour when going to 11F in Silph Co. and forcing a player to leave despite not moving is fixed. - Weird behaviour when going to 11F in Silph Co. and forcing a player to leave despite not moving is fixed.
- Fixed weirdness in Pokemon Tower where saving Mr. Fuji won't immediately let you leave. Also fixed coord termination on 2F which could cause some terribleness. - Fixed weirdness in Pokemon Tower where saving Mr. Fuji won't immediately let you leave. Also fixed coord termination on 2F which could cause some terribleness.
and more! and more!
- Trainer Name Pointers are removed, as the localised games don't need to use the file at all.
- Dakutens are removed, as the Japanese accents aren't used in English releases.
- Blank Leader Name code is removed; before, this would only be for the PNGs.
Known Bugs Known Bugs
==== ====
@ -222,6 +228,7 @@ Credits
* Chatot4444 - Assisting with gym scaling code * Chatot4444 - Assisting with gym scaling code
* Vortyne - Reused a bit of code from their pureRGB hack, which was used to assist with making MissingNo. stable. Assisted in bug fixes. * Vortyne - Reused a bit of code from their pureRGB hack, which was used to assist with making MissingNo. stable. Assisted in bug fixes.
* Rangi - Reused a bit of code from their Red* / Blue* hack to make HMs usable in the overworld! * Rangi - Reused a bit of code from their Red* / Blue* hack to make HMs usable in the overworld!
* 大吟醸 (Daiginjo) - Assistance in translating the Tamamushi University Student Book, allowing for an accurate adaptation of the location.
Original README.md proceeding; Original README.md proceeding;
# Pokémon Red and Blue [![Build Status][ci-badge]][ci] # Pokémon Red and Blue [![Build Status][ci-badge]][ci]

View file

@ -16,18 +16,31 @@ PlayBattleMusic::
ld a, [wCurOpponent] ld a, [wCurOpponent]
cp OPP_ID_OFFSET cp OPP_ID_OFFSET
jr c, .wildBattle jr c, .wildBattle
cp OPP_RIVAL3 cp OPP_LORELEI ; elite four now play the gym leader battle theme
jr z, .finalBattle jr z, .Elite4Battle
cp OPP_BRUNO
jr z, .Elite4Battle
cp OPP_AGATHA
jr z, .Elite4Battle
cp OPP_LANCE cp OPP_LANCE
jr z, .Elite4Battle
cp OPP_RIVAL3
;jr z, .finalBattle unnecessary code
;cp OPP_LANCE
;jr nz, .normalTrainerBattle
;ld a, MUSIC_GYM_LEADER_BATTLE
jr nz, .normalTrainerBattle jr nz, .normalTrainerBattle
ld a, MUSIC_GYM_LEADER_BATTLE ; lance also plays gym leader theme ld a, MUSIC_FINAL_BATTLE
jr .playSong
.Elite4Battle
ld a, MUSIC_GYM_LEADER_BATTLE
jr .playSong jr .playSong
.normalTrainerBattle .normalTrainerBattle
ld a, MUSIC_TRAINER_BATTLE ld a, MUSIC_TRAINER_BATTLE
jr .playSong jr .playSong
.finalBattle ;.finalBattle
ld a, MUSIC_FINAL_BATTLE ; ld a, MUSIC_FINAL_BATTLE
jr .playSong ; jr .playSong
.wildBattle .wildBattle
ld a, MUSIC_WILD_BATTLE ld a, MUSIC_WILD_BATTLE
.playSong .playSong

View file

@ -46,7 +46,7 @@
charmap "ぅ", $6f ; hiragana small u, unused charmap "ぅ", $6f ; hiragana small u, unused
charmap "", $70 ; opening single quote charmap "", $70 ; opening single quote
charmap "", $71 ; closing single quote charmap "", $71 ; closing single quote
charmap "", $72 ; opening quote charmap "<BOLD_P>", $72 ; was jp opening quote (“)
charmap "”", $73 ; closing quote charmap "”", $73 ; closing quote
charmap "·", $74 ; middle dot, unused charmap "·", $74 ; middle dot, unused
charmap "…", $75 ; ellipsis charmap "…", $75 ; ellipsis
@ -68,7 +68,7 @@
charmap "<to>", $70 ; narrow "to" charmap "<to>", $70 ; narrow "to"
charmap "『", $72 ; Japanese opening quote, unused charmap "<BOLD_P>", $72 ; was jp opening quote (“)
charmap "<ID>", $73 charmap "<ID>", $73
charmap "№", $74 charmap "№", $74
@ -78,9 +78,6 @@
charmap "", $60 ; gfx/pokedex/pokedex.png charmap "", $60 ; gfx/pokedex/pokedex.png
charmap "″", $61 ; gfx/pokedex/pokedex.png charmap "″", $61 ; gfx/pokedex/pokedex.png
; needed for StatusScreen (see engine/pokemon/status_screen.asm)
charmap "<BOLD_P>", $72 ; gfx/font/P.1bpp
; needed for LoadTownMap_Fly (see engine/items/town_map.asm) ; needed for LoadTownMap_Fly (see engine/items/town_map.asm)
charmap "▲", $ed ; gfx/town_map/up_arrow.1bpp charmap "▲", $ed ; gfx/town_map/up_arrow.1bpp

View file

@ -138,7 +138,8 @@
const EVENT_GOT_10_COINS const EVENT_GOT_10_COINS
const EVENT_GOT_20_COINS const EVENT_GOT_20_COINS
const EVENT_GOT_20_COINS_2 const EVENT_GOT_20_COINS_2
const_skip 2 ;const_skip 2
const EVENT_GOT_TM23
const EVENT_1BF ; ??? const EVENT_1BF ; ???
const_skip 32 const_skip 32
const EVENT_GOT_COIN_CASE const EVENT_GOT_COIN_CASE

View file

@ -245,4 +245,5 @@ DEF SHOW EQU $15
const HS_POKEMON_MANSION_B2F_ITEM_1 ; E9 const HS_POKEMON_MANSION_B2F_ITEM_1 ; E9
const HS_POKEMON_MANSION_B2F_ITEM_2 ; EA const HS_POKEMON_MANSION_B2F_ITEM_2 ; EA
const HS_ROUTE_1_OAK ; EB const HS_ROUTE_1_OAK ; EB
const HS_MT_MOON_CRATER_GUARD ; EC
DEF NUM_HS_OBJECTS EQU const_value DEF NUM_HS_OBJECTS EQU const_value

View file

@ -84,7 +84,7 @@ DEF SAFARI_ROCK EQU $16 ; overload
const POKE_FLUTE ; $49 const POKE_FLUTE ; $49
const LIFT_KEY ; $4A const LIFT_KEY ; $4A
const EXP_ALL ; $4B const EXP_ALL ; $4B
const OLD_ROD ; $4C - replaceable const CANDY_SACK ; $4C - was old rod
const GOOD_ROD ; $4D - replaceable const GOOD_ROD ; $4D - replaceable
const SUPER_ROD ; $4E const SUPER_ROD ; $4E
const PP_UP ; $4F const PP_UP ; $4F

View file

@ -242,7 +242,8 @@ ViridianGymHiddenObjects:
Museum1FHiddenObjects: Museum1FHiddenObjects:
hidden_object 2, 3, SPRITE_FACING_UP, AerodactylFossil hidden_object 2, 3, SPRITE_FACING_UP, AerodactylFossil
hidden_object 2, 6, SPRITE_FACING_UP, KabutopsFossil hidden_object 2, 6, SPRITE_FACING_UP, KabutopsFossil
hidden_object 7, 1, SPRITE_FACING_UP, ScarletBook hidden_object 8, 1, SPRITE_FACING_UP, ScarletBookScream
hidden_object 9, 1, SPRITE_FACING_UP, ScarletBookSandy
db -1 ; end db -1 ; end
PewterGymHiddenObjects: PewterGymHiddenObjects:

View file

@ -75,7 +75,7 @@ KeyItemFlags:
dbit TRUE ; POKE_FLUTE dbit TRUE ; POKE_FLUTE
dbit TRUE ; LIFT_KEY dbit TRUE ; LIFT_KEY
dbit FALSE ; EXP_ALL dbit FALSE ; EXP_ALL
dbit TRUE ; OLD_ROD dbit FALSE ; was TRUE for OLD_ROD, now CANDY_SACK
dbit TRUE ; GOOD_ROD dbit TRUE ; GOOD_ROD
dbit TRUE ; SUPER_ROD dbit TRUE ; SUPER_ROD
dbit FALSE ; PP_UP dbit FALSE ; PP_UP

View file

@ -75,7 +75,7 @@ ItemNames::
li "POKé FLUTE" li "POKé FLUTE"
li "LIFT KEY" li "LIFT KEY"
li "EXP.ALL" li "EXP.ALL"
li "OLD ROD" li "CANDY SACK" ; was old rod
li "GOOD ROD" li "GOOD ROD"
li "FISHING ROD" li "FISHING ROD"
li "PP UP" li "PP UP"

View file

@ -75,7 +75,7 @@ ItemPrices::
bcd3 0 ; POKE_FLUTE bcd3 0 ; POKE_FLUTE
bcd3 0 ; LIFT_KEY bcd3 0 ; LIFT_KEY
bcd3 0 ; EXP_ALL bcd3 0 ; EXP_ALL
bcd3 0 ; OLD_ROD bcd3 0 ; was OLD_ROD, now CANDY_SACK. Plan to be one-of-a-kind, so 0 to discourage sale a la Master Ball.
bcd3 0 ; GOOD_ROD bcd3 0 ; GOOD_ROD
bcd3 0 ; SUPER_ROD bcd3 0 ; SUPER_ROD
bcd3 0 ; PP_UP bcd3 0 ; PP_UP

View file

@ -3,7 +3,7 @@ UsableItems_CloseMenu:
db ESCAPE_ROPE db ESCAPE_ROPE
db ITEMFINDER db ITEMFINDER
db POKE_FLUTE db POKE_FLUTE
db OLD_ROD ;db OLD_ROD no longer exists
db GOOD_ROD db GOOD_ROD
db SUPER_ROD db SUPER_ROD
db -1 ; end db -1 ; end

View file

@ -32,6 +32,7 @@ UsableItems_PartyMenu:
db X_DEFEND db X_DEFEND
db X_SPEED db X_SPEED
db X_SPECIAL db X_SPECIAL
db CANDY_SACK
db PP_UP db PP_UP
db ETHER db ETHER
db MAX_ETHER db MAX_ETHER

View file

@ -120,7 +120,7 @@ MapHSPointers:
dw NoHS dw NoHS
dw FarawayIslandInsideHS dw FarawayIslandInsideHS
dw PokemonMansionB2FHS dw PokemonMansionB2FHS
dw NoHS dw MtMoonCraterHS
dw NoHS dw NoHS
dw NoHS dw NoHS
dw ChampionsRoomHS dw ChampionsRoomHS
@ -577,6 +577,8 @@ PokemonMansionB2FHS:
db POKEMON_MANSION_B2F, $04, SHOW db POKEMON_MANSION_B2F, $04, SHOW
Route1HS: Route1HS:
db ROUTE_1, $03, HIDE ; PROF OAK fight. To test, change to SHOW. - PvK db ROUTE_1, $03, HIDE ; PROF OAK fight. To test, change to SHOW. - PvK
MtMoonCraterHS:
db MT_MOON_CRATER, $10, SHOW ; Crater Guard
db $FF, $01, SHOW ; end db $FF, $01, SHOW ; end
assert_table_length NUM_HS_OBJECTS + 1 assert_table_length NUM_HS_OBJECTS + 1

View file

@ -20,5 +20,6 @@ MtMoonB2F_Object:
object_event 13, 6, SPRITE_FOSSIL, STAY, NONE, 7 ; person object_event 13, 6, SPRITE_FOSSIL, STAY, NONE, 7 ; person
object_event 25, 21, SPRITE_POKE_BALL, STAY, NONE, 8, HP_UP object_event 25, 21, SPRITE_POKE_BALL, STAY, NONE, 8, HP_UP
object_event 21, 5, SPRITE_POKE_BALL, STAY, NONE, 9, TM_MEGA_PUNCH object_event 21, 5, SPRITE_POKE_BALL, STAY, NONE, 9, TM_MEGA_PUNCH
object_event 29, 7, SPRITE_SCIENTIST, STAY, NONE, 10, ; Crater Guard
def_warps_to MT_MOON_B2F def_warps_to MT_MOON_B2F

View file

@ -16,6 +16,6 @@ Museum1F_Object:
object_event 15, 2, SPRITE_SCIENTIST, STAY, DOWN, 3 ; person object_event 15, 2, SPRITE_SCIENTIST, STAY, DOWN, 3 ; person
object_event 17, 4, SPRITE_SCIENTIST, STAY, NONE, 4 ; person object_event 17, 4, SPRITE_SCIENTIST, STAY, NONE, 4 ; person
object_event 16, 2, SPRITE_OLD_AMBER, STAY, NONE, 5 ; person object_event 16, 2, SPRITE_OLD_AMBER, STAY, NONE, 5 ; person
object_event 6, 2, SPRITE_COOLTRAINER_F, STAY, NONE, 6 ; person object_event 7, 1, SPRITE_COOLTRAINER_F, STAY, NONE, 6 ; person
def_warps_to MUSEUM_1F def_warps_to MUSEUM_1F

View file

@ -1,6 +1,9 @@
; See constants/pokemon_data_constants.asm ; See constants/pokemon_data_constants.asm
; The max number of evolutions per monster is MAX_EVOLUTIONS ; The max number of evolutions per monster is MAX_EVOLUTIONS
; db EV_ITEM, CANDY_SACK, 1, MELMETAL
; put this on Meltan when adding it
EvosMovesPointerTable: EvosMovesPointerTable:
table_width 2, EvosMovesPointerTable table_width 2, EvosMovesPointerTable
dw RhydonEvosMoves dw RhydonEvosMoves

View file

@ -1,15 +0,0 @@
Dakutens:
db "かが", "きぎ", "くぐ", "けげ", "こご"
db "さざ", "しじ", "すず", "せぜ", "そぞ"
db "ただ", "ちぢ", "つづ", "てで", "とど"
db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
db "タダ", "チヂ", "ツヅ", "テデ", "トド"
db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
db -1 ; end
Handakutens:
db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
db -1 ; end

View file

@ -590,31 +590,18 @@ _KabutopsFossilText::
done done
_ScarletBook1:: _ScarletBook1::
text "A member of our" text "SCREAM TAIL"
line "survey team" line "A screaming,"
cont "photographed an" cont "JIGGLYPUFF-like"
cont "odd, screaming," cont "#MON."
cont "JIGGLYPUFF-like"
cont "#MON."
para "It has been named"
line "SCREAM TAIL."
done done
_ScarletBook2:: _ScarletBook2::
text "Another team" text "SANDY SHOCKS"
line "returned. They" line "A theropod-like"
cont "were attacked by" cont "relative of"
cont "a MAGNETON that" cont "MAGNETON."
cont "looked like a"
cont "tyrannosaur."
para "We called it"
line "SANDY SHOCKS."
para "These #MON must"
line "be contained."
done done

View file

@ -1,73 +0,0 @@
TrainerNamePointers:
; These are only used for trainers' defeat speeches.
; They were originally shortened variants of the trainer class names
; in the Japanese versions, but are now redundant with TrainerNames.
dw .YoungsterName
dw .BugCatcherName
dw .LassName
dw wTrainerName
dw .JrTrainerMName
dw .JrTrainerFName
dw .PokemaniacName
dw .SuperNerdName
dw wTrainerName
dw wTrainerName
dw .BurglarName
dw .EngineerName
dw .UnusedJugglerName
dw wTrainerName
dw .SwimmerName
dw wTrainerName
dw wTrainerName
dw .BeautyName
dw wTrainerName
dw .RockerName
dw .JugglerName
dw wTrainerName
dw wTrainerName
dw .BlackbeltName
dw wTrainerName
dw .ProfOakName
dw .ChiefName
dw .ScientistName
dw wTrainerName
dw .RocketName
dw .CooltrainerMName
dw .CooltrainerFName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
dw wTrainerName
.YoungsterName: db "YOUNGSTER@"
.BugCatcherName: db "BUG CATCHER@"
.LassName: db "LASS@"
.JrTrainerMName: db "JR.TRAINER♂@"
.JrTrainerFName: db "JR.TRAINER♀@"
.PokemaniacName: db "POKéMANIAC@"
.SuperNerdName: db "SUPER NERD@"
.BurglarName: db "BURGLAR@"
.EngineerName: db "ENGINEER@"
.UnusedJugglerName: db "JUGGLER@"
.SwimmerName: db "SWIMMER@"
.BeautyName: db "BEAUTY@"
.RockerName: db "ROCKER@"
.JugglerName: db "JUGGLER@"
.BlackbeltName: db "BLACKBELT@"
.ProfOakName: db "PROF.OAK@"
.ChiefName: db "CHIEF@"
.ScientistName: db "SCIENTIST@"
.RocketName: db "ROCKET@"
.CooltrainerMName: db "COOLTRAINER♂@"
.CooltrainerFName: db "COOLTRAINER♀@"

View file

@ -2899,6 +2899,10 @@ PrintMenuItem:
hlcoord 1, 9 hlcoord 1, 9
ld de, TypeText ld de, TypeText
call PlaceString call PlaceString
hlcoord 1, 11
ld a, "<BOLD_P>"
ld [hli], a
ld [hl], "<BOLD_P>"
hlcoord 7, 11 hlcoord 7, 11
ld [hl], "/" ld [hl], "/"
hlcoord 5, 9 hlcoord 5, 9

View file

@ -1,14 +1,15 @@
SaveTrainerName:: SaveTrainerName::
ld hl, TrainerNamePointers ; ld hl, TrainerNamePointers
ld a, [wTrainerClass] ; ld a, [wTrainerClass]
dec a ; dec a
ld c, a ; ld c, a
ld b, 0 ; ld b, 0
add hl, bc ; add hl, bc
add hl, bc ; add hl, bc
ld a, [hli] ; ld a, [hli]
ld h, [hl] ; ld h, [hl]
ld l, a ; ld l, a
ld hl, wTrainerName
ld de, wcd6d ld de, wcd6d
.CopyCharacter .CopyCharacter
ld a, [hli] ld a, [hli]
@ -18,4 +19,6 @@ SaveTrainerName::
jr nz, .CopyCharacter jr nz, .CopyCharacter
ret ret
INCLUDE "data/trainers/name_pointers.asm" ; INCLUDE "data/trainers/name_pointers.asm"
; https://github.com/pret/pokered/wiki/Remove-Redundant-TrainerNamePointers
; name_pointers is redundant when hacking the international releases ~ PvK

View file

@ -320,6 +320,7 @@ TrainerAI:
jp hl jp hl
INCLUDE "data/trainers/ai_pointers.asm" INCLUDE "data/trainers/ai_pointers.asm"
; when there's a +1 on the gym/e4 it's referring to the number of items to use - PvK
JugglerAI: JugglerAI:
cp 25 percent + 1 cp 25 percent + 1
@ -334,7 +335,7 @@ BlackbeltAI:
GiovanniAI: GiovanniAI:
cp 25 percent + 1 cp 25 percent + 1
ret nc ret nc
jp AIUseGuardSpec 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: CooltrainerMAI:
cp 25 percent + 1 cp 25 percent + 1
@ -342,8 +343,7 @@ CooltrainerMAI:
jp AIUseXAttack jp AIUseXAttack
CooltrainerFAI: CooltrainerFAI:
; The intended 25% chance to consider switching will not apply. ; The intended 25% chance to consider switching applies, this fixes a bug.
; Uncomment the line below to fix this.
cp 25 percent + 1 cp 25 percent + 1
ret nc ; fixes the bug ret nc ; fixes the bug
ld a, 10 ld a, 10
@ -362,14 +362,20 @@ BrockAI:
jp AIUseFullHeal jp AIUseFullHeal
MistyAI: MistyAI:
; cp 25 percent + 1
; ret nc
; jp AIUseXDefend old Misty AI
cp 25 percent + 1 cp 25 percent + 1
ret nc ret nc
jp AIUseXDefend ld a, 10
call AICheckIfHPBelowFraction
ret nc
jp AIUsePotion ; Replicates Starmie using Recover, but in a more balanced manner. Unlike other trainers that heal, Misty will do this 26% of the time instead of 51%.
LtSurgeAI: LtSurgeAI:
cp 25 percent + 1 cp 25 percent + 1
ret nc ret nc
jp AIUseXSpeed jp AIUseXSpecial ; Used to be an X Speed. His party is already fast, so this seems far more appropriate.
ErikaAI: ErikaAI:
cp 50 percent + 1 cp 50 percent + 1
@ -380,9 +386,15 @@ ErikaAI:
jp AIUseSuperPotion jp AIUseSuperPotion
KogaAI: KogaAI:
cp 25 percent + 1 ; cp 25 percent + 1
; ret nc
; jp AIUseXAttack old AI
cp 50 percent + 1
ret nc ret nc
jp AIUseXAttack ld a, 10
call AICheckIfHPBelowFraction
ret nc
jp AIUseSuperPotion ; Koga is weird - I don't think anything fits. X Attack is certainly not the move though...
BlaineAI: BlaineAI:
cp 25 percent + 1 cp 25 percent + 1
@ -390,7 +402,7 @@ BlaineAI:
ld a, 10 ld a, 10
call AICheckIfHPBelowFraction call AICheckIfHPBelowFraction
ret nc ; this fixes the super potion thing - PvK ret nc ; this fixes the super potion thing - PvK
jp AIUseSuperPotion 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: SabrinaAI:
cp 25 percent + 1 cp 25 percent + 1
@ -416,36 +428,55 @@ Rival3AI:
ret nc ret nc
jp AIUseFullRestore jp AIUseFullRestore
; Elite Four members will use an associated X Item or a Full Restore.
LoreleiAI: LoreleiAI:
cp 15 percent + 1
ret nc
jp AIUseXSpecial
cp 50 percent + 1 cp 50 percent + 1
ret nc ret nc
ld a, 5 ld a, 5
call AICheckIfHPBelowFraction call AICheckIfHPBelowFraction
ret nc ret nc
jp AIUseSuperPotion jp AIUseFullRestore
BrunoAI: BrunoAI:
cp 25 percent + 1 ;cp 25 percent + 1
;ret nc
; jp AIUseXDefend old ai...???
cp 15 percent + 1
ret nc ret nc
jp AIUseXDefend jp AIUseXAttack
cp 50 percent + 1
ret nc
ld a, 5
call AICheckIfHPBelowFraction
ret nc
jp AIUseFullRestore
AgathaAI: AgathaAI:
cp 8 percent cp 8 percent
jp c, AISwitchIfEnoughMons jp c, AISwitchIfEnoughMons
cp 15 percent + 1
ret nc
jp AIUseXAccuracy ; hahahahahahahaha
cp 50 percent + 1 cp 50 percent + 1
ret nc ret nc
ld a, 4 ld a, 4
call AICheckIfHPBelowFraction call AICheckIfHPBelowFraction
ret nc ret nc
jp AIUseSuperPotion jp AIUseFullRestore
LanceAI: LanceAI:
cp 15 percent + 1
ret nc
jp AIUseXSpecial
cp 50 percent + 1 cp 50 percent + 1
ret nc ret nc
ld a, 5 ld a, 5
call AICheckIfHPBelowFraction call AICheckIfHPBelowFraction
ret nc ret nc
jp AIUseHyperPotion jp AIUseFullRestore
GenericAI: GenericAI:
and a ; clear carry and a ; clear carry
@ -703,7 +734,8 @@ AIUseXSpeed:
AIUseXSpecial: AIUseXSpecial:
ld b, $D ld b, $D
ld a, X_SPECIAL ld a, X_SPECIAL
; fallthrough jr AIIncreaseStat ; this wasn't here before but it seems that this never actually happened??
;; fallthrough
AIIncreaseStat: AIIncreaseStat:
ld [wAIItem], a ld [wAIItem], a

View file

@ -22,13 +22,16 @@ KabutopsFossilText::
text_far _KabutopsFossilText text_far _KabutopsFossilText
text_end text_end
ScarletBook:: ScarletBookScream::
ld a, SCREAM_TAIL ld a, SCREAM_TAIL
ld [wcf91], a ld [wcf91], a
call PlayCry call PlayCry
call DisplayMonFrontSpriteInBox call DisplayMonFrontSpriteInBox
call EnableAutoTextBoxDrawing call EnableAutoTextBoxDrawing
tx_pre ScarletBook1 tx_pre ScarletBook1
ret
ScarletBookSandy::
ld a, SANDY_SHOCKS ld a, SANDY_SHOCKS
ld [wcf91], a ld [wcf91], a
call PlayCry call PlayCry

View file

@ -92,7 +92,7 @@ ItemUsePtrTable:
dw ItemUsePokeflute ; POKE_FLUTE dw ItemUsePokeflute ; POKE_FLUTE
dw UnusableItem ; LIFT_KEY dw UnusableItem ; LIFT_KEY
dw UnusableItem ; EXP_ALL dw UnusableItem ; EXP_ALL
dw ItemUseOldRod ; OLD_ROD dw ItemUseEvoStone ; was OLD_ROD, now CANDY_SACK
dw ItemUseGoodRod ; GOOD_ROD dw ItemUseGoodRod ; GOOD_ROD
dw ItemUseSuperRod ; SUPER_ROD dw ItemUseSuperRod ; SUPER_ROD
dw ItemUsePPUp ; PP_UP (real one) dw ItemUsePPUp ; PP_UP (real one)

View file

@ -4,6 +4,7 @@ DrawBadges:
; In Japanese versions, names are displayed above faces. ; In Japanese versions, names are displayed above faces.
; Instead of removing relevant code, the name graphics were erased. ; Instead of removing relevant code, the name graphics were erased.
; KEP removes the code as well to optimise memory.
; Tile ids for face/badge graphics. ; Tile ids for face/badge graphics.
ld de, wBadgeOrFaceTiles ld de, wBadgeOrFaceTiles
@ -41,7 +42,7 @@ DrawBadges:
ld hl, wBadgeNumberTile ld hl, wBadgeNumberTile
ld a, $d8 ; [1] ld a, $d8 ; [1]
ld [hli], a ld [hli], a
ld [hl], $60 ; First name ; ld [hl], $60 ; First name, unneeded
hlcoord 2, 11 hlcoord 2, 11
ld de, wTempObtainedBadgesBooleans ld de, wTempObtainedBadgesBooleans
@ -64,20 +65,24 @@ DrawBadges:
ld [hli], a ld [hli], a
inc a inc a
ld [wBadgeNumberTile], a ld [wBadgeNumberTile], a
; Names aren't printed if the badge is owned.
ld a, [de]
and a
ld a, [wBadgeNameTile] ld a, [wBadgeNameTile]
jr nz, .SkipName
call .PlaceTiles
jr .PlaceBadge
.SkipName
inc a inc a
inc a inc a
inc hl inc hl
; Names aren't printed if the badge is owned. - unnecessary code
; ld a, [de]
; and a
; ld a, [wBadgeNameTile]
; jr nz, .SkipName
; call .PlaceTiles
; jr .PlaceBadge
;
;.SkipName
; inc a
; inc a
; inc hl
.PlaceBadge .PlaceBadge
ld [wBadgeNameTile], a ld [wBadgeNameTile], a
ld de, SCREEN_WIDTH - 1 ld de, SCREEN_WIDTH - 1

View file

@ -231,13 +231,13 @@ DisplayNamingScreen:
ld a, [hl] ld a, [hl]
ld [wNamingScreenLetter], a ld [wNamingScreenLetter], a
call CalcStringLength call CalcStringLength
ld a, [wNamingScreenLetter] ;ld a, [wNamingScreenLetter]
cp "゙" ;cp "゙"
ld de, Dakutens ;ld de, Dakutens
jr z, .dakutensAndHandakutens ;jr z, .dakutensAndHandakutens
cp "゚" ;cp "゚"
ld de, Handakutens ;ld de, Handakutens
jr z, .dakutensAndHandakutens ;jr z, .dakutensAndHandakutens | japanese: not needed in the international releases
ld a, [wNamingScreenType] ld a, [wNamingScreenType]
cp NAME_MON_SCREEN cp NAME_MON_SCREEN
jr nc, .checkMonNameLength jr nc, .checkMonNameLength
@ -251,12 +251,12 @@ DisplayNamingScreen:
jr c, .addLetter jr c, .addLetter
ret ret
.dakutensAndHandakutens ;.dakutensAndHandakutens | japanese, not needed
push hl ; push hl
call DakutensAndHandakutens ; call DakutensAndHandakutens
pop hl ; pop hl
ret nc ; ret nc
dec hl ; dec hl
.addLetter .addLetter
ld a, [wNamingScreenLetter] ld a, [wNamingScreenLetter]
ld [hli], a ld [hli], a
@ -420,21 +420,21 @@ PrintNicknameAndUnderscores:
ld [hl], $77 ; raised underscore tile id ld [hl], $77 ; raised underscore tile id
ret ret
DakutensAndHandakutens: ;DakutensAndHandakutens: | japanese - not needed
push de ; push de
call CalcStringLength ; call CalcStringLength
dec hl ; dec hl
ld a, [hl] ; ld a, [hl]
pop hl ; pop hl
ld de, $2 ; ld de, $2
call IsInArray ; call IsInArray
ret nc ; ret nc
inc hl ; inc hl
ld a, [hl] ; ld a, [hl]
ld [wNamingScreenLetter], a ; ld [wNamingScreenLetter], a
ret ; ret
INCLUDE "data/text/dakutens.asm" ; INCLUDE "data/text/dakutens.asm" | deleting
; calculates the length of the string at wStringBuffer and stores it in c ; calculates the length of the string at wStringBuffer and stores it in c
CalcStringLength: CalcStringLength:

View file

@ -500,9 +500,12 @@ DrawTrainerInfo:
ld bc, 8 tiles ld bc, 8 tiles
push bc push bc
call TrainerInfo_FarCopyData call TrainerInfo_FarCopyData
ld hl, BlankLeaderNames ;ld hl, BlankLeaderNames - unnecessary code
ld de, vChars2 tile $60 ;ld de, vChars2 tile $60
ld bc, $17 tiles ;ld bc, $17 tiles
ld hl, CircleTile ; better code here to line 508
ld de, vChars2 tile $76
ld bc, 1 tiles
call TrainerInfo_FarCopyData call TrainerInfo_FarCopyData
pop bc pop bc
ld hl, BadgeNumbersTileGraphics ; badge number tile patterns ld hl, BadgeNumbersTileGraphics ; badge number tile patterns

View file

@ -97,10 +97,10 @@ StatusScreen:
ld hl, vChars2 tile $76 ld hl, vChars2 tile $76
lb bc, BANK(BattleHudTiles3), 2 lb bc, BANK(BattleHudTiles3), 2
call CopyVideoDataDouble ; ─ ┘ call CopyVideoDataDouble ; ─ ┘
ld de, PTile ;ld de, PTile
ld hl, vChars2 tile $72 ;ld hl, vChars2 tile $72
lb bc, BANK(PTile), 1 ;lb bc, BANK(PTile), 1
call CopyVideoDataDouble ; bold P (for PP) ;call CopyVideoDataDouble ; bold P (for PP) - no longer needed
ldh a, [hTileAnimations] ldh a, [hTileAnimations]
push af push af
xor a xor a
@ -244,7 +244,7 @@ DrawLineBox:
ld [hl], $6f ; ← (halfarrow ending) ld [hl], $6f ; ← (halfarrow ending)
ret ret
PTile: INCBIN "gfx/font/P.1bpp" ;PTile: INCBIN "gfx/font/P.1bpp" lol
PrintStatsBox: PrintStatsBox:
ld a, d ld a, d

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 544 B

View file

@ -1,7 +1,7 @@
TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_card/trainer_info.2bpp" TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_card/trainer_info.2bpp"
TrainerInfoTextBoxTileGraphicsEnd: TrainerInfoTextBoxTileGraphicsEnd:
BlankLeaderNames: INCBIN "gfx/trainer_card/blank_leader_names.2bpp" ;BlankLeaderNames: INCBIN "gfx/trainer_card/blank_leader_names.2bpp" not needed in localised vers
CircleTile: INCBIN "gfx/trainer_card/circle_tile.2bpp" CircleTile: INCBIN "gfx/trainer_card/circle_tile.2bpp"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

View file

@ -373,7 +373,8 @@ PrintEndBattleText::
ldh [hLoadedROMBank], a ldh [hLoadedROMBank], a
ld [MBC1RomBank], a ld [MBC1RomBank], a
push hl push hl
farcall SaveTrainerName ; farcall SaveTrainerName we don't need to farcall anymore
call SaveTrainerName
ld hl, TrainerEndBattleText ld hl, TrainerEndBattleText
call PrintText call PrintText
pop hl pop hl
@ -383,6 +384,17 @@ PrintEndBattleText::
farcall FreezeEnemyTrainerSprite farcall FreezeEnemyTrainerSprite
jp WaitForSoundToFinish jp WaitForSoundToFinish
SaveTrainerName:: ; implementing https://github.com/pret/pokered/wiki/Remove-Redundant-TrainerNamePointers
ld hl, wTrainerName
ld de, wcd6d
.CopyCharacter
ld a, [hli]
ld [de], a
inc de
cp "@"
jr nz, .CopyCharacter
ret
GetSavedEndBattleTextPointer:: GetSavedEndBattleTextPointer::
ld a, [wBattleResult] ld a, [wBattleResult]
and a and a

View file

@ -149,7 +149,7 @@ INCLUDE "engine/pokemon/bills_pc.asm"
SECTION "Battle Engine 3", ROMX SECTION "Battle Engine 3", ROMX
INCLUDE "engine/battle/print_type.asm" INCLUDE "engine/battle/print_type.asm"
INCLUDE "engine/battle/save_trainer_name.asm" ; INCLUDE "engine/battle/save_trainer_name.asm" no longer needed https://github.com/pret/pokered/wiki/Remove-Redundant-TrainerNamePointers
INCLUDE "engine/battle/move_effects/focus_energy.asm" INCLUDE "engine/battle/move_effects/focus_energy.asm"

Binary file not shown.

View file

@ -2034,8 +2034,8 @@ wVictoryRoad1FCurScript:: db
wFarawayIslandInsideCurScript:: db ; this should work wFarawayIslandInsideCurScript:: db ; this should work
wLancesRoomCurScript:: db wLancesRoomCurScript:: db
wPokemonMansionB2FCurScript:: db wPokemonMansionB2FCurScript:: db
;wMtMoonCraterCurScript:: db wMtMoonCraterCurScript:: db
ds 3 ds 2
wSilphCo10FCurScript:: db wSilphCo10FCurScript:: db
wSilphCo11FCurScript:: db wSilphCo11FCurScript:: db
ds 1 ds 1

View file

@ -34,7 +34,28 @@ CeladonUniversityInsideText3:
text_end text_end
CeladonUniversityInsideText4: CeladonUniversityInsideText4:
text_far _CeladonUniversityInsideText4 text_asm
CheckEvent EVENT_GOT_TM23
jr nz, .got_item
ld hl, KHRP
call PrintText
lb bc, TM_DRAGON_RAGE, 1
call GiveItem
jr nc, .bag_full
ld hl, ReceivedTM23Text
call PrintText
SetEvent EVENT_GOT_TM23
jr .done
.bag_full
ld hl, TM23NoRoomText
call PrintText
jr .done
.got_item
ld hl, TM23ExplanationText
call PrintText
.done
jp TextScriptEnd
text_end text_end
CeladonUniversityInsideBookcaseText1: CeladonUniversityInsideBookcaseText1:
@ -73,4 +94,21 @@ CeladonUniversityPCScreen:
text_far _ComputerScreen text_far _ComputerScreen
text_end text_end
KHRP:
text_far _KHRP
text_end
ReceivedTM23Text:
text_far _ReceivedTM23Text
sound_get_item_1
text_end
TM23ExplanationText:
text_far _TM23ExplanationText
text_end
TM23NoRoomText:
text_far _TM23NoRoomText
text_end
text_end ; unused text_end ; unused

View file

@ -97,6 +97,9 @@ HallofFameRoomScript1:
ld a, HS_CERULEAN_CAVE_GUY ld a, HS_CERULEAN_CAVE_GUY
ld [wMissableObjectIndex], a ld [wMissableObjectIndex], a
predef HideObject predef HideObject
ld a, HS_MT_MOON_CRATER_GUARD
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_ROUTE_1_OAK ld a, HS_ROUTE_1_OAK
ld [wMissableObjectIndex], a ld [wMissableObjectIndex], a
predef ShowObject predef ShowObject

View file

@ -164,6 +164,7 @@ MtMoonB2F_TextPointers:
dw MtMoon3Text7 dw MtMoon3Text7
dw PickUpItemText dw PickUpItemText
dw PickUpItemText dw PickUpItemText
dw MtMoonCraterGuard
dw MtMoon3Text_49f99 dw MtMoon3Text_49f99
MtMoon3TrainerHeaders: MtMoon3TrainerHeaders:
@ -379,3 +380,7 @@ MtMoon3EndBattleText5:
MtMoon3AfterBattleText5: MtMoon3AfterBattleText5:
text_far _MtMoon3AfterBattleText5 text_far _MtMoon3AfterBattleText5
text_end text_end
MtMoonCraterGuard:
text_far _MtMoonCraterGuard
text_end

View file

@ -15,7 +15,7 @@ VermilionHouse2Text1:
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jr nz, .refused jr nz, .refused
lb bc, OLD_ROD, 1 lb bc, CANDY_SACK, 1 ; used to be the old rod, but since I've replaced it, for now he'll give you this. I believe this house is currently unused, so no issues..? ~ PvK
call GiveItem call GiveItem
jr nc, .bag_full jr nc, .bag_full
ld hl, wd728 ld hl, wd728

View file

@ -1,8 +1,5 @@
_CeladonUniversityInsideText1:: _CeladonUniversityInsideText1::
text "Hello! I haven't" text "My name is PROF."
line "seen you before!"
para "My name is PROF."
line "WESTWOOD V!" line "WESTWOOD V!"
para "My ancestors" para "My ancestors"
@ -12,49 +9,42 @@ _CeladonUniversityInsideText1::
done done
_CeladonUniversityInsideText2:: _CeladonUniversityInsideText2::
text "It's an old letter" text "It's an invoice"
line "about selling the" line "selling the #"
para "# BALL patent" cont "BALL to SILPH."
line "to SILPH CO."
done done
_CeladonUniversityInsideText3:: _CeladonUniversityInsideText3::
text "Seismic tremors" text "Tremors keep"
line "have been" line "happening in"
cont "detected inside" cont "VICTORY ROAD."
para "VICTORY ROAD." para "WESTWOOD, can you"
line "Investigation" line "meet me at SILPH?"
cont "is ongoing."
para "WESTWOOD, can"
line "you see me"
cont "at SILPH?"
done done
_CeladonUniversityInsideText4:: _KHRP::
text "I don't get it." text "Eureka!"
line "Why is this"
cont "MAGIKARP so"
cont "powerful?"
para "It was attacking" para "This MAGIKARP can"
line "TRAINERs in" line "use DRAGON RAGE!"
cont "VERMILLION!"
done para "Huh? You want to"
line "teach it to yours?"
cont "Sure! Take this!"
prompt
_CeladonUniversityInsideMagikarpText:: _CeladonUniversityInsideMagikarpText::
text "Name: MAGIKARP" text "Name: MAGIKARP"
para "This specimen has" para "Like ancient"
line "unusual strength." line "specimens, it"
cont "Like its old"
cont "ancestors, it"
cont "can use DRAGON" cont "can use DRAGON"
cont "RAGE." cont "RAGE."
prompt prompt
_BookcaseText1:: _BookcaseText1::
@ -63,56 +53,41 @@ _BookcaseText1::
cont "back around 2" cont "back around 2"
cont "million years." cont "million years."
para "However, the first" para "BARON TAJIRIN"
line "proper study into" line "of France found"
cont "their biology was" cont "30 species in"
cont "conducted by" cont "the 18th century."
cont "BARON TAJIRIN of"
cont "France in the"
cont "18th century."
para "At the time, only"
line "30 species were"
cont "recognised."
done done
_BookcaseText2:: _BookcaseText2::
text "In 1899, PROF." text "In 1899, PROF."
line "WESTWOOD of Japan" line "WESTWOOD of Japan"
cont "released a book" cont "discovered"
cont "observing the" cont "#MON evolution,"
cont "evolution of a" cont "documenting 50"
cont "PIKACHU." cont "species."
para "Japan became the" para "PROF. OAK"
line "global leader in" line "has since"
cont "#MON study," cont "documented a"
cont "discovering 80" cont "further 120." ; Total: 200.
cont "#MON at the"
cont "time."
para "As of today,"
line "PROF. OAK's"
cont "efforts have led"
cont "to over 200" ;changed from 150 to 200 because we've expanded the dex :P
cont "#MON being"
cont "recognised."
done done
_BookcaseText3:: _BookcaseText3::
text "The idea of the" ;text "The idea of the"
line "# BALL was" ;line "# BALL was"
cont "discovered by" ;cont "discovered by"
cont "PROF. WESTWOOD," ;cont "PROF. WESTWOOD,"
cont "as part of an" ;cont "as part of an"
cont "experiment to" ;cont "experiment to"
cont "extract the" ;cont "extract the"
cont "energy of a" ;cont "energy of a"
cont "PRIMEAPE." ;cont "PRIMEAPE."
; too long and doesn't seem to fit.
para "The modern #" text "The modern #"
line "BALL was made by" line "BALL was made by"
cont "researchers at" cont "researchers at"
cont "CELADON" cont "CELADON"
@ -134,4 +109,24 @@ _ComputerScreen::
line "visible on the PC" line "visible on the PC"
cont "screen." cont "screen."
done
_ReceivedTM23Text::
text "<PLAYER> received"
line "@"
text_ram wStringBuffer
text "!@"
text_end
_TM23ExplanationText::
text "TM29 is DRAGON"
line "RAGE!"
para "Use it against"
line "weak #MON!"
done
_TM23NoRoomText::
text "You don't have"
line "room for this!"
done done

View file

@ -123,3 +123,14 @@ _MtMoon3AfterBattleText5::
line "here long before" line "here long before"
cont "people came." cont "people came."
done done
_MtMoonCraterGuard::
text "A meteor struck"
line "here recently."
para "We have to make"
line "sure it's safe."
cont "Come back another"
cont "time."
done