User:TimoVM/International GS RAM Writer setups

From Glitch City Wiki
Jump to navigation Jump to search

This page serves as a repository for RAM writer setups specifically intended for the German, French, Italian and Spanish versions of Pokémon Gold & Silver.

These setups are designed for two main purposes:

  • Provide a way to set up an ACE environment by providing ways to fill the TM/HM pocket with x255 of every TM, along with a way to execute code from the TM/HM pocket.
  • Provide a program, building on this ACE environment, that allows the user to easily change any RAM value in memory, along with providing a graphical user interface to do so.

If you encounter any issues when going through this guide or would like to provide feedback, please contact TimoVM on the Glitch City Discord.

General overview

In this guide, we will steadily be building an advanced ACE program through the following process:

  1. Obtain a bad clone.
  2. Use the bad clone to obtain two additional bicycles. then use duplicate key items glitch to place TM17 (an ACE item) in the ball pocket.
  3. Use a box name code to set all TMs to x255.
  4. Sell TMs in specific quantities in order to write a program in the TM/HM pocket using TM quantities. This program allows you to build the full RAM writer by writing mail codes.
  5. Use another box name code to execute this program, which will allow us to write the full RAM writer using mail codes.
  6. After all mail codes are entered, execute the RAM writer. Running the RAM writer for the first time will also fix the side effects caused by Duplicate Key Item Glitch.

Alternatively, you can skip step 1 and step 2 if you have another game that already has an ACE setup. This can be done by trading two pokémon, each holding a bicycle, from the game that already has an ACE setup.

Preferably, make sure that you've used the Clear Save Data feature (press SELECT + UP + B on the title screen) at least once since owning the game. This will zero out all of the SRAM data, which is needed to create a bad clone.

Requirements for this guide

  • The only hard requirement is reaching Goldenrod City to access the Day Care, along with having access to GoldenRod Dept. Store.
  • For every language except German, ensure that you catch a Wooper. (An alternative method is provided in case you missed catching a Wooper)
  • All other requirements can be obtained in the vicinity of Goldenrod City, we'll go over these in their respective parts of the guide.

Step 1: Obtaining a bad clone

A bad clone is created when you reset the game at a very specific time frame where:

  • The game has saved that additional pokémon were deposited in the active box.
  • The game has not yet saved the data of the deposited pokémon

In combination with the Day Care, we can turn this bad clone into a glitch pokémon that we'll be using to perform a variety of glitches.

Requirements

  • A box that has never been full at any point in the past.
  • Fill this box with 15 pokémon. You can use cloning glitch to obtain the required pokémon.
  • A male pokémon (make sure that the species can be both male and female) that you can deposit to the PC.

Obtaining the bad clone

  1. Deposit any party pokémon to the current active box.
  2. Go to "Move pokémon w/o mail", you will get a prompt to save the game.
  3. Reset the game shortly after the "saving... text is fully printed (around 1,38 seconds after confirming the save).
  4. If successful, upon restarting the game you will find a level 0 female version of the deposited pokémon with a glitched name. Make sure you only withdraw this pokémon to your party using "Move pokémon w/o mail" to keep it at lvl 0.

Please note that the timing of this is very strict (around frame perfect).

  • If nothing was saved, the reset was too early. Wait a little bit longer to reset.
  • If the pokémon was successfully cloned, the reset was too late. reset a little bit earlier.
  • If the box ever gets to 19 pokémon in total, release pokémon from the box until there are only 15 pokémon present. Make sure to save normally after releasing them.

Use these guidelines and keep retrying until you've obtained a bad clone.

After obtaining the bad clone, make sure to normal clone using cloning glitch so that you have two bad clones in total.

Step 2: Obtaining additional bicycles and getting TM17 in the ball pocket

This works in any language version on any generation 2 game, the method is based on a translation of a [blogpost from 任意コード]. When in the ball pocket, TM17 functions as a wrong pocket TM with its effect pointer at $DA47 (middle of the first party pokémon's data).

Requirements

Have the following items in the ball pocket:

  • Slot 1: Great Ball x2
  • Slot 2: Poké Ball x1
  • Slot 3 and beyond: empty

(Both can be bought in the Goldenrod Dept. Store if needed, make sure to store or sell everything else you have in the Ball pocket.)

Have the following items in the key item pocket:

  • All key items you've obtained in your save thus far (withdraw all key items (if any) you previously stored from the PC)
  • Bicycle at the bottom of the key item list

Have the following pokémon in the party:

  1. Bad clone
  2. Drowzee with Fire Punch in second move slot
  3. Drowzee with Fire Punch in second move slot
  4. Unwanted pokémon
  5. Unwanted pokémon
  6. Unwanted pokémon

(you can buy the TM for Fire Punch at the Goldenrod Dept. Store. To save on time and money, catch one Drowzee and teach it Fire Punch. Then clone it using cloning glitch)

Have the following pokémon in the box:

  • 1 unwanted pokémon
  • 1 normal pokémon

Keep in mind that we'll be corrupting both the Drowzees and the unwanted pokémon. Make sure to only use pokémon you do not wish to keep. The normal pokémon will not be corrupted at all during this process.

Obtaining duplicate bicycles

  • Step 1: Deposit the bad clone in the daycare and retrieve it. It will now have turned into a glitch pokémon. Arrange your party as follows:
  1. Glitch pokémon
  2. Drowzee with Fire Punch in second move slot
  3. Drowzee with Fire Punch in second move slot
  4. Unwanted pokémon
  5. Unwanted pokémon
  6. Unwanted pokémon
  • Step 2: Using "move pokémon w/o mail", add the stored unwanted pokémon to the top of your party.
  • Step 3: Switch the party pokémon in the second slot (the glitch pokémon) with the pokémon in the fifth slot (an unwanted pokémon).
  • Step 4: Select "Deposit pokémon" from the PC and deposit the top two pokémon in your hand.
  • Step 5: Withdraw the normal pokémon from your box and add it to the party using "Withdraw pokémon".

The party will now contain two Drowzee that will both be holding a bicycle each. Take these held items to add them to the bottom of the Key Item list. It is now safe to save.

Obtaining TM17

  • Step 1: Go to the bottom of the key item list. The bottom of the list should consist of three separate bicycles.
  • Step 2: Press select on the second bicycle and swap it with the third bicycle. The number of bicycles will decrease, the "Cancel" button will change to a "Teru-Sama" item.
  • Step 3: Go to the ball pocket and toss 47 of the second item. The final quantity of the second item is a number ending in "8".
  • Step 4: Return to the Key Item pocket, press select on the upper bicycle and swap it with the bottommost item. This leaves you with a single bicycle, will turn the "Teru-Sama" into a "Paralyz Heal" and change the second item of the Ball pocket into a TM17. It is now safe to save.

Do not worry about the glitch pokémon that's still in your party or the key item list that lacks a cancel button, we'll fix both in the last step of the guide.

Step 3: obtaining x255 of every TM

Now that we have obtained TM17 outside of the TM/HM pocket, we'll need to set up everything needed to actually safely use it. TM17's effect is to execute code starting from $DA47, which is near the end of party pokémon #1's data. What we'd like to do is to redirect it such that box names get executed instead:

  • Prepare the party to ensure that code gets safely redirected to box names.
  • Prepare specific box names that will give you x255 of all TMs, along with safely returning to normal game operation.

Please note that this step heavily differs between languages. Make sure you follow the correct section for your language.

Every language except German: preparing a Wooper

  • Obtain the following TMs:

- TM02 HEADBUTT: buy at Goldenrod Dept Store. - TM27 RETURN: obtain on sundays1 from the female clerk at Goldenrod Dept. Store by showing a pokémon with high friendship2.

  • Withdraw the second bad clone using "move pokémon w/o mail". It is imperative that it is lvl 0, has 10 current HP and max HP and has 5 in every other stat.
  • Teach Wooper TM27 and have it hold TM02. Arrange your party like this:
  1. Bad Clone
  2. Wooper holding TM02 and knowing Return
  3. Any
  4. Any
  5. Any
  6. Glitch pokémon used in part 23

1 You can change the clock by using the date change exploit if necessary.

2 If you do not have a pokémon with sufficiently high friendship, use the alternative found below.

3 This pokémon is not needed for the setup, but is placed here in order to remove it from the party on first execution of the RAM writer. If you do not wish to remove it, replace with an unwanted pokémon.

All languages: preparing a Nidoran♂

  • Catch a Nidoran♂
  • Have it fight the following pokémon and defeat them by itself (order doesn't matter)
  1. Drowzee - Route 34, 50% odds to spawn at any time of the day
  2. Nidoran♀ - Route 35, 30% odds to spawn at any time of the day
  3. Oddish - Ilex forest, 60% odds to spawn, only at night1
  4. Oddish - Ilex forest, 60% odds to spawn, only at night1
  • Buy an Ice Heal and a Flower Mail, both can be bought in Goldenrod Dept. Store.
  • Withdraw the second bad clone using "move pokémon w/o mail". It is imperative that it is lvl 0, has 10 current HP and max HP and has 5 in every other stat.
  • Give the Ice Heal to Nidoran♂ to hold. Arrange your party like this
  1. Bad Clone
  2. Nidoran♂ that has defeated specific pokémon, holding Ice Heal
  3. Any
  4. Any
  5. Any
  6. Glitch pokémon used in part 22
  • Finally, give the bad clone in slot #1 a flower mail and prepare a specific language-dependent mail:
French German Italian Spanish
A A A A A A A A A A A A A A A A
A A p û ç 2 
A A A A A A A A A A A A A A A A
A A ë R H é 8 2 ë 9 é ß 2 ä ß 2 
A A A A A A A A A A A A A A A A
A A p ñ Á 2 
A A A A A A A A A A A A A A A A
A A p ñ Á 2 

1 You can change the clock by using the date change exploit if necessary.

2 This pokémon is not needed for the setup, but is placed here in order to remove it from the party on first execution of the RAM writer. If you do not wish to remove it, replace with an unwanted pokémon.

Setting up box codes and using TM17

Now that you have set up either a party with Wooper or a party with Nidoran♂, we'll rename box names to form a specific bit of code which we'll execute when we use TM17.

  • Rename box codes according to the following table. Make sure to use the box names compatible with your language:
French German Italian Spanish
Box 1: A p é 3 2 u' 9
Box 2: é 1 2 u' c é 5 2
Box 3: H u' L é 6 2 ? b
Box 4: é , 2 u' ♂ é 2 2
Box 5: u' t é ♀ 2 ] 5
Box 6: p' , 2
Box 7: A ♀ ♀ ♀ ♀ p'
Box 1: , 2 ö 8 2 W 5 5
Box 2: ö 8 2 W ö 8 2 o
Box 3: ö 8 2 w G ö 8 2
Box 4: G ö 8 2 G ö 8 2
Box 5: G ö 8 2 p ♀ Ö w
Box 6: ä , 2
Box 7: d J 5 T R w y 9
Box 8: A Ä
Box 1: A p é 3 2 ° 9
Box 2: é 1 2 ° D é ♀ 2
Box 3: È d é , 2 ° ♂
Box 4: é 2 2 È 9 é 6 2 
Box 5: p ° P é 5 2 0 9 
Box 6: ñ , 2
Box 7: A ♀ ♀ ♀ ♀ ñ
Box 1: A p é 3 2 ° 9
Box 2: é 1 2 ° D é ♀ 2
Box 3: È d é , 2 ° ♂
Box 4: é 2 2 È 9 é 6 2 
Box 5: p ° Q é 5 2 0 9 
Box 6: ñ , 2
Box 7: A ♀ ♀ ♀ ♀ ñ
  • If you're using a Nidoran♂, make sure to re-read the mail you gave to the bad clone.
  • Use TM17 once. If the code was executed successfully, switch to the TM/HM pocket. It should now contain every TM at a quantity of x255.


NOTE: due to limitations, the German version of this box code can only be used once. If you need to use it again, set box name 1's name to (keep other box names the same:

, 2 p ♀ Ö 0 9 &

What to do now you have 255 of every TM

At this moment, there are two main options.

  1. You can use the quantities in the TM/HM pocket to easily write out simple codes. A list of TM codes can be found on this page.
  2. You can continue with the guide and build a RAM writer in order to achieve near-complete ACE control.

Step 4: Selling TMs to form a program in the TM/HM pocket

Now that we have obtained x255 of every TM, we'll be selling specific amounts of these in order to form a program. This program differs slightly depending on the specific language you're using. The following table displays how many TMs of each kind you need to end up with, along with the amount of money you gain by selling them.

language independent TMs

TM Final Quantity Sell value
TM01 DYNAMICPUNCH x17 357000
TM02 HEADBUTT x85 170000
TM03 CURSE x221 51000
TM04 ROLLOUT x213 42000
TM05 ROAR x213 21000
TM06 TOXIC x213 63000
TM07 ZAP CANNON x33 222000
TM08 ROCK SMASH SEE NEXT TABLE
TM09 PSYCH UP x98 78500
TM10 HIDDEN POWER x207 72000
TM11 SUNNY DAY x225 30000
TM12 SWEET SCENT x209 23000
TM13 SNORE x42 106500
TM14 BLIZZARD x254 1500
TM15 HYPER BEAM x80 262500
TM16 ICY WIND x56 298500
TM17 PROTECT x251 6000
TM18 RAIN DANCE x40 215000
TM19 GIGA DRAIN x10 367500
TM20 ENDURE x135 180000
TM21 FRUSTRATION x134 60500
TM22 SOLARBEAM x18 355500
TM23 IRON TAIL x19 354000
TM24 DRAGONBREATH x35 330000
TM25 THUNDER x129 126000
TM26 EARTHQUAKE x79 264000
TM27 RETURN x18 118500
TM28 DIG x24 231000
TM29 PSYCHIC x239 16000
TM30 SHADOW BALL x33 333000
TM31 MUD-SLAP x1 381000
TM32 DOUBLE TEAM x196 59000
TM33 ICE PUNCH x77 267000
TM34 SWAGGER x205 25000
TM35 SLEEP TALK SEE NEXT TABLE
TM36 SLUDGE BOMB x58 98000
TM37 SANDSTORM x27 228000
TM38 FIRE BLAST x205 50000
TM39 SWIFT SEE NEXT TABLE
TM40 DEFENSE CURL x55 100000
TM41 THUNDERPUNCH x189 99000
TM42 DREAM EATER x40 322500
TM43 DETECT x217 19000
TM44 REST x56 298500
TM45 ATTRACT x240 22500
TM46 THIEF x254 1500
TM47 STEEL WING x08 370500
TM48 FIRE PUNCH x200 82500
TM49 FURY CUTTER x24 346500
TM50 NIGHTMARE x242 13000

language dependent TMs

TM French German Italian Spanish
Final amount Amount sold for Final amount Amount sold for Final amount Amount sold for Final amount Amount sold for
TM08 ROCK SMASH x43 106000 x34 110500 x118 68500 x153 51000
TM35 SLEEP TALK x144 55500 x231 12000 x222 16500 x162 46500
TM39 SWIFT x59 196000 x135 120000 x127 128000 x77 178000

Running the newly written program

  • Adjust your box name codes according to the following table:
French German Italian Spanish
Box 1: A p u' C é 0 2 p
Box 2: u' 6 p' ♀ 2
Box 3-6: any
Box 7: p' ♀ ♀ 
Box 1: , 2 ö 8 2 0 {space} 5
Box 2: ? 8 ö 8 2 ? E 5
Box 3: ä , 2
Box 4-6: any
Box 7: ♀ ♀ &
Box 8: A Ä 
Box 1: A p ° C é 0 2 5
Box 2: ? E ñ ♀ 2
Box 3-6: any
Box 7: ñ ♀ ♀ 
Box 1: A p ° C é 0 2 5
Box 2: ? E ñ ♀ 2
Box 3-6: any
Box 7: ñ ♀ ♀ 
  • Save before continuing
  • If you're using a Nidoran♂, make sure to re-read the mail you gave to Unown.
  • Use TM17, this will start the mail writer and open a screen asking you to input text for a mail.

Step 5: Using the mail writer

The mail writer will open a screen that asks you to write the contents of a mail. This is where you'll need to enter mail codes. Once done, use the "END" option to finish the mail.

This will cause the mail writer to convert the newly written code into assembly. It will also print a checksum (sum of all written values) on the screen just to the right of the lower row. This can be used to verify if a code was entered correctly.

Controls

Between entering mail codes, the mail writer will ask for user input.

  • Press SELECT to open a new mail and continue writing data.
  • Press START to immediately jump to and start executing the newly written program. Only use this when you've finished every mail.
  • Press any other button to go back one byte at a time to correct errors. If the printed checksum doesn't match the expected checksum, press DOWN 16 times to retry the last mail. This will also overwrite the printed checksum with the value at the currently selected address, giving you a method to check how far back you're going.
Enter your mail code, then press "END". It prints the checksum and waits for input.

Building the full RAM writer

We will be installing the full RAM writer using a series of mail codes. These mail codes will be assembled using Scotteh's mail code tool. Copy paste the entire code in the text box on the mail code tool's page, then press "Run".

Codes to be used with Scotteh's mail code tool
German French Spanish Italian
3E 03 CD 0E 31 0E CE 11 E1 B9 21 7E DD CD 47 31 
0E 29 11 18 D4 D5 CD 47 31 21 E1 D5 34 7D 4E 09 
22 AF 3D 22 21 22 DA 35 C9 AF 3C E0 D6 21 00 DA 
CD 21 DF E5 11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 
A9 C3 CD 0E 31 CD 65 CC 3E 7C 22 7A CD 65 CC 7B 
CD 65 CC 3E E3 22 1A CD 65 CC 36 7C 09 13 7D FE 
13 20 E5 CD 1E 31 21 50 C4 36 ED E1 18 C2 F5 CB 
37 CD 6C CC F1 E6 0F C6 F6 F6 80 22 C9 CD 87 37 
F0 AB 11 00 00 07 30 01 13 07 30 01 1B 07 30 03 
11 F0 FF 07 30 02 1E 10 07 C9 CD 74 CC 38 41 07 
30 0B 07 07 30 01 E9 F0 FE 83 E0 FE C9 07 30 03 
53 1E 00 19 07 30 2A E5 F0 FE CD 0E 31 46 CD 74 
CC 07 07 30 01 43 07 38 0E 78 83 47 21 50 C4 36 
EC 23 CD 65 CC 18 E7 E1 70 E5 3E 05 21 0C 4E CF 
E1 C9 FA AB CE FE E1 C0 FA C2 CE FE 99 C0 3E 0D 
EA E0 CE C9 C3 01 DF 3E 03 CD 0E 31 0E 71 11 20 
CC D5 21 E1 B9 CD 47 31 0E 48 11 21 DF CD 47 31 
0E 12 11 0F DF CD 47 31 0E 03 11 89 FF C3 47 31 
3E 03 CD F3 30 0E CE 11 E1 B9 21 7E DD CD 2C 31 
0E 29 11 18 D4 D5 CD 2C 31 21 E1 D5 34 7D 4E 09 
22 AF 3D 22 21 22 DA 35 C9 AF 3C E0 D6 21 00 DA 
CD 21 DF E5 11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 
A9 C3 CD F3 30 CD 65 CC 3E 7C 22 7A CD 65 CC 7B 
CD 65 CC 3E E3 22 1A CD 65 CC 36 7C 09 13 7D FE 
13 20 E5 CD 03 31 21 50 C4 36 ED E1 18 C2 F5 CB 
37 CD 6C CC F1 E6 0F C6 F6 F6 80 22 C9 CD 3B 37 
F0 AB 11 00 00 07 30 01 13 07 30 01 1B 07 30 03 
11 F0 FF 07 30 02 1E 10 07 C9 CD 74 CC 38 41 07 
30 0B 07 07 30 01 E9 F0 FE 83 E0 FE C9 07 30 03 
53 1E 00 19 07 30 2A E5 F0 FE CD F3 30 46 CD 74 
CC 07 07 30 01 43 07 38 0E 78 83 47 21 50 C4 36 
EC 23 CD 65 CC 18 E7 E1 70 E5 3E 05 21 0C 4E CF 
E1 C9 FA AB CE FE E1 C0 FA C2 CE FE 91 C0 3E 0D 
EA E0 CE C9 C3 01 DF 3E 03 CD F3 30 0E 71 11 20 
CC D5 21 E1 B9 CD 2C 31 0E 48 11 21 DF CD 2C 31 
0E 12 11 0F DF CD 2C 31 0E 03 11 89 FF C3 2C 31
3E 03 CD 05 31 0E CE 11 E1 B9 21 7E DD CD 3E 31 
0E 29 11 18 D4 D5 CD 3E 31 21 E1 D5 34 7D 4E 09 
22 AF 3D 22 21 22 DA 35 C9 AF 3C E0 D6 21 00 DA 
CD 21 DF E5 11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 
A9 C3 CD 05 31 CD 65 CC 3E 7C 22 7A CD 65 CC 7B 
CD 65 CC 3E E3 22 1A CD 65 CC 36 7C 09 13 7D FE 
13 20 E5 CD 15 31 21 50 C4 36 ED E1 18 C2 F5 CB 
37 CD 6C CC F1 E6 0F C6 F6 F6 80 22 C9 CD 4D 37 
F0 AB 11 00 00 07 30 01 13 07 30 01 1B 07 30 03 
11 F0 FF 07 30 02 1E 10 07 C9 CD 74 CC 38 41 07 
30 0B 07 07 30 01 E9 F0 FE 83 E0 FE C9 07 30 03 
53 1E 00 19 07 30 2A E5 F0 FE CD 05 31 46 CD 74 
CC 07 07 30 01 43 07 38 0E 78 83 47 21 50 C4 36 
EC 23 CD 65 CC 18 E7 E1 70 E5 3E 05 21 0C 4E CF 
E1 C9 FA AB CE FE E1 C0 FA C2 CE FE 92 C0 3E 0D 
EA E0 CE C9 C3 01 DF 3E 03 CD 05 31 0E 71 11 20 
CC D5 21 E1 B9 CD 3E 31 0E 48 11 21 DF CD 3E 31 
0E 12 11 0F DF CD 3E 31 0E 03 11 89 FF C3 3E 31
3E 03 CD 06 31 0E CE 11 E1 B9 21 7E DD CD 3F 31 
0E 29 11 18 D4 D5 CD 3F 31 21 E1 D5 34 7D 4E 09 
22 AF 3D 22 21 22 DA 35 C9 AF 3C E0 D6 21 00 DA 
CD 21 DF E5 11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 
A9 C3 CD 06 31 CD 65 CC 3E 7C 22 7A CD 65 CC 7B 
CD 65 CC 3E E3 22 1A CD 65 CC 36 7C 09 13 7D FE 
13 20 E5 CD 16 31 21 50 C4 36 ED E1 18 C2 F5 CB 
37 CD 6C CC F1 E6 0F C6 F6 F6 80 22 C9 CD 7F 37 
F0 AB 11 00 00 07 30 01 13 07 30 01 1B 07 30 03 
11 F0 FF 07 30 02 1E 10 07 C9 CD 74 CC 38 41 07 
30 0B 07 07 30 01 E9 F0 FE 83 E0 FE C9 07 30 03 
53 1E 00 19 07 30 2A E5 F0 FE CD 06 31 46 CD 74 
CC 07 07 30 01 43 07 38 0E 78 83 47 21 50 C4 36 
EC 23 CD 65 CC 18 E7 E1 70 E5 3E 05 21 0C 4E CF 
E1 C9 FA AB CE FE E1 C0 FA C2 CE FE 84 C0 3E 0D 
EA E0 CE C9 C3 01 DF 3E 03 CD 06 31 0E 71 11 20 
CC D5 21 E1 B9 CD 3F 31 0E 48 11 21 DF CD 3F 31 
0E 12 11 0F DF CD 3F 31 0E 03 11 89 FF C3 3F 31 

After you press run, the tool will generate the mail codes that you need to enter in the mail writer.

After entering every code, a new number will appear to the right of the bottom mail row. This is a checksum and is used to verify that you've correctly entered every mail. If a checksum doesn't match the one given by the tool, that means that a code was incorrectly entered, meaning you will need to redo your mail by pressing DOWN enough times (16 times if you’ve entered a full mail code) to return to the starting byte of the last mail, then entering that same mail again.

After you're finished entering all mail codes, you can press START during the user input phase in order to start up the full RAM writer.

Using the full RAM writer

After you're finished and have verified that all checksums were valid, press any button outside of A, B or DOWN during the user input phase in order to start up the full RAM writer.

Doing this will activate the following effects:

  • Save the RAM writer to the contents of box 14.
  • Add TM33 to the key item pocket, along with restoring the cancel button.
  • Install setup to make sure that using TM33 from the item pack will start the RAM writer.
  • Remove the last pokémon in your party
  • Automatically start the RAM writer.

Starting the RAM writer, either automatically or through using wrong pocket TM33, will activate the following effects:

  • Copy the necessary data to memory to activate the RAM writer.
  • Deploy setup that will enable the use of TM33 during battle.
  • Start the RAM writer.

After the full RAM writer has successfully started, press START to quit the RAM writer and make sure to save your game.

After exiting the RAM writer, you can restart the RAM writer by using TM33 from the item pack. In battle, you can activate the RAM writer by using TM33 and selecting "QUIT". Please note that the setup to enable the use of TM33 during battle does not persist between resets, you can reenable this function by using the RAM writer outside of battle at least once.

As you can see in the screenshots below, 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.

For a list of useful addresses and how to change them to achieve a desired effect, by visiting [Google Sheets document] and making a local copy, you can edit the values and determine what values you need to write at specific addresses to get that effect.

Let's go over the controls of the full RAM writer. By default, the RAM writer will open in Read mode.

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.

RAM writer in Read mode RAM writer in Write mode.

Read mode controls

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!)

Write mode controls

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