mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
Merge pull request #177 from yenatch/split-main
split out a bunch of bank 0 from main.asm
This commit is contained in:
commit
9152664ca5
431
engine/copy.asm
Normal file
431
engine/copy.asm
Normal file
@ -0,0 +1,431 @@
|
||||
; Functions to copy data from ROM.
|
||||
|
||||
|
||||
Functiondc9: ; dc9
|
||||
ld a, [rLCDC]
|
||||
bit 7, a
|
||||
jp z, Copy2bpp
|
||||
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Function104284)
|
||||
rst Bankswitch
|
||||
call Function104284
|
||||
pop af
|
||||
rst Bankswitch
|
||||
|
||||
ret
|
||||
; ddc
|
||||
|
||||
Functionddc: ; ddc
|
||||
ld a, [rLCDC]
|
||||
bit 7, a
|
||||
jp z, Copy1bpp
|
||||
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Function1042b2)
|
||||
rst Bankswitch
|
||||
call Function1042b2
|
||||
pop af
|
||||
rst Bankswitch
|
||||
|
||||
ret
|
||||
; def
|
||||
|
||||
Functiondef: ; def
|
||||
ld [hBuffer], a
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, [hBuffer]
|
||||
rst Bankswitch
|
||||
call FarCopyBytesDouble
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
; dfd
|
||||
|
||||
Functiondfd: ; dfd
|
||||
dec c
|
||||
ld a, [hBGMapMode]
|
||||
push af
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, b
|
||||
rst Bankswitch
|
||||
|
||||
.asm_e09
|
||||
ld a, d
|
||||
ld [rHDMA1], a
|
||||
ld a, e
|
||||
and $f0
|
||||
ld [rHDMA2], a
|
||||
ld a, h
|
||||
and $1f
|
||||
ld [rHDMA3], a
|
||||
ld a, l
|
||||
and $f0
|
||||
ld [rHDMA4], a
|
||||
ld a, c
|
||||
cp $8
|
||||
jr c, .asm_e3c
|
||||
sub $8
|
||||
ld c, a
|
||||
ld a, $f
|
||||
ld [hDMATransfer], a
|
||||
call DelayFrame
|
||||
ld a, l
|
||||
add $0
|
||||
ld l, a
|
||||
ld a, h
|
||||
adc $1
|
||||
ld h, a
|
||||
ld a, e
|
||||
add $0
|
||||
ld e, a
|
||||
ld a, d
|
||||
adc $1
|
||||
ld d, a
|
||||
jr .asm_e09
|
||||
|
||||
.asm_e3c
|
||||
ld a, c
|
||||
and $7f
|
||||
ld [hDMATransfer], a
|
||||
call DelayFrame
|
||||
pop af
|
||||
rst Bankswitch
|
||||
|
||||
pop af
|
||||
ld [hBGMapMode], a
|
||||
ret
|
||||
; e4a
|
||||
|
||||
|
||||
|
||||
Functione4a: ; e4a
|
||||
ld a, $5
|
||||
ld hl, $4135
|
||||
rst FarCall
|
||||
ret
|
||||
; e51
|
||||
|
||||
|
||||
|
||||
Functione51: ; e51
|
||||
ld a, $3e
|
||||
ld hl, $7449
|
||||
rst FarCall
|
||||
ret
|
||||
; e58
|
||||
|
||||
Functione58: ; e58
|
||||
ld a, $3e
|
||||
ld hl, $74be
|
||||
rst FarCall
|
||||
ret
|
||||
; e5f
|
||||
|
||||
|
||||
|
||||
Functione5f: ; e5f
|
||||
ld a, $3e
|
||||
ld hl, $748a
|
||||
rst FarCall
|
||||
ld a, $3e
|
||||
ld hl, $74b0
|
||||
rst FarCall
|
||||
ret
|
||||
; e6c
|
||||
|
||||
Functione6c: ; e6c
|
||||
ld a, $3e
|
||||
ld hl, $74b0
|
||||
rst FarCall
|
||||
ret
|
||||
; e73
|
||||
|
||||
Functione73: ; e73
|
||||
push de
|
||||
ld a, $0
|
||||
call GetSRAMBank
|
||||
push bc
|
||||
ld de, $a000
|
||||
ld a, b
|
||||
call FarDecompress
|
||||
pop bc
|
||||
pop hl
|
||||
ld de, $a000
|
||||
call Request2bpp
|
||||
call CloseSRAM
|
||||
ret
|
||||
; e8d
|
||||
|
||||
|
||||
|
||||
FarCopyBytes: ; e8d
|
||||
; copy bc bytes from a:hl to de
|
||||
|
||||
ld [hBuffer], a
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, [hBuffer]
|
||||
rst Bankswitch
|
||||
|
||||
call CopyBytes
|
||||
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
; 0xe9b
|
||||
|
||||
|
||||
FarCopyBytesDouble: ; e9b
|
||||
; Copy bc bytes from a:hl to bc*2 bytes at de,
|
||||
; doubling each byte in the process.
|
||||
|
||||
ld [hBuffer], a
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, [hBuffer]
|
||||
rst Bankswitch
|
||||
|
||||
; switcheroo, de <> hl
|
||||
ld a, h
|
||||
ld h, d
|
||||
ld d, a
|
||||
ld a, l
|
||||
ld l, e
|
||||
ld e, a
|
||||
|
||||
inc b
|
||||
inc c
|
||||
jr .dec
|
||||
|
||||
.loop
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
.dec
|
||||
dec c
|
||||
jr nz, .loop
|
||||
dec b
|
||||
jr nz, .loop
|
||||
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
; 0xeba
|
||||
|
||||
|
||||
Request2bpp: ; eba
|
||||
ld a, [hBGMapMode]
|
||||
push af
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, b
|
||||
rst Bankswitch
|
||||
|
||||
ld a, [$ffd3]
|
||||
push af
|
||||
|
||||
ld a, $8
|
||||
ld [$ffd3], a
|
||||
ld a, [InLinkBattle]
|
||||
cp $4
|
||||
jr nz, .asm_edc
|
||||
ld a, [$ffe9]
|
||||
and a
|
||||
jr nz, .asm_edc
|
||||
ld a, $6
|
||||
ld [$ffd3], a
|
||||
|
||||
.asm_edc
|
||||
ld a, e
|
||||
ld [$cf68], a
|
||||
ld a, d
|
||||
ld [$cf69], a
|
||||
ld a, l
|
||||
ld [$cf6a], a
|
||||
ld a, h
|
||||
ld [$cf6b], a
|
||||
|
||||
.asm_eec
|
||||
ld a, c
|
||||
ld hl, $ffd3
|
||||
cp [hl]
|
||||
jr nc, .asm_f08
|
||||
|
||||
ld [$cf67], a
|
||||
.wait
|
||||
call DelayFrame
|
||||
ld a, [$cf67]
|
||||
and a
|
||||
jr nz, .wait
|
||||
|
||||
pop af
|
||||
ld [$ffd3], a
|
||||
|
||||
pop af
|
||||
rst Bankswitch
|
||||
|
||||
pop af
|
||||
ld [hBGMapMode], a
|
||||
ret
|
||||
|
||||
.asm_f08
|
||||
ld a, [$ffd3]
|
||||
ld [$cf67], a
|
||||
.asm_f0d
|
||||
call DelayFrame
|
||||
ld a, [$cf67]
|
||||
and a
|
||||
jr nz, .asm_f0d
|
||||
ld a, c
|
||||
ld hl, $ffd3
|
||||
sub [hl]
|
||||
ld c, a
|
||||
jr .asm_eec
|
||||
; f1e
|
||||
|
||||
|
||||
Request1bpp: ; f1e
|
||||
ld a, [hBGMapMode]
|
||||
push af
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, b
|
||||
rst Bankswitch
|
||||
|
||||
ld a, [$ffd3]
|
||||
push af
|
||||
|
||||
ld a, $8
|
||||
ld [$ffd3], a
|
||||
ld a, [InLinkBattle]
|
||||
cp $4
|
||||
jr nz, .asm_f40
|
||||
ld a, [$ffe9]
|
||||
and a
|
||||
jr nz, .asm_f40
|
||||
ld a, $6
|
||||
ld [$ffd3], a
|
||||
|
||||
.asm_f40
|
||||
ld a, e
|
||||
ld [$cf6d], a
|
||||
ld a, d
|
||||
ld [$cf6e], a
|
||||
ld a, l
|
||||
ld [$cf6f], a
|
||||
ld a, h
|
||||
ld [$cf70], a
|
||||
.asm_f50
|
||||
ld a, c
|
||||
ld hl, $ffd3
|
||||
cp [hl]
|
||||
jr nc, .asm_f6c
|
||||
|
||||
ld [$cf6c], a
|
||||
.wait
|
||||
call DelayFrame
|
||||
ld a, [$cf6c]
|
||||
and a
|
||||
jr nz, .wait
|
||||
|
||||
pop af
|
||||
ld [$ffd3], a
|
||||
|
||||
pop af
|
||||
rst Bankswitch
|
||||
|
||||
pop af
|
||||
ld [hBGMapMode], a
|
||||
ret
|
||||
|
||||
.asm_f6c
|
||||
ld a, [$ffd3]
|
||||
ld [$cf6c], a
|
||||
.asm_f71
|
||||
call DelayFrame
|
||||
ld a, [$cf6c]
|
||||
and a
|
||||
jr nz, .asm_f71
|
||||
ld a, c
|
||||
ld hl, $ffd3
|
||||
sub [hl]
|
||||
ld c, a
|
||||
jr .asm_f50
|
||||
; f82
|
||||
|
||||
|
||||
Get2bpp: ; f82
|
||||
ld a, [rLCDC]
|
||||
bit 7, a
|
||||
jp nz, Request2bpp
|
||||
|
||||
Copy2bpp: ; f89
|
||||
; copy c 2bpp tiles from b:de to hl
|
||||
|
||||
push hl
|
||||
ld h, d
|
||||
ld l, e
|
||||
pop de
|
||||
|
||||
; bank
|
||||
ld a, b
|
||||
|
||||
; bc = c * $10
|
||||
push af
|
||||
swap c
|
||||
ld a, $f
|
||||
and c
|
||||
ld b, a
|
||||
ld a, $f0
|
||||
and c
|
||||
ld c, a
|
||||
pop af
|
||||
|
||||
jp FarCopyBytes
|
||||
; f9d
|
||||
|
||||
|
||||
Get1bpp: ; f9d
|
||||
ld a, [rLCDC]
|
||||
bit 7, a
|
||||
jp nz, Request1bpp
|
||||
|
||||
Copy1bpp: ; fa4
|
||||
; copy c 1bpp tiles from b:de to hl
|
||||
|
||||
push de
|
||||
ld d, h
|
||||
ld e, l
|
||||
|
||||
; bank
|
||||
ld a, b
|
||||
|
||||
; bc = c * $10 / 2
|
||||
push af
|
||||
ld h, 0
|
||||
ld l, c
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop af
|
||||
|
||||
pop hl
|
||||
jp FarCopyBytesDouble
|
||||
; fb6
|
||||
|
134
engine/fade.asm
Normal file
134
engine/fade.asm
Normal file
@ -0,0 +1,134 @@
|
||||
; Functions to fade the screen in and out.
|
||||
|
||||
|
||||
Function48c: ; 48c
|
||||
ld a, [TimeOfDayPal]
|
||||
ld b, a
|
||||
ld hl, IncGradGBPalTable_11
|
||||
ld a, l
|
||||
sub b
|
||||
ld l, a
|
||||
jr nc, .asm_499
|
||||
dec h
|
||||
|
||||
.asm_499
|
||||
ld a, [hli]
|
||||
ld [rBGP], a
|
||||
ld a, [hli]
|
||||
ld [rOBP0], a
|
||||
ld a, [hli]
|
||||
ld [rOBP1], a
|
||||
ret
|
||||
; 4a3
|
||||
|
||||
|
||||
Function4a3: ; 4a3
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_4af
|
||||
ld hl, IncGradGBPalTable_00
|
||||
ld b, 4
|
||||
jr FadeOut
|
||||
|
||||
.asm_4af
|
||||
ld hl, IncGradGBPalTable_08
|
||||
ld b, 4
|
||||
jr FadeOut
|
||||
; 4b6
|
||||
|
||||
Function4b6: ; 4b6
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_4c2
|
||||
ld hl, IncGradGBPalTable_05
|
||||
ld b, 3
|
||||
jr FadeOut
|
||||
|
||||
.asm_4c2
|
||||
ld hl, IncGradGBPalTable_13
|
||||
ld b, 3
|
||||
; 4c7
|
||||
|
||||
FadeOut: ; 4c7
|
||||
push de
|
||||
ld a, [hli]
|
||||
call DmgToCgbBGPals
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
call DmgToCgbObjPals
|
||||
ld c, 8
|
||||
call DelayFrames
|
||||
pop de
|
||||
dec b
|
||||
jr nz, FadeOut
|
||||
ret
|
||||
; 4dd
|
||||
|
||||
Function4dd: ; 4dd
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_4e9
|
||||
ld hl, IncGradGBPalTable_04 - 1
|
||||
ld b, 4
|
||||
jr FadeIn
|
||||
|
||||
.asm_4e9
|
||||
ld hl, IncGradGBPalTable_12 - 1
|
||||
ld b, 4
|
||||
jr FadeIn
|
||||
; 4f0
|
||||
|
||||
Function4f0: ; 4f0
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_4fc
|
||||
ld hl, IncGradGBPalTable_07 - 1
|
||||
ld b, 3
|
||||
jr FadeIn
|
||||
|
||||
.asm_4fc
|
||||
ld hl, IncGradGBPalTable_15 - 1
|
||||
ld b, 3
|
||||
; fallthrough
|
||||
; 501
|
||||
|
||||
FadeIn: ; 501
|
||||
push de
|
||||
ld a, [hld]
|
||||
ld d, a
|
||||
ld a, [hld]
|
||||
ld e, a
|
||||
call DmgToCgbObjPals
|
||||
ld a, [hld]
|
||||
call DmgToCgbBGPals
|
||||
ld c, 8
|
||||
call DelayFrames
|
||||
pop de
|
||||
dec b
|
||||
jr nz, FadeIn
|
||||
ret
|
||||
; 517
|
||||
|
||||
|
||||
; 517
|
||||
IncGradGBPalTable_00: db %11111111, %11111111, %11111111
|
||||
IncGradGBPalTable_01: db %11111110, %11111110, %11111110
|
||||
IncGradGBPalTable_02: db %11111001, %11111001, %11111001
|
||||
IncGradGBPalTable_03: db %11100100, %11100100, %11100100
|
||||
IncGradGBPalTable_04: db %11100100, %11100100, %11100100
|
||||
IncGradGBPalTable_05: db %10010000, %10010000, %10010000
|
||||
IncGradGBPalTable_06: db %01000000, %01000000, %01000000
|
||||
IncGradGBPalTable_07: db %00000000, %00000000, %00000000
|
||||
; bgp obp1 obp2
|
||||
IncGradGBPalTable_08: db %11111111, %11111111, %11111111
|
||||
IncGradGBPalTable_09: db %11111110, %11111110, %11111000
|
||||
IncGradGBPalTable_10: db %11111001, %11100100, %11100100
|
||||
IncGradGBPalTable_11: db %11100100, %11010000, %11100000
|
||||
IncGradGBPalTable_12: db %11100100, %11010000, %11100000
|
||||
IncGradGBPalTable_13: db %10010000, %10000000, %10010000
|
||||
IncGradGBPalTable_14: db %01000000, %01000000, %01000000
|
||||
IncGradGBPalTable_15: db %00000000, %00000000, %00000000
|
||||
; 547
|
||||
|
@ -79,7 +79,7 @@ Init: ; 17d
|
||||
or c
|
||||
jr nz, .asm_1b1
|
||||
|
||||
ld sp, Stack - 1
|
||||
ld sp, Stack
|
||||
|
||||
; Clear HRAM
|
||||
ld a, [hCGB]
|
||||
|
@ -273,3 +273,219 @@ StopAutoInput: ; a0a
|
||||
ret
|
||||
; a1b
|
||||
|
||||
|
||||
Functiona1b: ; a1b
|
||||
|
||||
call DelayFrame
|
||||
|
||||
push bc
|
||||
call Functiona57
|
||||
pop bc
|
||||
|
||||
ld a, [hJoyDown]
|
||||
cp D_UP | SELECT | BUTTON_B
|
||||
jr z, .asm_a34
|
||||
|
||||
ld a, [$ffa9]
|
||||
and START | BUTTON_A
|
||||
jr nz, .asm_a34
|
||||
|
||||
dec c
|
||||
jr nz, Functiona1b
|
||||
|
||||
and a
|
||||
ret
|
||||
|
||||
.asm_a34
|
||||
scf
|
||||
ret
|
||||
; a36
|
||||
|
||||
|
||||
Functiona36: ; a36
|
||||
call DelayFrame
|
||||
call GetJoypadPublic
|
||||
ld a, [hJoyPressed]
|
||||
and BUTTON_A | BUTTON_B
|
||||
ret nz
|
||||
call RTC
|
||||
jr Functiona36
|
||||
; a46
|
||||
|
||||
Functiona46: ; a46
|
||||
ld a, [hOAMUpdate]
|
||||
push af
|
||||
ld a, 1
|
||||
ld [hOAMUpdate], a
|
||||
call WaitBGMap
|
||||
call Functiona36
|
||||
pop af
|
||||
ld [hOAMUpdate], a
|
||||
ret
|
||||
; a57
|
||||
|
||||
Functiona57: ; a57
|
||||
call GetJoypadPublic
|
||||
ld a, [$ffaa]
|
||||
and a
|
||||
ld a, [hJoyPressed]
|
||||
jr z, .asm_a63
|
||||
ld a, [hJoyDown]
|
||||
.asm_a63
|
||||
ld [$ffa9], a
|
||||
ld a, [hJoyPressed]
|
||||
and a
|
||||
jr z, .asm_a70
|
||||
ld a, 15
|
||||
ld [TextDelayFrames], a
|
||||
ret
|
||||
|
||||
.asm_a70
|
||||
ld a, [TextDelayFrames]
|
||||
and a
|
||||
jr z, .asm_a7a
|
||||
xor a
|
||||
ld [$ffa9], a
|
||||
ret
|
||||
|
||||
.asm_a7a
|
||||
ld a, 5
|
||||
ld [TextDelayFrames], a
|
||||
ret
|
||||
; a80
|
||||
|
||||
Functiona80: ; a80
|
||||
ld a, [$ffaf]
|
||||
push af
|
||||
ld a, [$ffb0]
|
||||
push af
|
||||
xor a
|
||||
ld [$ffaf], a
|
||||
ld a, $6
|
||||
ld [$ffb0], a
|
||||
.asm_a8d
|
||||
push hl
|
||||
ld hl, $c606
|
||||
call Functionb06
|
||||
pop hl
|
||||
call Functiona57
|
||||
ld a, [$ffa9]
|
||||
and $3
|
||||
jr z, .asm_a8d
|
||||
pop af
|
||||
ld [$ffb0], a
|
||||
pop af
|
||||
ld [$ffaf], a
|
||||
ret
|
||||
; aa5
|
||||
|
||||
Functionaa5: ; aa5
|
||||
call Functiona57
|
||||
ld a, [$ffa9]
|
||||
and BUTTON_A | BUTTON_B
|
||||
jr z, Functionaa5
|
||||
ret
|
||||
; aaf
|
||||
|
||||
Functionaaf: ; aaf
|
||||
ld a, [InLinkBattle]
|
||||
and a
|
||||
jr nz, .asm_ac1
|
||||
call Functionac6
|
||||
push de
|
||||
ld de, SFX_READ_TEXT_2
|
||||
call StartSFX
|
||||
pop de
|
||||
ret
|
||||
|
||||
.asm_ac1
|
||||
ld c, 65
|
||||
jp DelayFrames
|
||||
; ac6
|
||||
|
||||
Functionac6: ; ac6
|
||||
ld a, [hOAMUpdate]
|
||||
push af
|
||||
ld a, $1
|
||||
ld [hOAMUpdate], a
|
||||
ld a, [InputType]
|
||||
or a
|
||||
jr z, .asm_ad9
|
||||
callba Function1de28a
|
||||
.asm_ad9
|
||||
call Functionaf5
|
||||
call Functiona57
|
||||
ld a, [hJoyPressed]
|
||||
and $3
|
||||
jr nz, .asm_af1
|
||||
call RTC
|
||||
ld a, $1
|
||||
ld [hBGMapMode], a
|
||||
call DelayFrame
|
||||
jr .asm_ad9
|
||||
|
||||
.asm_af1
|
||||
pop af
|
||||
ld [hOAMUpdate], a
|
||||
ret
|
||||
; af5
|
||||
|
||||
Functionaf5: ; af5
|
||||
ld a, [$ff9b]
|
||||
and $10
|
||||
jr z, .asm_aff
|
||||
ld a, $ee
|
||||
jr .asm_b02
|
||||
|
||||
.asm_aff
|
||||
ld a, [$c605]
|
||||
|
||||
.asm_b02
|
||||
ld [$c606], a
|
||||
ret
|
||||
; b06
|
||||
|
||||
Functionb06: ; b06
|
||||
push bc
|
||||
ld a, [hl]
|
||||
ld b, a
|
||||
ld a, $ee
|
||||
cp b
|
||||
pop bc
|
||||
jr nz, .asm_b27
|
||||
ld a, [$ffaf]
|
||||
dec a
|
||||
ld [$ffaf], a
|
||||
ret nz
|
||||
ld a, [$ffb0]
|
||||
dec a
|
||||
ld [$ffb0], a
|
||||
ret nz
|
||||
ld a, $7a
|
||||
ld [hl], a
|
||||
ld a, $ff
|
||||
ld [$ffaf], a
|
||||
ld a, $6
|
||||
ld [$ffb0], a
|
||||
ret
|
||||
|
||||
.asm_b27
|
||||
ld a, [$ffaf]
|
||||
and a
|
||||
ret z
|
||||
dec a
|
||||
ld [$ffaf], a
|
||||
ret nz
|
||||
dec a
|
||||
ld [$ffaf], a
|
||||
ld a, [$ffb0]
|
||||
dec a
|
||||
ld [$ffb0], a
|
||||
ret nz
|
||||
ld a, $6
|
||||
ld [$ffb0], a
|
||||
ld a, $ee
|
||||
ld [hl], a
|
||||
ret
|
||||
; b40
|
||||
|
||||
|
81
engine/lcd.asm
Normal file
81
engine/lcd.asm
Normal file
@ -0,0 +1,81 @@
|
||||
; LCD handling
|
||||
|
||||
|
||||
Function547: ; 547
|
||||
ld a, [hLCDStatCustom]
|
||||
cp rSCX & $ff
|
||||
ret nz
|
||||
ld c, a
|
||||
ld a, [LYOverrides]
|
||||
ld [$ff00+c], a
|
||||
ret
|
||||
; 552
|
||||
|
||||
|
||||
LCD: ; 552
|
||||
push af
|
||||
ld a, [hLCDStatCustom]
|
||||
and a
|
||||
jr z, .done
|
||||
|
||||
; At this point it's assumed we're in WRAM bank 5!
|
||||
push bc
|
||||
ld a, [rLY]
|
||||
ld c, a
|
||||
ld b, LYOverrides >> 8
|
||||
ld a, [bc]
|
||||
ld b, a
|
||||
ld a, [hLCDStatCustom]
|
||||
ld c, a
|
||||
ld a, b
|
||||
ld [$ff00+c], a
|
||||
pop bc
|
||||
|
||||
.done
|
||||
pop af
|
||||
reti
|
||||
; 568
|
||||
|
||||
|
||||
DisableLCD: ; 568
|
||||
; Turn the LCD off
|
||||
|
||||
; Don't need to do anything if the LCD is already off
|
||||
ld a, [rLCDC]
|
||||
bit 7, a ; lcd enable
|
||||
ret z
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
ld a, [rIE]
|
||||
ld b, a
|
||||
|
||||
; Disable VBlank
|
||||
res 0, a ; vblank
|
||||
ld [rIE], a
|
||||
|
||||
.wait
|
||||
; Wait until VBlank would normally happen
|
||||
ld a, [rLY]
|
||||
cp 145
|
||||
jr nz, .wait
|
||||
|
||||
ld a, [rLCDC]
|
||||
and %01111111 ; lcd enable off
|
||||
ld [rLCDC], a
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
ld a, b
|
||||
ld [rIE], a
|
||||
ret
|
||||
; 58a
|
||||
|
||||
|
||||
EnableLCD: ; 58a
|
||||
ld a, [rLCDC]
|
||||
set 7, a ; lcd enable
|
||||
ld [rLCDC], a
|
||||
ret
|
||||
; 591
|
||||
|
347
engine/palettes.asm
Normal file
347
engine/palettes.asm
Normal file
@ -0,0 +1,347 @@
|
||||
; Functions dealing with palettes.
|
||||
|
||||
|
||||
UpdatePalsIfCGB: ; c2f
|
||||
; update bgp data from BGPals
|
||||
; update obp data from OBPals
|
||||
; return carry if successful
|
||||
|
||||
; check cgb
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
|
||||
|
||||
UpdateCGBPals: ; c33
|
||||
; return carry if successful
|
||||
; any pals to update?
|
||||
ld a, [hCGBPalUpdate]
|
||||
and a
|
||||
ret z
|
||||
|
||||
|
||||
ForceUpdateCGBPals: ; c37
|
||||
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, 5 ; BANK(BGPals)
|
||||
ld [rSVBK], a
|
||||
|
||||
ld hl, BGPals ; 5:d080
|
||||
|
||||
; copy 8 pals to bgpd
|
||||
ld a, %10000000 ; auto increment, index 0
|
||||
ld [rBGPI], a
|
||||
ld c, rBGPD % $100
|
||||
ld b, 4 ; NUM_PALS / 2
|
||||
.bgp
|
||||
rept $10
|
||||
ld a, [hli]
|
||||
ld [$ff00+c], a
|
||||
endr
|
||||
|
||||
dec b
|
||||
jr nz, .bgp
|
||||
|
||||
; hl is now 5:d0c0 OBPals
|
||||
|
||||
; copy 8 pals to obpd
|
||||
ld a, %10000000 ; auto increment, index 0
|
||||
ld [rOBPI], a
|
||||
ld c, rOBPD - rJOYP
|
||||
ld b, 4 ; NUM_PALS / 2
|
||||
.obp
|
||||
rept $10
|
||||
ld a, [hli]
|
||||
ld [$ff00+c], a
|
||||
endr
|
||||
|
||||
dec b
|
||||
jr nz, .obp
|
||||
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
|
||||
; clear pal update queue
|
||||
xor a
|
||||
ld [hCGBPalUpdate], a
|
||||
|
||||
scf
|
||||
ret
|
||||
; c9f
|
||||
|
||||
|
||||
DmgToCgbBGPals: ; c9f
|
||||
; exists to forego reinserting cgb-converted image data
|
||||
|
||||
; input: a -> bgp
|
||||
|
||||
ld [rBGP], a
|
||||
push af
|
||||
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .end
|
||||
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
|
||||
ld a, 5
|
||||
ld [rSVBK], a
|
||||
|
||||
; copy & reorder bg pal buffer
|
||||
ld hl, BGPals ; to
|
||||
ld de, Unkn1Pals ; from
|
||||
; order
|
||||
ld a, [rBGP]
|
||||
ld b, a
|
||||
; all pals
|
||||
ld c, 8
|
||||
call CopyPals
|
||||
; request pal update
|
||||
ld a, 1
|
||||
ld [hCGBPalUpdate], a
|
||||
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
.end
|
||||
pop af
|
||||
ret
|
||||
; ccb
|
||||
|
||||
|
||||
DmgToCgbObjPals: ; ccb
|
||||
; exists to forego reinserting cgb-converted image data
|
||||
|
||||
; input: d -> obp1
|
||||
; e -> obp2
|
||||
|
||||
ld a, e
|
||||
ld [rOBP0], a
|
||||
ld a, d
|
||||
ld [rOBP1], a
|
||||
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
|
||||
ld a, 5
|
||||
ld [rSVBK], a
|
||||
|
||||
; copy & reorder obj pal buffer
|
||||
ld hl, OBPals ; to
|
||||
ld de, Unkn2Pals ; from
|
||||
; order
|
||||
ld a, [rOBP0]
|
||||
ld b, a
|
||||
; all pals
|
||||
ld c, 8
|
||||
call CopyPals
|
||||
; request pal update
|
||||
ld a, 1
|
||||
ld [hCGBPalUpdate], a
|
||||
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
; cf8
|
||||
|
||||
|
||||
Functioncf8: ; cf8
|
||||
ld [rOBP0], a
|
||||
push af
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_d22
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, $5
|
||||
ld [rSVBK], a
|
||||
ld hl, $d0c0
|
||||
ld de, MartPointer
|
||||
ld a, [rOBP0]
|
||||
ld b, a
|
||||
ld c, $1
|
||||
call CopyPals
|
||||
ld a, $1
|
||||
ld [hCGBPalUpdate], a
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
|
||||
.asm_d22
|
||||
pop af
|
||||
ret
|
||||
; d24
|
||||
|
||||
Functiond24: ; d24
|
||||
ld [rOBP1], a
|
||||
push af
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .asm_d4e
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, $5
|
||||
ld [rSVBK], a
|
||||
ld hl, $d0c8
|
||||
ld de, $d048
|
||||
ld a, [rOBP1]
|
||||
ld b, a
|
||||
ld c, $1
|
||||
call CopyPals
|
||||
ld a, $1
|
||||
ld [hCGBPalUpdate], a
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
|
||||
.asm_d4e
|
||||
pop af
|
||||
ret
|
||||
; d50
|
||||
|
||||
|
||||
|
||||
CopyPals: ; d50
|
||||
; copy c palettes in order b from de to hl
|
||||
|
||||
push bc
|
||||
ld c, 4 ; NUM_PAL_COLORS
|
||||
.loop
|
||||
push de
|
||||
push hl
|
||||
|
||||
; get pal color
|
||||
ld a, b
|
||||
and %11 ; color
|
||||
; 2 bytes per color
|
||||
add a
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, de
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
|
||||
; dest
|
||||
pop hl
|
||||
; write color
|
||||
ld [hl], e
|
||||
inc hl
|
||||
ld [hl], d
|
||||
inc hl
|
||||
; next pal color
|
||||
srl b
|
||||
srl b
|
||||
; source
|
||||
pop de
|
||||
; done pal?
|
||||
dec c
|
||||
jr nz, .loop
|
||||
|
||||
; de += 8 (next pal)
|
||||
ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal
|
||||
add e
|
||||
jr nc, .ok
|
||||
inc d
|
||||
.ok
|
||||
ld e, a
|
||||
|
||||
; how many more pals?
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, CopyPals
|
||||
ret
|
||||
; d79
|
||||
|
||||
|
||||
Functiond79: ; d79
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
ld a, 1
|
||||
ld [rVBK], a
|
||||
ld hl, VTiles0
|
||||
ld bc, $2000
|
||||
xor a
|
||||
call ByteFill
|
||||
ld a, 0
|
||||
ld [rVBK], a
|
||||
ret
|
||||
; d90
|
||||
|
||||
|
||||
Functiond90: ; d90
|
||||
ret
|
||||
; d91
|
||||
|
||||
|
||||
Functiond91: ; d91
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, 5 ; BANK(BGPals)
|
||||
ld [rSVBK], a
|
||||
ld hl, BGPals
|
||||
ld bc, $40 + $10
|
||||
xor a
|
||||
call ByteFill
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
ld a, 1
|
||||
ld [hCGBPalUpdate], a
|
||||
call DelayFrame
|
||||
ret
|
||||
; db1
|
||||
|
||||
|
||||
Functiondb1: ; db1
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Function4c000)
|
||||
rst Bankswitch
|
||||
call Function4c000
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
; dbd
|
||||
|
||||
Functiondbd: ; dbd
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Function4c03f)
|
||||
rst Bankswitch
|
||||
call Function4c03f
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
; dc9
|
||||
|
@ -308,7 +308,7 @@ Script_2writetext: ; 0x96e9b
|
||||
ld h, a
|
||||
ld a, [ScriptBank]
|
||||
ld b, a
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
; 0x96eab
|
||||
|
||||
@ -323,7 +323,7 @@ Script_3writetext: ; 0x96eab
|
||||
ld l, a
|
||||
call GetScriptByte
|
||||
ld h, a
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
; 0x96ebb
|
||||
|
||||
@ -348,7 +348,7 @@ Script_repeattext: ; 0x96ebb
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
.asm_96ed8
|
||||
ret
|
||||
@ -357,7 +357,7 @@ Script_repeattext: ; 0x96ebb
|
||||
Script_closetext: ; 0x96ed9
|
||||
; script command 0x54
|
||||
|
||||
jp $0a46
|
||||
jp Functiona46
|
||||
; 0x96edc
|
||||
|
||||
Script_keeptextopen: ; 0x96edc
|
||||
@ -367,8 +367,8 @@ Script_keeptextopen: ; 0x96edc
|
||||
push af
|
||||
ld a, $1
|
||||
ld [$ffd8], a
|
||||
call $31f6
|
||||
call $0aaf
|
||||
call WaitBGMap
|
||||
call Functionaaf
|
||||
pop af
|
||||
ld [$ffd8], a
|
||||
ret
|
||||
@ -377,7 +377,7 @@ Script_keeptextopen: ; 0x96edc
|
||||
Script_yesorno: ; 0x96eed
|
||||
; script command 0x4e
|
||||
|
||||
call $1dcf
|
||||
call Function1dcf
|
||||
ld a, $0
|
||||
jr c, .asm_96ef6 ; 0x96ef2 $2
|
||||
ld a, $1
|
||||
@ -397,16 +397,16 @@ Script_loadmenudata: ; 0x96efa
|
||||
ld h, a
|
||||
ld de, $1d35
|
||||
ld a, [ScriptBank]
|
||||
call $26b7
|
||||
call $1ad2
|
||||
call Function26b7
|
||||
call Function1ad2
|
||||
ret
|
||||
; 0x96f0f
|
||||
|
||||
Script_writebackup: ; 0x96f0f
|
||||
; script command 0x50
|
||||
|
||||
call $1c17
|
||||
call $1ad2
|
||||
call Function1c17
|
||||
call Function1ad2
|
||||
ret
|
||||
; 0x96f16
|
||||
|
||||
@ -470,7 +470,7 @@ Script_storetext: ; 0x96f52
|
||||
; pointer (PointerLabelBeforeBank)
|
||||
; memory (SingleByteParam)
|
||||
|
||||
call $106c
|
||||
call Function106c
|
||||
call GetScriptByte
|
||||
ld c, a
|
||||
ld a, $47
|
||||
@ -539,7 +539,7 @@ Script_verbosegiveitem2: ; 0x96f8e
|
||||
ld a, [de]
|
||||
ld [$d10c], a
|
||||
ld hl, $d892
|
||||
call $2f66
|
||||
call Function2f66
|
||||
ld a, $1
|
||||
jr c, .asm_96fb0 ; 0x96fad $1
|
||||
xor a
|
||||
@ -561,7 +561,7 @@ Script_itemnotify: ; 0x96fc6
|
||||
call CurItemName
|
||||
ld b, BANK(PutItemInPocketText)
|
||||
ld hl, PutItemInPocketText
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
; 0x96fd5
|
||||
|
||||
@ -572,7 +572,7 @@ Script_pocketisfull: ; 0x96fd5
|
||||
call CurItemName
|
||||
ld b, BANK(PocketIsFullText)
|
||||
ld hl, PocketIsFullText
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
; 0x96fe4
|
||||
|
||||
@ -732,7 +732,7 @@ Script_askforphonenumber: ; 0x970be
|
||||
; parameters:
|
||||
; number (SingleByteParam)
|
||||
|
||||
call $1dcf
|
||||
call Function1dcf
|
||||
jr c, .asm_970d6 ; 0x970c1 $13
|
||||
call GetScriptByte
|
||||
ld c, a
|
||||
@ -814,7 +814,7 @@ Script_trainertext: ; 0x9710f
|
||||
ld l, a
|
||||
ld a, [$d03e]
|
||||
ld b, a
|
||||
call $269a
|
||||
call Function269a
|
||||
ret
|
||||
; 0x97125
|
||||
|
||||
@ -907,7 +907,7 @@ Script_playrammusic: ; 0x9717a
|
||||
Script_playmapmusic: ; 0x97185
|
||||
; script command 0x82
|
||||
|
||||
call $3cdf
|
||||
call Function3cdf
|
||||
ret
|
||||
; 0x97189
|
||||
|
||||
@ -988,7 +988,7 @@ Script_cry: ; 0x971d1
|
||||
jr nz, .asm_971df ; 0x971da $3
|
||||
ld a, [$c2dd]
|
||||
.asm_971df
|
||||
call $37ce
|
||||
call Function37ce
|
||||
ret
|
||||
; 0x971e3
|
||||
|
||||
@ -1039,7 +1039,7 @@ Function971fa: ; 971fa
|
||||
ld h, a
|
||||
ld a, [ScriptBank]
|
||||
ld b, a
|
||||
call $26c7
|
||||
call Function26c7
|
||||
ret c
|
||||
ld a, SCRIPT_WAIT_MOVEMENT
|
||||
ld [ScriptMode], a
|
||||
@ -1145,13 +1145,13 @@ Script_spriteface: ; 0x97274
|
||||
Unknown_0x9728b: ; 0x9728b
|
||||
ld a, d
|
||||
push de
|
||||
call $18de
|
||||
call Function18de
|
||||
jr c, .asm_972b9 ; 0x97290 $27
|
||||
ld hl, $0000
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
push bc
|
||||
call $1836
|
||||
call Function1836
|
||||
pop bc
|
||||
jr c, .asm_972b9 ; 0x9729c $1b
|
||||
ld hl, $0004
|
||||
@ -1160,13 +1160,13 @@ Unknown_0x9728b: ; 0x9728b
|
||||
jr nz, .asm_972b9 ; 0x972a4 $13
|
||||
pop de
|
||||
ld a, e
|
||||
call $1af8
|
||||
call Function1af8
|
||||
ld hl, $d0ed
|
||||
bit 6, [hl]
|
||||
jr nz, .asm_972b5 ; 0x972b0 $3
|
||||
call Unknown_0x972bc
|
||||
.asm_972b5
|
||||
call $1ad2
|
||||
call Function1ad2
|
||||
ret
|
||||
.asm_972b9
|
||||
pop de
|
||||
@ -1175,7 +1175,7 @@ Unknown_0x9728b: ; 0x9728b
|
||||
; 0x972bc
|
||||
|
||||
Unknown_0x972bc: ; 0x972bc
|
||||
call $217a
|
||||
call Function217a
|
||||
ld hl, TileMap
|
||||
ld bc, $0168
|
||||
.asm_972c5
|
||||
@ -1211,7 +1211,7 @@ Script_appear: ; 0x972dd
|
||||
|
||||
call GetScriptByte
|
||||
call Unknown_0x971e3
|
||||
call $1956
|
||||
call Function1956
|
||||
ld a, [$ffaf]
|
||||
ld b, $0
|
||||
call Unknown_0x9730b
|
||||
@ -1229,7 +1229,7 @@ Script_disappear: ; 0x972ee
|
||||
jr nz, .asm_972fa ; 0x972f6 $2
|
||||
ld a, [$ffe0]
|
||||
.asm_972fa
|
||||
call $199f
|
||||
call Function199f
|
||||
ld a, [$ffaf]
|
||||
ld b, $1
|
||||
call Unknown_0x9730b
|
||||
@ -1241,7 +1241,7 @@ Script_disappear: ; 0x972ee
|
||||
|
||||
Unknown_0x9730b: ; 0x9730b
|
||||
push bc
|
||||
call $18d2
|
||||
call GetMapObject
|
||||
ld hl, $000c
|
||||
add hl, bc
|
||||
pop bc
|
||||
@ -1513,7 +1513,7 @@ Script_catchtutorial: ; 0x97447
|
||||
|
||||
call GetScriptByte
|
||||
ld [$d230], a
|
||||
call $2879
|
||||
call Function2879
|
||||
ld a, $13
|
||||
ld hl, $6554
|
||||
rst $8
|
||||
@ -1559,7 +1559,7 @@ Script_reloadmap: ; 0x97491
|
||||
ld a, $f3
|
||||
ld [$ff9f], a
|
||||
ld a, $1
|
||||
call $261b
|
||||
call Function261b
|
||||
call StopScript
|
||||
ret
|
||||
; 0x974a2
|
||||
@ -1835,7 +1835,7 @@ Script_priorityjump: ; 0x975aa
|
||||
Script_checktriggers: ; 0x975c2
|
||||
; script command 0x13
|
||||
|
||||
call $211b
|
||||
call Function211b
|
||||
jr z, .asm_975cb ; 0x975c5 $4
|
||||
ld [$c2dd], a
|
||||
ret
|
||||
@ -1855,7 +1855,7 @@ Script_checkmaptriggers: ; 0x975d1
|
||||
ld b, a
|
||||
call GetScriptByte
|
||||
ld c, a
|
||||
call $2147
|
||||
call Function2147
|
||||
ld a, d
|
||||
or e
|
||||
jr z, .asm_975e5 ; 0x975de $5
|
||||
@ -1894,7 +1894,7 @@ Script_domaptrigger: ; 0x975f5
|
||||
; fallthrough
|
||||
|
||||
Unknown_975fd: ; 0x975fd
|
||||
call $2147
|
||||
call Function2147
|
||||
ld a, d
|
||||
or e
|
||||
jr z, .asm_97608 ; 0x97602 $4
|
||||
@ -1988,7 +1988,7 @@ Script_random: ; 0x97640
|
||||
ld b, a
|
||||
.asm_97653
|
||||
push bc
|
||||
call $2f8c
|
||||
call RNG
|
||||
pop bc
|
||||
ld a, [$ffe1]
|
||||
cp b
|
||||
@ -1996,7 +1996,7 @@ Script_random: ; 0x97640
|
||||
jr .asm_97666 ; 0x9765d $7
|
||||
.asm_9765f
|
||||
push bc
|
||||
call $2f8c
|
||||
call RNG
|
||||
pop bc
|
||||
ld a, [$ffe1]
|
||||
.asm_97666
|
||||
@ -2004,7 +2004,7 @@ Script_random: ; 0x97640
|
||||
ld a, [$c2dd]
|
||||
ld c, a
|
||||
pop af
|
||||
call $3110
|
||||
call SimpleDivide
|
||||
ld [$c2dd], a
|
||||
ret
|
||||
; 0x97673
|
||||
@ -2091,7 +2091,7 @@ Script_pokenamemem: ; 0x976ae
|
||||
ld a, [$c2dd]
|
||||
.asm_976b7
|
||||
ld [$d265], a
|
||||
call $343b
|
||||
call GetPokemonName
|
||||
ld de, StringBuffer1
|
||||
|
||||
Unknown_976c0: ; 0x976c0
|
||||
@ -2205,7 +2205,7 @@ Script_readmoney: ; 0x97732
|
||||
call Unknown_0x97861
|
||||
ld hl, StringBuffer1
|
||||
ld bc, $4306
|
||||
call $3198
|
||||
call PrintNum
|
||||
ld de, StringBuffer1
|
||||
jp Unknown_976c0
|
||||
; 0x97747
|
||||
@ -2219,7 +2219,7 @@ Script_readcoins: ; 0x97747
|
||||
ld hl, StringBuffer1
|
||||
ld de, $d855
|
||||
ld bc, $4206
|
||||
call $3198
|
||||
call PrintNum
|
||||
ld de, StringBuffer1
|
||||
jp Unknown_976c0
|
||||
; 0x9775c
|
||||
@ -2233,7 +2233,7 @@ Script_RAM2MEM: ; 0x9775c
|
||||
ld de, $c2dd
|
||||
ld hl, StringBuffer1
|
||||
ld bc, $4103
|
||||
call $3198
|
||||
call PrintNum
|
||||
ld de, StringBuffer1
|
||||
jp Unknown_976c0
|
||||
; 0x97771
|
||||
@ -2320,7 +2320,7 @@ Script_giveitem: ; 0x977ca
|
||||
call GetScriptByte
|
||||
ld [$d10c], a
|
||||
ld hl, $d892
|
||||
call $2f66
|
||||
call Function2f66
|
||||
jr nc, .asm_977eb ; 0x977e3 $6
|
||||
ld a, $1
|
||||
ld [$c2dd], a
|
||||
@ -2346,7 +2346,7 @@ Script_takeitem: ; 0x977f0
|
||||
ld a, $ff
|
||||
ld [$d107], a
|
||||
ld hl, $d892
|
||||
call $2f53
|
||||
call Function2f53
|
||||
ret nc
|
||||
ld a, $1
|
||||
ld [$c2dd], a
|
||||
@ -2363,7 +2363,7 @@ Script_checkitem: ; 0x97812
|
||||
call GetScriptByte
|
||||
ld [$d106], a
|
||||
ld hl, $d892
|
||||
call $2f79
|
||||
call Function2f79
|
||||
ret nc
|
||||
ld a, $1
|
||||
ld [$c2dd], a
|
||||
@ -2839,7 +2839,7 @@ Script_warp: ; 0x97a1d
|
||||
ld a, $f1
|
||||
ld [$ff9f], a
|
||||
ld a, $1
|
||||
call $261b
|
||||
call Function261b
|
||||
call StopScript
|
||||
ret
|
||||
.asm_97a4a
|
||||
@ -2851,7 +2851,7 @@ Script_warp: ; 0x97a1d
|
||||
ld a, $fb
|
||||
ld [$ff9f], a
|
||||
ld a, $1
|
||||
call $261b
|
||||
call Function261b
|
||||
call StopScript
|
||||
ret
|
||||
; 0x97a65
|
||||
@ -2935,8 +2935,8 @@ Script_changemap: ; 0x97ab3
|
||||
ld [$d1a1], a
|
||||
call GetScriptByte
|
||||
ld [$d1a2], a
|
||||
call $24e4
|
||||
call $2879
|
||||
call Function24e4
|
||||
call Function2879
|
||||
ret
|
||||
; 0x97acc
|
||||
|
||||
@ -2953,10 +2953,10 @@ Script_changeblock: ; 0x97acc
|
||||
call GetScriptByte
|
||||
add $4
|
||||
ld e, a
|
||||
call $2a66
|
||||
call Function2a66
|
||||
call GetScriptByte
|
||||
ld [hl], a
|
||||
call $2879
|
||||
call Function2879
|
||||
ret
|
||||
; 0x97ae3
|
||||
|
||||
@ -2965,19 +2965,19 @@ Script_reloadmappart: ; 0x97ae3
|
||||
|
||||
xor a
|
||||
ld [$ffd4], a
|
||||
call $2173
|
||||
call $2914
|
||||
call Function2173
|
||||
call Function2914
|
||||
ld a, $41
|
||||
ld hl, $4061
|
||||
rst $8
|
||||
call $1ad2
|
||||
call Function1ad2
|
||||
ret
|
||||
; 0x97af6
|
||||
|
||||
Script_warpcheck: ; 0x97af6
|
||||
; script command 0x8e
|
||||
|
||||
call $224a
|
||||
call Function224a
|
||||
ret nc
|
||||
callba Function966d0
|
||||
ret
|
||||
@ -2996,7 +2996,7 @@ Script_newloadmap: ; 0x97b08
|
||||
call GetScriptByte
|
||||
ld [$ff9f], a
|
||||
ld a, $1
|
||||
call $261b
|
||||
call Function261b
|
||||
call StopScript
|
||||
ret
|
||||
; 0x97b16
|
||||
@ -3011,7 +3011,7 @@ Script_reloadandreturn: ; 0x97b16
|
||||
Script_loadfont: ; 0x97b1c
|
||||
; script command 0x47
|
||||
|
||||
call $2e08
|
||||
call Function2e08
|
||||
ret
|
||||
; 0x97b20
|
||||
|
||||
@ -3020,7 +3020,7 @@ Script_refreshscreen: ; 0x97b20
|
||||
; parameters:
|
||||
; dummy (SingleByteParam)
|
||||
|
||||
call $2dba
|
||||
call ResetWindow
|
||||
call GetScriptByte
|
||||
ret
|
||||
; 0x97b27
|
||||
@ -3043,8 +3043,8 @@ LoadMoveSpritesScript: ; 97b2e
|
||||
Script_loadmovesprites: ; 0x97b2f
|
||||
; script command 0x49
|
||||
|
||||
call $2e20
|
||||
call $2dcf
|
||||
call Function2e20
|
||||
call Function2dcf
|
||||
ret
|
||||
; 0x97b36
|
||||
|
||||
@ -3206,7 +3206,7 @@ Script_credits: ; 0x97bf3
|
||||
DisplayCredits:
|
||||
call Script_resetfuncs
|
||||
ld a, $3
|
||||
call $261b
|
||||
call Function261b
|
||||
call StopScript
|
||||
ret
|
||||
; 0x97c05
|
||||
|
408
engine/serial.asm
Normal file
408
engine/serial.asm
Normal file
@ -0,0 +1,408 @@
|
||||
Serial: ; 6ef
|
||||
; The serial interrupt.
|
||||
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
|
||||
ld a, [$ffc9]
|
||||
and a
|
||||
jr nz, .asm_71c
|
||||
|
||||
ld a, [$c2d4]
|
||||
bit 0, a
|
||||
jr nz, .asm_721
|
||||
|
||||
ld a, [$ffcb]
|
||||
inc a
|
||||
jr z, .asm_726
|
||||
|
||||
ld a, [rSB]
|
||||
ld [hSerialReceive], a
|
||||
|
||||
ld a, [hSerialSend]
|
||||
ld [rSB], a
|
||||
|
||||
ld a, [$ffcb]
|
||||
cp $2
|
||||
jr z, .asm_752
|
||||
|
||||
ld a, 0 << rSC_ON
|
||||
ld [rSC], a
|
||||
ld a, 1 << rSC_ON
|
||||
ld [rSC], a
|
||||
jr .asm_752
|
||||
|
||||
.asm_71c
|
||||
call Function3e80
|
||||
jr .asm_75a
|
||||
|
||||
.asm_721
|
||||
call Function2057
|
||||
jr .asm_75a
|
||||
|
||||
.asm_726
|
||||
ld a, [rSB]
|
||||
cp $1
|
||||
jr z, .asm_730
|
||||
cp $2
|
||||
jr nz, .asm_752
|
||||
|
||||
.asm_730
|
||||
ld [hSerialReceive], a
|
||||
ld [$ffcb], a
|
||||
cp $2
|
||||
jr z, .asm_74f
|
||||
|
||||
xor a
|
||||
ld [rSB], a
|
||||
ld a, $3
|
||||
ld [rDIV], a
|
||||
|
||||
.asm_73f
|
||||
ld a, [rDIV]
|
||||
bit 7, a
|
||||
jr nz, .asm_73f
|
||||
|
||||
ld a, 0 << rSC_ON
|
||||
ld [rSC], a
|
||||
ld a, 1 << rSC_ON
|
||||
ld [rSC], a
|
||||
jr .asm_752
|
||||
|
||||
.asm_74f
|
||||
xor a
|
||||
ld [rSB], a
|
||||
|
||||
.asm_752
|
||||
ld a, $1
|
||||
ld [$ffca], a
|
||||
ld a, $fe
|
||||
ld [hSerialSend], a
|
||||
|
||||
.asm_75a
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
reti
|
||||
; 75f
|
||||
|
||||
Function75f: ; 75f
|
||||
ld a, $1
|
||||
ld [$ffcc], a
|
||||
.asm_763
|
||||
ld a, [hl]
|
||||
ld [hSerialSend], a
|
||||
call Function78a
|
||||
push bc
|
||||
ld b, a
|
||||
inc hl
|
||||
ld a, $30
|
||||
.asm_76e
|
||||
dec a
|
||||
jr nz, .asm_76e
|
||||
ld a, [$ffcc]
|
||||
and a
|
||||
ld a, b
|
||||
pop bc
|
||||
jr z, .asm_782
|
||||
dec hl
|
||||
cp $fd
|
||||
jr nz, .asm_763
|
||||
xor a
|
||||
ld [$ffcc], a
|
||||
jr .asm_763
|
||||
|
||||
.asm_782
|
||||
ld [de], a
|
||||
inc de
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, .asm_763
|
||||
ret
|
||||
; 78a
|
||||
|
||||
Function78a: ; 78a
|
||||
xor a
|
||||
ld [$ffca], a
|
||||
ld a, [$ffcb]
|
||||
cp $2
|
||||
jr nz, .asm_79b
|
||||
ld a, $1
|
||||
ld [rSC], a
|
||||
ld a, $81
|
||||
ld [rSC], a
|
||||
|
||||
.asm_79b
|
||||
ld a, [$ffca]
|
||||
and a
|
||||
jr nz, .asm_7e5
|
||||
ld a, [$ffcb]
|
||||
cp $1
|
||||
jr nz, .asm_7c0
|
||||
call Function82b
|
||||
jr z, .asm_7c0
|
||||
call .asm_825
|
||||
push hl
|
||||
ld hl, $cf5c
|
||||
inc [hl]
|
||||
jr nz, .asm_7b7
|
||||
dec hl
|
||||
inc [hl]
|
||||
|
||||
.asm_7b7
|
||||
pop hl
|
||||
call Function82b
|
||||
jr nz, .asm_79b
|
||||
jp Function833
|
||||
|
||||
.asm_7c0
|
||||
ld a, [rIE]
|
||||
and $f
|
||||
cp $8
|
||||
jr nz, .asm_79b
|
||||
ld a, [$cf5d]
|
||||
dec a
|
||||
ld [$cf5d], a
|
||||
jr nz, .asm_79b
|
||||
ld a, [$cf5e]
|
||||
dec a
|
||||
ld [$cf5e], a
|
||||
jr nz, .asm_79b
|
||||
ld a, [$ffcb]
|
||||
cp $1
|
||||
jr z, .asm_7e5
|
||||
ld a, $ff
|
||||
.asm_7e2
|
||||
dec a
|
||||
jr nz, .asm_7e2
|
||||
|
||||
.asm_7e5
|
||||
xor a
|
||||
ld [$ffca], a
|
||||
ld a, [rIE]
|
||||
and $f
|
||||
sub $8
|
||||
jr nz, .asm_7f8
|
||||
ld [$cf5d], a
|
||||
ld a, $50
|
||||
ld [$cf5e], a
|
||||
|
||||
.asm_7f8
|
||||
ld a, [hSerialReceive]
|
||||
cp $fe
|
||||
ret nz
|
||||
call Function82b
|
||||
jr z, .asm_813
|
||||
push hl
|
||||
ld hl, $cf5c
|
||||
ld a, [hl]
|
||||
dec a
|
||||
ld [hld], a
|
||||
inc a
|
||||
jr nz, .asm_80d
|
||||
dec [hl]
|
||||
|
||||
.asm_80d
|
||||
pop hl
|
||||
call Function82b
|
||||
jr z, Function833
|
||||
|
||||
.asm_813
|
||||
ld a, [rIE]
|
||||
and $f
|
||||
cp $8
|
||||
ld a, $fe
|
||||
ret z
|
||||
ld a, [hl]
|
||||
ld [hSerialSend], a
|
||||
call DelayFrame
|
||||
jp Function78a
|
||||
|
||||
.asm_825
|
||||
ld a, $f
|
||||
.asm_827
|
||||
dec a
|
||||
jr nz, .asm_827
|
||||
ret
|
||||
; 82b
|
||||
|
||||
Function82b: ; 82b
|
||||
push hl
|
||||
ld hl, $cf5b
|
||||
ld a, [hli]
|
||||
or [hl]
|
||||
pop hl
|
||||
ret
|
||||
; 833
|
||||
|
||||
Function833: ; 833
|
||||
dec a
|
||||
ld [$cf5b], a
|
||||
ld [$cf5c], a
|
||||
ret
|
||||
; 83b
|
||||
|
||||
Function83b: ; 83b
|
||||
ld hl, $cf56
|
||||
ld de, $cf51
|
||||
ld c, $2
|
||||
ld a, $1
|
||||
ld [$ffcc], a
|
||||
.asm_847
|
||||
call DelayFrame
|
||||
ld a, [hl]
|
||||
ld [hSerialSend], a
|
||||
call Function78a
|
||||
ld b, a
|
||||
inc hl
|
||||
ld a, [$ffcc]
|
||||
and a
|
||||
ld a, $0
|
||||
ld [$ffcc], a
|
||||
jr nz, .asm_847
|
||||
ld a, b
|
||||
ld [de], a
|
||||
inc de
|
||||
dec c
|
||||
jr nz, .asm_847
|
||||
ret
|
||||
; 862
|
||||
|
||||
Function862: ; 862
|
||||
call Function309d
|
||||
callab Function4000
|
||||
call Function87d
|
||||
jp Function30b4
|
||||
; 871
|
||||
|
||||
|
||||
Function871: ; 871
|
||||
call Function309d
|
||||
callab Function4000
|
||||
jp Function87d
|
||||
; 87d
|
||||
|
||||
|
||||
|
||||
Function87d: ; 87d
|
||||
ld a, $ff
|
||||
ld [$cf52], a
|
||||
.asm_882
|
||||
call Function8c1
|
||||
call DelayFrame
|
||||
call Function82b
|
||||
jr z, .asm_89e
|
||||
push hl
|
||||
ld hl, $cf5c
|
||||
dec [hl]
|
||||
jr nz, .asm_89d
|
||||
dec hl
|
||||
dec [hl]
|
||||
jr nz, .asm_89d
|
||||
pop hl
|
||||
xor a
|
||||
jp Function833
|
||||
|
||||
.asm_89d
|
||||
pop hl
|
||||
|
||||
.asm_89e
|
||||
ld a, [$cf52]
|
||||
inc a
|
||||
jr z, .asm_882
|
||||
ld b, $a
|
||||
.asm_8a6
|
||||
call DelayFrame
|
||||
call Function8c1
|
||||
dec b
|
||||
jr nz, .asm_8a6
|
||||
ld b, $a
|
||||
.asm_8b1
|
||||
call DelayFrame
|
||||
call Function908
|
||||
dec b
|
||||
jr nz, .asm_8b1
|
||||
ld a, [$cf52]
|
||||
ld [$cf51], a
|
||||
ret
|
||||
; 8c1
|
||||
|
||||
Function8c1: ; 8c1
|
||||
push bc
|
||||
ld b, $60
|
||||
ld a, [InLinkBattle]
|
||||
cp $1
|
||||
jr z, .asm_8d7
|
||||
ld b, $60
|
||||
jr c, .asm_8d7
|
||||
cp $2
|
||||
ld b, $70
|
||||
jr z, .asm_8d7
|
||||
ld b, $80
|
||||
|
||||
.asm_8d7
|
||||
call Function8f3
|
||||
ld a, [$cf56]
|
||||
add b
|
||||
ld [hSerialSend], a
|
||||
ld a, [$ffcb]
|
||||
cp $2
|
||||
jr nz, .asm_8ee
|
||||
ld a, $1
|
||||
ld [rSC], a
|
||||
ld a, $81
|
||||
ld [rSC], a
|
||||
|
||||
.asm_8ee
|
||||
call Function8f3
|
||||
pop bc
|
||||
ret
|
||||
; 8f3
|
||||
|
||||
Function8f3: ; 8f3
|
||||
ld a, [hSerialReceive]
|
||||
ld [$cf51], a
|
||||
and $f0
|
||||
cp b
|
||||
ret nz
|
||||
xor a
|
||||
ld [hSerialReceive], a
|
||||
ld a, [$cf51]
|
||||
and $f
|
||||
ld [$cf52], a
|
||||
ret
|
||||
; 908
|
||||
|
||||
Function908: ; 908
|
||||
xor a
|
||||
ld [hSerialSend], a
|
||||
ld a, [$ffcb]
|
||||
cp $2
|
||||
ret nz
|
||||
ld a, $1
|
||||
ld [rSC], a
|
||||
ld a, $81
|
||||
ld [rSC], a
|
||||
ret
|
||||
; 919
|
||||
|
||||
Function919: ; 919
|
||||
ld a, [InLinkBattle]
|
||||
and a
|
||||
ret nz
|
||||
ld a, $2
|
||||
ld [rSB], a
|
||||
xor a
|
||||
ld [hSerialReceive], a
|
||||
ld a, $0
|
||||
ld [rSC], a
|
||||
ld a, $80
|
||||
ld [rSC], a
|
||||
ret
|
||||
; 92e
|
||||
|
||||
|
311
engine/time.asm
Normal file
311
engine/time.asm
Normal file
@ -0,0 +1,311 @@
|
||||
; Functions relating to the timer interrupt and the real-time-clock.
|
||||
|
||||
|
||||
AskTimer: ; 591
|
||||
push af
|
||||
ld a, [$ffe9]
|
||||
and a
|
||||
jr z, .asm_59a
|
||||
call Timer
|
||||
|
||||
.asm_59a
|
||||
pop af
|
||||
reti
|
||||
; 59c
|
||||
|
||||
|
||||
LatchClock: ; 59c
|
||||
; latch clock counter data
|
||||
ld a, 0
|
||||
ld [MBC3LatchClock], a
|
||||
ld a, 1
|
||||
ld [MBC3LatchClock], a
|
||||
ret
|
||||
; 5a7
|
||||
|
||||
|
||||
UpdateTime: ; 5a7
|
||||
call GetClock
|
||||
call FixDays
|
||||
call FixTime
|
||||
callba GetTimeOfDay
|
||||
ret
|
||||
; 5b7
|
||||
|
||||
|
||||
GetClock: ; 5b7
|
||||
; store clock data in hRTCDayHi-hRTCSeconds
|
||||
|
||||
; enable clock r/w
|
||||
ld a, SRAM_ENABLE
|
||||
ld [MBC3SRamEnable], a
|
||||
|
||||
; clock data is 'backwards' in hram
|
||||
|
||||
call LatchClock
|
||||
ld hl, MBC3SRamBank
|
||||
ld de, MBC3RTC
|
||||
|
||||
ld [hl], RTC_S
|
||||
ld a, [de]
|
||||
and $3f
|
||||
ld [hRTCSeconds], a
|
||||
|
||||
ld [hl], RTC_M
|
||||
ld a, [de]
|
||||
and $3f
|
||||
ld [hRTCMinutes], a
|
||||
|
||||
ld [hl], RTC_H
|
||||
ld a, [de]
|
||||
and $1f
|
||||
ld [hRTCHours], a
|
||||
|
||||
ld [hl], RTC_DL
|
||||
ld a, [de]
|
||||
ld [hRTCDayLo], a
|
||||
|
||||
ld [hl], RTC_DH
|
||||
ld a, [de]
|
||||
ld [hRTCDayHi], a
|
||||
|
||||
; unlatch clock / disable clock r/w
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 5e8
|
||||
|
||||
|
||||
FixDays: ; 5e8
|
||||
; fix day count
|
||||
; mod by 140
|
||||
|
||||
; check if day count > 255 (bit 8 set)
|
||||
ld a, [hRTCDayHi] ; DH
|
||||
bit 0, a
|
||||
jr z, .daylo
|
||||
; reset dh (bit 8)
|
||||
res 0, a
|
||||
ld [hRTCDayHi], a ; DH
|
||||
|
||||
; mod 140
|
||||
; mod twice since bit 8 (DH) was set
|
||||
ld a, [hRTCDayLo] ; DL
|
||||
.modh
|
||||
sub 140
|
||||
jr nc, .modh
|
||||
.modl
|
||||
sub 140
|
||||
jr nc, .modl
|
||||
add 140
|
||||
|
||||
; update dl
|
||||
ld [hRTCDayLo], a ; DL
|
||||
|
||||
; unknown output
|
||||
ld a, $40 ; %1000000
|
||||
jr .set
|
||||
|
||||
.daylo
|
||||
; quit if fewer than 140 days have passed
|
||||
ld a, [hRTCDayLo] ; DL
|
||||
cp 140
|
||||
jr c, .quit
|
||||
|
||||
; mod 140
|
||||
.mod
|
||||
sub 140
|
||||
jr nc, .mod
|
||||
add 140
|
||||
|
||||
; update dl
|
||||
ld [hRTCDayLo], a ; DL
|
||||
|
||||
; unknown output
|
||||
ld a, $20 ; %100000
|
||||
|
||||
.set
|
||||
; update clock with modded day value
|
||||
push af
|
||||
call SetClock
|
||||
pop af
|
||||
scf
|
||||
ret
|
||||
|
||||
.quit
|
||||
xor a
|
||||
ret
|
||||
; 61d
|
||||
|
||||
|
||||
FixTime: ; 61d
|
||||
; add ingame time (set at newgame) to current time
|
||||
; day hr min sec
|
||||
; store time in CurDay, hHours, hMinutes, hSeconds
|
||||
|
||||
; second
|
||||
ld a, [hRTCSeconds] ; S
|
||||
ld c, a
|
||||
ld a, [StartSecond]
|
||||
add c
|
||||
sub 60
|
||||
jr nc, .updatesec
|
||||
add 60
|
||||
.updatesec
|
||||
ld [hSeconds], a
|
||||
|
||||
; minute
|
||||
ccf ; carry is set, so turn it off
|
||||
ld a, [hRTCMinutes] ; M
|
||||
ld c, a
|
||||
ld a, [StartMinute]
|
||||
adc c
|
||||
sub 60
|
||||
jr nc, .updatemin
|
||||
add 60
|
||||
.updatemin
|
||||
ld [hMinutes], a
|
||||
|
||||
; hour
|
||||
ccf ; carry is set, so turn it off
|
||||
ld a, [hRTCHours] ; H
|
||||
ld c, a
|
||||
ld a, [StartHour]
|
||||
adc c
|
||||
sub 24
|
||||
jr nc, .updatehr
|
||||
add 24
|
||||
.updatehr
|
||||
ld [hHours], a
|
||||
|
||||
; day
|
||||
ccf ; carry is set, so turn it off
|
||||
ld a, [hRTCDayLo] ; DL
|
||||
ld c, a
|
||||
ld a, [StartDay]
|
||||
adc c
|
||||
ld [CurDay], a
|
||||
ret
|
||||
; 658
|
||||
|
||||
Function658: ; 658
|
||||
xor a
|
||||
ld [StringBuffer2], a
|
||||
ld a, $0
|
||||
ld [$d089], a
|
||||
jr .asm_677
|
||||
|
||||
call UpdateTime
|
||||
ld a, [hHours]
|
||||
ld [$d087], a
|
||||
ld a, [hMinutes]
|
||||
ld [$d088], a
|
||||
ld a, [hSeconds]
|
||||
ld [$d089], a
|
||||
jr .asm_677
|
||||
|
||||
.asm_677
|
||||
ld a, $5
|
||||
ld hl, $40ed
|
||||
rst FarCall
|
||||
ret
|
||||
; 67e
|
||||
|
||||
|
||||
|
||||
Function67e: ; 67e
|
||||
call Function685
|
||||
call SetClock
|
||||
ret
|
||||
; 685
|
||||
|
||||
Function685: ; 685
|
||||
xor a
|
||||
ld [hRTCSeconds], a
|
||||
ld [hRTCMinutes], a
|
||||
ld [hRTCHours], a
|
||||
ld [hRTCDayLo], a
|
||||
ld [hRTCDayHi], a
|
||||
ret
|
||||
; 691
|
||||
|
||||
|
||||
SetClock: ; 691
|
||||
; set clock data from hram
|
||||
|
||||
; enable clock r/w
|
||||
ld a, SRAM_ENABLE
|
||||
ld [MBC3SRamEnable], a
|
||||
|
||||
; set clock data
|
||||
; stored 'backwards' in hram
|
||||
|
||||
call LatchClock
|
||||
ld hl, MBC3SRamBank
|
||||
ld de, MBC3RTC
|
||||
|
||||
; seems to be a halt check that got partially commented out
|
||||
; this block is totally pointless
|
||||
ld [hl], RTC_DH
|
||||
ld a, [de]
|
||||
bit 6, a ; halt
|
||||
ld [de], a
|
||||
|
||||
; seconds
|
||||
ld [hl], RTC_S
|
||||
ld a, [hRTCSeconds]
|
||||
ld [de], a
|
||||
; minutes
|
||||
ld [hl], RTC_M
|
||||
ld a, [hRTCMinutes]
|
||||
ld [de], a
|
||||
; hours
|
||||
ld [hl], RTC_H
|
||||
ld a, [hRTCHours]
|
||||
ld [de], a
|
||||
; day lo
|
||||
ld [hl], RTC_DL
|
||||
ld a, [hRTCDayLo]
|
||||
ld [de], a
|
||||
; day hi
|
||||
ld [hl], RTC_DH
|
||||
ld a, [hRTCDayHi]
|
||||
res 6, a ; make sure timer is active
|
||||
ld [de], a
|
||||
|
||||
; cleanup
|
||||
call CloseSRAM ; unlatch clock, disable clock r/w
|
||||
ret
|
||||
; 6c4
|
||||
|
||||
|
||||
Function6c4: ; 6c4
|
||||
xor a
|
||||
push af
|
||||
ld a, $0
|
||||
call GetSRAMBank
|
||||
pop af
|
||||
ld [$ac60], a
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 6d3
|
||||
|
||||
Function6d3: ; 6d3
|
||||
ld hl, $ac60
|
||||
push af
|
||||
ld a, $0
|
||||
call GetSRAMBank
|
||||
pop af
|
||||
or [hl]
|
||||
ld [hl], a
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 6e3
|
||||
|
||||
Function6e3: ; 6e3
|
||||
ld a, $0
|
||||
call GetSRAMBank
|
||||
ld a, [$ac60]
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 6ef
|
||||
|
@ -6,6 +6,8 @@
|
||||
|
||||
; This prevents the display and audio output from lagging.
|
||||
|
||||
|
||||
VBlank: ; 283
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
|
@ -1,4 +1,254 @@
|
||||
Function1f8000: ; 1f8000
|
||||
ld a, [rSVBK]
|
||||
push af
|
||||
ld a, $3
|
||||
ld [rSVBK], a
|
||||
xor a
|
||||
ld hl, $d100
|
||||
ld bc, $00e0
|
||||
call ByteFill
|
||||
ld a, $ff
|
||||
ld [$d10c], a
|
||||
ld [$d147], a
|
||||
ld [$d182], a
|
||||
ld de, $d100
|
||||
ld a, [hRandomAdd]
|
||||
ld b, a
|
||||
.asm_1f8022
|
||||
call RNG
|
||||
ld a, [hRandomAdd]
|
||||
add b
|
||||
ld b, a
|
||||
and $1f
|
||||
cp $15
|
||||
jr nc, .asm_1f8022
|
||||
ld b, a
|
||||
ld a, $1
|
||||
call GetSRAMBank
|
||||
ld c, $7
|
||||
ld hl, $be48
|
||||
.asm_1f803a
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z, .asm_1f8022
|
||||
dec c
|
||||
jr nz, .asm_1f803a
|
||||
ld hl, $be48
|
||||
ld a, [$be46]
|
||||
ld c, a
|
||||
ld a, b
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
call CloseSRAM
|
||||
push af
|
||||
ld hl, BattleTowerTrainers
|
||||
ld bc, 11
|
||||
call AddNTimes
|
||||
ld bc, 11
|
||||
call CopyBytes
|
||||
call Function1f8081
|
||||
pop af
|
||||
ld hl, Function1f8000
|
||||
ld bc, $0024
|
||||
call AddNTimes
|
||||
ld bc, $0024
|
||||
.asm_1f8070
|
||||
ld a, $7c
|
||||
call GetFarByte
|
||||
ld [de], a
|
||||
inc hl
|
||||
inc de
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, .asm_1f8070
|
||||
pop af
|
||||
ld [rSVBK], a
|
||||
ret
|
||||
; 1f8081
|
||||
|
||||
Function1f8081: ; 1f8081
|
||||
ld c, $3
|
||||
push bc
|
||||
ld a, $1
|
||||
call GetSRAMBank
|
||||
.asm_1f8089
|
||||
ld a, [$d800]
|
||||
dec a
|
||||
ld hl, BattleTowerMons
|
||||
ld bc, BattleTowerMons2 - BattleTowerMons1
|
||||
call AddNTimes
|
||||
|
||||
ld a, [hRandomAdd]
|
||||
ld b, a
|
||||
.asm_1f8099
|
||||
call RNG
|
||||
ld a, [hRandomAdd]
|
||||
add b
|
||||
ld b, a
|
||||
and $1f
|
||||
cp (BattleTowerMons2 - BattleTowerMons1) / ($3b)
|
||||
jr nc, .asm_1f8099
|
||||
|
||||
ld bc, $3b
|
||||
call AddNTimes
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hld]
|
||||
ld c, a
|
||||
ld a, [$d10b]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$d10c]
|
||||
cp c
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$d146]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$d147]
|
||||
cp c
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$d181]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$d182]
|
||||
cp c
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be51]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be52]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be53]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be54]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be55]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
ld a, [$be56]
|
||||
cp b
|
||||
jr z, .asm_1f8089
|
||||
|
||||
ld bc, $3b
|
||||
call CopyBytes
|
||||
ld a, [$d265]
|
||||
push af
|
||||
push de
|
||||
ld hl, -$3b
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [$d265], a
|
||||
ld bc, $0030
|
||||
add hl, bc
|
||||
push hl
|
||||
call GetPokemonName
|
||||
ld h, d
|
||||
ld l, e
|
||||
pop de
|
||||
ld bc, $000b
|
||||
call CopyBytes
|
||||
pop de
|
||||
pop af
|
||||
ld [$d265], a
|
||||
pop bc
|
||||
dec c
|
||||
jp nz, $4083
|
||||
ld a, [$be51]
|
||||
ld [$be54], a
|
||||
ld a, [$be52]
|
||||
ld [$be55], a
|
||||
ld a, [$be53]
|
||||
ld [$be56], a
|
||||
ld a, [$d10b]
|
||||
ld [$be51], a
|
||||
ld a, [$d146]
|
||||
ld [$be52], a
|
||||
ld a, [$d181]
|
||||
ld [$be53], a
|
||||
call CloseSRAM
|
||||
ret
|
||||
; 1f814e
|
||||
|
||||
BattleTowerTrainers: ; 1f814e
|
||||
db "HANSON@@@@", FISHER
|
||||
db "SAWYER@@@@", POKEMANIAC
|
||||
db "MASUDA@@@@", GUITARIST
|
||||
db "NICKEL@@@@", SCIENTIST
|
||||
db "OLSON@@@@@", POKEFANM
|
||||
db "ZABOROWSKI", LASS
|
||||
db "WRIGHT@@@@", YOUNGSTER
|
||||
db "ALEXANDER@", HIKER
|
||||
db "KAWAKAMI@@", TEACHER
|
||||
db "BICKETT@@@", POKEFANM
|
||||
db "SAITO@@@@@", KIMONO_GIRL
|
||||
db "CRAWFORD@@", BOARDER
|
||||
db "DIAZ@@@@@@", PICNICKER
|
||||
db "ERICKSON@@", BIKER
|
||||
db "FAIRFIELD@", JUGGLER
|
||||
db "HUNTER@@@@", POKEFANF
|
||||
db "HILL@@@@@@", FIREBREATHER
|
||||
db "JAVIER@@@@", SWIMMERF
|
||||
db "KAUFMAN@@@", SWIMMERM
|
||||
db "LANCASTER@", SKIER
|
||||
db "McMAHILL@@", CAMPER
|
||||
db "OBRIEN@@@@", GENTLEMAN
|
||||
db "FROST@@@@@", BEAUTY
|
||||
db "MORSE@@@@@", SUPER_NERD
|
||||
db "YUFUNE@@@@", BLACKBELT_T
|
||||
db "RAJAN@@@@@", COOLTRAINERF
|
||||
db "RODRIGUEZ@", OFFICER
|
||||
db "SANTIAGO@@", PSYCHIC_T
|
||||
db "STOCK@@@@@", POKEFANM
|
||||
db "THURMAN@@@", SCIENTIST
|
||||
db "VALENTINO@", BEAUTY
|
||||
db "WAGNER@@@@", CAMPER
|
||||
db "YATES@@@@@", BIRD_KEEPER
|
||||
db "ANDREWS@@@", PICNICKER
|
||||
db "BAHN@@@@@@", POKEMANIAC
|
||||
db "MORI@@@@@@", SCIENTIST
|
||||
db "BUCKMAN@@@", SAGE
|
||||
db "COBB@@@@@@", SCHOOLBOY
|
||||
db "HUGHES@@@@", FISHER
|
||||
db "ARITA@@@@@", KIMONO_GIRL
|
||||
db "EASTON@@@@", PSYCHIC_T
|
||||
db "FREEMAN@@@", CAMPER
|
||||
db "GIESE@@@@@", LASS
|
||||
db "HATCHER@@@", GENTLEMAN
|
||||
db "JACKSON@@@", POKEFANF
|
||||
db "KAHN@@@@@@", POKEMANIAC
|
||||
db "LEONG@@@@@", YOUNGSTER
|
||||
db "MARINO@@@@", TEACHER
|
||||
db "NEWMAN@@@@", SAILOR
|
||||
db "NGUYEN@@@@", BLACKBELT_T
|
||||
db "OGDEN@@@@@", SUPER_NERD
|
||||
db "PARK@@@@@@", COOLTRAINERF
|
||||
db "RAINE@@@@@", SWIMMERM
|
||||
db "SELLS@@@@@", BIRD_KEEPER
|
||||
db "ROCKWELL@@", BOARDER
|
||||
db "THORNTON@@", LASS
|
||||
db "TURNER@@@@", OFFICER
|
||||
db "VAN DYKE@@", SKIER
|
||||
db "WALKER@@@@", SCHOOLBOY
|
||||
db "MEYER@@@@@", SWIMMERF
|
||||
db "JOHNSON@@@", YOUNGSTER
|
||||
db "ADAMS@@@@@", GUITARIST
|
||||
db "SMITH@@@@@", BUG_CATCHER
|
||||
db "TAJIRI@@@@", BUG_CATCHER
|
||||
db "BAKER@@@@@", POKEMANIAC
|
||||
db "COLLINS@@@", SCIENTIST
|
||||
db "SMART@@@@@", SUPER_NERD
|
||||
db "DYKSTRA@@@", SWIMMERF
|
||||
db "EATON@@@@@", BIKER
|
||||
db "WONG@@@@@@", FIREBREATHER
|
||||
; 1f8450
|
||||
|
||||
|
||||
BattleTowerMons: ; 1f8450
|
||||
|
||||
BattleTowerMons1:
|
||||
|
||||
|
@ -1,3 +1,102 @@
|
||||
GiveOddEgg: ; 1fb4b6
|
||||
|
||||
; Figure out which egg to give.
|
||||
call RNG
|
||||
ld hl, .Probabilities
|
||||
ld c, 0
|
||||
ld b, c
|
||||
.next
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, d
|
||||
cp $ff
|
||||
jr nz, .first
|
||||
ld a, e
|
||||
cp $ff
|
||||
jr z, .done
|
||||
.first
|
||||
ld a, [hRandomSub]
|
||||
cp d
|
||||
jr c, .done
|
||||
jr z, .second
|
||||
jr .good
|
||||
.second
|
||||
ld a, [hRandomAdd]
|
||||
cp e
|
||||
jr c, .done
|
||||
jr z, .done
|
||||
.good
|
||||
inc bc
|
||||
jr .next
|
||||
.done
|
||||
|
||||
ld hl, OddEggs
|
||||
ld a, OddEgg2 - OddEgg1
|
||||
call AddNTimes
|
||||
ld de, EnemyMoveAnimation
|
||||
ld bc, $0046
|
||||
call CopyBytes
|
||||
ld a, EGG_TICKET
|
||||
ld [CurItem], a
|
||||
ld a, $1
|
||||
ld [$d10c], a
|
||||
ld a, $ff
|
||||
ld [$d107], a
|
||||
ld hl, NumItems
|
||||
call Function2f53
|
||||
ld a, EGG
|
||||
ld [$cd2a], a
|
||||
ld a, $29
|
||||
ld [$cd20], a
|
||||
ld a, $cd
|
||||
ld [$cd21], a
|
||||
ld a, $8
|
||||
ld [$cd22], a
|
||||
ld a, $c6
|
||||
ld [$cd23], a
|
||||
|
||||
ld hl, .Odd
|
||||
ld de, $cd2b
|
||||
ld bc, $000b
|
||||
call CopyBytes
|
||||
|
||||
ld a, $2b
|
||||
ld [$cd24], a
|
||||
ld a, $cd
|
||||
ld [$cd25], a
|
||||
ld a, $38
|
||||
ld [$cd26], a
|
||||
ld a, $c6
|
||||
ld [$cd27], a
|
||||
callba Function11b98f
|
||||
ret
|
||||
; 1fb546
|
||||
|
||||
.Odd
|
||||
db "ODD@@@@@@@@@"
|
||||
|
||||
.Probabilities
|
||||
dw $147a ; 92% -> 8%
|
||||
dw $170a ; 91% -> 1%
|
||||
dw $3fff ; 75% -> 16%
|
||||
dw $47ad ; 72% -> 3%
|
||||
dw $70a3 ; 56% -> 16%
|
||||
dw $7851 ; 53% -> 3%
|
||||
dw $9c28 ; 39% -> 14%
|
||||
dw $a147 ; 37% -> 2%
|
||||
dw $bae0 ; 27% -> 10%
|
||||
dw $bfff ; 25% -> 2%
|
||||
dw $deb7 ; 13% -> 12%
|
||||
dw $e3d6 ; 11% -> 2%
|
||||
dw $fd6f ; 1% -> 10%
|
||||
dw $ffff ; 0% -> 1%
|
||||
; 1fb56e
|
||||
|
||||
|
||||
OddEggs: ; 1fb56e
|
||||
|
||||
OddEgg1:
|
||||
db PICHU
|
||||
db NO_ITEM
|
||||
|
15
wram.asm
15
wram.asm
@ -13,9 +13,9 @@ VBGMap1:
|
||||
|
||||
SECTION "WRAMBank0",WRAM0[$c000]
|
||||
|
||||
SECTION "stack",WRAM0[$c000]
|
||||
ds $100
|
||||
Stack: ; c100
|
||||
SECTION "stack",WRAM0[$c0ff]
|
||||
Stack: ; c0ff
|
||||
ds -$100
|
||||
|
||||
|
||||
SECTION "audio",WRAM0[$c100]
|
||||
@ -1642,8 +1642,8 @@ PlayerDirection: ; d4de
|
||||
; $11 right
|
||||
ds 1
|
||||
|
||||
ds 2
|
||||
|
||||
SECTION "MapEngine",WRAMX[$d4e1],BANK[1]
|
||||
PlayerAction: ; d4e1
|
||||
; 1 standing
|
||||
; 2 walking
|
||||
@ -1742,7 +1742,12 @@ NumBalls: ; d8d7
|
||||
Balls: ; d8d8
|
||||
ds 25
|
||||
BallsEnd
|
||||
|
||||
|
||||
PCItems: ; d8f1
|
||||
ds 101
|
||||
PCItemsEnd
|
||||
|
||||
|
||||
SECTION "overworld",WRAMX[$d95b],BANK[1]
|
||||
WhichRegisteredItem: ; d95b
|
||||
REGISTERED_POCKET EQU %11000000
|
||||
|
Loading…
Reference in New Issue
Block a user