User:TimoVM/RAM Writer setups: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
No edit summary
Line 14: Line 14:


General installation overview:
General installation overview:
# Assemble 7 items to form a text converter item code.
# Assemble 8 items to form a text converter item code.
# Catch 15 pokémon (any species is fine), give 12 of them specific nicknames and store them in the currently loaded box. Use your ACE item.
# Catch 15 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.
# Use the nickname writer to write the large RAM writer in memory.
# Use the large RAM writer to finalize the setup.
# The RAM Writer will automatically take care 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.'''
'''Due to differences in memory layout, the nicknames and items used in Yellow will differ slightly from those in Red/Blue.'''
Line 27: 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.
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 locations==
==Install details==


*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.


'''NOTE: this option is NOT COMPATIBLE with VC releases of pokémon Red/Blue/Yellow'''


==Step 1: Assembling an 8-item code==
==Step 1: Assembling an 8-item code==
Line 174: Line 160:
! colspan=2 style="text-align: center;" | Red/Blue !! ! colspan=2 style="text-align: center;" | Yellow
! colspan=2 style="text-align: center;" | Red/Blue !! ! colspan=2 style="text-align: center;" | Yellow
|-
|-
! Installation at $DA96 (40 codes) !! Installation at $BA53 (10 codes) || Installation at $DAD1 (40 codes) !! Installation at $BA53 (10 codes)
! Installation for Red/Blue (50 codes) !! Installation for Yellow (50 codes)
|-
|-
| <pre>3E 01 E0 B6 E0 B7 21 00 DA CD
| <pre>21 43 0A 74 65 75 21 1E D3 36
EA DA E5 11 F8 FF 19 54 5D 01
65 01 C8 00 11 53 BA 21 BC D8
0C 00 CD 53 DB 21 A9 C3 CD DB
CD B5 00 11 65 DA D5 0E 12 C3
DA 3E 7C 22 7A CD DB DA 7B CD
B5 00 AF 3C E0 B6 E0 B7 21 00
DB DA 3E E3 22 1A CD DB DA 36
DA CD 74 C6 E5 11 F8 FF 19 54
7C 09 13 7D FE 13 20 E5 26 00
5D 01 0C 00 CD DD C6 21 A9 C3
74 21 50 C4 36 ED E1 18 C4 F5
CD 65 C6 3E 7C 22 7A CD 65 C6
CB 37 CD E2 DA F1 E6 0F C6 F6
7B CD 65 C6 3E E3 22 1A CD 65
F6 60 22 C9 CD 34 DB CB 5F 20
C6 36 7C 09 13 7D FE 13 20 E5
39 CB 57 28 0A 0F 30 01 E9 F0
26 00 74 21 50 C4 36 ED E1 18
FE 83 E0 FE C9 0F 30 2A E5 CD
C4 F5 CB 37 CD 6C C6 F1 E6 0F
53 DB 4E CD 34 DB 0F 38 12 0F
C6 F6 F6 80 22 C9 CD BE C6 CB
30 01 4B 79 83 4F 21 50 C4 36
5F 20 39 CB 57 28 0A 0F 30 01
EC 23 CD DB DA 18 E8 E1 71 E5
E9 F0 FE 83 E0 FE C9 0F 30 2A
06 1C 21 CE 77 CD D6 35 E1 C9
E5 CD DD C6 4E CD BE C6 0F 38
0F 30 03 53 1E 00 19 C9 CD 31
12 0F 30 01 4B 79 83 4F 21 50
38 F0 B5 76 11 00 00 F5 07 30
C4 36 EC 23 CD 65 C6 18 E8 E1
01 13 07 30 01 1B 07 30 03 11
71 E5 06 1C 21 CE 77 CD D6 35
F0 FF 07 30 02 1E 10 F1 C9 E5
E1 C9 0F 30 03 53 1E 00 19 C9
CD 31 38 F0 B5 76 11 00 00 F5
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
07 30 01 13 07 30 01 1B 07 30
0C 00 21 AB C3 3E 7C 22 7A CD
03 11 F0 FF 07 30 02 1E 10 F1
8F BA 7B CD 8F BA 3E E3 22 1A
C9 E5 F0 FE 26 0A 74 26 40 77
CD 8F BA 36 7C 09 13 7D FE 13
E1 C9 21 43 0A 74 65 75 0E C8
11 20 C6 D5 21 53 BA C3 B5 00 </pre> || <pre>21 43 0A 74 65 75 21 1D 00 36
20 E5 21 50 C4 36 ED E1 18 CD
F5 CB 37 CD 96 BA F1 E6 0F C6
59 01 C8 00 11 53 BA 21 BB D8
F6 F6 60 22 C9 CD D4 BA CB 5F
CD B1 00 11 64 DA D5 0E 12 C3
28 02 C1 C9 CB 57 28 01 E9 0F
B1 00 AF 3C E0 B6 E0 B7 21 00
30 1D 4E E5 CD D4 BA 0F 38 12
DA CD CC C9 E5 11 F8 FF 19 54
0F 30 01 4B 79 83 4F 21 50 C4
5D 01 0C 00 CD 35 CA 21 A9 C3
36 EC 23 CD 8F BA 18 E8 E1 71
CD BD C9 3E 7C 22 7A CD BD C9
C9 0F 30 03 53 1E 00 19 C9 CD
7B CD BD C9 3E E3 22 1A CD BD
31 38 F0 B5 76 11 00 00 F5 07
C9 36 7C 09 13 7D FE 13 20 E5
30 01 13 07 30 01 1B 07 30 03
26 00 74 21 50 C4 36 ED E1 18
C4 F5 CB 37 CD C4 C9 F1 E6 0F
11 F0 FF 07 30 02 1E 10 F1 C9 </pre> || <pre>3E 01 E0 B6 E0 B7 21 00 DA CD
25 DB E5 11 F8 FF 19 54 5D 01
C6 F6 F6 80 22 C9 CD 16 CA CB
0C 00 CD 8E DB 21 A9 C3 CD 16
5F 20 39 CB 57 28 0A 0F 30 01
DB 3E 7C 22 7A CD 16 DB 7B CD
E9 F0 FE 83 E0 FE C9 0F 30 2A
16 DB 3E E3 22 1A CD 16 DB 36
E5 CD 35 CA 4E CD 16 CA 0F 38
7C 09 13 7D FE 13 20 E5 26 00
12 0F 30 01 4B 79 83 4F 21 50
74 21 50 C4 36 ED E1 18 C4 F5
C4 36 EC 23 CD BD C9 18 E8 E1
CB 37 CD 1D DB F1 E6 0F C6 F6
71 E5 06 1C 21 46 7B CD 84 3E
F6 60 22 C9 CD 6F DB CB 5F 20
E1 C9 0F 30 03 53 1E 00 19 C9
39 CB 57 28 0A 0F 30 01 E9 F0
CD 1E 38 F0 B5 76 11 00 00 F5
FE 83 E0 FE C9 0F 30 2A E5 CD
07 30 01 13 07 30 01 1B 07 30
8E DB 4E CD 6F DB 0F 38 12 0F
03 11 F0 FF 07 30 02 1E 10 F1
30 01 4B 79 83 4F 21 50 C4 36
C9 E5 F0 FE 26 0A 74 26 40 77
EC 23 CD 16 DB 18 E8 E1 71 E5
E1 C9 21 43 0A 74 65 75 0E C8
06 1C 21 46 7B CD 84 3E E1 C9
11 78 C9 D5 21 53 BA C3 B1 00 </pre>
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 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 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.
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==
==Step 4: 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.
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.
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===
===Full Writer Controls===
Line 260: Line 232:


{| class="wikitable"
{| 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]]
|[[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.
|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 280: Line 252:
A: toggle write mode
A: toggle write mode


(When installed at B9E1)
select: start executing at current address

(When installed at DD55)
select + up: sram bank -1
select + up: sram bank -1
select + down: sram bank +1
select + down: sram bank +1
Line 300: Line 268:
A: exit write mode and load final value into the address
A: exit write mode and load final value into the address
</pre>
</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==
==Asm translation of included programs/codes==