ac291bc950
Besides the improved coverage, this uncovered a few off-by-ones w.r.t. IF writes, and IRQ ACK timing. The IF write adjustment is a one-liner that has as consequence that mode 0 IRQs for lines with particular timing (e.g. due to scx offsets and/or object positions) can be overwritten at up to one instruction earlier than previously. The ACK-related adjustments have consequence for cases when the same IRQ is reasserted shortly after it has effected an interrupt in the sense that, for the affected IRQs, the time window for when this will be ignored is up to one instruction longer.
131 lines
1.8 KiB
NASM
131 lines
1.8 KiB
NASM
.size 8000
|
|
|
|
.text@48
|
|
jp lstatint
|
|
|
|
.text@100
|
|
jp lbegin
|
|
|
|
.data@143
|
|
c0
|
|
|
|
.text@150
|
|
lbegin:
|
|
ld a, 30
|
|
ldff(00), a
|
|
xor a, a
|
|
ldff(ff), a
|
|
inc a
|
|
ldff(4d), a
|
|
stop, 00
|
|
ld b, 96
|
|
call lwaitly_b
|
|
ld a, 40
|
|
ldff(41), a
|
|
ld a, b
|
|
inc a
|
|
inc a
|
|
ldff(45), a
|
|
ld a, 02
|
|
ldff(ff), a
|
|
xor a, a
|
|
ldff(0f), a
|
|
ei
|
|
|
|
.text@1000
|
|
lstatint:
|
|
ld a, 99
|
|
ldff(45), a
|
|
|
|
.text@10d7
|
|
ldff a, (0f)
|
|
jp lprint_a
|
|
|
|
.text@7000
|
|
lprint_a:
|
|
push af
|
|
ld b, 91
|
|
call lwaitly_b
|
|
xor a, a
|
|
ldff(40), a
|
|
ld bc, 7a00
|
|
ld hl, 8000
|
|
ld d, 00
|
|
lprint_copytiles:
|
|
ld a, (bc)
|
|
inc bc
|
|
ld(hl++), a
|
|
dec d
|
|
jrnz lprint_copytiles
|
|
pop af
|
|
ld b, a
|
|
swap a
|
|
and a, 0f
|
|
ld(9800), a
|
|
ld a, b
|
|
and a, 0f
|
|
ld(9801), a
|
|
ld a, c0
|
|
ldff(47), a
|
|
ld a, 80
|
|
ldff(68), a
|
|
ld a, ff
|
|
ldff(69), a
|
|
ldff(69), a
|
|
ldff(69), a
|
|
ldff(69), a
|
|
ldff(69), a
|
|
ldff(69), a
|
|
xor a, a
|
|
ldff(69), a
|
|
ldff(69), a
|
|
ldff(43), a
|
|
ld a, 91
|
|
ldff(40), a
|
|
lprint_limbo:
|
|
jr lprint_limbo
|
|
|
|
.text@7400
|
|
lwaitly_b:
|
|
ld c, 44
|
|
lwaitly_b_loop:
|
|
ldff a, (c)
|
|
cmp a, b
|
|
jrnz lwaitly_b_loop
|
|
ret
|
|
|
|
.data@7a00
|
|
00 00 7f 7f 41 41 41 41
|
|
41 41 41 41 41 41 7f 7f
|
|
00 00 08 08 08 08 08 08
|
|
08 08 08 08 08 08 08 08
|
|
00 00 7f 7f 01 01 01 01
|
|
7f 7f 40 40 40 40 7f 7f
|
|
00 00 7f 7f 01 01 01 01
|
|
3f 3f 01 01 01 01 7f 7f
|
|
00 00 41 41 41 41 41 41
|
|
7f 7f 01 01 01 01 01 01
|
|
00 00 7f 7f 40 40 40 40
|
|
7e 7e 01 01 01 01 7e 7e
|
|
00 00 7f 7f 40 40 40 40
|
|
7f 7f 41 41 41 41 7f 7f
|
|
00 00 7f 7f 01 01 02 02
|
|
04 04 08 08 10 10 10 10
|
|
00 00 3e 3e 41 41 41 41
|
|
3e 3e 41 41 41 41 3e 3e
|
|
00 00 7f 7f 41 41 41 41
|
|
7f 7f 01 01 01 01 7f 7f
|
|
00 00 08 08 22 22 41 41
|
|
7f 7f 41 41 41 41 41 41
|
|
00 00 7e 7e 41 41 41 41
|
|
7e 7e 41 41 41 41 7e 7e
|
|
00 00 3e 3e 41 41 40 40
|
|
40 40 40 40 41 41 3e 3e
|
|
00 00 7e 7e 41 41 41 41
|
|
41 41 41 41 41 41 7e 7e
|
|
00 00 7f 7f 40 40 40 40
|
|
7f 7f 40 40 40 40 7f 7f
|
|
00 00 7f 7f 40 40 40 40
|
|
7f 7f 40 40 40 40 40 40
|
|
|