FBAnext

From PSHomebrew
Jump to: navigation, search
FBAnext
FBAnext
Info
Author(s) Lantus360, squarepusher2
Version r490
Type Emulator
License Artistic License/GPL
Links
Download
Website
Source



FBANext is a port of FBAlpha Version 0.2.97.08.

FB Alpha (formerly Final Burn Alpha), based on the original Final Burn source code, is a multi-arcade emulator.

FBANext is a native port on the Xbox 360 and PS3 Platforms.

Capcom CPS-1 / Capcom CPS-2 / Capcom CPS-3 Cave / Neo Geo / Sega System 16 / Toaplan / Taito / Psikyo 68EC020 Plus Other Misc Great Arcade Systems

Implemented Features

  • Full graphics/audio supported
  • Easy to use rom browser.
  • Option to filter on specific drivers
  • Option to hide clones
  • Option to only display 3 or 4 player games only
  • 60fps performance at 1080p for *most* roms
  • Pixel Shader support
  • Up to 4 gamepads supported
  • Rotate screen options
  • Hardware filter options (Linear, Point filtering)

Usage

By default your roms should go in /dev_hdd0/ROMS/FBA/

The first time you run FBANext, a configuration file called fbanext-ps3.xml will be generated. This file will store your current options.

If you wish to change your rom path, edit fbanext-ps3.xml located at /dev_hdd0/game/FBAN00000/USRDIR/ and modify the paths-rom element with the directory you wish. Please include a trailing slash at the end of your path otherwise no roms will be located.

We have created a pre-configured XML file that will allow you to place roms in any of the following directories: (right-click, save as...)

  • /dev_usb/FBA/ (FBA/ Folder on external drive)
  • /dev_hdd0/FBA/ (FBA/ Folder on internal drive)
  • /dev_hdd0/game/FBAN00000/USRDIR/roms/ (roms folder in FBAnext install directory)

Download here: http://pshomebrew.net/downloads/fbanext-ps3.xml

Just transfer to /dev_hdd0/game/FBAN00000/USRDIR/ using Blackb0x FTP Server or Comgenie's Awesome File Manager.

.Zip/.7z/.rar file extensions are supported.

Rom Menu

  • L1/R2 Filter on different hardware drivers.
  • X Load and run the currently selected rom. If you receive any error messages during loading the rom, they will be displayed. Typically most errors returned are due to old or incorrect rom dumps.
  • Triangle Filter clone roms.
  • Square Toggle to display 3 and 4 player Roms only
  • Select Switch to options menu.
  • Start Will return to the currently loaded rom if there is one.

Options Menu

  • Show Framerate.

Yes will display the framerate counter. No will disable it (default)

  • Aspect Ratio.

4:3 will display a correct aspect ratio with borders. 16:9 will fill the entire screen.

  • Rotatation Adjust Options

Rotate for Vertical Games. Do not rotate for Vertical Games. Reverse flipping for vertical games.

  • Auto Frameskip Enabled.

Yes will enable frameskip. No will disable it (default)

  • Graphics Filter Type Options

Use Shaders. Software Filtering.

Note: Software Filtering is currently not implemented.

  • Current Shader. Option will cycle through the available shaders:

2xSaI 4xSoft AdvancedAA Lanzcos12 Lanzcos16 MCGreen bloom blur crt emboss hq2x quad_interp scale2xplus scanline sharpen stock super2xSal superEagle toon

In Game

  • L2 + R2 + R1 Pause/Return to menu
  • R3 Service Mode
  • L3 Reset Current Rom

Bugs

Most roms will work, however there are some bugs that have been identified.

  • Some CPS1 roms. Notably Forgotten Worlds will crash.
  • Performance issues/Bugs with Sega System16, Taito-Z and some other misc drivers are slow. Future builds will be optimized.
  • Misc crashes and other stuff.

Notes

Don't ask about roms. We won't tell you where to find them. We are not responsible for the usage of roms. Please use the source code respository (linked below) to report any issues you find.

Important Links

Credits and Thanks

FBAlpha development team (iq_132, CaptainCPS-X, kev and the rest of the team)

Logic-Sunrise and the X3Max team for their support and hardware. Without them this project would not be possible.

Squarepusher, halsafar and TheMaister for their advice/code/assistance.

Changelog

r490

(Changes since r486)

  • (PS3) Ms. Pac-Man works again; reverted inconsequential PS3 ifdefs
  • [PS3] updated proj file
  • (PS3) Calculations in setview are no longer being done every frame, but done once outside the main emulation loop - the same goes for rotation.
  • (PS3) Build changes

r486

(Changes since r478)

  • 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
  • Removed broken shader 2xSaL-HD.cg
  • Added Jararaca’s experimental retro shader
  • Cleaned up PSGL video driver code
  • Added some more aspect ratios from actual arcade games
  • Added dot.cg shader
  • Bilinear filtering can be turned on/off from the ingame menu
  • Added rotation options to ingame menu.
  • Changed audio samplerate from 48020 to 48010.
  • Commented out VidSScaleImage in all of the rendering functions – is no longer needed
  • Auto-aspect ratio modes – select this aspect ratio to automatically determine the correct aspect ratio for the game you’re loading and then automatically use it. There are two automatic aspect ratio modes – ‘Auto’ and ‘Auto FBA’ – ‘Auto’ does some calculations to arrive at the correct aspect ratio while ‘Auto FBA’ uses FBA’s built-in aspect ratio settings for each game.
  • Cleaned up PSGL video driver
  • Some video optimizations to do with three nested for loops
  • CPS3 – Palette change was only being done when loading/saving a state – putting this inside the Draw Frame function was unnecessary when cps3_palette_change was only set to 1 once in cps3Scan – so moved the color palette changing to cps3Scan and out of the main frame function. Tested on both 360 and PS3 – nothing is affected by this.
  • Speed improvements to burn.cpp and burnint.h – static functions which are only used once in one function inserted straight in – in particular, biggest improvement came from turning DrvClearOpposites into a macro. Button input is now blisteringly fast – tested on both PS3 and 360.


r478

(Changes since r454)

  • (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

r454

  • [Core] - added Oriental Legends Plus driver to PGM (oldsplus). Thanks iq_132
  • [Core] - fixed endian issue in Cps3PatchRegion()

r452

  • Frame_count shaders work now
  • Updated/added all new shaders
  • Use left/right to cycle then X to set shader
  • No resampling for new Cellframework 2 audio
  • Input improvements
  • multiMAN support

r439

  • (PS3) CPS3 - Peformance optimization /lag reduction - debranching code

r438

(Changes since r435)

  • PS3 - Added Input macros (x3 Punch/x3 Kick etc)
  • Core - fixed endian issue with blswhstl/detatwin

r435

(Changes since r424)

  • (PS3) Some minor performance improvements and some more lag reduction (CPS3/Sega System 16) - other drivers can show similar improvements as well
  • (PS3) Street Fighter III: Second Impact widescreen toggling has been fixed
  • (PS3) D-pad navigation moves one position down/up like before
  • (PS3) Dip switches now configurable in in-game menu

r424

  • Added waterpaint-normalcontrast.cg, waterpaint-normalcontrast-scanline.cg, waterpaint-highcontrast.cg, waterpaint-highcontrast-scanline.cg shaders.
  • Optimized crt.cg shader – now runs at 60fps (fullspeed) at 1080p (1920×1080). Also added crt-highgamma.cg.
  • Texture references used – far faster graphics code as a result. Also adapted refreshwithalpha so that it looks the same as it did before without texture references.
  • Added all the shaders added inbetween r423 and the custom versions
  • Replaced inlineASM in burnint.h with intrinsic so that it can be compiled with SNC. Also commented out little endian functions in blargg_endian.h to get SNC to work.
  • Commented out all exceptions and try – catch blocks in files such as ticpp.cpp and others – SNC by default works with exception support disabled – also exceptions have performance overhead – commenting out the exceptions and the try-catch blocks for both GCC and SNC increased performance.
  • Got rid of virtual function call overhead in classes that inherited from a base class with virtual function definitions – such as the Cellframework Audio driver, and FBA’s aud_audio.h itself. Led to measurable performance increases and lag reduction.
  • Better button responsiveness – in PS3/run.cpp, for some reason button input was only being registered one out of every three frames – commented that out. There were tons of other branches in the interface code that are unnecessary – checking for bDrivOkay for instance in video_interface and vid_psgl – that were commented out for PS3. This could similary be applied to FBA 360 for some performance gains – same with the elimination of virtual function call overhead.
  • Menu scrolling with the D-pad/analog stick in the ROM browser/settings menu/ingame menu by pressing and holding directional keys.
  • Shaders now receive three additional input params for the main vertex program (main_vertex). This allows us to offload some more calculations from the fragment shader which leads to increased performance.
  • Added back ability to go to Service menu by pressing R3 button.
  • Rygar driver colors are restored again to normal colors – during the update to FBA beta, a swapword statement was left out.
  • Makefile works now for either SNC or GCC. Change CELL_BUILD_TOOLS to set either of the two. The best speed I currently get with GCC for some odd reason.
  • Makefile and preprocessor statements in the code now let you compile the source and have it detect your SDK version automatically.
  • There is a special debug mode you can activate (CELL_DEBUG_CONSOLE = 1) where a Telnet server will be running in the background which you can telnet into – in this mode, you can track variables and/or dump screenshots on the HDD.
  • Better speed, far less lag as a result of all of the above.

r423 Custom v3

  • Big reduction in lag – also a far more stable FPS as a result of this (due to elimination of virtual function call overhead when a class would inherit from a base class with virtual functions). You will notice the biggest improvements with fighting games for CPS2/CPS3 – but overall all games should benefit from this.
  • A new shader – tv-highcontrast-HD. This basically mimics the look of a high-end CRT monitor. Set ‘Hardware Filter’ to Linear and select a resolution lower than or equal to 1440×1080 to get the best results (if you have triple buffering on – else it’s 960×1080 or lower for best results)
  • Fixed: A hang/freeze would occur after selecting a shader and then changing the resolution.
  • Fixed: You can now go back and forwards in the list when selecting a shader – press Left to go back one entry in the shader list, and press Right to go forward.

r423 Custom v2

  • New input code
  • HD shaders - as with SNES9x PS3, 4xSoft-HD looks the best

r423 Custom

WHAT'S NEW:

  • Core - updated fm.c fmopl.c with to match latest mame.
  • PS3 - added triple buffer option (check options to toggle). Triple buffering will be stored in xml

CUSTOM CHANGES:

  • A much faster graphics driver - try CPS3 and CPS2 games and feel and see the difference in terms of speed. Most of the input lag noticed by experienced arcade players should be mostly gone now.
  • Triple-buffering is hardforced to be enabled by default - together with the new graphics driver makes the framerate very fast.
  • Sysutil OSD is used for some parts of the In-Game menu, such as saving a savestate, saving a button preset, or generating a clrmame.dat file, and so on.

r422 Custom v1

  • 1.92 PKG should work now.
  • Turned on triple buffering - led to a helpful speed increase and audio/video lag reduction when transitioning screens. Especially noticeable in Street Fighter 3rd Strike and other CPS3 games.