04 September 2008, 08:01 | #1 |
Registered User
Join Date: Aug 2004
Location:
Posts: 3,349
|
Couple of bugs found
Hi,
I think I've discovered a couple of bugs in WinUAE (tested with 1.5.1). Can anyone confirm? Emulation-related bugs first:
Some other bugs/issues:
|
04 September 2008, 20:26 | #2 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
After 1.5.2 or later.
|
07 September 2008, 02:54 | #3 |
Registered User
Join Date: Aug 2004
Location:
Posts: 3,349
|
Here are a few more issues...
The Digital Force demos Ode To Ramon and Ode To Ramon II both have scrolling text at the bottom of the screen which is corrupted, as if the bitplane modulos are wrong. Happens with cycle-exact OCS/ECS Agnus/full ECS emulation. http://ftp.amigascne.org/pub/amiga/G...OdeToRamon.DMS http://ftp.amigascne.org/pub/amiga/G...eToRamonII.dms http://ftp.amigascne.org/pub/amiga/G...deToRamon2.DMS (The last two DMS files are different sizes; I haven't investigated what difference if any there is between them. Update: DF_OdeToRamon2.DMS is bad; tracks from offset $D1000 in the disk image all contain "DMS!!ERR" repeated. So use OdeToRamonII.dms instead.) With no filter, start emulation, running something that has movement over most of the screen. Then enable "Correct aspect ratio" in the Display settings. The extra scanlines which are added to the Amiga display contain whatever happened to be there before, and do not update. (Presumably the extra lines should be the same as the scanline above, or a mix of the colours of the scanlines above and below.) This is pretty visually unattractive since those lines contain the same "trash" even after resetting or loading another program. If the Direct3D filter was enabled, and the user disables it, checks the Correct aspect ratio box, then continues emulation, the extra scanlines may be black. When a sound is playing, if you click the tick icon at the top left of the window to bring up the window menu, the emulation pauses but the currently-playing sound loops over and over. The A3000 Quickstart setting has two floppy drives. A3000s were (as far as I know) normally sold with one drive. Not sure if this one qualifies as a bug; maybe it's desired behaviour? When the WinUAE emulation is running but the window is not active, I don't think it should receive input (mouse movement) when the pointer moves across it. Example scenario: user has WinUAE playing some music while working in other applications. Moving mouse from one window to another affects the emulated Amiga if the mouse passes over the WinUAE window. I think the emulation should only receive input when the user clicks inside the window (or Alt-Tabs to WinUAE). One more for you... Start WinUAE. Select A1200 in the Quickstart page. (This might require you have an A1200 Kickstart 3.1 ROM image.) Start the emulation. After a second or two press F12. Change the settings like this: CPU 68000, match A500 speed, cycle exact, OCS/ECS Agnus/full ECS chipset, chipset extra A500, ROM Kickstart 1.2, RAM 512K chip. Click Reset. Get a yellow screen, flashing power LED and reboot infinite loop. That persists even if you press F12 and click Restart. Or similarly, start WinUAE, select A1200 Quickstart. Start emulation. Press F12, select A500 Quickstart with 1.2 ROM, 512K chip RAM only. Click Reset. Get black screen (emulation seems to be running though). Last edited by mark_k; 08 September 2008 at 00:44. |
07 September 2008, 12:39 | #4 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
|
07 September 2008, 12:58 | #5 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
AFAIK it is not possible to know when sysmenu is exited. I don't know when to stop or restart the sound.. (and DSound keeps looping if no new sample data sent and I am not going to add stupid thread that only watches for sound loops and stops it )
|
07 September 2008, 21:18 | #6 |
Zone Friend
|
|
08 September 2008, 16:14 | #7 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
This is interesting! First, this is OCS-only. Same garbage on real ECS Agnus A500.
But this isn't your standard "lets use OCS-undefined DDFSTRT/STOP low bits" like Eliminator or Double Dragon. This is something much more interesting, need to switch OCS Agnus to my "logic analyzer" A500.. Copper list is very simple (BPLCON1 writes are only for "ripple" effect, they don't have anything to do with this OCS-only effect) My guess is that DDFSTRT=0x10 is the difference, it seems OCS allows earlier than 0x18 DMA start but it also makes bitplane hardware to miss next line's start. (scan-line effect) "Unfortunately" both 0x10 and 0x14 DDFSTRT works in WinUAE so I can't know what real OCS limits are without LA tests. Copperlist: Code:
000377e2: 0100 0000 ; BPLCON0 := 0x0000 000377e6: ffdf fffe ; Wait for vpos >= 0xff and hpos >= 0xde. ; VP ff, VE 7f; HP de, HE fe; BFD 1 000377ea: 0092 0010 ; DDFSTRT := 0x0010 000377ee: 0094 00d0 ; DDFSTOP := 0x00d0 000377f2: 008e b161 ; DIWSTRT := 0xb161 000377f6: 0090 32d1 ; DIWSTOP := 0x32d1 000377fa: 00e0 0003 ; BPL1PTH := 0x0003 000377fe: 00e2 9ffb ; BPL1PTL := 0x9ffb 00037802: 0182 0000 ; COLOR01 := 0x0000 00037806: 0180 0000 ; COLOR00 := 0x0000 0003780a: 0001 fffe ; Wait for hpos >= 0x00. ; VP 00, VE 7f; HP 00, HE fe; BFD 1 0003780e: 0100 1000 ; BPLCON0 := 0x1000 00037812: 0201 fffe ; Wait for vpos >= 0x02 and hpos >= 0x00. ; VP 02, VE 7f; HP 00, HE fe; BFD 1 00037816: 0182 0000 ; COLOR01 := 0x0000 0003781a: 0102 0001 ; BPLCON1 := 0x0001 0003781e: 0401 fffe ; Wait for vpos >= 0x04 and hpos >= 0x00. ; VP 04, VE 7f; HP 00, HE fe; BFD 1 00037822: 0182 040a ; COLOR01 := 0x040a 00037826: 0102 0001 ; BPLCON1 := 0x0001 0003782a: 0601 fffe ; Wait for vpos >= 0x06 and hpos >= 0x00. ; VP 06, VE 7f; HP 00, HE fe; BFD 1 0003782e: 0182 040a ; COLOR01 := 0x040a 00037832: 0102 0001 ; BPLCON1 := 0x0001 00037836: 0801 fffe ; Wait for vpos >= 0x08 and hpos >= 0x00. ; VP 08, VE 7f; HP 00, HE fe; BFD 1 .... ADDED: My theory (which includes infamous "mysterious 4 cycle" delay as seen in copper thread): Because OCS has already known feature, disabling and re-enabling bitplane dma during scanline disables it completely until next time. (ECS can restart) OCS DDFSTRT < 0x14 -> "mysterious 4 cycle" runs but because DMA is still inhibited until 0x18, DMA stops (4 cycle "gap"). No restart anymore until next line but because "mysterious cycles" have already run, next horizontal line is shown normally. And so on. This would explain scanline-effect. Following tests needed: (unfortunately my AR3 is damaged, going to do tests after Agnus transplant is done) - DDFSTRT set to 0x14 should allow normal display but scanline-effect should disappear. - DDFSTRT set to 0x10 or smaller should show normal display including scanline-effect. Even DDFSTRT set to zero. Tested with Action Replay 1.. (what a pain..) - DDFSTRT 0x14 = still works normally, scanline-effect works - DDFSTRT >=0x18 = wrong modulo, no scanline effect - DDFSTRT <8 = more graphics errors So.. OCS DDFSTRT=0x18 "hard limit" seems to be broken. You can have earlier DDFSTRT but if DDFSTRT<0x18, every other line gets skipped. (missing/skipping bitplane start?) Last edited by Toni Wilen; 09 September 2008 at 08:18. Reason: theory added (which is wrong) |
10 September 2008, 00:30 | #8 |
Registered User
Join Date: Aug 2004
Location:
Posts: 3,349
|
Interesting.
So for the scanline effect, how does it work? Suppose you have a source image 100 lines tall. Would the output with this effect be 200 lines, with a blank line in between each source line. Or, would the output be 100 lines, with a blank line in place of source lines 2, 4, 6, ... (In other words, are the bitplane pointers updated on the blank lines or not?) |
10 September 2008, 13:34 | #9 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
Quote:
|
|
10 September 2008, 23:59 | #10 |
Registered User
Join Date: Aug 2004
Location:
Posts: 3,349
|
Hi,
Here are another couple of bugs... Run the "Blit" demo on Fred Fish disk 276. That uses a low-res interlaced screen, with a copperlist which makes the lower right corner high-res. When the mouse pointer is moved over the high-res area, it becomes half normal width, i.e. its pixels are high-res instead of low-res! If the pointer is only partly in the high-res area, part of it appears low-res and the other part high-res. There appears to be a bug with the Direct3D filter when scanline transparency >0. With the default WinUAE display size, the transparency effect is not applied to the rightmost 16 pixels. |
11 September 2008, 16:01 | #11 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
Quote:
But that was nice, there are now 2 known programs that does it |
|
11 September 2008, 16:54 | #12 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
Quote:
HPOS==0: clear DDF state. (this is also OCS-only, ECS does not clear it if previous line never reached DDFSTOP) HPOS==0x18: change DDF state variable ("started") Probably at 0x14 because two simultaneous checks and state changes is most likely not possible. (and here is our infamous 4 cycle difference again..) HPOS==DDFSTRT: change DDF state again ("active") but only if it was in "started" state previously. -> properly working "scanline" effect if DDFSTRT < 0x18. I still think this was meant to prevent 0 <= DDFSTRT < 0x18 but it was incorrectly implemented (and was fixed in ECS) |
|
11 September 2008, 20:00 | #13 |
Zone Friend
|
Sorry for interrupting, Toni, but the visible horizontal tear in some letters (e. g. in the 'W', recheck attached screenshot above) does not have anything to do with the issues described here I guess?
Looks like screenshot was done using windowed mode, where vsync has no effect. |
11 September 2008, 20:25 | #14 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,570
|
Quote:
Attached is a real screenshot |
|
11 September 2008, 20:47 | #15 |
Zone Friend
|
LOL. I'm convinced
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Some bugs in 2.5.0 I found | Mixter | support.WinUAE | 12 | 07 January 2013 19:56 |
2.3.3 bugs | Nut | support.WinUAE | 3 | 24 September 2011 19:06 |
WinUAE 1.3 known bugs | Toni Wilen | support.WinUAE | 22 | 05 August 2006 14:45 |
WinUAE 1.0.0 Bugs! | Dary | support.WinUAE | 19 | 26 June 2005 21:41 |
WinUAE0.9.91 bugs, definitely | glwxxx | support.WinUAE | 9 | 12 September 2004 19:32 |
|
|