Guides:Mail Writer GS (non-EN): Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
mNo edit summary
Line 3: Line 3:
The Mail writer is an arbitrary code execution program that allows the user to quickly and accurately write and execute arbitrary code payloads of up to a maximum size of 428 bytes. Payloads are written from wOtPartyCount onward, where enemy trainer's parties are usually buffered.
The Mail writer is an arbitrary code execution program that allows the user to quickly and accurately write and execute arbitrary code payloads of up to a maximum size of 428 bytes. Payloads are written from wOtPartyCount onward, where enemy trainer's parties are usually buffered.


This guide is applicable to the French, German, Italian and Spanish versions of Gold & Silver only. It is part of the [[Guides:TimoVM's_gen_2_ACE_setups|TimoVM's gen 2 ACE setups]] set of guides.
This guide is applicable to the French, German, Italian and Spanish versions of Gold & Silver only. It is part of the [[Guides:TimoVM's_gen_2_ACE_setups|TimoVM's Gen 2 ACE setups]] set of guides.


'''Using the Mail writer requires an ACE setup that redirects execution to the start of box names. For this guide, it is assumed that you've previously set up [[Guides:Wrong Pocket TM ACE setup (non-EN)|Wrong Pocket TM25 ACE]] instead.'''
'''Using the Mail writer requires an ACE setup that redirects execution to the start of box names. For this guide, it is assumed that you've previously set up [[Guides:Wrong Pocket TM ACE setup (non-EN)|Wrong Pocket TM25 ACE]] instead.'''


If you encounter any issues when going through this guide or would like to provide feedback, please contact TimoVM on the Glitch City Research Institute Discord.
If you encounter any issues when going through this guide or would like to provide feedback, please contact TimoVM on the [https://discord.gg/EA7jxJ6 Glitch City Research Institute Discord].


=How the mail writer works=
=How the mail writer works=
Line 313: Line 313:


Box 7: $D8F5
Box 7: $D8F5
7E F5 ld hl, $F57E
7E F5 ld hl, wTMsHMs
01 32 00 ld bc, $0032
01 32 00 ld bc, $0032
DC 5E 31 call c, byteFill
DC 5E 31 call c, byteFill
Line 340: Line 340:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C3 7E F5 jp $F57E
C3 7E F5 jp wTMsHMs
</pre>
</pre>


Line 351: Line 351:
Box 1: $D8BF
Box 1: $D8BF
C0
C0
21 F4 F8 ld hl, $F8F4 ; corresponds to terminator of box #9's name
21 F4 F8 ld hl, $F8F4 ; Corresponds to terminator of box #9's name
C4 BE F8 call nz, $F8BE ; due to mail, a = $21
C4 BE F8 call nz, $F8BE ; Due to mail, a = $21
96 sub (hl) ; a = $7E
96 sub (hl) ; a = $7E
50 ld d, b
50 ld d, b
Line 392: Line 392:


Box 7: $D8F5
Box 7: $D8F5
7E F5 ld hl, $F57E
7E F5 ld hl, wTMsHMs
0E 32 ld c, $32
0E 32 ld c, $32
C4 5E 31 call nz, byteFill
C4 5E 31 call nz, byteFill
Line 424: Line 424:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C2 7E F5 jp nz, $F57E ; carry and zero flag are both reset when using TM25
C2 7E F5 jp nz, wTMsHMs ; Carry and zero flag are both reset when using TM25
</pre>
</pre>


Line 471: Line 471:


Box 7: $D8F5
Box 7: $D8F5
7E F5 ld hl, $F57E
7E F5 ld hl, wTMsHMs
01 32 00 ld bc, $0032
01 32 00 ld bc, $0032
D4 71 31 call nc, byteFill
D4 71 31 call nc, byteFill
Line 495: Line 495:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C3 7E F5 jp $F57E
C3 7E F5 jp wTMsHMs
</pre>
</pre>


Line 512: Line 512:
EA F7 F8 ld ($F8F7), a
EA F7 F8 ld ($F8F7), a
D6 FD sub $FD ; a = $04
D6 FD sub $FD ; a = $04
EA 9B FA ld ($FA 9B), a
EA 9B FA ld ($FA9B), a
50 ld d; b
50 ld d; b


Line 542: Line 542:


Box 7: $D8F5
Box 7: $D8F5
7E F5 ld hl, $F57E
7E F5 ld hl, wTMsHms
01 32 00 ld bc, $0032
01 32 00 ld bc, $0032
D4 70 31 call nc, byteFill
D4 70 31 call nc, byteFill
Line 566: Line 566:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C3 7E F5 jp $F57E
C3 7E F5 jp wTMsHMs
</pre>
</pre>


Line 758: Line 758:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C3 7E F5 jp $F57E
C3 7E F5 jp wTMsHMs
</pre>
</pre>


Line 802: Line 802:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C2 7E F5 jp $F57E ; carry and zero flag are both reset when using TM25
C2 7E F5 jp wTMsHMs ; carry and zero flag are both reset when using TM25
</pre>
</pre>


Line 836: Line 836:
Party pokémon #3's stat experience, starting from $DA9A
Party pokémon #3's stat experience, starting from $DA9A
3E 04 ld a, $04
3E 04 ld a, $04
C3 7E F5 jp $F57E
C3 7E F5 jp wTMsHMs
</pre>
</pre>