Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- With the newly discovered instant text method using the bike shop script, I did some research into all of the game's scripts to find out which events cause an instant text effect.
- Here is the important byte in the game's code, specifically bit 6. This gets overwritten during certain scripts to override the default text delay which is set in options:
- wd730:: ; d730
- ; bit 0: NPC sprite being moved by script
- ; bit 5: ignore joypad input
- ; bit 6: print text with no delay between each letter ***
- ; bit 7: set if joypad states are being simulated in the overworld or an NPC's movement is being scripted
- Here is a "full" list of events in Pokemon Red/Blue that set this bit to 1, causing text to be printed with no delay:
- - viewing diploma
- - vending machines
- - reviving fossils
- - "link help" screen (where is this?)
- - using town map
- ***bike shop (the only one that doesn't reset the text delay bit)
- ***PC hall of fame (need to investigate, this seemed weird)
- - using cut
- - giving drinks to the girl for TMs
- - PC item storage
- - game corner prizes
- - buying coins from game corner
- - viewing PC in bill's house (eevee pokedex entries)
- - name entry screen
- - PC pokemon storage
- - new game/continue/options menu
- - new pokedex entry
- - any text box with a cursor (start menu, yes/no, buy/sell/cancel, etc)
- - pokemon menu
- - items menu (similar to swapping items code)
- - slot machines
- - the entire trade sequence
- And a few other things that have instant text that I could not find in the assembly:
- - using a rare candy
- - fight menu during battle
- - seeing stats upon levelup
- - viewing status screen for a pokemon
- All of the above events have a call to reset bit 6 of wd730 to 0, which defaults back to using bits 0-3 of wd355 (text speed in options, wait 0-15 frames between printing each character). The exception is the bike shop script, which as we know has a jump over the reset call if exiting the script using the B button:
- call PrintText
- call HandleMenuInput
- bit 1, a
- *** jr nz, .cancel
- *** ld hl, wd730
- *** res 6, [hl]
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .cancel
- ld hl, BikeShopCantAffordText
- call PrintText
- .cancel
- ld hl, BikeShopComeAgainText
- call PrintText
- With regards to viewing the Hall of Fame data, the code is a bit confusing here since there is a loop of uncertain length depending on the number of Hall of Fame entries the player has. It does seem like the text delay will always be correctly reset at the end here since you cannot exit this without reaching the end of the Hall of Fame data. This could not be exploited in a speedrun anyway for obvious reasons.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement