English Amiga Board


Go Back   English Amiga Board > Coders > Coders. General

 
 
Thread Tools
Old 22 October 2020, 13:20   #761
sandruzzo
Registered User
 
Join Date: Feb 2011
Location: Italy/Rome
Posts: 2,291
@Steril707

If you need helps to do programming, I'm up to it.
sandruzzo is offline  
Old 22 October 2020, 13:24   #762
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,774
Naah, I really don't have any intention to go on working on this.
I just could not let our Atari ST friends drive that far away with their demo. Which is still a lot better than my little thing I put together in an hour.
Tigerskunk is offline  
Old 22 October 2020, 13:28   #763
sandruzzo
Registered User
 
Join Date: Feb 2011
Location: Italy/Rome
Posts: 2,291
You did a hell of job. Fully respectful.
sandruzzo is offline  
Old 22 October 2020, 13:33   #764
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,774
Quote:
Originally Posted by sandruzzo View Post
You did a hell of job. Fully respectful.
Thanks, man..
Tigerskunk is offline  
Old 22 October 2020, 14:36   #765
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by Samurai_Crow View Post
I guess it does! That would make it faster yet. What kind of sprites does the STE have?
Yes and it is very very fast for most GUI stuff. Area filling, window translation. Simpler operations are usually faster than the Amiga's if bits need to be preserved in the destination. Like translation of a window raster from one place to another with fringes preserved. It has an interesting indirect addressing mode which can be used to hflip or linearly scale rasters. It has full 24 bit wide addressing too. More complex operations are faster on the Amiga. The Amiga is probably 1.5-2x as fast at regular masking. The technique used in AGT gives you 1 pass masking on the ST blitter and it is very fast too. Comparable to the Amiga. It doesn't do line draw or polygon fill though. It doesn't run in parallel to the CPU. Swings and roundabouts. They're both pretty awesome blitters.
frank_b is offline  
Old 22 October 2020, 14:41   #766
dreadnought
Registered User
 
Join Date: Dec 2019
Location: Ur, Atlantis
Posts: 1,914
Quote:
Originally Posted by Steril707 View Post
Naah, I really don't have any intention to go on working on this.
Great. I'm not doubting that you could pull off a pretty decent port, but I'd much rather see you working on quality original stuff. Hopefully it will be that First Samurai-style game you've mentioned before
dreadnought is offline  
Old 22 October 2020, 14:44   #767
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,411
I'm still impressed by the 1 pass masking* method on the STE Blitter (basically it completely changed things for the STE's objects Blitter drawing speed). It's a very clever way to do things. And it's always cool to see stuff like that. The STE is a nice system, for sure

*) I'm assuming this is a variation of the line-by-line-based blitting method you talked about at an earlier date?
roondar is offline  
Old 22 October 2020, 14:55   #768
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by roondar View Post
I'm still impressed by the 1 pass masking* method on the STE Blitter (basically it completely changed things for the STE's objects Blitter drawing speed). It's a very clever way to do things. And it's always cool to see stuff like that. The STE is a nice system, for sure

*) I'm assuming this is a variation of the line-by-line-based blitting method you talked about at an earlier date?
Yes. It has 3 mask registers which preserve bits in the destination rather than 2 for masking off the input on the first and last words on a line. It is used for the first, last and middle lines of a raster. The trick is to blit column by column a line at a time. The downside is the mask needs to be preshifted which takes up memory. Doug's engine looks like it analyses the sprite and can blit arbitrary line lengths in between transparent parts too. It's copy speed in the middle at 8 cpu cycles per word and 12 cycles for the fringes. On certain sizes where the middle is a larger ratio than the sides, a regular window blit of rectangular area can beat the Amiga with all its DMA switched off. It's mind boggling very few games used it on the ST. On its own it isn't enough though. It really needs to be combined with hardware scrolling.

Last edited by frank_b; 22 October 2020 at 15:04.
frank_b is offline  
Old 22 October 2020, 15:00   #769
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,411
Well, technically I suppose you can use a somewhat similar trick on the Amiga: blit the transparent surrounding using cookiecut blit(s) and blit the centre using copy blits (though the order matters here - you'd have to blit the centre section first and the cookie-cut section second using a pristine background copy as source). Obviously the centre then would not have any transparency. Actually been meaning to try something like that.

But that's besides the point and just my coder heart talking. It's quite impressive, for sure
roondar is offline  
Old 22 October 2020, 15:09   #770
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by roondar View Post
Well, technically I suppose you can use a somewhat similar trick on the Amiga: blit the transparent surrounding using cookiecut blit(s) and blit the centre using copy blits (though the order matters here - you'd have to blit the centre section first and the cookie-cut section second using a pristine background copy as source). Obviously the centre then would not have any transparency. Actually been meaning to try something like that.

But that's besides the point and just my coder heart talking. It's quite impressive, for sure
The second you shift you need to preserve bits in the destination if the source is aligned You could do line by line, use a constant for the mask and achieve something similar with first and last word masks. It would still take 8 cpu cycles with an idle cycle free for the CPU. Line by line overhead with the CPU would cancel it out. You could do fast vertical translation for scrolling though. Do the fringes as a separate blit. The Amiga one is fast enough for brute force masking anyway.
frank_b is offline  
Old 22 October 2020, 15:16   #771
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,411
Quote:
Originally Posted by frank_b View Post
The second you shift you need to preserve bits in the destination if the source is aligned You could do line by line, use a constant for the mask and achieve something similar with first and last word masks. It would still take 8 cpu cycles with an idle cycle free for the CPU. Line by line overhead with the CPU would cancel it out. You could do fast vertical translation for scrolling though. Do the fringes as a separate blit. The Amiga one is fast enough for brute force masking anyway.
Actually, I was thinking more of just outright cutting out the background with a shifted copy blit and then blitting the now missing parts of the background back in via one or more cookie-cut blits. Anyway, it's just a random idea. Thinking about it for a second, this idea might only actually be faster for gigantic blits due to the 2-word minimum for blitting the shifted cookiecut "fringes" on the Amiga
roondar is offline  
Old 22 October 2020, 15:26   #772
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
I'd just use a dual playfield display, make sure the enemies don't intersect and do a raw copy instead if they need to intersect at 16 pixel boundaries, use an OR instead and have a spare column on the source to shift into. That should mean zeroes get shifted down to the next line and you don't need to use the masks. The ST one can also optimise out the read of the RMW on the last column even with regular masking. btw AGT is open source. It could be ported to the Amiga.
frank_b is offline  
Old 22 October 2020, 15:32   #773
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,187
Quote:
Originally Posted by frank_b View Post
I'd just use a dual playfield display, make sure the enemies don't intersect and do a raw copy instead if they need to intersect at 16 pixel boundaries, use an OR instead and have a spare column on the source to shift into. That should mean zeroes get shifted down to the next line and you don't need to use the masks. The ST one can also optimise out the read of the RMW on the last column even with regular masking. btw AGT is open source. It could be ported to the Amiga.
On the A500, dual-playfield has a total of 7 foreground colors. You'd need AGA to get 15 foreground colors and huge sprites. Which makes this technique a bad idea.
Samurai_Crow is offline  
Old 22 October 2020, 15:33   #774
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,411
Quote:
Originally Posted by frank_b View Post
I'd just use a dual playfield display, make sure the enemies don't intersect and do a raw copy instead
Funny you should say that... I may have written an article about that idea at one time http://powerprograms.nl/amiga/dpl-fastbobs.html
Quote:

if they need to intersect at 16 pixel boundaries, use an OR instead and have a spare column on the source to shift into. That should mean zeroes get shifted down to the next line and you don't need to use the masks. The ST one can also optimise out the read of the RMW on the last column even with regular masking. btw AGT is open source. It could be ported to the Amiga.
AGT does sound quite interesting. I'm not too sure all of it is applicable to the Amiga environment equally, but some of the ideas surely would be quite interesting to experiment with.
roondar is offline  
Old 22 October 2020, 15:52   #775
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by Samurai_Crow View Post
On the A500, dual-playfield has a total of 7 foreground colors. You'd need AGA to get 15 foreground colors and huge sprites. Which makes this technique a bad idea.
Yes I know. It would be 7 over 8 in that case. You could also just make sure enemies don't intersect with any tiles for the same effect and do it in whatever mode you wish. Think of a platformer where the meanies only walk on ledges.
Cheating but would work for some games.
frank_b is offline  
Old 22 October 2020, 15:55   #776
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,187
Quote:
Originally Posted by frank_b View Post
Yes I know. It would be 7 over 8 in that case. You could also just make sure enemies don't intersect with any tiles for the same effect and do it in whatever mode you wish. Think of a platformer where the meanies only walk on ledges.
Cheating but would work for some games.
I get the opaque blitting technique. It's like using character maps on the C64 to fake more sprites. My objection is the shallow palette depth.
Samurai_Crow is offline  
Old 22 October 2020, 16:02   #777
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by Samurai_Crow View Post
I get the opaque blitting technique. It's like using character maps on the C64 to fake more sprites. My objection is the shallow palette depth.
Then do it in 32 colour mode and make sure you only ever write to a zeroed area of the screen Would work for some games and it would be really fast. Or just pre calc the sprite / background combination and use a smaller tile count.
frank_b is offline  
Old 22 October 2020, 16:06   #778
frank_b
Registered User
 
Join Date: Jun 2008
Location: Boston USA
Posts: 466
Quote:
Originally Posted by roondar View Post
Funny you should say that... I may have written an article about that idea at one time http://powerprograms.nl/amiga/dpl-fastbobs.html
Ex professional games developer like me? Missed the Amiga though. Started on the GBA.
frank_b is offline  
Old 22 October 2020, 16:12   #779
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,411
Quote:
Originally Posted by frank_b View Post
Ex professional games developer like me? Missed the Amiga though. Started on the GBA.
Nope. Professional developer, but never in games.
My Amiga "coding obsession" was mostly borne out of regret: back in the day I didn't have a hardware reference manual (or a proper knowledge of 68000 assembly). But I always really wanted to know how the Amiga really works and still kind of want to make my own games one day. So I taught myself everything I could find about the Amiga and 68000 over the past few years. The article is part of that process
roondar is offline  
Old 22 October 2020, 16:24   #780
sandruzzo
Registered User
 
Join Date: Feb 2011
Location: Italy/Rome
Posts: 2,291
@roondar

Fast blit operation works fine even on no DualPlayfield. Have some limits, but it worth implementing it
sandruzzo 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
Amiga 500 Rev.6A VS Amiga 500 Plus with 2MB chip and ACA 500 turrican9 support.Hardware 0 24 December 2016 02:16
Amiga 500 + slow to chip conversion green screen Nekoniaow support.Hardware 8 06 February 2015 06:04
NOT AMIGA (but 68k!) Art of Fighting Source Code for Neogeo [044] jimmy2x2x Coders. Asm / Hardware 1 24 January 2014 15:34
EAB Multi Platform League - Round 10 - Metal Slug (NeoGeo) TCD EAB's competition 33 26 July 2009 20:57
Steg the slug HOL error dlfrsilver HOL data problems 8 12 February 2008 06:41

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 19:15.

Top

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