Guides:SRAM Glitch ACE Setups (EN): Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
mNo edit summary
mNo edit summary
Line 374: Line 374:
From this point onward, you can exit the Poké Center and continue the story as normal.
From this point onward, you can exit the Poké Center and continue the story as normal.


==Addendum: Additional codes==
==Additional applications of the Nickname Writer==


The Nickname Writer allows you to easily write and execute arbitrary payloads. You can either make and execute your own codes, or head to the [[Guides:Nickname Writer Codes|Nickname Writer codes]] page. This page contains a collection of assembly for nickname codes that can be used for a variety of common purposes such as editing pokémon and items, editing player stats, resetting legendaries etc..
The following codes can be used with the Nickname Writer:

===Giving yourself a VC transferable Mew===

Effects:
* Remove all pokémon from the party.
* Add a lvl 5 Mew. This Mew cannot be transferred to gen 7 without additional modifications.
* Add a second lvl 5 Mew. This Mew is transferable and will be shiny upon transfer.

Warning:
* This code is intended to be used right after setting up the Nickname Writer. Be mindful that it will remove the entirety of your party in the process.
* '''In order to be able to transfer, make sure to NOT give a nickname to the second Mew.'''

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
| <pre>AF EA 63 D1 01
05 15 C5 CD 48
3E C1 CD 48 3E
21 A3 D1 3E 59
22 36 0C 2E B2
3E AA 22 22 21
7E D2 3E 86 22
3D 22 36 50 C9</pre>
|}

===PokeGiver script===

'''NOTE: This code is currently undergoing a rework. Installing it is still possible but at the moment it will completely remove access to the Nickname Writer.'''

Effects:
* Change second bag item to ACE item "4F".
* Set up everything so that 4F will activate the PokéGiver script (regardless of the current active box).

How to use the PokéGiver script:
* Please use a different box than the one that contains the Nickname Writer.
* Use 4F to activate the script. Once activated, the script will do the following:
** Give a pokémon.
** If the pokémon is deposited to the PC, the Pokémon will be made shiny. The default code will give female shiny pokémon (if the gender ratio allows it).
** Display two numbers (in hexadecimal) on screen. The left number indicates the species ID of the pokémon to be given, the right number indicated the level the pokémon is to be given at.
** The numbers can be altered by using the d-pad. Press A to confirm the values and give the next pokémon. Press Start to stop the script without giving any more pokémon.
** The script will stop automatically once the current active box is full.

Warnings:
* Species IDs do not match pokédex IDs in gen 1. Please use the Big Hex List article to determine which Species IDs give which pokémon.
* Be mindful of using this code to give yourself glitch pokémon, as the seen flags set by these glitch pokémon can alter the contents of the bag.
* The script is located in the area of memory that corresponds with enemy trainer party data. The script persists through saves, but will be destroyed when battling any trainer.
* Nickname writer codes with a length of up to 4 nicknames can be used without overwriting the PokéGiver script.

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
| <pre>3E 59 EA 20 D3
21 AD D8 11 65
DA 01 03 00 C3
B5 00 C3 B1 D8
00 3E 01 E0 B7
01 01 01 CD 48
3E D0 21 B1 DA
36 2A 23 36 AA
21 B7 D8 11 91
C4 CD F1 D8 13
2B CD F1 D8 CD
31 38 F0 B5 FE
01 28 DA 07 38
10 07 38 0B 23
07 38 09 07 38
04 07 30 D9 D8
34 34 35 18 D3
CD F4 D8 CB 36
7E E6 0F C6 F6
F6 80 12 13 C9</pre>
|}

====Altering the PokéGiver script so that it is kept after battle====

By executing the following two nickname codes, you can ensure that you can keep using the PokéGiver script even after engaging in trainer battles.

First, execute the following code:

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
| <pre>21 02 0A 74 26
40 75 01 FF 00
11 53 BA 21 B1
D8 C3 B5 00 00</pre>
|}

Using this code will store a copy of the PokéGiver script in an unused area of memory, located in sram bank 02 at $BA53 (right after box #5).

Next, execute the following code:

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
| <pre>01 19 00 11 65
DA 21 A8 D8 C3
B5 00 11 B1 D8
D5 21 02 0A 74
26 40 E5 75 01
FF 00 21 53 BA
CD B5 00 E1 36
00 C9 </pre>
|}

This code will alter the bootstrap of 4F such that, when it is used, it will look up the copy of the PokéGiver script and once more copy it over to $D8B1, in the middle of enemy trainer data, where it will immediately be executed.

Please make sure to not use 4F during trainer battles, as it will overwrite buffered trainer data leading to unintended side effects.

The bootstrap for 4F is located in daycare data. To preserve the bootstrap, you will unable to store or retrieve any pokémon from the Day-Care.

If the bootstrap fails to work, you can reapply the bootstrap by executing the second code again.

===Changing the gender of pokémon given by the PokéGiver script===

With the PokéGiver script installed, you can use the following codes to change the gender of the pokémon given by the script.

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
! rowspan="7" | All Languages
|-
! Female Shiny !! Male Shiny
|-
| <pre>3E 2A EA C0 D8
C9 00 00 00 00</pre>
|| <pre>3E FA EA C0 D8
C9 00 00 00 00</pre>
|}

===Changing a Mew to be VC transferable===

This code changes the data of the 6th party pokémon to have an OT ID of 22796 and a nickname of "GF". By putting a Mew in the sixth party slot and executing the code, the Mew can be passed through poké transporter to gen 7.

It is small enough to not destroy the PokéGiver script.

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
! All Languages
|-
| <pre>21 53 D2 3E 59
22 36 0C 21 AA
D2 3E 86 22 3E
85 22 36 50 C9</pre>
|}

===Installing a RAM writer===

A RAM writer is an installable program that allows you to view and change any value in memory using a graphical user interface. This allows you to easily change specific values, set up and run small payloads and verify specific values in memory.

{| class="wikitable"
|+ Codes to be used with the [https://timovm.github.io/NicknameConverter/ Nickname Converter webtool]
|-
| <pre>3E 03 CD 92 D9 3E 59 EA 1E D3
01 45 00 11 53 BA 21 C3 D8 CD
B5 00 11 30 D4 0E 78 CD B5 00
11 65 DA D5 0E 1B C3 B5 00 AF
3C E0 B6 E0 B7 21 00 DA CD 30
D4 E5 11 F8 FF 19 54 5D 01 0C
00 CD 75 DA 21 A9 C3 CD 99 D4
3E 7C 22 7A CD 99 D4 7B CD 99
D4 3E E3 22 1A CD 99 D4 36 7C
09 13 7D FE 13 20 E5 26 00 74
21 50 C4 36 ED E1 18 C4 CD 7A
D4 CB 5F 20 39 CB 57 28 0A 0F
30 01 E9 F0 FE 83 E0 FE C9 0F
30 2A E5 CD 75 DA 4E CD 7A D4
0F 38 12 0F 30 01 4B 79 83 4F
21 50 C4 36 EC 23 CD 99 D4 18
E8 E1 71 E5 06 1C 21 CE 77 CD
D6 35 E1 C9 0F 30 03 53 1E 00
19 C9 CD 31 38 F0 B5 76 11 00
00 F5 07 30 01 13 07 30 01 1B
07 30 03 11 F0 FF 07 30 02 1E
10 F1 C9 F5 CB 37 CD A0 D4 F1
E6 0F C6 F6 F6 80 22 C9 3E 03
CD 77 DA 11 E3 DE D5 21 53 BA
4D C3 B5 00 F0 FE E5 26 0A 74
26 40 77 E1 C9 </pre>
|}

====Using the full RAM writer====

Assuming the program was entered correctly, the game should open up one of the screens as seen in the below screenshots. The RAM writer will draw various values on the screen. The leftmost 4 columns describe the addresses that are currently in view. The rightmost two columns describe the values at each of these addresses. All values on screen are represented in hexadecimal format.

For example: DA01>05 means that the address $DA01 is currently holding the value of $05.

'''Make sure to save the game after you've confirmed that the RAM writer is fully functional.'''

The RAM writer can also be used during battle. Opening and closing the RAM writer in battle will pass your turn to the enemy and cause the battle to continue as usual.

Due to the location the RAM writer is buffered, upon closing the RAM writer in battle in Red/Blue, you will see a slight graphical corruption at the bottom of the screen that will immediately be overwritten by the battle text box. This corruption is purely cosmetic and temporary, meaning that it will not cause any harm to your game.

====Full Writer Controls====

The RAM writer uses two modes of operation. In Read mode you are able to navigate memory and view the values at specific addresses. in Write mode you'll lock in a single address and manipulate the value at that address. By default, the RAM writer will open in Read mode.

{| class="wikitable"
|[[file:Full RB DA96 Read mode.png|288px]]||[[file:Full_RB_DA96_Write_mode.png|288px]]
|-
|RAM writer in Read mode ||RAM writer in Write mode.
|}

=====Read mode controls=====
<pre>
up: address -1
down: address +1
left: address -10
right: address +10
B + up: address -1
B + down: address +1
B + left: address -10
B + right: address +10
start: exit program
A: toggle write mode

select + up: sram bank -1
select + down: sram bank +1
select + left: sram bank -10
select + right: sram bank +10
select + A: start executing code from current address onwards (use with caution!)
</pre>

=====Write mode controls=====
<pre>
up: value -1
down: value +1
left: value -10
right: value +10
B: set current value to 0
A: exit write mode and load final value into the address
</pre>