qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] How to Simulate hardware that counts scanlines?
@ 2006-07-27  3:22 Steve Ellenoff
  2006-07-27  9:47 ` [Qemu-devel] Adding a device into Qemu ARM Tieu Ma Dau
  2006-07-28 16:53 ` [Qemu-devel] How to Simulate hardware that counts scanlines? André Braga
  0 siblings, 2 replies; 11+ messages in thread
From: Steve Ellenoff @ 2006-07-27  3:22 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/html, Size: 1649 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [Qemu-devel] How to Simulate hardware that counts scanlines?
@ 2006-07-31 20:53 Steve Ellenoff
  2006-07-31 20:58 ` Paul Brook
  0 siblings, 1 reply; 11+ messages in thread
From: Steve Ellenoff @ 2006-07-31 20:53 UTC (permalink / raw)
  To: meianoite; +Cc: qemu-devel

You misunderstand, I have no control over the running program. I didn't 
write it, I don't have source code, and I surely wouldn't have used a 
polling mechanism for determining the vblank as you suggested.

My problem is that I wish to run this program through qemu. I've made a 
bunch of hardware specific additions to qemu to emulate the specific 
hardware this program runs on. I'm just not sure the best way to simulate 
the scanline counting the hardware does.

Seems nobody here has any ideas either, which is kind of hard to believe. I 
don't know if this would work, but one idea I had was to divide up the gui 
timer into 260 slices (that's the # of scanlines the hardware expects), and 
simply update the hardware register that counts the scanlines this way.

Does anyone thing that's the way to go, or if there's a better way?


>Since this is all custom, I'd rather raise an interrupt when the DAC 
>reaches the final portion of the frame buffer... This has to be better than 
>polling.

^ permalink raw reply	[flat|nested] 11+ messages in thread
[parent not found: <200607271342.20917.paul@codesourcery.com>]
* RE: [Qemu-devel] How to Simulate hardware that counts scanlines?
@ 2006-08-02  0:48 Armistead, Jason
  2006-08-02  9:00 ` Fabrice Bellard
  0 siblings, 1 reply; 11+ messages in thread
From: Armistead, Jason @ 2006-08-02  0:48 UTC (permalink / raw)
  To: 'qemu-devel@nongnu.org'

Steve Ellenoff wrote:

>You misunderstand, I have no control over the running program. I didn't
>write it, I don't have source code, and I surely wouldn't have used a 
>polling mechanism for determining the vblank as you suggested.

>My problem is that I wish to run this program through qemu. I've made a 
>bunch of hardware specific additions to qemu to emulate the specific 
>hardware this program runs on. I'm just not sure the best way to simulate 
>the scanline counting the hardware does.

>Seems nobody here has any ideas either, which is kind of hard to believe. I

>don't know if this would work, but one idea I had was to divide up the gui 
>timer into 260 slices (that's the # of scanlines the hardware expects), and

>simply update the hardware register that counts the scanlines this way.

>Does anyone thing that's the way to go, or if there's a better way?

As I see it, one of the problems in Steve's scenario is that QEMU does
dynamic translations based on blocks of code, and the interrupts or changes
to emulated hardware state are delivered only at the end of the execution of
an entire basic block.  While this might be adequate for an operating system
which cares for the most part very little about real world timing, it may
not be sufficient for every case where you want to do an emulation of a
processor in an embedded device or a curious non-standard PC like Steve's.

I think that's why the game system emulators MAME and MESS are perhaps more
akin to what he's wanting to do, in that they are able to deliver interrupts
in exactly the same way as the real CPU sees them i.e. at the end of
execution of the current instruction, and they consider instruction
execution timing to maintain an accurate internal time base, independent
from what the real world outside is doing.

On most modern fast PC CPUs, they can easily emulate the older arcade game
or computer system hardware with plenty of horsepower to spare, and so it
appears realtime, synchronised via RDTSC or similar.  I guess if you ran
them on an underperforming PC like an old 486 or early Pentium, you may see
things go at less than real speed.

Maybe I'm totally off the mark, but at least that's how I read the QEMU docs
relating to hardware interrupts

http://www.qemu.org/qemu-tech.html#SEC18

and the preceding sections about the way instruction blocks are translated
and executed.

I'm sure Fabrice and others can shoot me down if needs be ... 

Cheers

Jason

^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [Qemu-devel] How to Simulate hardware that counts scanlines?
@ 2006-08-02 21:28 Steve Ellenoff
  0 siblings, 0 replies; 11+ messages in thread
From: Steve Ellenoff @ 2006-08-02 21:28 UTC (permalink / raw)
  To: fabrice; +Cc: qemu-devel

That's great news, thanks for letting us know.
Steve

>The next release of QEMU is likely to have cycle exact emulation and 
>delivery of interrupts in the middle of a basic block.
>
>
>Regards,
>
>
>Fabrice.

^ permalink raw reply	[flat|nested] 11+ messages in thread
[parent not found: <Pine.LNX.4.64.0608010410410.6869@home.oyster.ru>]

end of thread, other threads:[~2006-08-02 21:47 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-27  3:22 [Qemu-devel] How to Simulate hardware that counts scanlines? Steve Ellenoff
2006-07-27  9:47 ` [Qemu-devel] Adding a device into Qemu ARM Tieu Ma Dau
2006-07-27 12:41   ` Paul Brook
2006-07-28 16:53 ` [Qemu-devel] How to Simulate hardware that counts scanlines? André Braga
  -- strict thread matches above, loose matches on Subject: below --
2006-07-31 20:53 Steve Ellenoff
2006-07-31 20:58 ` Paul Brook
     [not found] <200607271342.20917.paul@codesourcery.com>
2006-07-31 20:55 ` Steve Ellenoff
2006-08-02  0:48 Armistead, Jason
2006-08-02  9:00 ` Fabrice Bellard
2006-08-02 21:28 Steve Ellenoff
     [not found] <Pine.LNX.4.64.0608010410410.6869@home.oyster.ru>
2006-08-02 21:47 ` Steve Ellenoff

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).