Jump to content

User:TimoVM/RAM Writer setups: Difference between revisions

Line 1,317:
</pre>
 
===Full RAM writer ($DD55)===
 
<pre>
Installer located at DD55
setup
3E 03 ld a, 03
CD E1 30 call OpenSRAM ; open sram bank 3 (defined by register a)
0E CE ld c, CE
11 E1 B9 ld de, sBox14Species
21 74 DD ld hl, DD74
CD 1A 31 call CopyBytes ; install payload to SRAM
0E 2D ld c, 08
11 18 D4 ld de, D418 ; entry point of wrong pocket TM33
D5 push de
CD 1A 31 call CopyBytes ; install TM33 bootstrap to D418
3E E1 ld a, E1
EA B8 D5 ld (D5B8), a ; change item slot #1 to TM33
C9 ret ; due to earlier push, jump to Deployer
 
RAM writer A
 
Setup stored at B9E1, deployed to CC20
AF xor a
3C inc a
E0 D6 ldh (D6),a
21 00 DA ld hl, DA00
resolveDisplay CC27
 
CD 21 DF call resolveInput
resolveDisplay
CD AB DD call resolveInput
E5 push hl
11 F8 FF ld de, FFF8
19 add hl, de
54 ld d, h4h
5D ld e, l
01 0C 00 ld bc, 000C
Line 1,337 ⟶ 1,353:
21 A9 C3 ld hl, C3A9
CD E1 30 call openSramBank
CD 9A65 DDCC call printHex
.displayLoop
3E 7C ld a, 7C
22 ldi (hl), a
7A ld a, d
CD 9A65 DDCC call printHex
7B ld a, e
CD 9A65 DDCC call printHex
3E E3 ld a, E3
22 ldi (hl), a
1A ld a, (de)
CD 9A65 DDCC call printHex
36 7C ld a, 7C
09 add hl, bc
Line 1,360 ⟶ 1,376:
E1 pop hl
18 C2 jr, resolveDisplay
printHex CC65
 
printHex
F5 push af
CB 37 swap a
CD A14C DDC7 call .firstHex
F1 pop af
.firstHex CC6C
E6 0F and 0F
C6 F6 add a, F6
30F6 0280 jror nca, .hexIsNumber80
C6 80 add a, 80
22 ldi (hl), a
C9 ret
sampleDpad CC74
 
ResolveInput
CD F7 DD call sampleDpad
CB 5F bit 3, a
28 02 jr z, .noStartButton
C1 pop bc
C9 ret
.noStartButton
CB 57 bit 2, a
28 0A jr z, noSelectButton
0F rrca
30 01 jr nc, .changeSramBank
E9 jp hl
.changeSramBank
F0 FE ldh a, (FE)
83 add e
E0 FE ldh (FE), a
C9 ret
.noSelectButton
0F rrca
30 2A jr nc, .noAButton
E5 push hl
F0 FE ldh a, (FE)
CD E1 30 call openSramBank
46 ld b, (hl)
.inputALoop
CD F7 DD call sampleDpad
0F rrca
38 12 jr c, .AButtonPressed
0F rrca
30 01 jr nc , .BButtonNotPressed
43 ld b, e
.BButtonNotPressed
78 ld a, b
83 add e
47 ld b, a
21 50 C4 ld hl, C450
36 EC ld (hl), EC
23 inc hl
CD 9A DD call printHex
18 E8 jr, .inputALoop
.AButtonPressed
E1 pop hl
70 ld (hl), b
E5 push hl
3E 05 ld a, 5
21 FD 4D ld hl, 4DFD
CF rst08h
E1 pop hl
C9 ret
.noAButton
0F rrca
30 03 jr nc, noBButton
53 ld d, e
1E 00 ld e, 00
19 add hl, de
C9 ret
 
sampleDpad
CD 90 37 call JoyTextDelay_ForcehJoyDown
F0 AB ldh a, (AB)
11 00 00 ld de, 0000
F5 push af
07 rlca
30 01 jp nc, .noDown
Line 1,452 ⟶ 1,407:
1E 10 ld e, 10
.noRight
07 rlca
F1 pop af
c9C9 ret
</pre>
 
RAM Writer B
===Full RAM writer ($03:B9E1)===
 
ResolveInput deployed to DF21
<pre>
CD 74 CC call sampleDpad
db 14 //located at B9E0, ensures box 14 having 20 pokémon inside it.
38 41 jr nc, .startButton
setup
AF07 xor arlca
30 0B jr z, noSelectButton
3C inc a
07 rlca
E0 D6 ldh (D6),a
07 rlca
21 00 DA ld hl, DA00
30 01 jr nc, .changeSramBank
 
E9 jp hl
resolveDisplay
.changeSramBank
CD 2C BA call resolveInput
F0 FE ldh a, (FE)
E5 push hl
83 add e
11 F8 FF ld de, FFF8
E0 FE ldh (FE), a
C9 ret
.noSelectButton 41 37 79
07 rlca
30 03 jr nc, .noBButton
53 ld d, e
1E 00 ld e, 00
19 add hl, de
.noBButton
54 ld d, h
07 rlca
5D ld e, l
30 2A jr nc, .noAButton
01 0C 00 ld bc, 000C
21 A9 C3 ld hl, C3AB
.displayLoop
3E 7C ld a, 7C
22 ldi (hl), a
7A ld a, d
CD 1B BA call printHex
7B ld a, e
CD 1B BA call printHex
3E E3 ld a, E3
22 ldi (hl), a
1A ld a, (de)
CD 1B BA call printHex
36 7C ld a, 7C
09 add hl, bc
13 inc de
7D ld a, l
FE 13 cp 13
20 E5 jr nz, .displayLoop
21 50 C4 ld hl, C450
36 ED ld (hl), ED
E1 pop hl
18 CD jr, resolveDisplay
 
printHex BA1B
F5 push af
CB 37 swap a
CD 22 BA call .firstHex
F1 pop af
.firstHex
E6 0F and 0F
C6 F6 add a, F6
30 02 jr nc, .hexIsNumber
C6 80 add a, 80
22 ldi (hl), a
C9 ret
 
ResolveInput BA2C
CD 62 BA call sampleDpad
CB 5F bit 3, a
28 02 jr z, .noStartButton
C1 pop bc
C9 ret
.noStartButton
CB 57 bit 2, a
28 01 jr z, noSelectButton
E9 jp hl
.noSelectButton
0F rrca
30 1D jr nc, .noAButton
E5 push hl
F0 FE ldh a, (FE)
CD E1 30 call openSramBank
46 ld b, (hl)
.inputALoop
CD 6274 BACC call sampleDpad
0F07 rrcarlca
07 rlca
38 12 jr c, .AButtonPressed
0F rrca
30 01 jr nc , .BButtonNotPressed
43 ld b, e
.BButtonNotPressed
0F rrca
38 0E jr c, .AButtonPressed
78 ld a, b
83 add e
Line 1,539 ⟶ 1,454:
36 EC ld (hl), EC
23 inc hl
CD 1C65 BACC call printHex
18 E8E7 jr, .inputALoop
.AButtonPressed
E1 pop hl
70 ld (hl), b
E5 push hl
C9 ret
3E 05 ld a, 5
21 FD 4D ld hl, 4DFD
CF rst08h
.startButton
E1 pop hl
.noAButton
0F rrca
30 03 jr nc, noBButton
53 ld d, e
1E 00 ld e, 00
19 add hl, de
C9 ret
 
OAM DMA Hijack A
sampleDpad BA62
FA AB CE ld a, (CEAB)
CD 90 37 call JoyTextDelay_ForcehJoyDown
FE E1 cp E1
F0 AB ldh a, (AB)
C0 ret nz ; is current selected item TM33? If yes, continue
11 00 00 ld de, 0000
FA C2 CE ld a, (CEC2)
F5 push af
FE 90 cp 90
07 rlca
C0 ret nz ; Is TM33 chosen while in battle? If yes, continue
30 01 jp nc, .noDown
3E 0D ld a, 0D
13 inc de
EA E0 CE ld (CEE0); a ; Force cursor to position #13, enabling use of TM33
.noDown
07C9 rlcaret
30 01 jr nc, .noUp
1B dec de
.noUp
07 rlca
30 03 jr nc, .noLeft
11 F0 FF ld de, FFF0
.noLeft
07 rlca
30 02 jr nc, .noRight
1E 10 ld e, 10
.noRight
F1 pop af
c9 ret
</pre>
 
OAM DMA Hijack B
===Codes that finalise the setup===
C3 01 DF jp DF01 ; jump to OAM DMA hijack B
 
Deployer located at D418
{| class="wikitable"
3E 03 ld a, 03
! backup RAM writer to $B9E0!! recall RAM writer from $B9E0 !! Header text
CD E1 30 call OpenSRAM
|-
0E 71 ld c, 71
| <pre>
3E11 20 CC 03 ld ade, $03CC20
D5 push de
CD E1 30 call OpenSRAM
0121 C0E1 B9 00 ld bchl, $00C0sBox14Species
CD 1A 31 call CopyBytes ; deploy RAM writer A to CC20
11 E0 B9 ld de, $B9E0
210E 5548 DD ld hlc, $DD5548
11 21 DF ld de, DF21
C3 1A 31 jp CopyBytes</pre> || <pre>3E 03 ld a, $03
CD 1A 31 call CopyBytes ; deploy RAM writer B to DF21
CD E1 30 call OpenSRAM
010E C012 00 ld bcc, $00C012
11 550F DF DD ld de, $DD55DF0F
CD 1A 31 call CopyBytes ; deploy OAM DMA hijack A to DF0F
21 E0 B9 ld hl, $B9E0
0E 03 ld c, 03
CD 1A 31 call CopyBytes
11 8A FF ld de, FF8A
C3 55 DD jp $DD55</pre> || <pre>3E 03 ld a, $03
CD 1A 31 call CopyBytes ; deploy OAM DMA hijack B to FF8A
CD E1 30 call OpenSRAM
AF xor a
C3 E1 B9 jp $B9E1</pre>
E0 89 ld (FF89), a ; enable OAM DMA hijack by removing C9
|}
C9 ret ; due to earlier push, jump to CC20
</pre>
 
=Crystal=
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.