Guides:SRAM Glitch ACE Setups (Yellow): Difference between revisions
Guides:SRAM Glitch ACE Setups (Yellow) (view source)
Revision as of 00:42, 13 March 2024
, 2 months agono edit summary
mNo edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 323:
* Press SELECT to exit the Nickname Writer safely.
From this point onward, whenever you use the ACE item, you should be able to open the nickname writer. Please make sure to keep note of the following:
* Since the Nickname Writer works independently of the current active box, you can change the current active box however much you like.
*
The program works as follows:
Line 334:
* This nickname then gets converted to a sequence of five bytes.
* All five bytes are written starting from the starting location
* The program displays a glitched overworld view, along with a checksum (sum of all written byte values) towards the top right of the screen to confirm that you correctly entered the code. '''If the printed checksum doesn't match the expected checksum, you made a mistake entering a code.''' The glitched overworld view is temporary and will not affect your game.
* Afterwards, it waits for the user to decide what to do.
Line 346:
! Write mode !! Input mode
|-
! [[File:RB Name writer write mode.png
! [[File:RB Name writer input mode.png]]
|-
|
|}
Line 518 ⟶ 519:
q p y y ] z y p g F
a Pk j ? t K K b c c
P x w v
A B r q x Pk z g g h
i z , [ o w o x w x
( ) ) ) ) , , ] ] .
j ! U ? ? u w v u !
a Pk
</pre>
|| <pre>
Line 533 ⟶ 534:
q p y y o ) ] Pk ) )
a - ä s t K K b c c
A B Ä S ü ü Ü U u L
T - - Ä Ä S Z Pk z r
Q p ) ) ) , , ] ] .
Ä z y [ ♀ W w v ü ü
</pre>
|| <pre>
Line 548 ⟶ 549:
q p y y ] z y p g F
u u j ? t K K b c c
P x w v
A B r q x Pk z g g h
i z , [ o w o x w x
( ) ) ) ) , , ] ] .
j ! U ? ? u w v u !
</pre>
|| <pre>
Line 563 ⟶ 564:
q p y y ] z y p g F
a - j ? t K K b c c
P x w v
A B r q x Pk z g g h
i z , [ o w o x w x
( ) ) ) ) , , ] ] .
j ! U ? ? u w v u !
a Pk
</pre>
|}
Line 581 ⟶ 582:
===Explanation===
The item code itself consists of two components. The first 10 items are used to write a program that takes text characters from the nicknames of characters currently within the active box, converts them, then writes the resulting values to unused memory starting from $
Pairs of text characters are converted to single values through a [(2a + b)%256] formula, where a is the value of the first character and b the value of the second. text terminators are skipped, the code will stop and execute the newly written code once it either reads a $00 value or if values are being read past $DEFF.
<pre>
11
D5 push de
21
.loop
2A ldi a, (hl)
Line 604 ⟶ 605:
</pre>
The last item, the
===Raw Assembly===
<pre>
11
D6 D5 TM14 x213
21
DA 2A TM22 x42
03 87 Great Ball x135
Line 620 ⟶ 621:
F4 C9 TM44 x201
</pre>
Line 643 ⟶ 644:
==4F Boostrap Nicknames==
This set of nicknames, when converted, will modify item #1's ID to be 4F and writes a bootstrap so that using it will lead to execution of the item code from $
<pre>
Line 669 ⟶ 670:
===Explanation===
Using 4F, an invalid item, will cause the game to index the item effects table out of bounds, leading to an invalid execution pointer. For 4F, this causes the game to execute code from $
<pre>
Line 690 ⟶ 691:
<pre>
11
D5 push de
.newMail
D5 push de
21 1E 63 ld hl, AskName + 39h ; Prepares data and calls DisplayNamingScreen
CD 1A 39 call $391A ; sets b to 01, then jumps to Bankswitch, calling b:hl
0E 80 ld c, $80 ; Ensure checksum consistency
Line 713 ⟶ 714:
.terminator
D5 push de
21
CD BC 13 call PrintBCDNumber.loop
.numLoop
Line 741 ⟶ 742:
<pre>
11
D5 push de
.newMail
D5 push de
21 AA 62 ld hl, AskName + 39h ; Prepares data and calls DisplayNamingScreen
CD 1C 39 call $391C ; sets b to 01, then jumps to Bankswitch, calling b:hl
0E 80 ld c, $80 ; Ensure checksum consistency
Line 764 ⟶ 765:
.terminator
D5 push de
21
CD BF 13 call PrintBCDNumber.loop
.numLoop
Line 792 ⟶ 793:
<pre>
11
D5 push de
.newMail
D5 push de
21 E4 62 ld hl, AskName + 39h ; Prepares data and calls DisplayNamingScreen
CD 15 39 call $3915 ; sets b to 01, then jumps to Bankswitch, calling b:hl
0E 80 ld c, $80 ; Ensure checksum consistency
Line 815 ⟶ 816:
.terminator
D5 push de
21
CD BF 13 call PrintBCDNumber.loop
.numLoop
Line 843 ⟶ 844:
<pre>
11
D5 push de
.newMail
D5 push de
21 DC 62 ld hl, AskName + 39h ; Prepares data and calls DisplayNamingScreen
CD 1C 39 call $391C ; sets b to 01, then jumps to Bankswitch, calling b:hl
0E 80 ld c, $80 ; Ensure checksum consistency
Line 866 ⟶ 867:
.terminator
D5 push de
21
CD BF 13 call PrintBCDNumber.loop
.numLoop
Line 896 ⟶ 897:
<pre>
11
21
39 0E 80 21 4F
CF D1 2A 87 30
09 86 12 13 23
81 12 4F 18 F3
D5 21
01 CD BC 13 2D
CB FE 20 FB
21 38 F0 B5 E6
0F 28 F7 1F D1
Line 914 ⟶ 915:
<pre>
11
21
39 0E 80 21 4F
CF D1 2A 87 30
09 86 12 13 23
81 12 4F 18 F3
D5 21
01 CD BF 13 2D
CB FE 20 FB
23 38 F0 B5 E6
0F 28 F7 1F D1
Line 932 ⟶ 933:
<pre>
11
21
39 0E 80 21 4F
CF D1 2A 87 30
09 86 12 13 23
81 12 4F 18 F3
D5 21
01 CD BF 13 2D
CB FE 20 FB
1C 38 F0 B5 E6
0F 28 F7 1F D1
Line 950 ⟶ 951:
<pre>
11
21
39 0E 80 21 4F
CF D1 2A 87 30
09 86 12 13 23
81 12 4F 18 F3
D5 21
01 CD BF 13 2D
CB FE 20 FB
23 38 F0 B5 E6
0F 28 F7 1F D1
|