Guides:Mail Writer Codes: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
Line 1,828: Line 1,828:
===Setting up an OAM DMA hijack===
===Setting up an OAM DMA hijack===


Every frame, the game will execute an OAM DMA routine. The instructions for this routine is kept in HRAM, in the area between $FF80 and $FF89. By removing the final return instruction and inserting a custom jump instruction, the game will execute up to 15 bytes of custom code.
Every frame, the game will execute an OAM DMA routine. The instructions for this routine is kept in HRAM, in the area between $FF80 and $FF89. By removing the final return instruction and inserting a custom jump instruction, the game will execute up to 15 bytes of custom code.

In addition, the OAM DMA hijack for Crystal contains additional logic to prevent custom code from being executed when the current active WRAM bank isn't WRAM bank 01.


This code only enables the OAM DMA hijack and will not have any immediately visible effects on gameplay. After executing this code, another code needs to be used to insert a custom byte code so that it can be executed on every frame. Codes that do this can be found further on in this section.
This code only enables the OAM DMA hijack and will not have any immediately visible effects on gameplay. After executing this code, another code needs to be used to insert a custom byte code so that it can be executed on every frame. Codes that do this can be found further on in this section.
Line 1,840: Line 1,842:
||
||
01 03 00 11 8A FF 21 6B DD CD 1A 31 3E C9 EA 21
01 03 00 11 8A FF 21 6B DD CD 1A 31 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 9B D2 CD 26 30 3E C9 21 20
01 0A 00 11 F4 FF 21 9A D2 CD 26 30 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0
|-
|-
! scope="row" | French
! scope="row" | French
||
||
01 03 00 11 8A FF 21 6B DD CD 2C 31 3E C9 EA 21
01 03 00 11 8A FF 21 6B DD CD 2C 31 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 9B D2 CD 13 30 3E C9 21 20
01 0A 00 11 F4 FF 21 9A D2 CD 13 30 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0

|-
|-
! scope="row"| German
! scope="row"| German
||
||
01 03 00 11 8A FF 21 6B DD CD 47 31 3E C9 EA 21
01 03 00 11 8A FF 21 6B DD CD 47 31 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 9B D2 CD 10 30 3E C9 21 20
01 0A 00 11 F4 FF 21 9A D2 CD 10 30 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0
|-
|-
! scope="row"| Italian
! scope="row"| Italian
||
||
01 03 00 11 8A FF 21 6B DD CD 3F 31 3E C9 EA 21
01 03 00 11 8A FF 21 6B DD CD 3F 31 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 9B D2 CD 14 30 3E C9 21 20
01 0A 00 11 F4 FF 21 9A D2 CD 14 30 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0
|-
|-
! scope="row"| Spanish
! scope="row"| Spanish
||
||
01 03 00 11 8A FF 21 6B DD CD 3E 31 3E C9 EA 21
01 03 00 11 8A FF 21 6B DD CD 3E 31 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 9B D2 CD 10 30 3E C9 21 20
01 0A 00 11 F4 FF 21 9A D2 CD 10 30 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0
|-
|-
! scope="row"| Japanese
! scope="row"| Japanese
||
||
01 03 00 11 8A FF 21 DC DC CD D6 30 3E C9 EA 21
01 03 00 11 8A FF 21 DC DC CD D6 30 3E C9 EA 21
DF AF EA 89 FF C9 C3 01 DF 10 10 10 10 10 10 10
DF AF EA 89 FF C9 C3 01 DF
||
||
01 05 00 11 F9 FF 21 CC D2 CD F2 2F 3E C9 21 20
01 0A 00 11 F4 FF 21 CB D2 CD F2 2F 3E C9 EA 20
C0 77 3E 70 E0 88 3E 18 E0 87 E9 20 8B C3 00 C0
C0 3E 6B E0 88 3E 18 E0 87 C9 20 90 F0 70 D6 F9
C0 C3 00 C0
|-
|-
! scope="row"| Korean
! scope="row"| Korean
||
||
01 03 00 11 8A FF 21 68 DE CD C2 31 3E C9 EA 12
01 03 00 11 8A FF 21 68 DE CD C2 31 3E C9 EA 12
D8 AF EA 89 FF C9 C3 F2 D7 00 00 00 00 00 00 00
D8 AF EA 89 FF C9 C3 F2 D7
|}
|}