Click Here
home features news forums classifieds faqs links search
6075 members 
Amiga Q&A /  Free for All /  Emulation /  Gaming / (Latest Posts)
Login

Nickname

Password

Lost Password?

Don't have an account yet?
Register now!

Support Amigaworld.net
Your support is needed and is appreciated as Amigaworld.net is primarily dependent upon the support of its users.
Donate

Menu
Main sections
» Home
» Features
» News
» Forums
» Classifieds
» Links
» Downloads
Extras
» OS4 Zone
» IRC Network
» AmigaWorld Radio
» Newsfeed
» Top Members
» Amiga Dealers
Information
» About Us
» FAQs
» Advertise
» Polls
» Terms of Service
» Search

IRC Channel
Server: irc.amigaworld.net
Ports: 1024,5555, 6665-6669
SSL port: 6697
Channel: #Amigaworld
Channel Policy and Guidelines

Who's Online
22 crawler(s) on-line.
 95 guest(s) on-line.
 0 member(s) on-line.



You are an anonymous user.
Register Now!
 Hammer:  39 mins ago
 Heimdall:  1 hr 55 mins ago
 amigakit:  3 hrs ago
 Karlos:  3 hrs 42 mins ago
 eliyahu:  4 hrs 11 mins ago
 jabirulo:  4 hrs 33 mins ago
 pixie:  4 hrs 39 mins ago
 nbache:  4 hrs 54 mins ago
 agami:  5 hrs 4 mins ago
 vox:  5 hrs 16 mins ago

/  Forum Index
   /  Amiga Gaming
      /  Updated Alien Breed 3D 2
Register To Post

Goto page ( Previous Page 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 )
PosterThread
Karlos 
Re: Updated Alien Breed 3D 2
Posted on 22-Dec-2024 12:24:04
#641 ]
Elite Member
Joined: 24-Aug-2003
Posts: 4810
From: As-sassin-aaate! As-sassin-aaate! Ooh! We forgot the ammunition!

@NutsAboutAmiga

We use a mixture of runtime and compile time abstraction for this. For example, if you run the 020+ generic build, it will choose an 030 or 040 optimised C2P path, depending on the CPU detected. This is no additional overhead since it's just a function pointer to call. We just set the pointers up as soon as we know the screenmode and use them from then on. This is a runtime abstraction.

If you run the 040 or 060 build, the same code path is just hardwired to use the 040+ C2P and the 030 C2P code isn't even present in the executable.

If you are running the 060 build, several inner loops are replaced entirely with their 060 optimised counterparts. These are less ameniable to call by indirection because that indirection happens on countless individual drawing calls, so we don't run-time abstract it, just use the 060 build. That's a compile time abstraction.

Usually the rendering paths are the same in all the builds (except for the inner loop optimisations above), but an example where rendering paths differ somewhat is the text message rendering. On fullscreen mode (RTG or AGA), the text is chunky-plotted to the fast ram chunky buffer every frame. In 2/3 RTG mode, the text is chunky plotted directly to the VRAM region (while locked) of the display/back buffers below the game view, when and only when the text updates.

In 2/3 AGA mode, a completely different, planar based plotter writes directly to a single plane in fast memory and is then longword copied to the display/back buffers. This is why the text in AGA 2/3 mode looks grey on black, because the single bitplane we write to corresponds to a grey colour in the palette. Another option to revisit later is to render it via sprites as this will work better with double height pixel modes and can support different colours again.

We already made most of the obvious low-level optimisations in the code quite some time ago. For example, at one point there were up to 8000 32-bit long division instructions per frame in my mod due to the greater use of polygon models which used it for perspective correction. They were mostly eliminated by converting division to multiply by reciprocal (which is a lookup). On the 060, the difference is significant because multiplication is so fast. However, division is still so slow on earlier CPUs that even 040 and 030 benefit, just by smaller margins.

The optimisations now are higher level and are largely being done in C. The primary issue is that of overdraw. There are examples in the original game where an entire complex scene is rendered and then completely drawn over by a wall. I've managed to eliminate a lot of that, but one of the worst offenders still remains which are door/lift zones. That's the area I'm working on next.

Last edited by Karlos on 22-Dec-2024 at 12:25 PM.

_________________
Doing stupid things for fun...

 Status: Offline
Profile     Report this post  
Goto page ( Previous Page 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 )

[ home ][ about us ][ privacy ] [ forums ][ classifieds ] [ links ][ news archive ] [ link to us ][ user account ]
Copyright (C) 2000 - 2019 Amigaworld.net.
Amigaworld.net was originally founded by David Doyle