Changelog for r478:
- (PS3) Set audio samplerate from 48030 to 48020 - still no audio crackles
- (PS3) Cleaned up PSGL video driver - cut down on code duplication, made a lot of the OpenGL namespace static functions into macros (so they can be inserted straight into vid_psgl.cpp - where they are needed) - moved the static variables from vid_psgl.h to vid_psgl.cpp
- (PS3) Removed broken shader 2xSaL-HD.cg
- (PS3) You can change the aspect ratio now from the ingame menu.
- (PS3) Aspect ratio revamp of code - the following aspect ratios are now possible - 4:3, 5:4, 7:5, 8:7, 12:7, 16:9, 16:10, 16:15, 1:1, 2:1, 3:2, and Custom (Resized) aspect ratio mode. Custom resize aspect ratio mode is the previously existing resized mode - you can also switch to this resized mode in case you have selected another aspect ratio from the ingame menu by going to 'Screen Resize' and then exiting again.
- (PS3) Shaders can now be switched from the ingame menu - press left or right on D-pad or analog stick to switch between shaders, and load the shader by pressing the CROSS button.
- (PS3) Bugfix - when a shader was loaded - only the fragment program was loaded - and the vertex program from the previous shader would remain active. Now both vertex and fragment programs get updated with the ones from the shader being loaded.
- (PS3) Implemented frame advance in ingame menu - press either the CROSS button or press and hold R2 at your leisure to frame advance.
- (PS3) Main emulation loop improvements - audio function is now a straight call to audio_check instead of first going through the audio interface class (audio.check) - put the 'case EMULATING:' block inside a do-while loop - not only is this faster (because we don't have to go through the whole switch again to see if GameStatus == EMULATING is true - but it will also allow us to do frame advance from within the ingame menu.
- (PS3) No more seperate sound class to go through - AudioInterface for PS3 now implements audio_check, audio_init, audio_constructor, audio_destructor and on in its member functions (static functions).
- (PS3) Neo Geo driver performance improvements - nBurnBpp is always 4 for PS3 (32bit color) - so the function pointers for sprite and text layer rendering are not necessary and the switches can be avoided
- (Core) CPS1/CPS2 performance improvements - CPS2 games now have their own Frame function - Cps2Frame - also removed a lot of the CPS1/CPS2 branches that occurred along the way - cut down on function pointer usage
- (Core) Neo-Geo - Split up NeoFrame into two - one is for games that do not render line by line (the vast majority of the games - NeoFrame) and the other is for the games that do (Zedblade, Neodrift, and another game).
- (360/PS3) Replaced most sound-related while loops into do-while
- (PS3/360) Performance improvements for CPS1/CPS2 driver - moved qs_z and qs_c.cpp to qs.cpp - made a lot of static functions into macros - plus did some other optimizations. A lot faster now on PS3. * (PS3) Ifdeffed all branches for nInterpolation - is always set at 1 - so we can avoid the branches per frame. Will perhaps make for a nice optimization for 360 as well.
- (PS3/360) Made more SH2 opcodes into macros
- (PS3/360) Turned most SH2 opcode inline functions into macros. NOTE: This is necessary on PS3 because the compiler doesn't inline shit and dabbling with the inlining limit switches only ends up with worse performance - ghetto inlining/macroizing functions is the most reliable way of inlining. Should not have any adverse effects on 360. Improved performance on PS3.
- (PS3) Audio driver performance optimizations - big lag decrease
- (PS3/360) InputTick only used once - so dropped straight into place where it's called.
- (PS3 / 360) Avoid most of the indirect function calls for input / video
Sources: fba360 - FBAlpha for Xbox 360/PS3 - Google Project Hosting (and) Source Checkout - fba360 - FBAlpha for Xbox 360/PS3 - Google Project Hosting
For more information and discussion, visit the FBAnext thread here: PSX-SCENE