User:TimoVM/RAM Writer setups
This page serves as a repository for various RAM writer setups intended for gen 1 or gen 2. the RAM writers used are inspired by various pre-existing RAM writers, especially ZZAZZGlitch's memory writer.
Since the RAM writers described here are quite large, you will always be required to start with building a smaller, more limited RAM writer. These will then be used to build the larger RAM writer.
At the moment of writing, these setups are only usable for EN versions.
Red/Blue
Gold/Silver
General installation overview:
- Use a box name code to set every TM quantity to 255.
- Write out a mail writer program by changing TM quantities. Use a box name code to use the mail writer.
- Enter a series of mail codes in order to install the full RAM writer.
- Use the full RAM writer to finalize the setup.
Requirements
In order to install the RAM writer, you need to have an ACE setup that redirects execution to the 1st or 2nd character of box name 1. Available options are either:
- Wrong Pocket TM17 ACE using a Quagsire holding TM01 and with Return as first move.
- Coin Case ACE which uses a pokémon's EVs to redirect to the last read mail, which fixes the stack and then redirects to the start of box names. (see Glitch City Discord for details, will add more info later)
Install locations
This guides includes two possible install locations, each with advantages and disadvantages. Please note that, in both cases, you'll have to sacrifice the usage of box 14.
Installation at $DD55 (enemy party data)
Advantage:
- Able to view and edit all four sram banks.
Disadvantage:
- Can not be used during an enemy battle.
- Need to keep a copy in box data and adjust the ACE bootstrap in order to copy over the RAM writer to enemy party data.
Installation at sram bank 03, $B9E1 (Box 14)
Advantage:
- Able to use during enemy battle.
Disadvantage:
- Only able to view and edit sram bank 03, other sram banks are inaccessible during execution.
- Need to adjust ACE bootstrap to open sram bank 03 prior to executing the RAM writer.
Step 1: Setting all TM quantities to 255
Enter the following box names, then execute ACE.
Box 1: A p 'v C é 2 2 5 Box 2: 'v j 'v u é 1 2 5 Box 3: 'v ♂ é 5 2 p 'v 9 Box 4: é 4 2 p é 6 2 5 Box 5: 'v u é 8 2 'v {space} 5 Box 6: é 7 2 'v : é 9 2 Box 7: 0 9 ♀ 5 ♀ 5 5 5 Box 8: 5 5 5 5 5 5 x 'd
This will set the quantities of all 50 TMs to 255.
Step 2: Tossing TMs to form a mail writer
Toss TMs such that you get the following quantities:
TM |Final Quantity |Amount to Toss ------------------------------------------------ TM01 |x17 |x238 TM02 |x85 OR x224 |x170 OR x31 *first option if install to $DD55, second if install to $B9E1 TM03 |x221 OR x185 |x34 OR 70 *first option if install to $DD55, second if install to $B9E1 TM04 |x213 |x42 TM05 |x213 |x42 TM06 |x17 |x238 TM07 |x04 |x251 TM08 |x226 |x29 TM09 |x213 |x42 TM10 |x123 |x132 TM11 |x33 |x222 TM12 |x66 |x189 TM13 |x98 |x157 TM14 |x207 |x48 TM15 |x225 |x30 TM16 |x209 |x46 TM17 |x42 |x213 TM18 |x135 |x120 TM19 |x48 |x207 TM20 |x08 |x247 TM21 |x134 |x121 TM22 |x18 |x237 TM23 |x19 |x236 TM24 |x35 |x220 TM25 |x129 |x126 TM26 |x79 |x176 TM27 |x18 |x237 TM28 |x124 |x131 TM29 |x39 |x216 TM30 |x32 |x223 TM31 |x241 |x14 TM32 |x04 |x251 TM33 |x104 |x151 TM34 |x41 |x214 TM35 |x72 |x183 TM36 |x205 |x50 TM37 |x240 |x15 TM38 |x58 |x197 TM39 |x27 |x228 TM40 |x240 |x15 TM41 |x165 |x90 TM42 |x184 |x71 TM43 |x40 |x215 TM44 |x216 |x39 TM45 |x56 |x199 TM46 |x249 |x06 TM47 |x07 |x248 TM48 |x216 |x39 TM49 |x225 |x30 TM50 |x201 |x54
Once you've finished tossing TMs, set up box names according to the following codes. Make sure to pick the correct code for your installation:
Option 1: installing to $DD55 |Option 2: Installing to $B9E1 --------------------------------------------------------------- Box 1: A p 'v C é 'd 2 5 |Box 1: A p 'v 'd é 's 2 p Box 2: 5 5 5 5 5 5 h 'm |Box 2: 'v C é 'v 2 p 'v 7 Box 3: ♀ |Box 3: h 's pk 5 'm 5 ♀ Other box names can be left as they are.
Once everything has been double checked, you can use your ACE item in order to start up the mail writer.
Step 3: Using the mail writer
Controls
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.
Alongside these actions, the mail writer will now request user input:
- Press A to open a new mail and continue writing data
- Press DOWN to immediately jump to and start executing the newly written program
- Press any other button to safely exit the program.
Building the full RAM writer
We will be installing the full RAM writer using a series of mail codes. Please ensure you are entering the mail codes that are appropriate for the location you're installing the program to.
Mail codes for $DD55
mail #1 (59 button presses) B n o ' ; g ; : z p o e ♂ 6 6 't 'v 9 0 * 1 1 u j i i h r t t 'd u mail #2 (60 button presses) v / i r p o o e f g h q z p O N W X X ] ] d d é é 3 'l 2 U v w 'm mail #3 (59 button presses) - w w w 'r 's 6 't 't $ $ 7 $ ) / ! / u U v w 'm W x w w w o e F F Q mail #4 (59 button presses) U v [ 4 's 's o n N 3 3 L k k r r R 8 8 & & 5 5 5 o 's w v u . . , mail #5 (60 button presses) [ 4 4 3 W v w m W W v L L v 'l V b L L L U v c n c c m x X Y e o mail #6 (57 button presses) o 's w W X Y 't 'v : é é ♀ ♂ ♂ 7 7 $ 7 Z Z 's x y y w W V X Y Z Z Z mail #7 (55 button presses) 'd x y y o o q p o 's o f d d c m k k B B a a k k / - q p o 's z y mail #8 (54 button presses) b d c m n e e F Z p o 's 't : ♂ ♂ 7 7 7 - t j i . r q q p o 's o f mail #9 (64 button presses) i / - s . t k / U 3 'm m M m [ 4 3 4 x v / ! / u U v w m d c a b mail #10 (59 button presses) A po X x w 'm m n w v k j t ! T j i R R h q p o 's Y 'r 'r n y o o e mail #11 (51 button presses) T / / - / ! / k k - q Q P N n x o e o e e n n n o 's o f o x n n mail #12 (60 button presses) ) 4 X 'r x n n n o 's Y 'r x d c m k l n n o 's X 's y o q q q R R h <\pre> After you're finished and have verified that all checksums were valid, press DOWN during the user input phase in order to start up the full RAM writer.Mail codes for $B9E1
mail #1 (61 button presses) N 4 ] ké 'r W V w V m w v l k T u / ! ) 0 T U 1 1 u j i i h r t t mail #2 (56 button presses) 'd u v / l l l w v W w v L V W X w 'm 's 's : é ♂ : ♂ ♂ Z & & . - v mail #3 (60 button presses) L x x n C w w 'm W x w w Y é ♂ ♂ Z & & . q 'v 's 's o n N 3 3 L k k mail #4 (57 button presses) b 'l v w X x w v l 4 3 'm [ 4 4 3 W v w m M v v L L v 'l V L x w w mail #5 (53 button presses) J i i b c c m x X Y e o o 's w W X Y 't 'v ; . / - / ! ! U U S ? 9 mail #6 (59 button presses) u 1 X 4 w W V X Y Z Z Z o 5 y y o f g ; ; 't Z 8 ( & 8 & 't : ♂ ♂ mail #7 (62 button presses) ! U T U U ! u 'd 'd 『 [ 'r 'm M X 'r y 'r 'r 'm 'd - s - w v u . . , h . mail #8 (61 button presses) a m w x M v u t J i s u u A A pk 'd 'd / - q p o 's Y 'r 'r n y o o e mail #9 (51 button presses) T / / - / ! / k k - q Q P N n x o e o e e n n n o 's o f o x n n mail #10 (60 button presses) ) 4 X 'r x n n n o 's Y 'r x d c m k l n n o 's X 's y o q q q R R h <\pre> After you're finished and have verified that all checksums were valid, press DOWN during the user input phase in order to start up the full RAM writer.Step 4: Using the full RAM writer
Let's go over the controls of the full RAM writer. By default, the RAM writer will open in view mode.Full Writer Controls
View 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 progam A: toggle write mode * When installed at B9E1 select: start executing at current address * When installed at DD55 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 <\pre>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 <\pre>