Evie (ChickasaurusGL) 🌺 | Replacing X's (エックス) "Nintendo presents" screen w/Pokémon Yellow cart swap arbitrary code execution @ChickasaurusGL | Uploaded December 2021 | Updated October 2024, 15 hours ago.
Notes: I previously was thinking about this as X takes the "Nintendo" logo from the boot ROM screen (why some emulators fail to say Nintendo in Nintendo presents).
What I wasn't aware was that seemingly the entire VRAM on the first page of the BG Map (9800+) (except for the "presents" part which is written on the X splash screen) is leftover. For this reason, cart swap arbitrary code execution could show in X not just an altered Nintendo logo, but that entire page, except the tiles for presents on the middle of the screen.
Another technicality is that arbitrary code execution with this method takes the "presents" tiles from tile bank 2. So even though X will overwrite some of the people tiles on the overworld from 0x40 onward in tile bank 1, the game will just use the leftover tile bank 2 tiles (and their graphics) from 0x40 instead.
Hence, what I decided to do here was just use a (messy suboptimal but works) way to overwrite the VRAM graphics for the relevant tiles in "presents"; 40, 44, 48, 4C, 50, 54, 58 (ID +1 of these for the second row e.g. 41 or +2 of these for the third row e.g. 42) with "POKéMON YELLOW PRESENTS".
Here is the save file. drive.google.com/file/d/1L__dKWOiOmnc799CB36UtTW0s-erH-fM/view?usp=sharing
Do note you'll need to do the cart swap successfully (you can do it on BGB by opening the debugger via right click and going to file open ROM without reset, after closing the menu hangs the game for a while), and after using 4F Pokémon Yellow's save file will be deleted, so re-import the save file if you want to try this again. ^^
The grass tiles are corrupted because E had to be in ID 0x52; so replaced the grass tile there (2:0x52), as were some pole IDs replaced with "PYMO". OAM is also broken now because it's at C000 instead of C400, hence the fragmented Red sprites. There are other tiles I didn't tidy up (but would allow for more room for text/graphics in the "presents..." space), and the rest is just the unchanged overworld background.
It's likely we could create our own full custom screen altogether.
Cart swap arbitrary code execution is documented here and was popularized by TheZZAZZGlitch for Game Boy games. https://glitchcity.wiki/Cart-swap_arbitrary_code_execution
Their video:
youtube.com/watch?v=SL_Zuc0tlvo
Notes: I previously was thinking about this as X takes the "Nintendo" logo from the boot ROM screen (why some emulators fail to say Nintendo in Nintendo presents).
What I wasn't aware was that seemingly the entire VRAM on the first page of the BG Map (9800+) (except for the "presents" part which is written on the X splash screen) is leftover. For this reason, cart swap arbitrary code execution could show in X not just an altered Nintendo logo, but that entire page, except the tiles for presents on the middle of the screen.
Another technicality is that arbitrary code execution with this method takes the "presents" tiles from tile bank 2. So even though X will overwrite some of the people tiles on the overworld from 0x40 onward in tile bank 1, the game will just use the leftover tile bank 2 tiles (and their graphics) from 0x40 instead.
Hence, what I decided to do here was just use a (messy suboptimal but works) way to overwrite the VRAM graphics for the relevant tiles in "presents"; 40, 44, 48, 4C, 50, 54, 58 (ID +1 of these for the second row e.g. 41 or +2 of these for the third row e.g. 42) with "POKéMON YELLOW PRESENTS".
Here is the save file. drive.google.com/file/d/1L__dKWOiOmnc799CB36UtTW0s-erH-fM/view?usp=sharing
Do note you'll need to do the cart swap successfully (you can do it on BGB by opening the debugger via right click and going to file open ROM without reset, after closing the menu hangs the game for a while), and after using 4F Pokémon Yellow's save file will be deleted, so re-import the save file if you want to try this again. ^^
The grass tiles are corrupted because E had to be in ID 0x52; so replaced the grass tile there (2:0x52), as were some pole IDs replaced with "PYMO". OAM is also broken now because it's at C000 instead of C400, hence the fragmented Red sprites. There are other tiles I didn't tidy up (but would allow for more room for text/graphics in the "presents..." space), and the rest is just the unchanged overworld background.
It's likely we could create our own full custom screen altogether.
Cart swap arbitrary code execution is documented here and was popularized by TheZZAZZGlitch for Game Boy games. https://glitchcity.wiki/Cart-swap_arbitrary_code_execution
Their video:
youtube.com/watch?v=SL_Zuc0tlvo