Commit graph

240 commits

Author SHA1 Message Date
Bart Trzynadlowski 453df4f5f5 - Finished cleaning up and optimizing the 2D renderer.
- Fixed up color offset register support for new 2D rendering system. Now maintains 2 computed palettes for layers A/A' and B/B'.
- Fixed a minor bug in InitPalette(); VRAM was not being typecast properly.
- Fixed specular lighting bug that occurred on some OpenGL drivers because integers were not being interpreted as floats in the vertex shader.
- Began to update copyright date in some files.
- Graphics modules now use the C++-style names for C standard library headers (e.g., stdio.h -> cstdio) consistent with the rest of Supermodel.
2012-02-20 03:45:48 +00:00
Bart Trzynadlowski 0257f1f9e8 Contour processing (discarding of pixels when alpha==0) enabled for A4L4 texture formats. Improves smoke and fire in Daytona 2. 2012-02-17 07:45:50 +00:00
Bart Trzynadlowski 5709010cb2 Default SCSP balance set to 0. Was erroneously set at +50%. 2012-02-14 09:13:36 +00:00
Bart Trzynadlowski 79d24d403f - NOTE: In this revision (possibly earlier), I've started to notice some intermittent geometry glitches in Spikeout and slowdown while playing certain characters.
- Added multi-texture fragment shader to repo.
- Added a multiTexture option (enabled by default) to use multi-texturing to decode textures.
- Added some comments regarding timing to the PowerPC execution loop.
2012-02-14 03:28:52 +00:00
Nik Henson 30130f2bd5 Updated fragment shaders' floating point comparisons and also some knock-on changes from SVN revision 246. 2012-02-13 23:51:32 +00:00
Nik Henson 8a4ea64994 Added OSD/Video.h to provide OSD-dependent video functionality. The static functions in here get called by Model3.cpp from within the render thread so that any OSD related rendering can also be run in parallel for a further speed increase.
Updated OSD/SDL/Main.cpp to provide the SDL implementations of the functions in OSD/Video.h.
2012-02-13 23:37:48 +00:00
Nik Henson 84eb017744 Added support for multiple texture sheets (with up to one per Model 3 texture format) as a rather brute-force way to handle overlapping texture formats in the current 3D engine. This fixes some corrupt textures in Daytona 2 and Virtua Striker 2 (and possibly other games) and also offers a small speed increase when some scenes load multiple overlapping textures.
This feature only enables itself when a compatible shader script is loaded.  Since none have been checked in yet this means it is currently disabled.
2012-02-13 21:54:26 +00:00
Bart Trzynadlowski 35a47bc7e3 Added command line options to force windowed mode and to control GPU multi-threading. 2012-02-11 16:40:09 +00:00
Bart Trzynadlowski 1b8740165c Added a wide screen hack that can be enabled with the -'wide-screen' argument or WideScreen in the config file. 2012-02-10 19:53:51 +00:00
Bart Trzynadlowski 40a51287df Tweaked help text slightly. 2012-02-09 17:15:15 +00:00
Bart Trzynadlowski 09f9bd81fd Fixed left/right stereo channels -- they were reversed by default. 2012-02-09 17:12:13 +00:00
Bart Trzynadlowski c5d0cb0d97 Added front/rear speaker balance (actually the master/slave SCSP balance). Balance setting is stored in CSoundBoardConfig and can be set on the command line (-balance) or config file (Balance). Valid range is 100 (front speaker volume doubled, rear muted) to -100. The default is 0, both sets at full volume. Balance is applied in the SCSP core before overall sound and music volume settings. 2012-02-09 07:58:07 +00:00
Bart Trzynadlowski 6814ef1ed8 Added preliminary specular lighting to shaders. The "no spotlight" shader has not yet been updated. 2012-02-06 02:54:43 +00:00
Bart Trzynadlowski 9fc0d7b3cc Updated some comments regarding the VF3 ROM patches. It seems many of them are no longer necessary. The single necessary patch affects timing (note how the warning screen stays up longer when it is removed). This needs to be investigated -- perhaps it can lead to a timing fix for vf3, vs2, and fvipers2? 2012-02-01 18:08:13 +00:00
Bart Trzynadlowski 0fcb9686f9 Documented the tile generator. 2012-01-27 22:27:38 +00:00
Bart Trzynadlowski 8a8609f383 - Added specular highlight support to the 3D engine. A shininess parameter is now be passed to the shaders. Does not work correctly and I will save the shaders themselves for a future commit.
- Added support for layer priorities. Highly unoptimal! This absolutely needs to be polished up before any release (and properly documented). For now, priorities in the popular games seem to be fixed but not all possible priority settings have been figured out yet.
2012-01-27 05:52:59 +00:00
Bart Trzynadlowski c38ec7d5af Removed unused dirty rectangle code. 2012-01-26 02:57:02 +00:00
Bart Trzynadlowski e00a372cef Removed unused dirty rectangle code. 2012-01-26 02:49:07 +00:00
Bart Trzynadlowski b7980aa562 Removed unused dirty rectangle code. 2012-01-26 02:48:16 +00:00
Bart Trzynadlowski 3315fb463b Small correction to lighting model in shaders. Light intensity is no longer clipped. 2012-01-22 01:05:59 +00:00
Bart Trzynadlowski b57ba51e44 Removed unused (and non-functional) 'stack machine' scene graph traversal. 2012-01-18 08:12:23 +00:00
Bart Trzynadlowski 611ef43ba5 Now compiles with MinGW. Among other things, the use of __uuidof() was removed. 2012-01-18 04:59:42 +00:00
Nik Henson d1d5175548 New multi-threaded rendering changes that parallelise graphics rendering and PPC execution in order to increase performance on multi-core machines.
New gpuMultiThreaded config option to enable/disable multi-threaded rendering (enabled by default, disabling it reverts to previous behaviour).
Other rendering optimisations:
 - texture uploads now only affect appropriate region in the texture sheet, rather than uploading the whole sheet each time
 - performance of clearing the model caches has been improved
New Alt+O key input added to toggle outputting of frame timings for debugging purposes.
2012-01-16 23:21:14 +00:00
Nik Henson 0835e38b94 Removed unecessary SDL include 2012-01-16 23:04:37 +00:00
Nik Henson b7242d27e8 Added CThread::Sleep && CThread::GetTicks methods 2012-01-16 22:07:17 +00:00
Bart Trzynadlowski 2ece814f43 Assigned new version number: 0.3a-WIP. 2011-12-27 19:16:22 +00:00
Bart Trzynadlowski 532eafef55 Fixed a bug w/ Read16() -- was not casting to a pointer properly, caused Scud Race to crash. 2011-12-26 07:15:32 +00:00
Bart Trzynadlowski bdf11c765f Preliminary backface culling fix. Matrices which effectively change the polygon winding without changing the Z component of the polygon normal are tested for when appending items to the display list. If necessary, the polygon winding is changed on the fly to ensure visibility is correct. This code desperately needs to be optimized. Note: Not yet thoroughly tested. 2011-12-26 06:10:55 +00:00
Bart Trzynadlowski a71af94edb Fixed ROM banking -- appears to fix the sounds in Daytona 2 PE and VON2 but otherwise has not been extensively tested. The high 8MB of the 68K address is treated as a single window into the 16MB sample ROM, and can point either to the low or high 8MB bank. 2011-12-23 21:06:45 +00:00
Bart Trzynadlowski 4c3d6e1abf Fixed a MAGIC_NUMBER comment typo. 2011-12-23 21:03:24 +00:00
Nik Henson 885d946458 Small bug fix 2011-12-23 19:34:50 +00:00
Nik Henson 68554108ac Small tweak to improve startup time 2011-12-23 12:39:34 +00:00
Nik Henson b9375bb09b Optimisations to improve performance when running with debugger. Now runs at about 2/3 speed of full speed of emulator, rather than 1/3 like before. 2011-12-23 12:01:31 +00:00
Nik Henson dfa77e9207 Added support for joystick sliders to input system.
Added extra debugging output to calibration input detection routine (activated by pressing Shift).
2011-11-01 23:24:37 +00:00
Nik Henson e431b79f57 Fixed small bug which meant wasn't correctly clearing SCSP structures on initialisation. 2011-11-01 23:16:36 +00:00
Nik Henson e6fd2e2240 Added DirectInputConstForceLeftMax and DirectInputConstForceRightMax options to allow different force feedback strengths in each direction. DirectInputConstForceMax still works as before but these new options will override it for the given direction if they are specified. 2011-10-02 20:53:12 +00:00
Nik Henson 0c4f93897f Force feedback fixes in DirectInputSystem.cpp:
- Fixed bug which meant right constant force was not being capped to DI_EFFECTS_MAX
- Made sure all values are being clamped to sensible ranges
2011-09-25 22:46:58 +00:00
Bart Trzynadlowski d2b381ce8b - Documentation updates.
- Added fflush() to config dialog output where it was missing.
2011-09-24 20:54:47 +00:00
Bart Trzynadlowski 7f97346fc9 - Tweaked some error messages and comments. Hopefully, this is the last update for v0.2a's code.
- Documentation updates.
2011-09-24 01:49:48 +00:00
Bart Trzynadlowski 83067f076f - Only player 1 crosshair is shown by default now.
- Tweaked Makefiles a bit.
- More documentation updates.
- Changed version string to 0.2a in preparation for the final release :)
2011-09-23 07:18:40 +00:00
Bart Trzynadlowski 33f35effaf - Tweaked text in input configuration dialog.
- Changed version string to 0.2a-RC3 because RC2 build was sent out to testers earlier.
2011-09-22 18:15:29 +00:00
Bart Trzynadlowski 4527014e75 - Getting/setting MPEG playback position also includes the end offset. Hopefully will fix save states from crashing when reloaded sometimes in DSB1 and DSB2 games. 2011-09-22 18:04:39 +00:00
Bart Trzynadlowski a1346b57f5 - Changed spelling of some messages in drive board code.
- Added an extra blank line after info display in CModel3.
- Cleaned up comments in Main.cpp.
- More document updates. Fixed '-no-music'->'-no-dsb', 'EmulateMusic'->'EmulateDSB'.
2011-09-22 17:28:49 +00:00
Bart Trzynadlowski 2a314041ad Commented out verbose/debug output in drive board code for release. 2011-09-22 09:02:50 +00:00
Bart Trzynadlowski d00b03f65b Force feedback no longer available as an option on non-Windows builds. 2011-09-22 07:24:15 +00:00
Bart Trzynadlowski 46bc52bb12 - Changed save state error messages slightly.
- Wrapped rows that exceed 80 columns in Supermodel.ini.
- Added some member and function comments to a few header files. 
- Changed version string to 0.2a-RC2 in anticipation of sending another release candidate build to testers.
- Added GAME_INPUT_RALLY flag to dirtdvlsa, eca, and ecax.
- Configuration dialog no longer refers to Sega Rally 2 and Dirt Devils; instead, "Miscellaneous Driving Game Buttons"
- More additions to README.txt.
2011-09-22 06:11:47 +00:00
Nik Henson 206ef1aca4 Changes to get debugger classes to compile under Linux 2011-09-21 23:49:55 +00:00
Nik Henson 232da52dd0 Changes to get debugger classes to compile under Linux 2011-09-21 23:48:33 +00:00
Nik Henson eaa3bbf8b7 Changes to get debugger classes to compile under Linux 2011-09-21 23:47:11 +00:00
Nik Henson 773c2ec9ad Fix to get InputSystem.cpp to compile under Linux again after updates today 2011-09-21 23:45:49 +00:00
Nik Henson 55e6a843bb Added copyright headers to all debugger files and replaced C standard library headers with c++ versions 2011-09-21 22:53:41 +00:00
Nik Henson cb2b8f9235 Tweaked header comment! 2011-09-21 22:32:16 +00:00
Nik Henson dba953d1a0 Added copyright header to file 2011-09-21 22:31:27 +00:00
Nik Henson b87f24cdf2 Removed DirectInputEffectsGain force feedback configuration parameter as it's not that useful as it's easier to adjust effects individually 2011-09-21 22:28:13 +00:00
Nik Henson 0528a4f0c6 Changes to input system:
- altered PrintSettings to output all settings for attached controls, even if no different to defaults
- added option on calibration screen to detect an axis simply by moving the axis
2011-09-21 22:15:16 +00:00
Nik Henson c0dc0b83b6 Changes to DirectInputSystem:
- corrected axis identification code as was not enumerating axes properly in all cases
- added fallback which just adds all axes if there is any hint of an irregularity whilst enumerating axes
2011-09-21 22:08:36 +00:00
Bart Trzynadlowski 24f46e9f86 Updated UNIX Makefile, fixed some syntax errors. 2011-09-21 19:12:50 +00:00
Bart Trzynadlowski ee471539c5 - Fixed newlines in logs.
- Set default PowerPC frequency to 50 MHz.
- Minor tweak to help text.
- More README.txt updates.
2011-09-19 03:56:15 +00:00
Nik Henson c61c4d6ce1 Fixed mistake in previous commit! 2011-09-18 23:38:15 +00:00
Nik Henson d80c7b97ad Added missing memory regions for DSB CPUs 2011-09-18 23:35:22 +00:00
Nik Henson f695ff7094 CModel3::StopThreads() now makes sures threads are paused before deleting thread objects. 2011-09-18 22:49:21 +00:00
Nik Henson 5a0f038171 Changes to allow debugging of Musashi 68K core:
- added methods to attach/debug debugger.
- added instruction hook & callback to m68kconf.h and added hooks into CMusashi68KDebug to allow debugger to control execution.
- added methods to allow reading/writing of 68K registers (for all registers and for a given context, rather than just current one).
2011-09-18 22:44:20 +00:00
Nik Henson c155ae7503 Small cosmetic changes... 2011-09-18 22:31:42 +00:00
Nik Henson 65536fd0fe Changes to allow debugging of Z80 core:
- added methods to attach/detach debugger.
- added hooks into CZ80Debug to allow debugger to control execution.
- added methods to allow reading/writing of Z80 registers.
2011-09-18 22:21:14 +00:00
Nik Henson 041e6659b3 Changes due to updates in debugger classes. 2011-09-18 22:13:20 +00:00
Nik Henson 5f82fd79c3 Small bug fix in INIFile.cpp - was not parsing negative numbers. 2011-09-18 22:03:06 +00:00
Nik Henson c8f4fbc901 Added includes for new debugger header files Musashi68KDebug.h & Z80Debug.h 2011-09-18 22:01:35 +00:00
Nik Henson e8e02ba685 Changes to debugger classes:
- updated debugger classes to compile again with all recent changes.
- improved debugger classes to allow them to work in multi-threaded emulator and be able to handle CPUs on different threads.
- added debug classes for new Z80 and Musashi 68K CPU cores.
- added logging of cycle counts and frames.
- moved all Supermodel specific code & configuration to CSupermodelDebugger.
- added all Model 3 CPUs (PPC, sound board 68K, DSB 68K/Z80 and drive board Z80) to CSupermodelDebugger.
- added persisting of custom entry points in saved debug state to CCodeAnalyser.
- fixed bug with listing I/O ports in CConsoleDebugger and added displaying of cycle counts and CPU speeds when listing CPUs.
2011-09-18 21:59:23 +00:00
Nik Henson b9430cd988 Changes to input system:
- Joystick axis saturation values can now range from 1-200 rather than just 1-100.  This lets the user make axis less sensitive, if required.
- Added joystick axes calibration menus to -config-inputs.
- Moved DirectInput & XInput feedback settings out of CDirectInputSystem and into COSDConfig (so that they can be configured per-game).
- DirectInput mode now only grabs background access to keyboard, mice and joystick when configuring inputs, otherwise it only grabs foreground access.
Other changes:
- Main.cpp now ensures all Model3 threads are paused before shutting down.
2011-09-18 21:44:40 +00:00
Bart Trzynadlowski f0697dbc84 - Tweaked formatting of help message 2011-09-17 23:42:42 +00:00
Bart Trzynadlowski 45603b5549 - Tweaked comments in Supermodel.ini
- More work on README.txt
- Tweaked some error/info messages.
2011-09-17 23:41:12 +00:00
Nik Henson 58954ee4cc Small updates:
- added methods to CModel3 to access sound board and drive board
 - added methods to CSoundBoard to access 68K and DSB (if attached)
 - added methods to CDSB1 & CDSB2 to access Z80 & 68K respectively
 - small code tweak in DriveBoard.cpp
 - comment tweaks in Model3.h & Model3.cpp
2011-09-15 21:10:38 +00:00
Bart Trzynadlowski 1629cd711c - Updated README (far from finished).
- Music volume cannot be changed if game has no DSB.
- Extra hardware (DSB, drive board) is printed in information display when ROM is loaded.
2011-09-15 07:13:19 +00:00
Bart Trzynadlowski 9ff9f3c28f Now always saves feedback effect configuration (this way, defaults do not have to be defined in multiple places). 2011-09-14 23:29:04 +00:00
Bart Trzynadlowski ab719720c7 Renamed drive board ROMs to MAME's naming convention. 2011-09-14 22:46:15 +00:00
Bart Trzynadlowski 2f5bf43bda Updated copyright information and added headers to all remaining files except debugger. 2011-09-14 19:08:43 +00:00
Bart Trzynadlowski 5bf4a6d52b - Added mutex for MIDI FIFO access to SCSP.cpp. 2011-09-14 07:38:56 +00:00
Bart Trzynadlowski d200dff89e - Changed EmulateSCSP -> EmulateSound and -no-scsp -> -no-sound.
- Changed gear shifting behavior: neutral gear has its own button now.
- Removed SUPERMODEL_SOUND.
- DirectInput is the default input system for Windows now.
- Multi-threading is on by default, replaced -multi-threaded w/ -no-threads.
- Made crosshairs larger and more visible.
- Added Nik to co-author list and began updating file copyright notices.
- Fixed Virtua Striker 2 input names (player 2 inputs end with the number 2 instead of 1).
- Added documentation to a Docs/ subdirectory.
- Exported all default input configurations to Supermodel.ini and added that to the repository. Internally, Supermodel initializes all controls to "NONE" now.
2011-09-14 06:16:22 +00:00
Nik Henson d34223ebd2 Improved way constant force and vibrate effects are combined to control left and right vibration motors under XInput 2011-09-13 22:50:50 +00:00
Nik Henson f6af182467 Added comment 2011-09-13 22:46:21 +00:00
Nik Henson ca8d838826 Added stopping of all force feedback effects on reset (just in case some were playing at that point) 2011-09-13 22:45:32 +00:00
Bart Trzynadlowski c10e839dc0 Added a scissor box to clip viewable area. Prevents garbage in the "overscan" areas due to renderer creating viewports that exceed intended display area. 2011-09-13 06:30:42 +00:00
Bart Trzynadlowski fdedc60f84 Constant force commands for XInput devices fixed so that they will stop when 0 force is applied. 2011-09-13 02:39:48 +00:00
Bart Trzynadlowski 02c0c32398 Fixed a possible INI file problem: unterminated strings will end at a newline now. 2011-09-12 23:09:06 +00:00
Nik Henson e223d388eb Driveboard changes:
- added notification message if drive board is disabled when loading incompatible save state
- removed some superflous print statements, but have kept in printing out of force feedback commands for now (which have also been made more visual)
- made sure that feedback state is reset in SendStopAll()
2011-09-12 21:07:03 +00:00
Nik Henson 75d446c272 Changes to Audio.cpp:
- audio buffer is now kept as full as possible with new audio buffering method rather than just half full like before (this is okay now that buffer overruns have been eliminated)
- altered minimum size of audio buffer so that audio still works with a zero latency setting (obviously there will still be some latency)
2011-09-12 21:03:16 +00:00
Nik Henson b0bda2c356 Added note to command line options indicating that force feedback is experimental still 2011-09-12 20:08:50 +00:00
Nik Henson dc368c1edd Added configuring of DirectInput and XInput force feedback parameters via config file 2011-09-12 20:05:58 +00:00
Nik Henson 8dfb033034 Changed drive board logic slightly for stopping vibrate effect as wasn't always cancelling the effect in Daytona 2 2011-09-12 19:55:53 +00:00
Bart Trzynadlowski e6f19c40ef Fixed 68K save state problem: pending interrupts were not being saved, sometimes causing the DSB2 to take an invalid interrupt (from the sound board 68K) after loading a save state. Save states are no longer compatible with previous revision. 2011-09-12 18:14:49 +00:00
Bart Trzynadlowski cf73207c98 - Nik's new decoupled audio code with fixes to minimize overruns.
- VBlank timing: increased to 20% of a frame.
2011-09-12 05:43:37 +00:00
Nik Henson 4c18925679 Fixed bug with loading/saving of state - it wasn't persisting the ram array properly 2011-09-11 18:55:13 +00:00
Nik Henson 5b5d24293f Fixed bug which was crashing emulator when loading/saving state of games that do not use the drive board 2011-09-10 21:00:33 +00:00
Bart Trzynadlowski 0716285fc2 Fixed error reporting for -input-system option. 2011-09-09 21:59:23 +00:00
Bart Trzynadlowski e724d0ec0b Fixed error message when multiple files detected on command line. 2011-09-09 20:41:55 +00:00
Nik Henson 0495421cbc DriveBoard changes:
- fixed bug in SendConstantForce which was sending incorrect values at times
- removed friction effect for now, until can determine its exact command seq
- added checking of compatibility of saved state and temporary disabling of drive board if not compatible
2011-09-09 07:18:52 +00:00
Bart Trzynadlowski b76b43cc93 - Fixed drive board. Now determines whether it is attached and enabled in Reset(). 2011-09-08 17:58:25 +00:00
Bart Trzynadlowski 11d1d61bc2 - Removed BOOL and replaced it with native C++ type, bool.
- Removed TRUE and FALSE, changed to 'true' and 'false' keywords.
2011-09-08 06:34:18 +00:00
Bart Trzynadlowski abd86a5624 - Cleaned up game names (primary sets no longer have revision labels in title).
- Added volume controls to UI.
- Renamed "Sega Rally Controls" to "Sega Rally/Dirt Devils Controls" (even though Dirt Devils has no hand brake).
- Hooked up gear shifting and view change for Dirt Devils.
- Removed debug printf()'s from DSB.cpp.
- Removed debug printf() from Real3D.cpp.
- Disabled assertions in SCSPDSP.cpp.
- Converted all error messages in Amp library to Supermodel format.
2011-09-08 05:08:16 +00:00
Bart Trzynadlowski 4040b7eeee Forgot to disable drive board if ROM not loaded. 2011-09-08 01:13:25 +00:00