Some notes: + It may be a good idea to keep the "linux" directory common to both FinalBurn and FinalBurn Alpha ports. This way, improvements to one of them will show up in the other, too. (this makes sense since FBA no longer supports SEGA games such as After Burner, so there will be people wanting to use the old original FinalBurn but still take benefit of the enhancements) Here is a list of things I had planned to do: + Make two separate projects: one for the original FinalBurn (Dave's one) and one other for FinalBurn Alpha. From version 139 on, fba team started writting hihgly incompatible modifications to the code. So, having a "universal finalburn patch" to work with all versions is no longer easy. + Catch up with latest fba version. + Write to fba team asking for support about portability issues. Concrete things needed to do are: - Restore Dave's idea of the "emulator library": keep the emulator core (platform independent) in directory "burn". - The "burn" directory should contain all necesary files to compile a library without requiring any include or .c file from any other directory. (currently this is not true for fba) - Also, directory "burn" should be portable C code. No MFC code there, no DirectDraw, no nasty code... etc... (I'd say "no __cdecl", too, but this can be workarounded easily with a -D__cdecl="") - Keep "components" in one place. (eg: you can keep the lowpass filter in the platform dependant GUI directory, since it is accesory and can be understood as a "GUI add-on" before feeding the sound to the apropiate API. But sound interpolation & mixing code should be kept in "burn" directory, since this is an esential part of the emulator. (currently it's splitted between "burn" and the GUI's directory) ) - Platform dependant code should be placed outside "burn" directory. (currently, there is directory "burner" for the Win32 GUI and "linux" for the SDL port. (which works at least under QNX and BeOS too, not just linux!) ) - In assembler modules, double-define all exported symbols: once with underscore ("global _FunctionName") and once more without it ("global FunctionName"). This way, symbols will be properly handled from both Win and non-Win compilers. (it is pretty sad to see MY OWN code failing to compile after fba-team's modifications due to issues like this) + Maybe the project could be joined with FBA. This would likely assure portability. Or maybe, once FBA becomes portable, this project could be reduced to some makefiles and the "linux" directory, only. + Add a GUI. The emulator needs configuration (at least for the inputs). I had thought about some zsnes alike menus. This way there is no need to add GTK dependencies, making it more portable. + Rewrite ALL input code. Currently there is preliminary joystick support, but the input code was not designed with anything other than keyboard in mind. Also, it wouldn't handle configuration easily. So, a rewrite of it seems like a must. + In the configuration menu, include an option to calibrate the monitor's gamma, so that the built-in gamma correction code I've added can work properly and offer a picture as close as possible to the original arcade. I had thought of a 3-color separate calibration by succesive refinement. (discarding half the posibilities after each step). Mail me at comac@comac.darktech.org it you want to know more about this method or about gamma calibration.