English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Asm / Hardware

 
 
Thread Tools
Old 04 August 2017, 20:43   #21
Toni Wilen
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".
Toni Wilen is offline  
Old 05 August 2017, 02:19   #22
NorthWay
Registered User
 
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
Quote:
Originally Posted by Toni Wilen View Post
If DDFSTRT == DDFSTOP: stop never happens, you get max overscan.
Erm... no. I did say AGA though. See my poor mobile snap. (I haven't fixed the modulos to make it look right as I was only looking for the effect. EDIT: modulo 24 corrects it)

Quote:
Originally Posted by Toni Wilen View Post
There is always at least two "bitplane blocks" because DDFSTOP means "one more block to go before end".
I guess I can live with that as I more or less intended to allow for scrolling anyway.

But how did you set up the copper for the split testing then?
Attached Thumbnails
Click image for larger version

Name:	05082017652.jpg
Views:	337
Size:	485.4 KB
ID:	54024  

Last edited by NorthWay; 05 August 2017 at 02:43. Reason: EDIT
NorthWay is offline  
Old 05 August 2017, 10:51   #23
Toni Wilen
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
Toni Wilen is offline  
Old 05 August 2017, 13:31   #24
aros-sg
Registered User
 
Join Date: Nov 2015
Location: Italy
Posts: 191
horizontal split: what about dual playfield and changing playfield priority mid screen?
aros-sg is offline  
Old 05 August 2017, 15:18   #25
idrougge
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?
idrougge is offline  
Old 05 August 2017, 20:14   #26
NorthWay
Registered User
 
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
Quote:
Originally Posted by idrougge View Post
Excuse the OT, NorthWay, but is that a multisync screen you've got there?
An old Nokia 447M I blagged from work. 20+ years? Connected to an AMON scandoubler.
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...)
NorthWay is offline  
Old 06 August 2017, 19:14   #27
NorthWay
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.
NorthWay is offline  
Old 07 August 2017, 00:57   #28
NorthWay
Registered User
 
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
Sometimes a picture says more than 1K words.
Attached Thumbnails
Click image for larger version

Name:	07082017653.jpg
Views:	522
Size:	487.4 KB
ID:	54060  
NorthWay is offline  
Old 07 August 2017, 09:42   #29
ovale
Registered User
 
Join Date: Jun 2014
Location: milan / italy
Posts: 174
Wow!
Success?
How small you managed to get the gap?
Code?
ovale is offline  
Old 07 August 2017, 18:45   #30
NorthWay
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.
Attached Files
File Type: lha Tech-Tech-Tech.lha (24.3 KB, 166 views)

Last edited by NorthWay; 08 August 2017 at 02:41. Reason: attachment + colour bug
NorthWay is offline  
Old 09 August 2017, 00:30   #31
NorthWay
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?
NorthWay is offline  
Old 09 August 2017, 11:22   #32
robinsonb5
Registered User
 
Join Date: Mar 2012
Location: Norfolk, UK
Posts: 1,154
Quote:
Originally Posted by NorthWay View Post
Did anyone test the executable or make their own?
I'll definitely take a look when time allows - nice work!
robinsonb5 is offline  
Old 09 August 2017, 11:31   #33
Toni Wilen
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.
Toni Wilen is offline  
Old 04 August 2018, 09:22   #34
dissident
Registered User
 
Join Date: Sep 2015
Location: Germany
Posts: 260
Quote:
Originally Posted by NorthWay View Post
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.
Definitely a very cool trick. Thanks for sharing your code, NorthWay. I will play a little bit with this feature on my A1200.
dissident is offline  
Old 20 October 2018, 05:17   #35
NorthWay
Registered User
 
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
Quote:
Originally Posted by dissident View Post
Definitely a very cool trick. Thanks for sharing your code, NorthWay. I will play a little bit with this feature on my A1200.
If anyone has looked at this then I'm sorry for the borked logic that hoisted the right hand split one line above the left. I finally got my head on the right way and saw how I had swapped modulos.
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...
NorthWay is offline  
Old 13 August 2021, 11:16   #36
wodan
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.
wodan is offline  
Old 13 August 2021, 16:43   #37
mr.spiv
Registered User
 
mr.spiv's Avatar
 
Join Date: Aug 2006
Location: Finland
Age: 51
Posts: 242
Quote:
Originally Posted by aros-sg View Post
horizontal split: what about dual playfield and changing playfield priority mid screen?
Works.. done in some demos successfully.
mr.spiv is offline  
Old 13 August 2021, 20:11   #38
NorthWay
Registered User
 
Join Date: May 2013
Location: Grimstad / Norway
Posts: 841
Quote:
Originally Posted by wodan View Post
Could this be used to create a tiled screen? (so rather than blitting your background, just change the dma pointers to the right tiles)
At least 64 pixels wide tiles with FMODE 3. Maybe 32 pixels if FMODE 1/2 ???
NorthWay is offline  
Old 30 July 2023, 19:49   #39
dissident
Registered User
 
Join Date: Sep 2015
Location: Germany
Posts: 260
Quote:
Originally Posted by dissident View Post
Definitely a very cool trick. Thanks for sharing your code, NorthWay. I will play a little bit with this feature on my A1200.
Well, it took some time, but now I've got a nice exmple for AGA machines how this horizontal screen split could look like (see screenshot).

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
...
Bandwidth: 1x, 16 Pixels datafetch

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.
Attached Thumbnails
Click image for larger version

Name:	Screenshot.png
Views:	88
Size:	29.6 KB
ID:	79804  
Attached Files
File Type: lha Horiz-Split-Display.lha (14.7 KB, 27 views)

Last edited by dissident; 31 July 2023 at 07:47.
dissident is offline  
Old 30 July 2023, 23:52   #40
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,476
Quote:
Originally Posted by dissident View Post
Well, it took some time, but now I've got a nice exmple for AGA machines how this horizontal screen split could look like (see screenshot).
It's never too late

Nice!
ross is offline  
 


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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 02:39.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.09420 seconds with 14 queries