Jump to content

Guides:Fast 0x1500 ACE: Difference between revisions

m
no edit summary
mNo edit summary
mNo edit summary
 
(12 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 967 ⟶ 971:
D6 81 sub $81 ; a = $D8, carry flag set
22 ldi (hl), a ; .write
D0 callret nc ; Skip on last pass
E1 pop hl
50 ld d, b
Line 973 ⟶ 977:
Box 7: $D8AC
E1 pop hl
E1 pop hl
A7 and a ; Reset carry flag
E1AF popxor hla ; hla = $DA1000
D0 call nc
85 add a, l
F7 rst30h ; Resume text function, immediately hit terminator
 
Box 14: displayed as screen tiles at $C4BE
Line 983 ⟶ 989:
D6 86 sub $86 ; a = $75
F7 rst30h ; hl = $FB75, de = $C4C5, jump to hl
</pre>
 
====Italian & Spanish====
Line 998 ⟶ 1,005:
Box 2: $DB7E
D6 B8 sub $B8 ; a = $22
EA A5A8 FB ld (.write), a
85 add a, l ; a = $32
D6 F4 sub $F4 ; a = $3E
Line 1,004 ⟶ 1,011:
 
Box 3: $DB87
CD A5A8 FB call .write
C6 C6 add $C6 ; a = $04
CD A5A8 FB call .write
50 ld d, b
 
Box 4: $DB90
C6 BF add $BF ; a = $C3
CD A5A8 FB call .write
FB ei
C6 96 add $96 ; a = $59
Line 1,017 ⟶ 1,024:
 
Box 5: $DB99
CD A5A8 FB call .write
C6 7F add $7F ; a = $D8
CD A5A8 FB call .write
50 ld d, b
 
Line 1,025 ⟶ 1,032:
E1 pop hl
E1 pop hl ; Prevent side effects when returning to text printer
E1 pop hl
C9 ret
E1AF popxor hla ; hla = $DA1000
85 add a, l
F7 rst30h ; Resume text function, immediately hit terminator
22 ldi (hl), a ; .write
C9 ret
Line 1,037 ⟶ 1,047:
F7 rst30h ; hl = $FB75, de = $C4C5, jump to hl
</pre>
 
[[Category:Guides]]
1,540

edits

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