- Joined: 28 Sep 1999
- Posts: 1197
|
IRQ stuff
Posted: Wed Sep 29, 1999 11:50 pm
|
I've come across an annoying problem in regard to interrupt
behavior. Some games have these little loops in which interrupts
are enabled for a short while (e.g. two nop's worth), then are
disabled. The idea is that an IRQ occurs within that time period,
and the game stays happy.
In order to ensure this occurs, I raise the IRQ line, run the
Z80 emulation for a few cycles, then lower it. This makes most
all games work fine. Except for two.
These games will mess up if I run the Z80 for over ~8 cycles,
but the minimum I need is 52 cycles to keep a few other picky
games running. The suggestion I got was to check the duration
of a pulse on the IRQ line coming from the VDP (on a real SMS),
with an oscilliscope. Then I'd know how long the IRQ line was
really active for. But that sort of hardware stuff is a bit
beyond me, perhaps somebody out there with knowledge in
this field might be able to check? And would the duration be
different in a PAL SMS compared to a NTSC model?
|
Nyef
|
Posted: Thu Sep 30, 1999 11:42 pm
|
Quote > These games will mess up if I run the Z80 for over ~8 cycles,
> but the minimum I need is 52 cycles to keep a few other picky
> games running. The suggestion I got was to check the duration
> of a pulse on the IRQ line coming from the VDP (on a real SMS),
> with an oscilliscope. Then I'd know how long the IRQ line was
> really active for. But that sort of hardware stuff is a bit
> beyond me, perhaps somebody out there with knowledge in
> this field might be able to check? And would the duration be
> different in a PAL SMS compared to a NTSC model?
It is my understanding that the IRQ line is held on from
activation until either VBlank ends, or the VDP status register
is read.
--Nyef
|