Nicholas Steel's Avatar

Nicholas Steel profile

4

Nicholas Steel has recently been playing 20XX, Lords Of The Fallen and The Elder Scrolls V: Skyrim Special Edition

Currently Playing
20XX icon

20XX

15 hours

Lords Of The Fallen icon

Lords Of The Fallen

1 day 19 hours

Most played
Borderlands icon

Borderlands

9 days 9 hours

Fallout: New Vegas icon

Fallout: New Vegas

6 days 3 hours


Dominic Tarason Avatar
Dominic Tarason responded to Nicholas Steel's comment in
3 Months ago
Dust off your sawn-off for a bloody Dusk, and a new dawn for BloodDust off your sawn-off for a bloody Dusk, and a new dawn for Blood
Nicholas Steel Avatar
The thing that was holding Blood back was the lack of engine source code, not the lack of re-releases (the lack of re-releases was directly related to the lack of source code availability). The source code had been stuck in "limbo" for a incredibly long time (allegedly no one knew who owned it legally) and presumably it is still stuck in Limbo (unless that changed in the last year).

That's why there were no source ports for over a decade and then 2 or 3 attempts to reverse engineer it with both attempts seemingly being abandoned early on in development.

Shadow Warrior, Duke Nukem 3D, Quake, DOOM, Hexen etc. had their source code released which allowed for source ports and remasters to be easily made.

If there are new or renewed attempts at reversing the game engine than that's fantastic news because Blood, Quake and Duke Nukem 64 offer pretty exceptional single player experiences (I prefer Duke Nukem 64 level designs and the additional weapon fire modes over the PC version, the levels are also better designed for co-op and Death Match multiplayer).Reply
Dominic Tarason Avatar

The current crop of source ports are a bit weird - they still don't quite have the full code, but are based on a mixture of code from the (originally stolen/leaked by a Monolith employee) alpha version, some reverse-engineering and some clever eyeballing and guesstimating.


It all seems to have worked out, though. BloodGDX isn't perfect yet, but it's probably far better than trying to play it through DOSBox, and the snippets of footage I've seen of Blood EX look even better, with some slick new UI upgrades.


However we got here, though, Blood is back. It'll never be as big as Duke or Shadow Warrior, but it's a great piece of design.

sign in to comment
Nicholas Steel Avatar
Nicholas Steel responded to Knowbody comment in
10 Months ago
The Ryzen response: Intel have forgotten how to deal with a genuinely competitive AMDThe Ryzen response: Intel have forgotten how to deal with a genuinely competitive AMD
Knowbody Avatar

Technically, most x86 CPUs, with or without SMT, already do process multiple instructions simultaneously.

It's to do with Out of Order Execution, and why they can process more than one instruction per clock cycle (which is called being superscalar).


Each core has multiple sets of execution units, and the scheduler tries to keep them all busy by executing multiple instructions from the one thread.


As you can imagine, there can be issues with doing this, for instance some instructions require data from previous instructions, and you also run into branches in the code.


One of the things they do is they guess which branch it thinks is most likely to be taken, and starts speculatively executing instructions from it. And if it's right, it's just sped up execution. But if it's wrong, it has to throw the results away and start again from the other branch.


So it pays to make the right guess as often as it can. And in order to do that, they have branch prediction algorithms, which take a bunch of factors into account, such as recording a history of how often that branch has been taken before.


But anyway, the point is that with SMT, it can process multiple instructions simultaneously. But it can also do that without SMT too. SMT just allows it to fill even more idle execution units simultaneously than if only one thread is being executed.


Most of the complication from SMT is keeping track of which instructions belong to which thread.

Nicholas Steel Avatar

Thanks for the additional information. Why don't CPU's have enough hardware to pre-emptively execute 2 paths in a branch? Eliminating the miss-prediction downside altogether?


Also my comment was based on a GIF animation Intel had on their website back when Nehalem CPU's were the bees knees. It showed pretty much what I said happening. 3 horizontal lines with the center being actively processed and the top and bottom line being different threads, information (represented as big dots) from those threads moving in to the center line to fill it more effectively. The GIF compared that animation to another showing just a single horizontal line representing both data being actively processed and a single thread.

sign in to comment
Knowbody Avatar
Knowbody responded to Nicholas Steel's comment in
10 Months ago
The Ryzen response: Intel have forgotten how to deal with a genuinely competitive AMDThe Ryzen response: Intel have forgotten how to deal with a genuinely competitive AMD
Nicholas Steel Avatar
Hyper Threading does not allow a CPU to process multiple instructions simultaneously. Hyper Threading allows a CPU Core Schedular to fill in down-time periods with information from a different thread so that a 2nd data stream will fill in the gaps in the existing schedule. Everything is still being processed 1-by-1.Reply
Knowbody Avatar

Technically, most x86 CPUs, with or without SMT, already do process multiple instructions simultaneously.

It's to do with Out of Order Execution, and why they can process more than one instruction per clock cycle (which is called being superscalar).


Each core has multiple sets of execution units, and the scheduler tries to keep them all busy by executing multiple instructions from the one thread.


As you can imagine, there can be issues with doing this, for instance some instructions require data from previous instructions, and you also run into branches in the code.


One of the things they do is they guess which branch it thinks is most likely to be taken, and starts speculatively executing instructions from it. And if it's right, it's just sped up execution. But if it's wrong, it has to throw the results away and start again from the other branch.


So it pays to make the right guess as often as it can. And in order to do that, they have branch prediction algorithms, which take a bunch of factors into account, such as recording a history of how often that branch has been taken before.


But anyway, the point is that with SMT, it can process multiple instructions simultaneously. But it can also do that without SMT too. SMT just allows it to fill even more idle execution units simultaneously than if only one thread is being executed.


Most of the complication from SMT is keeping track of which instructions belong to which thread.

sign in to comment