Jump to content

Guides:Fast 0x1500 ACE: Difference between revisions

m
no edit summary
mNo edit summary
 
(14 intermediate revisions by 2 users not shown)
Line 7:
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].
 
'''When playing on cartridge or emulator, it is requiredrecommended to have previously cleared an old save by pressing SELECT + UP + B simultaneously on the start screen at least once since obtaining the cart. Otherwise you willrisk not bebeing able to obtain a bad clone or an unterminated name pokémon.'''
 
The contents of this guide are demonstrated in the following video:
 
{{youtube|iJRb3PwUrkg|TimoVM}}
 
=Setting up initial ACE=
Line 76 ⟶ 80:
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
|
[[File:JPEN Fast ACE PokeSen Location.png]]
||
[[File:JPEN Fast ACE Spearow menu.png]]
|}
 
Line 102 ⟶ 106:
# Sell TMs in specific quantities so that the amount of TMs in the TM/HM pocket spell out a small mail writer program.
 
==Step 4: settingSetting all TM quantities to x255<span id="{{anchorencode:Box name payload}}"></span>==
 
* Rename box names to form the following language dependent codes. '''Please mind the differences between uppercase X ([[File:Character UCX.png]]), lowercase x ([[File:Character lcx.png]]) and multiplication symbol ([[File:Character mul.png]]).'''
Line 336 ⟶ 340:
|-
! scope="row"| English
|| <pre>Box 1: 0 ♀ ♀ Pk ? ♂ E Pk
Box 2: Pk 5Pk 'd 'v z é B 5
Box 3: 'v 9 é [SPACE] 5 'v , F
Box 4: 's [SPACE] 5 ? E 's [SPACE] 5
Line 348 ⟶ 352:
Box 11: 'v 9 é E 5 Pk 0 9
Box 12: 's B 5 é C 5 Pk 'v
Box 13: 'v Pk é T 2 hp 'dF 51
Box 14: p 0 5 ♀ Pk 'v G 1</pre>
! scope="row" | Italian
|| <pre>Box 1: 0 ♀ ♀ Pk ? ¡ E Pk
Box 2: Pk 5Pk ì ° z é B 5
Box 3: ° 9 é [SPACE] 5 ° , F
Box 4: ó [SPACE] 5 ? E ó [SPACE] 5
Line 363 ⟶ 367:
Box 11: ° 9 é E 5 Pk 0 9
Box 12: ó B 5 é C 5 Pk °
Box 13: ° Pk é T 2 hp ìF 51
Box 14: p 0 5 ♀ Pk ° G 1</pre>
! scope="row"| Spanish
|| <pre>BBoxBox 1: 0 ♀ ♀ Pk ? ¡ E Pk
Box 2: Pk 5Pk ì ° z é B 5
Box 3: ° 9 é [SPACE] 5 ° , F
Box 4: ó [SPACE] 5 ? E ó [SPACE] 5
Line 378 ⟶ 382:
Box 11: ° 9 é E 5 Pk 0 9
Box 12: ó B 5 é C 5 Pk °
Box 13: ° Pk é T 2 hp ì 5F 1
Box 14: p 0 5 ♀ Pk ° G 1</pre>
|}
Line 395 ⟶ 399:
Box 5: 0 'm 's h 5 'v M F
Box 6: 's h 5 'v B A 'd Pk
Box 7: Pk hPk 'dp F 1
 
Box 14: p 0 5 ♀ Pk 'v G 1</pre>
! scope="row" | Italian
|| <pre>Box 1: p 0 Mn È 2 ♀ Pk 5
Box 2: ° y é fi 5 F ° ,
Box 3: Ù fi 5 È È Ù fi 5
Box 4: È Á Ù fi 5 5 È W
Box 5: Ù fi 5 È [SPACE] Ù fi 5
Box 6: Pk Pk ÍPk p F 1 Í Í
 
Box 14: p 0 5 ♀ Pk ° G 1 </pre>
! scope="row"| Spanish
|| <pre>Box 1: p 0 Mn È 2 ♀ Pk 5
Box 2: ° y é fi 5 F ° ,
Box 3: Ù fi 5 È È Ù fi 5
Box 4: È Á Ù fi 5 5 È W
Box 5: Ù fi 5 È [SPACE] Ù fi 5
Box 6: Pk Pk ÍPk p F 1 Í Í
 
Box 14: p 0 5 ♀ Pk ° G 1 </pre>
Line 455 ⟶ 459:
===Effect of the test box name===
 
BoxThe namecurrent dataactive startsbox is printed on the tilemap starting from $D8BFC4BE onward. Converting the provided mailbox name code to assembly results in the following:
 
====English====
Line 489 ⟶ 493:
E6 EF and $EF ; a = $E5
84 add a, h ; af = $DA10
F5E1 pushpop afhl
50 ld d, b
 
Box 2: $DB7E
F5 push af
E1 pop hl ; hl = $DA10
FBE1 eipop hl ; Overwrittenhl = $DA10, overwritten to $22, ldi (hl), a
D0 ret nc ; On first pass, ignored. Taken whenever $DB7F is called
D6 B9 sub $B9 ; a = $21
Line 556 ⟶ 560:
D6 FF sub $FF ; a = $01
EA 84 FB ld ($FB84), a
E1 pop hl
E1 pop hl ; first of two pops to prevent side effects of 0x1500 ACE
F6 FF or $FF ; a = $FF
50 ld d, b
Line 563 ⟶ 567:
D4 81 FB call nc, $FB81 ; $FB81 was rewritten to 21 59 D8 01 32 00 C3 41 30
EA 82 FB ld ($FB82), a ; Replace $59 by $FF to prevent possible crash when viewing $59 as text
E1 pop hl
E1 pop hl ; second of two pops to prevent side effects of 0x1500 ACE
D6 50 sub $50 ; a = $AF
 
Line 569 ⟶ 573:
D6 E1 sub $E1 ; a = $CE
EA 93 F8 ld (wItems), a ; Replace first item in item pocket with TM15
A7AF andxor a ; Reseta carry= flag$00
D085 retadd nca, l
F7 rst30h ; Resume text function, immediately hit terminator
FB ei
50 ld d, b
 
Line 596 ⟶ 600:
E6 E5 and $E5 ; a = $E5
84 add a, h ; af = $DA10
F5E1 pushpop afhl
50 ld d, b
 
Box 2: $DB7E
F5 push af
E1 pop hl ; hl = $DA10
FBE1 eipop hl ; Overwrittenhl = $DA10, overwritten to $22, ldi (hl), a
D0 ret nc ; On first pass, ignored. Taken whenever $DB7F is called
D6 B9 sub $B9 ; a = $21
Line 663 ⟶ 667:
D6 FF sub $FF ; a = $01
EA 84 FB ld ($FB84), a
E1 pop hl
E1 pop hl ; first of two pops to prevent side effects of 0x1500 ACE
F6 FF or $FF ; a = $FF
50 ld d, b
Line 670 ⟶ 674:
D4 81 FB call nc, $FB81 ; $FB81 was rewritten to 21 59 D8 01 32 00 C3 2F 30
EA 82 FB ld ($FB82), a ; Replace $59 by $FF to prevent possible crash when viewing $59 as text
E1 pop hl
E1 pop hl ; second of two pops to prevent side effects of 0x1500 ACE
D6 50 sub $50 ; a = $AF
 
Line 676 ⟶ 680:
D6 E1 sub $E1 ; a = $CE
EA 93 F8 ld (wItems), a ; Replace first item in item pocket with TM15
A7AF andxor a ; Reseta carry= flag$00
D085 retadd nca, l
F7 rst30h ; Resume text function, immediately hit terminator
FB ei
50 ld d, b
 
Line 703 ⟶ 707:
E6 E5 and $E5 ; a = $E5
84 add a, h ; af = $DA10
F5E1 pushpop afhl
50 ld d, b
 
Box 2: $DB7E
F5 push af
E1 pop hl ; hl = $DA10
FBE1 eipop hl ; Overwrittenhl = $DA10, overwritten to $22, ldi (hl), a
D0 ret nc ; On first pass, ignored. Taken whenever $DB7F is called
D6 B9 sub $B9 ; a = $21
Line 770 ⟶ 774:
D6 FF sub $FF ; a = $01
EA 84 FB ld ($FB84), a
E1 pop hl
E1 pop hl ; first of two pops to prevent side effects of 0x1500 ACE
F6 FF or $FF ; a = $FF
50 ld d, b
Line 777 ⟶ 781:
D4 81 FB call nc, $FB81 ; $FB81 was rewritten to 21 59 D8 01 32 00 C3 2B 30
EA 82 FB ld ($FB82), a ; Replace $59 by $FF to prevent possible crash when viewing $59 as text
E1 pop hl
E1 pop hl ; second of two pops to prevent side effects of 0x1500 ACE
D6 50 sub $50 ; a = $AF
 
Line 783 ⟶ 787:
D6 E1 sub $E1 ; a = $CE
EA 93 F8 ld (wItems), a ; Replace first item in item pocket with TM15
A7AF andxor a ; Reseta carry= flag$00
D085 retadd nca, l
F7 rst30h ; Resume text function, immediately hit terminator
FB ei
50 ld d, b
 
Line 918 ⟶ 922:
===Effect of the reset box name code===
 
Converting the characters from box names to assembly results in the following code. This code overwriteswrites the latterrequired halfbootstrap ofto party$DA10, pokémonthe #3'sentrance statpoint experienceof data,Wrong allowingPocket itTM15. toThis functionarea asof amemory TM25is bootstrapunused thatbut redirectsis execution to thepreserved Mailduring Writersaves.
 
====English====
Line 937 ⟶ 941:
E1 pop hl ; hl = $DA10
D6 B8 sub $B8 ; a = $22
EA A8A7 FB ld (.write), a
50 ld d, b
 
Box 3: $DB87
85 add a, l ; a = $33
D6 F4 sub $F4 ; a = $3E
A7 and a ; Reset carry flag
D4 A8A7 FB call nc, .write
AF xor a ; a = $00
50 ld d, b
Line 951 ⟶ 955:
D6 FC sub $FC ; a = $04
A7 and a ; Reset carry flag
D4 A8A7 FB call nc, .write
AF xor a ; a = $00
AF xor a
Line 958 ⟶ 962:
Box 5: $DB99
F6 D2 or $D2 ; a = $D2
D4 A8A7 FB call nc, .write
D6 8C sub $8C ; a = $46
85 add a, l ; a = $59
Line 964 ⟶ 968:
 
Box 6: $D8A2
D4 A8A7 FB call nc, .write
D6 81 sub $81 ; a = $D8, carry flag set
A7 and a ; Reset carry flag
22 ldi (hl), a ; .write
D0 callret nc ; Skip on last pass
E1 pop hl
50 ld d, b
 
Box 7: $D8AC
Party pokémon #3's stat experience, starting from $DA9A
E1 pop hl
3E 04 ld a, $04
E1 pop hl
D2 59 D8 jp nc, wTMsHMs
AF xor a ; a = $00
85 add a, l
F7 rst30h ; Resume text function, immediately hit terminator
 
Box 14: displayed as screen tiles at $C4BE
AF xor a ; a = $00
F6 FB or $FB ; a = $FB
F5 push af
E1 pop hl ; h = $FB
D6 86 sub $86 ; a = $75
F7 rst30h ; hl = $FB75, de = $C4C5, jump to hl
</pre>
 
Line 989 ⟶ 1,005:
Box 2: $DB7E
D6 B8 sub $B8 ; a = $22
EA 9FA8 FB ld (.write), a
85 add a, l ; a = $32
D6 F4 sub $F4 ; a = $3E
50 ld d, b
 
Box 3: $DB87
CD 9FA8 FB call .write
C6 C6 add $C6 ; a = $04
CD 9FA8 FB call .write
50 ld d, b
 
Box 4: $DB90
C6 BF add $BF ; a = $C3
CD 9FA8 FB call .write
FB ei
C6 96 add $96 ; a = $59
Line 1,008 ⟶ 1,024:
 
Box 5: $DB99
CD 9FA8 FB call .write
C6 7F add $7F ; a = $D8
CD A8 FB call .write
7F ld a, a
50 ld d, b
 
Box 6: $DBA2
E1 pop hl
E1 pop hl ; Prevent side effects when returning to text printer
E1 pop hl
AF xor a ; a = $00
85 add a, l
F7 rst30h ; Resume text function, immediately hit terminator
22 ldi (hl), a ; .write
C9 ret
 
Box 14: displayed as screen tiles at $C4BE
Party pokémon #3's stat experience, starting from $DA9A
3EAF xor 04a ld; a, = $0400
F6 FB or $FB ; a = $FB
C3 59 D8 jp wTMsHMs
F5 push af
E1 pop hl ; h = $FB
D6 86 sub $86 ; a = $75
F7 rst30h ; hl = $FB75, de = $C4C5, jump to hl
</pre>
 
[[Category:Guides]]
=Plain text transcript for codes=
 
* Mail
 
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
! Language !! Mail content
|-
! scope="row"| English
| <pre>4 4 4 h ‘s … 5 h Pk ‘d </pre>
|-
! scope="row"| French
| <pre>4 4 4 j' ♀ é T 2 j' / é G 5 é & 5
j' à é ... 5 j' 9 é x 5 p î ... s' Pk ô </pre>
|-
! scope="row"| German
| <pre>4 4 4 H ë : é j 5 ë 9 é ... 5 p 0
0 A é T 2 $ $ ö ... 5 Pk Ä</pre>
|-
! scope="row"| Italian
| <pre>4 4 4 ° b é Ì 5 p Ù ... 5 é ] 5 0
È $ é T 2 Pk Í</pre>
|-
! scope="row"| Spanish
| <pre>4 4 4 ° b é Ì 5 p Ù ... 5 é ] 5 0
È $ é T 2 Pk Í</pre>
|-
| colspan = "2"| "..." refers to a single ellipsis character, “pk” refers to a single pk symbol.
|}
 
* Test box code
 
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
! English !! French !! German !! Italian !! Spanish
|-
| <pre>0 9 'd</pre> || <pre>A A A ô</pre> || <pre>A A A 0 9 Ä</pre> || <pre>Í</pre> || <pre>Í</pre>
|}
1,540

edits

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