04 August 2017, 20:43 | #21 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,522
|
If DDFSTRT == DDFSTOP: stop never happens, you get max overscan.
There is always at least two "bitplane blocks" because DDFSTOP means "one more block to go before end". |
05 August 2017, 02:19 | #22 | ||
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Quote:
Quote:
But how did you set up the copper for the split testing then? Last edited by NorthWay; 05 August 2017 at 02:43. Reason: EDIT |
||
05 August 2017, 10:51 | #23 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,522
|
I used ECS, lores, single bitplanes (to make it easier to position copper moves when testing)
$8001,$fffe DDFSTRT=$40 DDFSTOP=$70 $8071,$fffe DDFSTRT=$7a ($78 is too small) DDFSTOP=$c8 |
05 August 2017, 13:31 | #24 |
Registered User
Join Date: Nov 2015
Location: Italy
Posts: 191
|
horizontal split: what about dual playfield and changing playfield priority mid screen?
|
05 August 2017, 15:18 | #25 |
Registered User
Join Date: Sep 2007
Location: Stockholm
Posts: 4,338
|
Excuse the OT, NorthWay, but is that a multisync screen you've got there?
|
05 August 2017, 20:14 | #26 | |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Quote:
I.e. yes. But not 15KHz. AFAIK. (I'll do some more testing when my sleeping pattern isn't so fucked up and I have the energy to think clear. Tired but can't get proper sleep...) |
|
06 August 2017, 19:14 | #27 |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Welcome to Weirdness, population >=1.
From 38 to D8 with STRT=STOP I see fetches from left overscan to STOP. I.e. at B8/B8 I need modulo -8, D8/D8 -16. D8/F8 same as D8/D8. With 18/18 I get _full_ overscan (so including right side) and need -16 modulo. (Still showing a 320 pixel wide picture.) Checking when the values are looked at with $38/$58 seems to give (subtract 8 to get wait for copper position): STRT changed (to $78) earlier than $XX79 will combine with the old (to give the full overscaneffect ). Setting it back to $38 has no effect!!! (Wrong position I set it?) STOP changed (to $9a?) earlier than $XX59 will always replace the old one. I get the same result as Toni; there needs to be one idle fetch cycle if not then the logic will join together the display settings. Is it possible to find any way of reseting the logic behaviour? Change fetchmode? Toggle DMA? Write bitplane data registers? Bueller? Last edited by NorthWay; 06 August 2017 at 21:47. |
07 August 2017, 00:57 | #28 |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Sometimes a picture says more than 1K words.
|
07 August 2017, 09:42 | #29 |
Registered User
Join Date: Jun 2014
Location: milan / italy
Posts: 174
|
Wow!
Success? How small you managed to get the gap? Code? |
07 August 2017, 18:45 | #30 |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
No gap. I had more or less surrendered. I don't really know what I did to make it work. Split -16 / +24 modulo IIRC.
Source and exe attached. Wait, this is a new effect so I get to name it, right? In that case, please meet "Tech-Tech-Tech". (Isn't that an appropriate name? Any sideways shift, repeating.) WinUAE 3.5.0 does not replicate the way it looks on my 4000. Also, I am getting a white colour instead of black that I don't understand. (Down left side and at the bottom. Not in WinUAE.) EDIT: Bug in PicCon - it says 69 colours, but wont save or edit more than 64. Some colour data is $DEADF00D... If I force conversion to 8 planes it saves everything. The source has lots of stuff from something else I did at one point in time so you can strip out a whole lot. Last edited by NorthWay; 08 August 2017 at 02:41. Reason: attachment + colour bug |
09 August 2017, 00:30 | #31 |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Did anyone test the executable or make their own?
Does it work for you, do you see the same effect as me? |
09 August 2017, 11:22 | #32 |
Registered User
Join Date: Mar 2012
Location: Norfolk, UK
Posts: 1,154
|
|
09 August 2017, 11:31 | #33 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,522
|
AGA probably allows it in higher fetchmodes if DMA is considered stopped after first 8 DMA slots of "bitplane block" after DDFSTOP. (not full 16 or 32 slots, depending on FMODE)
This would make it possible to restart DMA during following idle slots = no gap. (This is my guess, nothing tested yet) EDIT: I am now 99.9% sure that this explains it. There must be some extra logic in AGA that stops the DMA "early", probably because without it active DMA would wrap around to next line which most likely would cause side-effects even when DMA does not do any fetches. EDIT2: Emulation code updated to support this situation and display appears to be identical to your screenshot (except that one color but I think it is uninitialized palette entry) Last edited by Toni Wilen; 09 August 2017 at 20:30. |
04 August 2018, 09:22 | #34 | |
Registered User
Join Date: Sep 2015
Location: Germany
Posts: 260
|
Quote:
|
|
20 October 2018, 05:17 | #35 | |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
Quote:
I also can't find the graphics files I originally used - I think they are on an IDE drive (I'm using a lovely silent SATA SSD on my cybscsi) so the copperlist is still missing some colours. I think I have the original files at work, and if not I'll see if I can get the IDE disk to talk to something or other (I have an original X-Surf with IDE but I'm not 100% sure if it is possible to use the cable the wrong way around, and where the driver is. Sits in my 3000 which has the lid off.) I'll pack up everything needed to make it assemble (own includes and all) when I find the files. Funny how you can't move onto the next thing until you are satisfied with the old one... |
|
13 August 2021, 11:16 | #36 |
Registered User
Join Date: Feb 2018
Location: Kidderminster
Posts: 16
|
Could this be used to create a tiled screen? (so rather than blitting your background, just change the dma pointers to the right tiles)
Last edited by wodan; 13 August 2021 at 13:13. |
13 August 2021, 16:43 | #37 |
Registered User
Join Date: Aug 2006
Location: Finland
Age: 51
Posts: 242
|
|
13 August 2021, 20:11 | #38 |
Registered User
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
|
|
30 July 2023, 19:49 | #39 | |
Registered User
Join Date: Sep 2015
Location: Germany
Posts: 260
|
Quote:
I have a display with two identical images, each "viewport" has a size of 144x256 pixels and a depth of four bitplanes. The gap is larger then 16 pixels, 32 pixels, but that's because of the fact that the images are aligned to the left & right border. A gap of 16 pixels is also possible. I used Toni's hint and did a little modification of the copperlist. To display the bitplanes correctly, I initializer the BPL1MOD/BPL2MOD registers after the datafetch registers. The copperlist looks like this: Code:
$2c01,$fffe $0092,$0038 $0094,$0078 $0108,-18 $010a,-18 $2c79,$ffffe $0092,$0090 $0094,$00d0 $0108, 32*3+(32-18) $010a, 32*3+(32-18) $2d01,$fffe ... Explanation for the moduli value -18: For the left image the hardware reads 18 Bytes or 9 words as a data fetch. After that we have to point to the start of the bitplane again and substract these 18 bytes again. The right image starts also at the beginning of the bitplane and 18 bytes are read. I use the RAWMODULO format and the bitplanes are stored parallel. First line bitplane 0..3, then second line bitplane 0..3 and so on. We already read one line, so to get to the next line of the bitplane we need to skip the other lines of the bitplanes (plane_width*depth-1). My source bitplane is much bigger with a width of 256 pixel for the use of AllocBitmap(). This is not really necessary. You could also use AllocRaster() for a bitplane of 144 pixels width. Due to the fact my source bitplane has a different width, I add the difference (plane_width-data_fetch_width) additionally. For the second line we point the beginning of the second line of the bitplane and the process repeats. I enclosed the executable file. All is written for an AGA machine and only runs on this config. How could this be used in a game? For sure for a shoot'em'up or racing cars game with a vertical scroll in a two player splitscreen mode. Caution has to be taken for a collision detection with sprites. To detect a collision for each "viewport" sprites 0-3 could be used for the first player and sprites 4-7 for the second player. Last edited by dissident; 31 July 2023 at 07:47. |
|
30 July 2023, 23:52 | #40 |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,476
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
When is the modulo added to the bitplane pointers? | DanScott | Coders. Asm / Hardware | 3 | 07 March 2016 18:24 |
Split screen 2D puzzle game with jewels | BSzili | Looking for a game name ? | 3 | 06 February 2016 17:16 |
How does AGA impact modulo? | NorthWay | Coders. Asm / Hardware | 56 | 24 October 2015 02:21 |
Top down four split-screen game. | pickaweapon | Looking for a game name ? | 5 | 23 August 2012 01:06 |
split up screen filter settings | zygzak | request.UAE Wishlist | 0 | 24 October 2009 18:58 |
|
|