User:Evie (Torchickens)/Sandbox: Difference between revisions
(→Timing) |
|||
(40 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Evie's list of things she wants to do, or has recently come across but doesn't know much about. Feel free to add details if you like. |
Evie's list of things she wants to do, or has recently come across but doesn't know much about. Feel free to add details if you like. |
||
==Timing== |
|||
*[https://rgbds.gbdev.io/docs/v0.3.5/gbz80.7 Cycles] |
|||
*[https://gbdev.gg8.se/wiki/articles/OAM_DMA_tutorial DMA transfer]: ~160 microseconds |
|||
*~FF46 write - began OAM DMA transfer (one byte RAM specified for h (high byte) in RAM pointer that mirrors rDMA/FEXX-9F (you know this)) |
|||
*"[https://gbdev.io/pandocs/STAT.html LY indicates the current horizontal line, which might be about to be drawn, being drawn, or just been drawn. LY can hold any value from 0 to 153, with values from 144 to 153 indicating the VBlank period]." |
|||
*You can only access HRAM while a DMA transfer is taking place. |
|||
*"[[RNG correlation (Generation I)|the rDIV register, which itself is incremented at a rate of 16384Hz (~16779Hz on SGB)]]" |
|||
*From that RNG correlation article "516 cycles (2.015625 rDIV periods)" - so just say 2/516 (1/258 rDIV) for one cycle. |
|||
*[https://gbdev.io/pandocs/OAM_Corruption_Bug.html OAM corruption bug] |
|||
*[https://gbdev.gg8.se/wiki/articles/Video_Display Video Display]/VBlank |
|||
*[https://www.3bscientific.com/gb/microsecond-counter-230-v-5060-hz-1017333-u8498285-230-3b-scientific,p_813_25740.html Microsecond counter] |
|||
*It's more complex than this, but just leave these notes for now. |
|||
=Boulder smuggling= |
|||
By just changing current map (D35E/D); subject to D36E/D being safe, you can move boulders to other maps from places like Victory Road after an encounter. Probably due to certain places being not regarded as cave maps, this may or may not disable encounters, but you can memory edit D059/8 to work around that. |
|||
To-do: Defaults and relationship with Game Boy, GBC, SGB boot ROMs. |
|||
If you want a more precise warp, you can adjust D35F-D360(-1) and the coordinates too. |
|||
==Hexadecimal byte representation of Cryo's real-time RAM writer for writing code using button sequences== |
|||
So what happens when you push boulders where you're not supposed to? |
|||
; |
|||
https://archives.glitchcity.info/forums/board-115/thread-7744/page-0.html |
|||
*Some maps don't support the boulder sprite; so boulders might transform into rotating player sprites. You can still push Reds around and they even update to Red cycling if you use the Bicycle. (Another map that supports the boulder sprite is the Safari Zone iirc(?)) |
|||
*You can still push the boulders around; so with enough manipulation I guess you could make your own sokoban game. |
|||
*I actually found this out before by changing FF map connections to valid maps, but if you push a boulder out of the map it will disappear (probably the same reason for any disappearing NPC) |
|||
*Somehow I was able to manipulate a boulder so that a Trainer was standing on top of it. I could no longer push the boulder as the Trainer took priority. |
|||
*The spin tiles in Viridian Gym will make you walk through a boulder (or Trainer) if it's/they're blocking the path. |
|||
Red/Blue EN: |
|||
=Walking characters after Yellow MissingNo. addendum= |
|||
Like with the Red sprites from boulder smuggling, using the Bicycle can cause walking Red characters to start cycling too (or Surfing if you used Surf iirc). This does seem familiar maybe someone else documented it too. |
|||
<pre> |
|||
=Momentary Surf dismount menu sprite glitch= |
|||
2EFE1D5414D523CD |
|||
Surf from the Cinnabar Island coast and dismount, but not the most common way. Instead dismount by opening the party menu and choosing Surf. In Red/Blue but not yellow, there can be a momentary transition glitch affecting the font and certain menu sprites like generic monster (becoming Red facing down), and some others being other orientations of Red (I think someone else may have also mentioned this but if you do this with ????? the game locks up). |
|||
FA3F3DF0F8FE0CC8 |
|||
F0B237B728F143B9 |
|||
4228EB4F41865077 |
|||
4418E4 |
|||
</pre> |
|||
==Catch rate correspondence table (Generation I)== |
|||
'''(To-do: Why does this happen)''' |
|||
Red/Blue |
|||
=Select glitches= |
|||
<pre> |
|||
'''(To-do: Expand, work this out and add relevant memory addresses)''' |
|||
ID Pokemon Catch rate Held item in Gen 2 |
|||
00 'M (00) 1D Carbos |
|||
01 Rhydon 3C Silver Leaf |
|||
</pre> |
|||
Exceptions: |
|||
This article is a list of [[closed menu Select glitch]]es detailing the memory areas they corrupt. |
|||
Changes to catch rate in games (Thx Bulbapedia): |
|||
==Party== |
|||
===2nd-6th Pokémon=== |
|||
The Pokémon in that slot is swapped. If over the number of party Pokémon, this can be a glitched Pokémon or an [[GlitchDexJP/RG:255|anedepami]] if (number of Pokémon+1); the latter is known for [[dokokashira door glitch]] at the beginning of the game with only one Pokémon and at least two items. |
|||
*In Yellow, starter Pikachu hold Light Ball |
|||
Can also be used for [[Partial switch glitch]] |
|||
*In Yellow, wild Kadabra hold TwistedSpoon |
|||
*In Yellow, wild Dragonair hold Protein |
|||
*In Yellow, wild Dragonite hold Antidote |
|||
*Stadium gift Pokémon hold Normal Box (Round 1) or Gorgeous Box (Round 2) |
|||
[https://github.com/pret/pokecrystal/blob/master/data/items/catch_rate_items.asm Converted catch rates] (TimeCapsule_CatchRateItems): |
|||
===7th Pokémon=== |
|||
(document) |
|||
*Catch rate 0x19 becomes Leftovers |
|||
===12th Pokémon=== |
|||
*0x2D becomes Bitter Berry |
|||
Can be used for [[warp by Nidoran♂ glitch]] |
|||
*0x32 becomes Gold Berry |
|||
*0x5A, 0x64, 0x78, 0x87, 0xBE, 0xC3, 0xDC, 0xFA, 0xFF all become Berry |
|||
How to acquire a Pokémon with any catch rate: |
|||
===13th Pokémon=== |
|||
Can be used for [[second type glitch]], [[expanded inventory]], warp by Nidoran♂ glitch |
|||
(Tested on Yellow probably works the same on Red/Blue) |
|||
===14th Pokémon=== |
|||
Can be used for [[item creation Select glitches]] and second type glitch |
|||
*Have in party only special MissingNo. (Kabutops Fossi, Aerodactyl, Ghost), then save/reset |
|||
===20th Pokémon=== |
|||
*Manipulate D0C0-1 (W_MONHCATCHRATE). (Probably can do this with [[LWA]]) |
|||
Can be used for [[Trainer mutation glitch]] |
|||
*Encounter/acquire special MissingNo. (Kabutops Fossi, Aerodactyl, Ghost) and catch it |
|||
*The acquired Pokémon will have the catch rate from D0C0-1. |
|||
===32nd Pokémon=== |
|||
Can be used for [[fossil conversion glitch (Japanese)]] and [[walk through walls glitch (Select glitch method)]] |
|||
===33rd Pokémon=== |
|||
Can be used for [[battle disabling Select glitch]] |
|||
==IR trade pet project== |
|||
==Moves== |
|||
=== |
===Theory=== |
||
Use [[I/O|$FF56]] to turn infrared on in two games with [[arbitrary code execution]]. Synchronise the PPU(?) cycles. Use a modified version of the Cable Club code. |
|||
The move in that slot is swapped. If move does not exit, may give the player [[- (Generation I move)]]. |
|||
In it, have a prompt to keep the Game Boy Colors next to each other for each interaction (press A to start read/write) and have some kind of error prevention if communication fails. |
|||
===5th move=== |
|||
(document) |
|||
I wonder how practical this is because for Gold/Silver they used IR for different purposes (obtaining decorations, items, Trainer House Trainers). |
|||
===7th move=== |
|||
Can be used for [[skip to Level 100 Select glitch]] |
|||
== |
==Other things== |
||
[https://glitchcity.wiki/index.php?title=User:Evie_(Torchickens)/Sandbox&action=history (Archived as the page gets big)] |
|||
Can be used for [[remaining PP into species Select glitch]] |
Latest revision as of 21:18, 1 May 2024
Evie's list of things she wants to do, or has recently come across but doesn't know much about. Feel free to add details if you like.
Timing
- Cycles
- DMA transfer: ~160 microseconds
- ~FF46 write - began OAM DMA transfer (one byte RAM specified for h (high byte) in RAM pointer that mirrors rDMA/FEXX-9F (you know this))
- "LY indicates the current horizontal line, which might be about to be drawn, being drawn, or just been drawn. LY can hold any value from 0 to 153, with values from 144 to 153 indicating the VBlank period."
- You can only access HRAM while a DMA transfer is taking place.
- "the rDIV register, which itself is incremented at a rate of 16384Hz (~16779Hz on SGB)"
- From that RNG correlation article "516 cycles (2.015625 rDIV periods)" - so just say 2/516 (1/258 rDIV) for one cycle.
- OAM corruption bug
- Video Display/VBlank
- Microsecond counter
- It's more complex than this, but just leave these notes for now.
To-do: Defaults and relationship with Game Boy, GBC, SGB boot ROMs.
Hexadecimal byte representation of Cryo's real-time RAM writer for writing code using button sequences
https://archives.glitchcity.info/forums/board-115/thread-7744/page-0.html
Red/Blue EN:
2EFE1D5414D523CD FA3F3DF0F8FE0CC8 F0B237B728F143B9 4228EB4F41865077 4418E4
Catch rate correspondence table (Generation I)
Red/Blue
ID Pokemon Catch rate Held item in Gen 2 00 'M (00) 1D Carbos 01 Rhydon 3C Silver Leaf
Exceptions:
Changes to catch rate in games (Thx Bulbapedia):
- In Yellow, starter Pikachu hold Light Ball
- In Yellow, wild Kadabra hold TwistedSpoon
- In Yellow, wild Dragonair hold Protein
- In Yellow, wild Dragonite hold Antidote
- Stadium gift Pokémon hold Normal Box (Round 1) or Gorgeous Box (Round 2)
Converted catch rates (TimeCapsule_CatchRateItems):
- Catch rate 0x19 becomes Leftovers
- 0x2D becomes Bitter Berry
- 0x32 becomes Gold Berry
- 0x5A, 0x64, 0x78, 0x87, 0xBE, 0xC3, 0xDC, 0xFA, 0xFF all become Berry
How to acquire a Pokémon with any catch rate:
(Tested on Yellow probably works the same on Red/Blue)
- Have in party only special MissingNo. (Kabutops Fossi, Aerodactyl, Ghost), then save/reset
- Manipulate D0C0-1 (W_MONHCATCHRATE). (Probably can do this with LWA)
- Encounter/acquire special MissingNo. (Kabutops Fossi, Aerodactyl, Ghost) and catch it
- The acquired Pokémon will have the catch rate from D0C0-1.
IR trade pet project
Theory
Use $FF56 to turn infrared on in two games with arbitrary code execution. Synchronise the PPU(?) cycles. Use a modified version of the Cable Club code.
In it, have a prompt to keep the Game Boy Colors next to each other for each interaction (press A to start read/write) and have some kind of error prevention if communication fails.
I wonder how practical this is because for Gold/Silver they used IR for different purposes (obtaining decorations, items, Trainer House Trainers).