Sustained Performance Charts

davethejackal

Weaksauce
Joined
Oct 13, 2009
Messages
87
Well, this is my second post on the subject of improving the meaningfulness of the benchmark statistics provided reviews (the first post here was somewhat prematurely locked, despite some enthusiastic responses).

Here, having had time to think over the ideas I came up with, I now present 'Sustained Performance Charts', with a section at the end on how to calculate them from FRAPS benchmarking log files using Open Office's sCalc (or another similar spreadsheet).

Ok so here (again) is my suggestion for benchmark results, which I've been whoring round a few sites, designed to give a fuller picture of component performance than mere minimum/maximum and average results that are fairly common now.

What the charts show% of time a certain level of performance was achieved during a single benchmark run (not an aggregate over several different benchmarks, though the stats for various components can be shown on the same chart). It's can be adapted for other types of components but graphics cards seem the most obvious, hence the reason I posted the idea here.

To explain, I've made up 2 graphics cards: the XYG 260GT and the ABC 3900S.

I dummied up some benchmark results on scalc. I don't pretend that they're realistic (I just used random number generators and formulae and crazy math functions) but they do make a point and show how these charts might be useful.

The figures show that both complete a benchmark with the same maximum and minimum FPS of 10/82 FPS, the XYG has an average FPS of 47.38 and the ABC 44.91.... so the XYG is the clear winner, right?

Let's take a look at the sustained performance chart:
sustainedgchart.jpg


another version of the chart with data points plotted is shown here, data values might vary slightly as random numbers were used to generate the data
dottygchart.jpg


What the chart shows: If you look along the bottom it shows a certain FPS. The left axis shows the % of time that FPS or higher was achieved. So if the line for a specific card passed through the point that corresponds to 30 FPS at the bottom and 90% on the left, it would show that when the benchmark ran, the card achieved 30FPS for 90% of benchmark. In other words, it only dipped below 30FPS 10% of the time. So if the benchmark ran for a total of 100 seconds, for 10 of those seconds it ran at less than 30FPS and for 90 seconds it was producing greater than 30FPS. Make Sense?

We can see that, despite it's higher average FPS, the XYG barely manages to limp above 30FPS 30% of the time, spending 20% of the time below about 19 FPS. Perhaps the problems is with a certain graphical effect or the XYG can't cope when a scene comes particularly crowded as the manufacturer, for some unknown reason, despite giving it 1Gb of expensive superfast DDR5 memory, decided to lump it with a 128-bit data bus. Of course such a design mistake would never happen in reality :sarcastic:, but you get my point.

Conversely the ABC has a much smoother performance curve, maintaining 35+ FPS 90% of the time.

So ... which would you rather game with? Ok, I can hear cries of 'neither' from the hardcore enthusiast '100FPS or die!' gamers, but let's pretend this is a Crysis 4 (TBA) benchmark, so 35+ FPS isn't that bad.

It's not uncommon to read a review where the reviewer rates a card highly, making comments about the 'overall experience' or some such, despite seemingly unimpressive benchmark scores, or denigrates a product for 'choppy gameplay'. These charts provide the data to back up such claims.

CALCULATING USING A SPREADSHEET FROM FRAPS DATA

It would take some extra work but FRAPS will output the time at which each frame in the benchmark was rendered in to a log file in CSV format, which can easily be imported in to a spreadsheet, giving 2 colums, one containing a frame number (which we ignore) and a second showing the time at which each frame was rendered (in ms).

From the times the intervals between frames can be calculated and from these the number of FPS each frame effectively gave rise to stored in a new column on the spreadsheet, using a formula something like:

Interval between frames = <time at which current frame occurred> - <time at which previous frame occurred>

For each row of the FRAPS data after the first.

Another column is then added to store FPS values: FPS = 1000/(interval between frames in ms) for each of the calculated intervals.

Then another column is added, containing a formula to SUMIF all the interval times that are lower or equal it's the interval time and you get the total time spent at each FPS or higher.

The formulae used in each cell in this column would be something like:

=SUMIF(<entire interval data column range>, CONCATENATE("<="; <interval for cell's row>))

Divide this by the duration of the benchmark and you get the % time the benchmark ran at a specific FPS or faster, stored in a final column.

This is plotted on an 'Line' or 'XY' chart, with X as FPS and the % as Y, sorted by X values, using a single line style interpolated with splines or some such (set in scalc's chart options), which gives the sustained performance chart.

A fancier spread sheet might automate the importing of data and allow more than one set of figures to be considered, of course, but this covers the basic ideas.

All from the same raw FPS data HardOCP publishes already as a time series, but rearranged to make it more meaningful to the reader.

Thoughts/comments appreciated.
 
Last edited:
Definitely interesting - I need to digest this a bit more before I can give any really meaningful input though.

Off the top of my head - it seems that this would be most useful in conjunction with a fps/time plot, as that would allow you to see if one card sat at >30fps for 10 consecutive seconds...

I think the big picture here is that no one graph is a catch-all way to scale a card. You need a few different pieces of info.
 
HardOCP "Apples to Apples" charts already tell us this information though.
 
First. Resize that graph please. It doesn't need to be >720p in size.

Second. Your graph offers little value or information that cannot already be seen or extrapolated from a standard benchmark graph. In fact, these offer less meaningful information because you hide, with predigested percentages, the actual data points, and obscure the patterns unique to each individual graphics architecture which can be used to determine the strengths and weaknesses of such architectures.

Third. What's worse is that a graph like yours can be far more easily manipulated to hide a flawed or poorly conceived benchmark run designed to be favorable to one architecture over another.
For all we know your benchmark run could consist of going to parts of a game where tons of geometry is being drawn 80% of the time, while parts of the game that are heavy with computational shader effects are visited only 20% of the run. Now if one architecture is strong in geometry processing while the other architecture is strong in computational shader power your benchmark would paint the first architecture in a better light and would hide that it is weak on computational shader power and it would paint the other architecture in a bad light no matter how much better it was at computational shader effects.

The point in trying to drive home is that percentages are far less informative than actual data points. You can tell people that Intel has over 40% of all graphics chip market, while Nvidia has about 28% and ATI 22%. Those percentages hide the fact that the Intel graphics chips are low end and therefore have little meaning to a hardware enthusiast website audience. We don't want interpreted predigested easily manipulated percentages that hide the actual data. The same applies to those who use the Steam Hardware survey results to claim and one IHV is better than the other simply because it has a higher percentage share of the result. When the actual data shows that a lot of low end parts are what make up the bulk of that IHV's share and are thus meaningless for readers of a hardware enthusiast website.

All the examples given are somewhat limited in scope and are used solely to illustrate the point in a simple way.
 
Last edited:
A chart like that would be better with the x-axis reversed so it starts at a higher number and goes out to zero, simply because of what you're trying to show. It would just make more sense that way.

What would be good also for that kind of chart would be scaling over different resolutions on the X axis and fps on the y-axis. Of course this would just show what we already know - AMD's 5700 series cards with their 128-bit limited bandwidth start to struggle, especially in the higher resolutions compared to cards with wider bus widths, regardless of some people who wish to think that it isn't true. (Funny how they were all angry about the fact that some people poo-poo AMD's tiny bus widths and then the next week the 5700 series comes out and demonstrates perfectly how much better those cards could be if only they hadn't been given a restrictive 128-bit bus.) The proof is plain in how the only significant hardware numbers difference between a 4870 and a 5770 is the bandwidth being half on the 5770 compared to the 4870. That must be what enables the 4870 to pull ahead in several benchmarks. Even the extra 100MHz clockspeed and 300MHz RAM datarate on the 5770 can't compensate for the halved bandwidth. You can have 2 billion datarate on your GDDR5 and a billion MHz clockspeed, but if you're trying to shove all the data through a 128-bit bus, that's your bottleneck.

Reference:
HD5770: 800/40/16/850MHz/128-bit/1GB/1.2GHz
Numbers: SPs/TUs/ROPs/MHz/bus/GDDR5/RAMspeed
HD4870: 800/40/16/750MHz/256-bit/1GB/900MHz
 
Last edited:
A chart like that would be better with the x-axis reversed so it starts at a higher number and goes out to zero, simply because of what you're trying to show. It would just make more sense that way.

What would be good also for that kind of chart would be scaling over different resolutions on the X axis and fps on the y-axis. Of course this would just show what we already know - that AMD's 5700 series cards with their 128-bit limited bandwidth start to struggle in the higher resolutions compared to cards with wider bus widths, regardless of some people who wish to think that it isn't true. (Funny how they were all angry about the fact that some people poo-poo AMD's tiny bus widths and then the next week the 5700 series comes out and demonstrates perfectly how much better those cards could be if only they hadn't been given a restrictive 128-bit bus.)

I'm sorry the 5700's series did not meet your expectations, but you are not entirely correct. In directx 11 games the HD5770 is neck and neck with the HD4890 and the gap will only get wider with future driver revisions in favor of the HD5700's. Also why the hell are you bringing this up on a testing methodologies thread?

img0027233.gif
img0027234.gif
 
Because I felt like mentioning it? To be more specific: because we don't see such a chart used because some people are afraid to show the truth of a card's performance when it doesn't perform as well as it should.

Also, that's nice you can cherry-pick a single game and a DX11 one at that. But even your BF DX11 data is apparently way off: http://www.anandtech.com/video/showdoc.aspx?i=3658&p=7 The 4870 beats the 5770 in all three resolutions in BattleForge DX11. Maybe whatever site you got that graph from didn't test with 4xAA and Max Quality settings. Try turning those on.
BattleForge is another game that punishes the 5700 series. The performance hit coming from the 4870 starts at 25% at 1680, and ends at just 18% at 2560. This also means that the 5770 loses to the GTX 260.

But why not look at DX10 games too, which are the vast majority of what's out there and, oh, also what the 4870 hardware is designed up to and thus would provide a more level playing field for testing.

Start here and count how many times the the 5770 significantly beats the 4870. It doesn't happen even at 1680x. http://www.anandtech.com/video/showdoc.aspx?i=3658&p=5
Crysis: All 3 resolutions it falls behind significantly.
Far Cry 2: It barely beats the 4870 by 1fps in all three tests. Again a poor showing for a next-gen architecture that should improve over what the previous generation could do.
BattleForge DX11: It loses significantly to the 4870 in all three resolutions.
HAWX: It loses in all three, although at 2560x it's only 3fps shy of the 4870. (Although all the cards are more compressed together at 2560x so 3fps is actually a moderate win by the 4870 over the 5770.)
DawnofWar2: It basically ties the 4870 on all three tests... beating it by roughly 1fps in each.
ResEvil5: Somewhat close, but it loses all three.
BatmanAA: Not even close except at 2560x. Loses all three.
Left4Dead: Loses all three handily.

So that's 18 losses, and 6 ties or eeked-out wins.

To quote the article:
In spite of the clock speed advantage over the 4870, and the architectural advantages (extra caches and what-not), it underperforms the 4870 by about 15% here. AMD had once told us that they believed that they weren&#8217;t memory bandwidth constrained on the 4870/4890, but when that&#8217;s the only significant difference between the 5770 and the 4870 that would explain the performance difference.
And from the conclusion:
The value of the 5770 in particular is clearly not going to be in its performance. Compared to AMD&#8217;s 4870, it loses well more than it wins, and if we throw out Far Cry 2, it&#8217;s around 10% slower overall. It also spends most of its time losing to NVIDIA&#8217;s GTX 260, which unfortunately the 4870 didn&#8217;t have so much trouble with. AMD clearly has put themselves in to a hole with memory bandwidth, and the 5770 doesn&#8217;t have enough of it to reach the performance it needs to be at.

If you value solely performance in today&#8217;s games, we can&#8217;t recommend the 5770. Either the 4870 1GB or the GTX 260 would be the better buy.

But don&#8217;t mistake that for a wholesale write-off of the 5770. As a 40nm product it&#8217;s cooler running and quieter than a 4870 or a GTX 260. As a DirectX 11 product it has longer legs to run on for future games and/or applications using DirectCompute 5.0. Eyefinity is also there, but with the performance of the card, (not to mention the cost of more monitors) it&#8217;s not something we&#8217;d seriously expect to see used on a 5770.

Our jobs would be made much easier if AMD had either made the 5770 perform at parity with the 4870, or made the 5770 cheaper. Right now on a good deal we can swing a 4870 for $140, while the 5770 will be sticking to $160. That&#8217;s 14% more for a card that performs 10% worse. If we take a linear extrapolation, the 5770 needs to be at around $130 to win on performance alone, or at the very least $140 so that we can talk solely about the 10% performance loss versus the extra functionality of the 5770.

So to put it in layman's terms, the 5770 rides the short bus. And that's a shame because if it had a wider bus (more bandwidth) it would likely be the perfect card and the best bang-for-the-buck out there.
 
Last edited:
Yacoub - I don't think the point of this thread was to show that the 5770 was even worse than the average numbers show. I think the point might be quite the opposite. Even if the 5770 was lower on averages, it might be higher in a sustained performance chart. But since no one has done such a chart, who knows.

Lorien has a good point about the specific bench used to show a certain card in a better light. But this is a problem regardless of what method / chart is used. In general, when stats are used, it is often misused to show evidence of whatever the hell the person wants.
 
Ah ok, you are just being a troll, carry on then. Bye now.;)
Nope. Because it's a good chart we should see utilized. As I said: To be more specific: because we don't see such a chart used because some people are afraid to show the truth of a card's performance when it doesn't perform as well as it should.
Giving half the information is not so different from giving false information. I'm not saying your chart is a bad idea. I'm saying show how the card actually performs at the settings people would want to use (Max settings for any given resolution tested) and show the actual scaling over the different resolutions. Don't try to hide the memory bandwidth limitations by turning down the settings or leaving off AA. Gamers aren't trying to win benchmarks, they're trying to play a game that looks good while they play it like the game was intended to be played.

Regarding the 5770, 115.2 GB/sec (4870) vs 76.8GB/sec (5770) is a significant difference that shows itself in testing. FiringSquad also admits that in their conclusion:
The Radeon 5770 only falls short to the 4870 in memory bandwidth, where it&#8217;s limited to 76.8GB/sec of peak bandwidth versus the 4870&#8217;s 115.2GB/sec. That&#8217;s a difference of exactly 1.5X more bandwidth in favor of the Radeon 4870.
As such, the Radeon 5770 isn&#8217;t going to be able to keep up with the Radeon 4870 under any moderate or high resolutions, especially if you crank up the AA, but ATI&#8217;s banking on the 5770&#8217;s DX11 feature set to make up the difference.
So this isn't just an Anandtech revelation.

Yacoub - I don't think the point of this thread was to show that the 5770 was even worse than the average numbers show. I think the point might be quite the opposite. Even if the 5770 was lower on averages, it might be higher in a sustained performance chart. But since no one has done such a chart, who knows.

And I'm countering his attempt to make a card look better than it really is by pointing out that it's actually perhaps not even as good as he thinks it is now. Certainly not for the price compared to the performance and not at the settings gamers would actually want to use. Why mislead them and have them be disappointed?
 
Last edited:
Ignoring the threadcrapping, can we get the axis reversed on that graph? It would probably make a lot more sense that way. Also, can we get a time vs fps graph with the average plotted on it as well?
 
HardOCP "Apples to Apples" charts already tell us this information though.

No: they offer the max, mean and minimum FPS, that's why I chose the example I did.

Ignoring the threadcrapping, can we get the axis reversed on that graph? It would probably make a lot more sense that way. Also, can we get a time vs fps graph with the average plotted on it as well?

Yeah, I was just getting over the general principle. Renaming the axes/chart or rearranging things is up to the user. You might also plot the FPS vs the % time it was lower than the particular figure (i.e. reverse the direction on the current Y axis).

First. Resize that graph please. It doesn't need to be >720p in size.

Second. Your graph offers little value or information that cannot already be seen or extrapolated from a standard benchmark graph. In fact, these offer less meaningful information because you hide, with predigested percentages, the actual data points, and obscure the patterns unique to each individual graphics architecture which can be used to determine the strengths and weaknesses of such architectures.

Third. What's worse is that a graph like yours can be far more easily manipulated to hide a flawed or poorly conceived benchmark run designed to be favorable to one architecture over another.
For all we know your benchmark run could consist of going to parts of a game where tons of geometry is being drawn 80% of the time, while parts of the game that are heavy with computational shader effects are visited only 20% of the run. Now if one architecture is strong in geometry processing while the other architecture is strong in computational shader power your benchmark would paint the first architecture in a better light and would hide that it is weak on computational shader power and it would paint the other architecture in a bad light no matter how much better it was at computational shader effects.

The point in trying to drive home is that percentages are far less informative than actual data points. You can tell people that Intel has over 40% of all graphics chip market, while Nvidia has about 28% and ATI 22%. Those percentages hide the fact that the Intel graphics chips are low end and therefore have little meaning to a hardware enthusiast website audience. We don't want interpreted predigested easily manipulated percentages that hide the actual data. The same applies to those who use the Steam Hardware survey results to claim and one IHV is better than the other simply because it has a higher percentage share of the result. When the actual data shows that a lot of low end parts are what make up the bulk of that IHV's share and are thus meaningless for readers of a hardware enthusiast website.

All the examples given are somewhat limited in scope and are used solely to illustrate the point in a simple way.

First: sheesh I put in enough work without bothering about that.

Second: I wasn't suggesting it was used instead of the current time plot, just that it showed the same information but in a more easy to understand/informative way. True you could trace over the time plot, get out your calculator and ruler and work all this out (approximately at least), but this new chart gives you the same information, more accurately, at a glance. One thing the time plot shows is where one card has problems but other's don't, doesn't happen often but this would be something not immediately obvious from the proposed chart. Of course, both should come along with a reviewer commentary, which analyses or explains the data, what seems to have contributed to what etc. NOTE: I'm assuming reviewers are at least semi honest here and no one is really trying to consciously hide anything!

Third: Whether defects or whatever were due to geometry, massive textures etc. is just as hidden in the current information as it could be here, the thing about benchmarks is that they're *supposed* to show typical performance when a certain piece of software runs. If they don't that's down to bad benchmark design rather than anything else. As most benchmarks are based on games and someone often *really* wants to know how a card performs with a game they particularly like, it doesn't matter what that's down to, shaders geometry or what. Assuming the benchmark accurately reflects the game play experience, if a card performs poorly, the public need to know!

Also note: ALL the data points would be counted and shown on the chart, it's just that, rather than plotting vs time we've plotted vs % benchmark the card ran faster than a certain FPS. Nothing is hidden, it's just presented in a different way.

BTW: the comment about the DDR5 and 128bit bus was for the lulz, I understand the 5770s overclock really well, up to 4870 performance in many cases. Let's face it, AMD are selling a $130 card for $159 (and they ARE selling) because: they can; they're having to use 1gb ram chips rather than 2gb; and production is has yet to ramp up, so why not sell low volumes at inflated prices? If anyone needs a little profiteering to push up profits atm, AMD do!
 
Last edited:
No: they offer the max, mean and minimum FPS, that's why I chose the example I did.



Yeah, I was just getting over the general principle. Renaming the axes/chart or rearranging things is up to the user. You might also plot the FPS vs the % time it was lower than the particular figure (i.e. reverse the direction on the current Y axis).

fwiw, if I understand HardOCP's "mean" correctly, i think their "mean" is intended to represent the average of the "area under the curve" over the course of the benchmark, which would be a single number that correlates to a chart like yours. The chart is a nice visual representation of the mean data over the elapsed time of the benchmark and thus is a good idea, however the information it is providing is actually summarized by the "mean" number in the HardOCP "mean" data point.

http://en.wikipedia.org/wiki/Mean
 
fwiw, if I understand HardOCP's "mean" correctly, i think their "mean" is intended to represent the average of the "area under the curve" over the course of the benchmark, which would be a single number that correlates to a chart like yours. The chart is a nice visual representation of the mean data over the elapsed time of the benchmark and thus is a good idea, however the information it is providing is actually summarized by the "mean" number in the HardOCP "mean" data point.

http://en.wikipedia.org/wiki/Mean

The two cards in my example have the same minimum, maximum and different means/averages corresponding, as you say, to the area under the time series graph.

However, one card comes out on top when you look at the mean, the other (IMO) when you look at sustained performance.

That was the whole point of the example, how are people missing this?

To paraphrase my old stats professor: "Before you do anything, look at the data. Means, averages, variance, correlation can tell you only so much, looking at the data in the right way is the best way to spot anything obvious, trends, anomalies or whatever. Once you think you see something, then you can start generating the statistics you need to support or explain what you see". He was also a big fan of written explanations, such as "even though the ... shows .... I'd put this down to .... ".
 
Last edited:
There is a very easy way to point out the weakness of mean or average. Simply look at the average american. The average american has 1 testical and 1 ovary. To be perfectly honest, I don't know ANYONE who is average by that standard.
 
That's a complete failure of an analogy, as we're talking the mean performance of a single card, and in the case of the HardOCP mean, it's for a single game over the length of the benchmark test. The correct analogy would be the average american male, which would have 2 testicals and zero ovaries. Your analogy is fail.
 
That's a complete failure of an analogy, as we're talking the mean performance of a single card, and in the case of the HardOCP mean, it's for a single game over the length of the benchmark test. The correct analogy would be the average american male, which would have 2 testicals and zero ovaries. Your analogy is fail.

I think it makes the point that means don't make a lot of sense unless you look at the big picture. Means without the big picture fail, not his analogy, Besides, there are no doubt american males without testicles or just one, so the average male would be just below 2 testicles, 1.9999 perhaps? Wtf does having 1.9999 testicles even mean?
 
That's a complete failure of an analogy, as we're talking the mean performance of a single card, and in the case of the HardOCP mean, it's for a single game over the length of the benchmark test. The correct analogy would be the average american male, which would have 2 testicals and zero ovaries. Your analogy is fail.

Meh it's probably like 1.999 testicals... there's some uniballers out there. :p
 
i wonder if there are any triballers to make up for the uniballers? okay this conversation is way off base... :eek: :D
 
That's a complete failure of an analogy, as we're talking the mean performance of a single card, and in the case of the HardOCP mean, it's for a single game over the length of the benchmark test. The correct analogy would be the average american male, which would have 2 testicals and zero ovaries. Your analogy is fail.

Actually, the analogy is perfect. The anaolgy shows a 2 peak distribution, although a very discrete one, and the problems with taking an average. Take a look at this real graph from one of [H]ard's review:

1222236171yvrWwH0PnQ_11_2.gif


The average is over 60fps (62.6) however from 380 to 621 it only goes above 60fps for less than 5 seconds. If we looked at the average from 381 to 621 we would have a VERY different number, around 45fps by eyeballing it. If we did the same thing from 0 to 380 we would probably see an average of around 80fps. The problem with averages is they only make sense if you have a single peak distribution when you look at the modal response.
 
Just for yacoub35 and Lorien, I've uploaded a version of the chart showing the data points plotted as dots, I'll admit it does add something to the charts.

dottygchart.jpg
.

Note that these test charts were not calculated in the same way as I suggest in the original post, I just generated a random number for the frequency of each interger FPS value between the maximum and minimum. Different random distributions were assigned to each card. As you can see and as vengence has correctly observed, the XYG has a dual peaked distribution, meaning it's performance is questionable despite the high average.

I did, however, then go on to generate some FRAPS data from me playing RFG and did the calculations using the method I proposed, which produced a convincing curve similar to the ones produced for the example.

lol :D I'm not brave enough to google to find the stats on that one.

I've googled this and, apparently, the number of multiballers (>2) known to medical science is about 100.
 
Last edited:
This is interesting. I like it. (the graph not the 100 triballer information). :D

I guess technically the FPS count should only go as high as the highest fps the fastest card on the graph achieved. So in the case of your comparison, one of the two cards (the slower one) should be hitting 0 (zero) before the other (faster) one.
 
. As you can see and as vengence has correctly observed, the XYG has a dual peaked distribution, meaning it's performance is questionable despite the high average.
Do I get a cookie? :D I'm liking this graph more and more the more I look at it. (more is my new favorite word it seems :()

I've googled this and, apparently, the number of multiballers (>2) known to medical science is about 100.
cool. Must freak women out when they find out the person they are dating is one.
 
This is interesting. I like it. (the graph not the 100 triballer information). :D

I guess technically the FPS count should only go as high as the highest fps the fastest card on the graph achieved. So in the case of your comparison, one of the two cards (the slower one) should be hitting 0 (zero) before the other (faster) one.

Both cards have the same max/min FPS as in the example. but you're right, in 'real life' they wouldn't and would have different 0% and 100% points.

Though, if for some freakish reason you get one card that has one frame rendered at a really freakish amount, you might truncate the graph so the other results can be seen clearly (and mention the outlier in the blurb).

Do I get a cookie? :D

Sorry, today is peanuts. You get a peanut.
 
Last edited:
Hmmm ... howcome when I'm not logged in I can see the pictures in the text above where as when I log in all I see is the links? Is it a setting in my user control panel or something?

EDIT: ah yeah it was, sorted now!
 
Last edited:
Back
Top