Showing posts with label Testing. Show all posts
Showing posts with label Testing. Show all posts

Sunday, September 27, 2009

Rev 432

I just posted Rev 432 here's what happened. I had a few speed ideas, but thought ehhh... I'll throw in a fix for GoldenEye(GE) freezing since it's a regression (I.E. It didn't used to freeze.) just for the hell of it. Along the way of doing that (I found where it broke, but just reverting that one part broke other games) I remembered having to disable the loop optimization (A speed-up Strmnnrmn added for R14 that had some compatibility issues.) So, I decided to check what broke it and found that as well and I found it. All in all code from 3 revisions (All that Howard0su posted way back, 305, 316, 318) needed to be reverted, some of it I was still able use use and the rest will be brought back over time as we near Beta 3 and I track down each piece that was causing the breaks.

In the end, 432 includes: GE(No Freeze) + TS(No Freeze or Crash even on Phat) + Loop Fixed + Minor Texture Speed-ups + A few new settings for texture update. (It now has: 1, 2, 3, 4, 5, 10, 15, 20, 30)


The extra speed is enough to be noticeable(About 5%): The Mario head on Mario 64 goes at a consistent 19 FPS. Games the dynamic loop never worked on will still get some extra speed, but not as much. (It still freezes MM and a few others.)


For the next bit of code I post I plan on working on how DX64 handles Textures, on the Phat and even sometimes on the Slim DX64 runs out of memory for texels in both the VRAM and the secondary RAM buffer. This was my purpose in reducing the secondary buffer on the Slim a few revs back so I can do testing with the lower Phat value. Besides trying to get a bit of memory from else where (Some other buffers are a bit larger than needed.) I plan to work on the way Daedalus decides to throw away a texture when it's no longer needed. I thinking that I will have it throw away large textures sooner. Some sort of texture compression may be another possibility.  A couple games that are good examples of this are Transformers - Beast Wars, Tetrisphere, and Space-station Silicon Valley. All three have issues with texture memory with Beast Wars being the worst. This also causes the crash where if you go to the select menu several times the emulator crashes. I reduced the memory intrafont uses a few revs back to help with that. Right now DaedalusX64 keeps textures for 10 Frames automatically (Not 100% sure if this is 10 actual frames or 10 virtual frames). If I lower this to 1 Texture update is not needed as textures are all thrown away every frame, but then there is a speed cost. However at even a setting of 2 Texture update is need for persistent items like onscreen text it OoT but there is still a speed cost. Loading small textures take a small amount of time compared to large ones, but loading them too frequently causes cache thrashing. So in the end we need a more dynamic way of dealing with this. Also as an added measure large textures will likely get converted to 16Bit to cut there size in the memory in half which would help as well. This fix in the end should help a few crashes and possibly add just a bit of speed as more textures (Especially the small ones) will be stored in the VRAM (which is 2X Faster than the RAM) Also as part of this I will be testing various games to get a count of how much texel memory they are using at any given time to know how much I need to save. The fix for the Slim it's as simple as upping the secondary RAM buffer, but as you can see it's going to be a bit more complex for the Phat.





BTW: On a side note my crazy plan from a few posts back didn't happen... It will eventually just not yet. Also my wife's desktop died so until we get her a new system (which may take a while.) we will be sharing my laptop on which I do my developing. Other than that I will continue to try to udpate this around once a week to once a month depending on progress I make and life happenings.

Tuesday, August 4, 2009

Back to coding and the recent downtime

As many are aware and is still a bit obvious, the forum went down over the weekend. This was due to an admin who had some personal issues and a forum issue that pushed him over the edge. Luckily, the databases were still intact and functionality has been restored. Measures are being taken to prevent this in the future. Hopefully the theme should get restored today and we should be back at 100% then. I will leave it up to the guilty party/parties to provide any further details.

Life has been busy for me lately. The crazy thing I had planned didn't work out so there are no pictures to show off, but there are plans for it down the road. (It has nothing to do with DX64 though.)

Things have settled down in my life a bit and I can get back to coding. I'll be doing more code clean-up and finishing up restoring some of the lost speed. I've just got a couple of double display issues to work out and the next Rev I submit should have a 10%+ gain in speed with at least current compatibility. After that it will be back to ME testing unless the GoldenEye sky fix in Napalm gets released first.

Tuesday, July 14, 2009

Lost and Found...

I was comparing the FPS in various revisions a while back and noticed several revs had a drop in FPS from prior revisions. So, today I'm building an FPS database from past revisions going back to R12, R13, R14, Beta 1, Beta 2, Beta 2 update, and also the alphas (about every 25 revs). I'm going to be testing 2 different areas in about 5 games per test and recording the data. Now this amounts to about 250 tests total, but I believe it should in the end net us at least 5% in FPS if the numbers I saw in prior testing are correct.

After this first round of tests and a speed graph of sorts is put together. I will look for where for any losses and try to correct them. We have a lot of code and around 500 or so changes that have been made since R14 so I think this is the best approach. After correction and in the future. I will run these tests on every new revision. This will take me a few days just to finish all the testing and I'll report the results then. Then report again after I correct as many losses as possible.