[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The Perfect Emulator?
- Subject: The Perfect Emulator?
- From: "Bryan Parkoff" <nospam@nospam.com>
- Date: Mon, 29 Sep 2003 02:45:03 GMT
- Newsgroups: comp.sys.apple2
- Organization: Road Runner - Texas
- Xref: news1.google.com comp.sys.apple2:64
Do you think that you will be able to program Apple II Emulator into
perfection with accuracy?
Many Emulator projects use to add 2, 3, 4, 5, 6, and 7 cycles each
opcodes. I don't understand why the programmers are doing their way because
it is not always accuracy. It makes me to ponder how MPU can only execute
one cycle at one time.
For example, $A9 for LDA $#XX takes two cycles. First, MPU executes $A9
for first one cycle. Second, MPU should be repeated for $#XX by ignoring to
execute $A9 because it is done already. Second one cycle will be taken.
Let says...Cycle = Cycle + 1 for $A9 and Cycle = Cycle + 1 for $#XX.
MPU has to loop twice to take two cycles. The Emulator project does its own
way to loop MPU once to take two cycles that looks like Cycle = Cycle + 2.
The programmers do not want to loop MPU every one cycle because they think
that it will slow the performance.
Phase 0 is already used for $A9 and $#00. Now, 'A' is at $400 and 'B'
is at $401 for Text mode. The 7 pixel in the first row for 'A' is displayed
in the screen using Phase 1 during $A9. Another 7 pixel in the first row
for 'B' is displayed in the screen using Phase 1 during $#00.
If it is true what I claim above, Phase 1 will be used for Video Scanner
and RAM Read or RAM Write. If 17030 cycles are reached, the complete
280x192 pixels display in the screen. I don't know how 7 pixels work in the
horizontial scan per state. It should be 7 pixel X 65 state equal 455
pixel, but how can 560 (double resolution) be used? Should it be 14 pixel X
65 state equal 910? It makes sense that 280 is out of 455 for screen while
175 is blank for left margin and right margin. It looks like NTSC has only
119,210 pixels for TV, but 53,760 pixels are used for Apple II.
Why don't the programmers want to update 7 pixels each one 6502 cycle
instead they want the complete screen to be updated every 17030 cycles?
Have you tried to be done already that you found to be poor performance so
17030 cycle is the option to update 53,760 pixels instead of 7 pixel each
one cycle?
MPU should be looped each one cycle. Phase 0 does the job for MPU and
Phase 1 does the job for RAM and Video Sscanner. I think that Phase 0 and
Phase 1 should be executed together in the MPU loop each one cycle so it
will make Apple II Emulator to be perfect like real electronic timing.
--
Bryan Parkoff