Jump to content

User:TimoVM/RAM Writer setups: Difference between revisions

m
 
(39 intermediate revisions by 2 users not shown)
Line 14:
 
General installation overview:
# Assemble 78 items to form a text converter item code.
# Catch 1514 pokémon (any species is fine), give 12 of them specific nicknames and store them in the currently loaded box. Use your ACE item.
# Use the nickname writer to write the large RAM writer in memory.
# UseThe theRAM largeWriter RAMwill writerautomatically totake finalizecare of the final setup. upon first execution
 
'''Due to differences in memory layout, the nicknames and items used in Yellow will differ slightly from those in Red/Blue.'''
Line 27:
Alongside this ACE setup, you will also need to set up [[Dry underflow glitch|inventory underflow]] to access item slots beyond the usual 20 slots available.
 
==Install locationsdetails==
 
*The RAM writer itself will be installed in sram bank 3, at address BA53 onward.
This guides includes two possible install locations, each with advantages and disadvantages.
*The setup will automatically add the glitch item 4F to your party, along with the necessary bootstrap to use the RAM writer with 4F.
 
*Upon using 4F, the RAM writer will be copied over to a specific temporary location in RAM, then executed.
===Installation at $DA96 (current box)===
*For Red/Blue, the RAM writer will be buffered from C620 onward.
 
*For Yellow, the RAM writer will be buffered from C978 onward.
Advantage:
* Able to view and edit all four sram banks.
 
Disadvantage:
* Need to have the current box loaded in in order to be able to use the RAM writer
 
===Installation at sram bank 03, $BA53 (unused save data)===
 
Advantage:
* Can freely swap out boxes
Disadvantage:
* Only able to view and edit sram bank 03, other sram banks are inaccessible during execution.
 
==Step 1: Assembling an 8-item code==
Line 108 ⟶ 97:
This item code looks at the nicknames of the pokémon in the currently stored box, then uses pairs of text characters to write a new program. After it finishes, it immediately jumps to execute the newly written program.
 
==Step 2: Catching and nicknaming 1514 pokémon to build a nickname writer==
 
The item code we have assembled converts nicknames into code, which means we'll have to catch pokémon with the right nicknames to do something useful. The pokémon we'll be catching will be stored in a storage box. Make sure the box you pick fulfils the following requirements:
 
* The box needs to be set as the active box.
* If on VC, doit NOTis recommended to not pick box 1 since that's the box Poké Transporter connects to.
 
Once that is done, we will fill the box with nicknamed pokémon. We'll be making a list with nicknames using Scottey's nickname converter tool. Simply copy paste the entire code below into the converter, then press the "Run" button to display the list of nicknames. '''Ignore the checksums for now.'''
Line 124 ⟶ 113:
! Red/Blue !! Yellow
|-
! Nickname writer (1514 codes) || Nickname writer (1514 codes)
|-
| <pre>00 00 00 00 00 11 969C DAD8 D5 D5 06 01 21 5C 65
CD06 D6 35 0E 8001 21 4B 0A 745C 65 77CD 26D6 CF35 D10E 2A80
21 4B CF D1 2A 87 30 09 86 12 13 23 81 12 4F 18 F3 21 29 C4
0E13 0123 D581 CD12 DF4F 1518 CDF3 3121 3829 D1 F0 B5 A7 28 EEC4
0E 01 D5 CD DF 15 CD 31 38 D1
0F 38 CA 0F 38 06 0F D0 1B 1B 1B 1B 1B 18 DF</pre>||<pre>00 00 00 00 00 11 D1 DA D5 D5 06 01 21 CD 62
CDF0 84B5 3EA7 0E28 80EE 210F 4A 0A 74 65 77 2638 CF D11B 2A0F
8738 30E7 090F 86D0 121B 131B 231B 811B 1218 4FC3 18</pre>||<pre>00 F300 2100 00 C400 11 9B D8 D5 D5
0E06 01 D521 CD BF 1362 CD 1E84 383E D1 F0 B5 A7 280E EE80
21 4A CF D1 2A 87 30 09 86 12
0F 38 CA 0F 38 06 0F D0 1B 1B 1B 1B 1B 18 DF </pre>
13 23 81 12 4F 18 F3 21 29 C4
0E 01 D5 CD BF 13 CD 1E 38 D1
F0 B5 A7 28 EE 0F 38 CF 1B 0F
38 E7 0F D0 1B 1B 1B 1B 18 C3 </pre>
|}
 
Line 152 ⟶ 145:
 
During the input phase, the controls are as follows:
* '''Press BA''' for the program to ask for a new nickname and convert that to the next five bytes to be written.
* '''Press DOWNSELECT''' to go back onefive bytebytes atand ask for a timenew nickname to correct errors. '''IfUse this if the printed checksum doesn'tdoes not match the expectedpredicted checksum, pressand DOWNthe 16last timeswritten tonickname retrycontained theten last mailcharacters.''' 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.
* '''Press B''' to go back one byte at a time. The checksum will automatically be overwritten by the value written at the current selected address, giving you a measure of how far back you're going. '''This function is only needed if you accidentally confirmed a nickname without writing all 10 characters.'''
* '''Press any other button (except A)''' to immediately start executing the newly written program. '''Only do this when you've finished writing everything.'''
 
Line 161 ⟶ 155:
![[File:RB Name writer write mode.png|thumb]]!![[File:RB Name writer input mode.png|thumb]]
|-
| Press select to switch between uppercase/lowercase || MChecksum andis Odisplayed ofright POKéMONnext replacedto by the checksumITEM
|}
 
Line 169 ⟶ 163:
|+ Codes to be used with [https://scotteh.me/ace/nick Scotteh's mail code tool]
|-
! Installation for Red/Blue (50 codes) !! Installation for Yellow (50 codes)
! colspan=2 style="text-align: center;" | Red/Blue !! ! colspan=2 style="text-align: center;" | Yellow
|-
| <pre>3E 03 CD 7A D9 21 1E D3 36 59
! Installation at $DA96 (40 codes) !! Installation at $BA53 (10 codes) || Installation at $DAD1 (40 codes) !! Installation at $BA53 (10 codes)
01 C8 00 11 53 BA 21 BB D8 CD
|-
|B5 <pre>3E00 0111 E065 B6DA E0D5 B70E 2113 00 DAC3 CDB5
EA00 DAAF E53C 11E0 F8B6 FFE0 19B7 5421 5D00 01DA
0CCD 0074 CDC6 53E5 DB11 21F8 A9FF C319 CD54 DB5D
DA01 3E0C 7C00 22CD 7ADD CDC6 DB21 DAA9 7BC3 CD
DB65 DAC6 3E E37C 22 1A7A CD DB65 DAC6 367B
7CCD 0965 13C6 7D3E FEE3 1322 201A E5CD 2665 00C6
7436 217C 5009 C413 367D EDFE E113 1820 C4E5 F526
CB00 3774 CD21 E250 DAC4 F136 E6ED 0FE1 C618 F6C4
F6F5 60CB 22 C937 CD 346C DBC6 CBF1 E6 5F0F 20C6
39F6 CBF6 5780 2822 0AC9 0FCD 30BE 01C6 E9CB F05F
FE20 8339 E0CB FE57 C928 0A 0F 30 2A E501 CDE9
53F0 DBFE 4E83 CDE0 34FE DBC9 0F 3830 122A 0FE5
30CD 01DD 4BC6 794E 83CD 4FBE 21C6 500F C438 3612
EC 23 CD DB DA 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 E5
F0 FE 26 0A 74 26 40 77 E1 C9</pre> || <pre>3E 01 E0 B6 E0 B7 21 00 DA CD
9E BA E5 11 F8 FF 19 54 5D 01
0C 00 21 AB C3 3E 7C 22 7A CD
8F BA 7B CD 8F BA 3E E3 22 1A
CD 8F BA 36 7C 09 13 7D FE 13
20 E5 21 50 C4 36 ED E1 18 CD
F5 CB 37 CD 96 BA F1 E6 0F C6
F6 F6 60 22 C9 CD D4 BA CB 5F
28 02 C1 C9 CB 57 28 01 E9 0F
30 1D 4E E5 CD D4 BA 0F 38 12
0F 30 01 4B 79 83 4F 21 50 C4
36 EC 23 CD 8F65 BAC6 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 </pre> || <pre>3E 01 E0 B6 E0 B7 21 00 DA CD
25F0 DBFE E5 1126 F80A FF74 1926 5440 5D77 01E1
0CC9 0021 CD43 8E0A DB74 2165 A936 C303 CD0E 16C8
11 20 C6 D5 21 53 BA C3 B5 00 </pre>|| <pre>21 43 0A 74 65 75 21 1D D3 36
DB 3E 7C 22 7A CD 16 DB 7B CD
1659 DB01 3EC8 E300 2211 1A53 CDBA 1621 DBBB 36D8
7CCD 09B1 1300 7D11 FE64 13DA 20D5 E50E 2612 00C3
74B1 2100 50AF C43C 36E0 EDB6 E1E0 18B7 C421 F500
CB 37DA CD 1DCC C9 DBE5 F111 E6F8 0FFF C619 F654
F65D 6001 220C C900 CD 6F35 DBCA CB21 5FA9 20C3
39CD CBBD 57C9 283E 0A7C 0F22 307A 01CD E9BD F0C9
FE7B 83CD E0 FEBD C9 0F3E 30E3 2A22 E51A CD BD
8EC9 DB36 4E7C CD09 6F13 DB7D 0FFE 3813 1220 0FE5
3026 0100 4B 79 83 4F74 21 50 C4 36 ED E1 18
ECC4 23F5 CDCB 1637 DBCD 18C4 E8C9 E1F1 71E6 E50F
06C6 1CF6 21F6 4680 7B22 C9 CD 8416 3ECA E1 C9CB
0F5F 3020 0339 53CB 1E57 0028 190A C90F CD30 1E01
38E9 F0 B5FE 7683 11E0 00FE 00C9 F5 070F 30 2A
01E5 13CD 0735 30CA 014E 1BCD 0716 30CA 030F 1138
F012 FF 070F 30 0201 4B 1E79 1083 F14F C921 E550
C4 36 EC 23 CD BD C9 18 E8 E1
F0 FE 26 0A 74 26 40 77 E1 C9 </pre> || <pre>3E 01 E0 B6 E0 B7 21 00 DA CD
9E BA71 E5 1106 1C F821 FF46 197B 54CD 5D84 013E
0CE1 00C9 210F AB30 C303 3E53 7C1E 2200 7A19 CDC9
8FCD BA1E 7B38 CDF0 8FB5 BA76 3E11 E300 2200 1AF5
CD07 8F30 BA01 3613 7C07 0930 1301 7D1B FE07 1330
2003 E511 21F0 50FF C407 3630 ED02 E11E 1810 CDF1
F5C9 CBE5 37F0 CDFE 9626 BA0A F174 E626 0F40 C677
F6E1 F6C9 6021 2243 C90A CD74 D465 BA75 CB0E 5FC8
2811 02 C178 C9 CBD5 21 5753 28BA 01C3 E9B1 0F00 </pre>
30 1D 4E E5 CD D4 BA 0F 38 12
0F 30 01 4B 79 83 4F 21 50 C4
36 EC 23 CD 8F BA 18 E8 E1 71
C9 0F 30 03 53 1E 00 19 C9 CD
1E 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 </pre>
|}
 
Once all codes have been entered and verified, you can press any button (with the exception of A, B and DOWN) during input mode to start up the full RAM writer.
 
==Step 4: Using the full RAM writer and finalising the setup==
 
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===
Line 257 ⟶ 235:
 
{| class="wikitable"
|[[file:Full RB DA96 Read mode.png|288px]]||[[file:Full_RB_DA96_Write_mode.png|288px]]||[[file:Full RB BA53 Read mode.png|288px]]||[[file:Full RB BA53 Write mode.png|288px]]
|-
|RAM writer in Read mode ||RAM writer in Write mode.
|RAM writer installed at $DA96 in Read mode ||RAM writer installed at $DA96 in Write mode. Note the arrow pointing at the current address turning white. ||RAM writer installed at $BA53 in Read mode. Note the absence of sram bank number at the top of the screen. ||RAM writer installed at $BA53 in Write mode. Note the arrow pointing at the current address turning white.
|}
 
Line 277 ⟶ 255:
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
Line 297 ⟶ 271:
A: exit write mode and load final value into the address
</pre>
 
===Finalising the setup===
 
Now that we have access to the full RAM writer, we'll be changing some values in order to ensure that our RAM writer is saved and properly accessible by using a specific ACE item. Once more, the details of this process will differ depending on the location you installed the writer at and the exact version
 
'''If you accidentally exit the RAM writer prematirely, use your ACE item to start the mail writer, enter an empty name by pressing start, then exit the mail writer to jump to the RAM writer.'''
 
Prior to following these next steps, make sure to have a useless item in slot #2 of the item pocket.
 
====Red/Blue====
 
*First, we'll be adding 4F to your bag by adjusting the following value with the RAM writer. '''This part can be skipped if you already have 4F in your bag'''
 
{| class=wikitable width=410 align=center
|Set the value at $D320 to $59
|}
 
*Next, from address $DA65 onward, add the following values depending on your install location:
 
{| class=wikitable width=410 align=center
! RAM writer installed to $DA96 !! RAM writer installed to $BA53
|-
|C3 96 DA || 21 43 0A 74 65 75 C3 53 BA
|}
 
From now on, you can simply use 4F in your item pocket to start up the RAM writer.
 
====Yellow====
 
*First, we'll be adding an ACE item to your bag by adjusting the following value with the RAM writer. '''This part can be skipped if you already have 4F in your bag'''
 
{| class=wikitable width=410 align=center
! RAM writer installed to $DAD1 !! RAM writer installed to $BA53
|-
|Set the value at $D320 to $59 || Set the value at $D320 to $59
|}
 
*Next, from address $DA64 onward, add the following values depending on your install location:
 
{| class=wikitable width=410 align=center
! RAM writer installed to $DA96 !! RAM writer installed to $BA53
|-
| No writes needed || 21 43 0A 74 65 75 C3 53 BA
|}
 
From now on, you can simply use fm (if you installed to $DAD1) or 4F (if you installed to $BA53) in your item pocket to start up the RAM writer.
 
==Asm translation of included programs/codes==
Note: these are not yet up to date
 
===7-item code nickname converter===
Line 751 ⟶ 680:
30 01 13 07 30 01 1B 07 30 03 11 F0 FF 07 30 02 1E 10 F1 C9 }}
 
=Gold/Silver/Crystal=
 
General installation overview:
Line 761 ⟶ 690:
==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:
 
For Gold & Silver:
 
* [[User:TimoVM/Coin_Case_ACE_with_stat_xp_redirection|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.
* Wrong Pocket TM17 ACE using a Quagsire holding TM01 and with Return as first move.
For Crystal:
 
* [[User:TimoVM/TMless_0x1500_ACE|TMless 0x1500 ACE setup]] which uses a bad clone and a pokémon with specific EVs to redirect to the last read mail, which redirects to the start of box names.
* (TODO: add Zodiac's page and/or LuckyTyphlosion's setup)
 
Next, make sure to take care of the following:
* Make sure to empty box 14 of any pokémon you wish to keep. We'll be installing the full RAM writer in the data for box 14, meaning everything inside it will have its data overwritten.
* PutFor Crystal, put any item that you can afford to lose in the first slot of your item pack. This item will be changed to a TM33TM15 at the end ofduring the setup.
 
==Step 1: Setting all TM quantities to 255==
[[File:All TMs box codes.png|thumb|150px|right|Edit the first eight box names until they form the following code.]]
Enter the following box names, then execute ACE.
 
Enter the following box names. After preparations are complete, execute ACE.
<pre>
 
{| class="wikitable"
|+ Caption text
|-
! Gold & Silver !! Crystal
|-
| <pre>
Box 1: A p 'v C é 2 2 5
Box 2: 'v j 'v u é 1 2 5
Line 783 ⟶ 723:
Box 7: 0 9 ♀ 5 ♀ 5 5 5
Box 8: 5 5 5 5 5 5 x 'd
</pre> || | <pre>
Box 1: p 'v 9 é 'd 5 'v *
Box 2: é H 5 'v ♂ é G 5
Box 3: A 4 é m 5 'v 9 5
Box 4: é k 5 F é 'l 5 F
Box 5: 0 B 's 'v 5 u 'v c
Box 6: é n 5 's k 5 'v B
Box 7: 'd 5 5 2 p é 'm 5
Box 8: 'v 'd é 't 5 'v ♂ 5
Box 9: é 's 5 é n 5 v 5
Box 10: 'v L é T 2 0 9 5
Box 11: 5 5 5 5 'm 5 5 ♀
Box 12: 'v F 's k 5 F ? E
Box 13: 's k 5 * 'm k 5 5
</pre>
|}
 
This will set the quantities of all 50 TMs to 255. For Crystal, this will also change the first item to a TM15 and install a bootstrap to redirect execution to the TM/HM pocket. Do not use this TM15 yet.
 
===What to do now you have 255 of every TM===
 
At this moment, there are two main options.
This will set the quantities of all 50 TMs to 255.
# 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 [[User:TimoVM/TM_codes | this page]]. (Currently only supported for Gold/Silver)
# You can continue with the guide and build a RAM writer in order to achieve near-complete ACE control.
 
==Step 2: Selling TMs to form a mail writer==
 
Sell TMs such that you get the following quantities:
 
[[File:Mail writer TM codes.png|150px|thumb|right|Sell or toss TMs until the quantities match the following amounts.]]
===Version independent TMs===
 
{| class="wikitable"
! TM !! Final Quantity !! Amount to sell || Sell value
|-
|TM01 DYNAMICPUNCH ||x17 ||x238357000 ||357000
|-
|TM02 HEADBUTT ||x85 Colspan = "2" ||x170 SEE NEXT TABLE ||170000
|-
|TM03 CURSE ||x221 Colspan = "2" ||x34 ||51000 SEE NEXT TABLE
|-
|TM04 ROLLOUT ||x213 ||x42 ||42000
|-
|TM05 ROAR ||x213 ||x42 ||21000
|-
|TM06 TOXIC ||x213 ||x42 ||63000
|-
|TM07 ZAP CANNON ||x62x33 ||x193222000 ||193000
|-
|TM08 ROCK SMASH ||x04 Colspan = "2" ||x251 SEE NEXT TABLE ||125500
|-
|TM09 PSYCH UP ||x33 Colspan = "2" ||x222 ||111000 SEE NEXT TABLE
|-
|TM10 HIDDEN POWER ||x66x207 ||x18972000 ||283500
|-
|TM11 SUNNY DAY ||x98x225 ||x157 ||15700030000
|-
|TM12 SWEET SCENT ||x207x209 ||x4823000 ||24000
|-
|TM13 SNORE ||x225x42 ||x30 ||15000106500
|-
|TM14 BLIZZARD ||x209x254 ||x46 ||690001500
|-
|TM15 HYPER BEAM ||x42x80 ||x213262500 ||319500
|-
|TM16 ICY WIND ||x135x56 ||x120298500 ||180000
|-
|TM17 PROTECT ||x48x251 ||x207 ||3105006000
|-
|TM18 RAIN DANCE ||x07x40 ||x248215000 ||248000
|-
|TM19 GIGA DRAIN ||x134x10 ||x121367500 ||181500
|-
|TM20 ENDURE ||x18x135 ||x237180000 ||355500
|-
|TM21 FRUSTRATION ||x19x134 ||x23660500 ||118000
|-
|TM22 SOLARBEAM ||x129x18 ||x126355500 ||189000
|-
|TM23 IRON TAIL ||x79x19 ||x176354000 ||264000
|-
|TM24 DRAGONBREATH ||x18x35 ||x237330000 ||355500
|-
|TM25 THUNDER ||x42x129 ||x213126000 ||213000
|-
|TM26 EARTHQUAKE ||x39x79 ||x216264000 ||324000
|-
|TM27 RETURN ||x32x18 ||x223118500 ||111500
|-
|TM28 DIG ||x242x24 ||x13 ||13000231000
|-
|TM29 PSYCHIC ||x33x239 ||x222 ||22200016000
|-
|TM30 SHADOW BALL ||x1x33 ||x254333000 ||381000
|-
|TM31 MUD-SLAP ||x196x1 ||x59381000 ||88500
|-
|TM32 DOUBLE TEAM ||x77 Colspan = "2" ||x178 SEE NEXT TABLE ||178000
|-
|TM33 ICE PUNCH ||x205x77 ||x50267000 ||75000
|-
|TM34 SWAGGER ||x240x205 ||x15 ||750025000
|-
|TM35 SLEEP TALK ||x58 Colspan = "2" ||x197 SEE NEXT TABLE ||98500
|-
|TM36 SLUDGE BOMB ||x27 Colspan = "2" ||x228 SEE NEXT TABLE ||114000
|-
|TM37 SANDSTORM ||x205x27 ||x50228000 ||50000
|-
|TM38 FIRE BLAST ||x144x205 ||x11150000 ||111000
|-
|TM39 SWIFT ||x55 Colspan = "2" ||x200 ||200000 SEE NEXT TABLE
|-
|TM40 DEFENSE CURL ||x240 Colspan = "2" ||x15 SEE NEXT TABLE ||7500
|-
|TM41 THUNDERPUNCH ||x171x189 ||x8499000 ||126000
|-
|TM42 DREAM EATER ||x189x40 ||x66322500 ||99000
|-
|TM43 DETECT ||x40x217 ||x215 ||10750019000
|-
|TM44 REST ||x216x56 ||x39 ||58500298500
|-
|TM45 ATTRACT ||x56x240 ||x199 ||29850022500
|-
|TM46 THIEF ||x238x254 ||x17 ||255001500
|-
|TM47 STEEL WING ||x7x08 ||x248 ||372000370500
|-
|TM48 FIRE PUNCH ||x208x200 ||x4782500 ||70500
|-
|TM49 FURY CUTTER ||x24 ||x231 ||346500
|-
|TM50 NIGHTMARE ||x241x242 ||x14 ||1400013000
|}
 
===WhatVersion to do in case you sell too manydependent TMs===
 
If you accidentally sell too much any TM, you can use the following box name code to set that TM back to x255:
 
{| class="wikitable"
! Rowspan = "2" | TM || Colspan = "2" | Gold & Silver || Colspan = "2" | Crystal
!Box number !! Box name
|-
| Box 1 || A p 0 9 é _ ♀ 'd
|-
! Final Quantity !! Sell value !! Final Quantity !! Sell value
| Other || Can be left as they are
|}
 
</pre>
Replace _ with the character that corresponds to the TM you want to set to x255:
{| class="wikitable"
! TM !! character
|-
|TM02 HEADBUTT ||x85 ||170000||x128 ||127000
| TM02 || (space)
|-
|TM03 CURSE ||x221 ||51000||x210 ||67500
| TM03 || A
|-
|TM08 ROCK SMASH ||x66 ||94500 ||x117 ||69000
| TM04 || B
|-
|TM09 PSYCH UP ||x98 ||78500 ||x94 ||80500
| TM05 || C
|-
|TM32 DOUBLE TEAM ||x196 ||59000 ||x197 ||58000
| TM06 || D
|-
|TM35 SLEEP TALK ||x239 ||8000 ||x204 ||25500
| TM07 || E
|-
|TM36 SLUDGE BOMB ||x58 ||98500 ||x56 ||99500
| TM08 || F
|-
|TM39 SWIFT ||x144 ||111000 ||x75 ||180000
| TM09 || G
|-
|TM40 DEFENSE CURL ||x55 ||100000 ||x53 ||101000
| TM10 || H
|-
| TM11 || I
|-
| TM12 || J
|-
| TM13 || K
|-
| TM14 || L
|-
| TM15 || M
|-
| TM16 || N
|-
| TM17 || O
|-
| TM18 || P
|-
| TM19 || Q
|-
| TM20 || R
|-
| TM21 || S
|-
| TM22 || T
|-
| TM23 || U
|-
| TM24 || V
|-
| TM25 || W
|-
| TM26 || X
|-
| TM27 || Y
|-
| TM28 || Z
|-
| TM29 || (
|-
| TM30 || )
|-
| TM31 || :
|-
| TM32 || ;
|-
| TM33 || [
|-
| TM34 || ]
|-
| TM35 || a
|-
| TM36 || b
|-
| TM37 || c
|-
| TM38 || d
|-
| TM39 || e
|-
| TM40 || f
|-
| TM41 || g
|-
| TM42 || h
|-
| TM43 || i
|-
| TM44 || j
|-
| TM45 || k
|-
| TM46 || l
|-
| TM47 || m
|-
| TM48 || n
|-
| TM49 || o
|-
| TM50 || p
|}
 
===What to do now you have sold TMs===
 
Once you've finished selling TMs, set up box names according to the following codes. This code will redirect execution from box names to TMs.
 
[[File:Redirect to TMs codes.png|thumb|right|Enter box names such that they match the above codes in-game.]]
'''For Crystal, you already have a TM15 that will redirect execution to the TM/HM pocket, meaning you can skip setting up this box code.'''
 
{| class="wikitable"
Line 1,020 ⟶ 895:
| Box 1 || A p 'v C é 'd 2 5
|-
| Box 2 || 5 5 5 5p 5'v 56 h 'm
|-
| Box 3 || ♀
Line 1,026 ⟶ 901:
| Other || 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. '''Make sure to save prior to this step. Once you start the mail writer you'll need to finish writing all mail codes before you have an opportunity to save again.'''
 
==Step 3: Using the mail writer==
 
Once everything has been double checked, you can use your ACE item (In Crystal, use TM15) in order to start up the mail writer. '''Make sure to save prior to this step. Once you start the mail writer you'll need to finish writing all mail codes before you have an opportunity to save again.'''
 
===Controls===
Line 1,038 ⟶ 913:
 
Alongside these actions, the mail writer will now request user input:
* '''Press A + BSELECT''' together 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 DOWN''' 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.
* '''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.
* '''Press any other button''' to immediately jump to and start executing the newly written program. '''Only use this when you've finished every mail.'''
 
{| class="wikitable"
Line 1,055 ⟶ 930:
|+ Codes to be used with [https://scotteh.me/ace/mail/ Scotteh's mail code tool]
|-
! InstallationGold at& $DD55Silver (18 codes) || Crystal (18 codes)
|-
| <pre>3E 03 CD E1 30 0E CE 11 E1 B9 21 747A DD CD 1A 31
0E 2D 11 18 D4 D5 CD 1A 31 3E21 E1 EAD5 B834 D57D C94E AF09
22 AF 3D 22 C9 AF 3C E0 D6 21 00 DA CD 21 DF E5 11 F8 FF 19 54 5D
11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 A9 C3 CD E1 30 CD 65 CC 3E 7C
22 7A30 CD 65 CC 7B3E 7C 22 7A CD 65 CC 3E E3 22 1A7B CD 65 CC 3E
E3 22 1A CD 65 CC 36 7C 09 13 7D FE 13 20 E5 CD F1 30 21 50 C4 36
F1 30 21 50 C4 36 ED E1 18 C2 F5 CB 37 CD 6C CC F1 E6 0F C6 F6 F6
F1 E6 0F C6 F6 F6 80 22 C9 CD 90 37 F0 AB 11 00 00 07 30 01 13 07F0
AB 07 30 01 1B13 07 30 0301 11 F0 FF1B 07 30 0203 1E11 10F0 07FF C907
30 02 1E 10 07 C9 CD 74 CC 38 41 07 30 0B 07 07 30 01 E9 F0 FE 83
30 01 E9 F0 FE 83 E0 FE C9 07 30 03 53 1E 00 19 07 30 2A E5 F0 FE
07 30 2A E5 F0 FE CD E1 30 46 CD 74 CC 07 07 30 01 43 07 38 0E 78
01 43 07 38 0E 78 83 47 21 50 C4 36 EC 23 CD 65 CC 18 E7 E1 70 E5
CC 18 E7 E1 70 E5 3E 05 21 FD 4D CF E1 C9 FA AB CE FE E1 C0 FA C2
CE FE E1 C0 FA C2 CE FE 90 C0 3E 0D EA E0 CE C9 C3 01 DF 3E 03 CD
C3 01 DF 3E 03 CD E1 30 0E 71 11 20 CC D5 21 E1 B9 CD 1A 31 0E 48
11 21 DFB9 CD 1A 31 0E 1248 11 0F21 DF CD 1A 31 0E 0312 11 0F
DF CD 1A 31 0E 03 11 8A FF CD 1A 31 AF E0 89 C9 </pre>||<pre>3E 03 CD CB 2F 0E D0 11 E1 B9 21 A6 D2 CD 26 30
0E 2A 11 47 DA D5 CD 26 30 21 BC D8 34 3E D0 4E
09 22 AF 3D 22 C9 AF 3C E0 D4 21 00 DA CD 21 C0
E5 11 F8 FF 19 54 5D 01 0C 00 F0 FE 21 A9 C4 CD
CB 2F CD 65 CD 3E 7C 22 7A CD 65 CD 7B CD 65 CD
3E E3 22 1A CD 65 CD 36 7C 09 13 7D FE 13 20 E5
CD E1 2F 21 50 C5 36 ED E1 18 C2 F5 CB 37 CD 6C
CD F1 E6 0F C6 F6 F6 80 22 C9 CD 4B 35 11 00 00
F0 A9 07 30 01 13 07 30 01 1B 07 30 03 11 F0 FF
07 30 02 1E 10 07 C9 FA 74 CF FE D0 C0 FA 8B CF
FE 90 C0 3E 0D EA A9 CF C9 CD 74 CD 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 CB 2F 46 CD 74 CD
07 07 30 01 43 07 38 0E 78 83 47 21 50 C5 36 EC
23 CD 65 CD 18 E7 E1 70 E5 3E 05 21 13 4E CF E1
C9 20 8B C3 00 C0 3E 03 CD CB 2F 0E 71 11 20 CD
D5 21 E1 B9 CD 26 30 0E 5A 11 0F C0 CD 26 30 0E
05 11 F9 FF CD 26 30 3E 70 E0 88 3E 18 E0 87 C9 </pre>
|}
 
After you press run, the tool will generate the mail codes that you need to enter in the mail writer. After you're finished entering all mail codes, you can press DOWN during the user input phase in order to start up the full RAM 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 timetimes (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 any button outside of A, B or DOWN during the user input phase in order to start up the full RAM writer.
 
==Step 4: Activating the RAM writer==
Line 1,088 ⟶ 982:
 
* Save the RAM writer to the contents of box 14.
* ChangeAdd theTM33 first(G/S) itemor slotTM17 in(C) yourto itemthe packKey toItem TM33pocket.
* Install setup to make sure that using TM33/TM17 from the key item packpocket will start the RAM writer.
* Automatically start the RAM writer.
 
Starting the RAM writer, either automatically or through using wrong pocket TM33/TM17, 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/TM17 during battle.
* Start the RAM writer.
 
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/TM17 and selecting "QUIT". Please note that the setup to enable the use of TM33/TM17 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.
Line 1,508 ⟶ 1,402:
C9 ret ; due to earlier push, jump to CC20
</pre>
 
=Crystal=
 
 
1,540

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.