Commit graph

411 commits

Author SHA1 Message Date
Nik Henson 183dca563d Committing various small updates that have been hanging around in my source tree for a while now:
- Added 'crosshairs' command line and config option.
- Added 'vsync' command line and config option (so far only tested on NVidia cards on Windows 7 - other graphics drivers, O/Ss or driver settings may simply chose to ignore this).
- Added fullscreen toggle within game using Alt+Enter key combination.
- Added framework for lamp outputs and 'outputs' command line and config option.  So far only the lamps for driving games are hooked up in the emulator (others to be added later).
- Added an initial outputs implementation for Windows that sends MAMEHooker compatible messages (-outputs=win to enable)
- Fixed fps calculation in Main.cpp that was producing incorrect results and so giving the impression that frame throttling wasn't working properly when in fact it was.
- Fixed palette indexed colours as the index was always off by one, causing incorrect colours in various games, eg drivers' suits and flashing Start sign in Daytona 2.
- Altered caching of models so that models with palette indexed colours use the dynamic cache rather than the static one.  This is so that changes in palette indexed colours appear on screen, eg the flashing Start sign on the advanced course of Daytona 2 (although currently the START message itself is not visible due to other problems with texture decoding).
- Fixed small bug in TileGen.cpp which meant both palettes were being completely recomputed pretty much with every frame.  This was a significant performance hit, particularly as palette recomputation is currently being done in SyncSnapshots (it should be moved out of here at some point, although for now it's no big deal).
- Made sure all OpenGL objects and resources are deleted in Render2D/3D destructors, in particular the deleting of the VBO buffer in DestroyModelCache.
- Made sure that GLSL uniforms are always checked to see if they are bound before using them in order to stop unecessary (but harmless) GL errors.
- Altered the default texture sheet handling to use a single large GL texture holding multiple Model3 texture sheets rather than multiple GL textures as before (if required, the old behaviour can still be selected with the mulisheet fragment shader).  I believe this fixes the disappearing crosshairs/corrupt GL state problem which the multisheet fragment shader seemed to be triggering somehow.
- Fixed a bug in debugger which meant memory watches were not triggering properly
2012-07-15 21:04:46 +00:00
Bart Trzynadlowski ac29fc1e88 Somehow John's Build.bat and Clean.bat did not get added in r262. Here they are. 2012-07-12 06:40:55 +00:00
Bart Trzynadlowski 772c94d122 - Committing Nik's timing changes: the PowerPC's DEC and TBR now count at the correct rate and time is accurately maintained between calls to the emulator. A VBlank bit was identified in the Real3D status register space and is now timed. Unfortunately, there are still some problems and not all games are perfect, but FV2, VS2, and others are working much better or perfectly.
- Added a new dump of Scud Race Plus (scudp1). Strangely, this one uses an MPC106 instead of the MPC105 used by every other Step 1.5 game...
2012-07-12 06:13:24 +00:00
John Peterson 3963a7a53c Applied a series of patches by John Peterson:
- Fixed a printf statement in ConsoleDebugger.cpp.
- Fixed memory watches not breaking in CPUDebug.h.
- Added some helpful batch files to the VS2008 directory.
- Added support for automatic loading of parent ROM sets.
2012-07-12 05:28:08 +00:00
Bart Trzynadlowski 93b71c8429 Applied Nik's fix for cyclical scene graphs. Improves Harley Davidson, Ski Champ, Emergency Call Ambulance, and Ocean Hunter. 2012-03-31 19:41:55 +00:00
Bart Trzynadlowski 1bce444668 Brought in the near clipping plane for Step 1.5+. Objects close to camera are no longer cut-off (e.g., driver arms and steering wheels in cockpit views). Note: This change should probably be applied to Step 1.0 as well in the future. For now, I am leaving the old distance because Step 1.0 coordinates need closer investigation. Bringing in the near clipping plane extends the view frustum depth and will worsen Z-buffer accuracy. Be on the lookout for Z-fighting that did not previously exist. 2012-02-28 04:34:32 +00:00
Nik Henson f9c3b9b5f8 DirectInputSystem's initial state wasn't being initialized properly, which would sometimes result in invalid input values until keyboard or mouse was successfully acquired 2012-02-27 20:32:15 +00:00
Bart Trzynadlowski 69610ef8dd Added a clear() method to VBORef and removed unsafe memset() clear. 2012-02-25 06:36:04 +00:00
Nik Henson 3b41239cfb This update fixes (hopefully) the last of the texture upload lags that were affecting some games, in particular Daytona 2 and Spikeout.
To achieve this UploadTextures no longer clears the model cache when called.  Instead the cache is kept in-tact (which should help improve cache hits) and all textures referenced by models being rendered are (re-)decoded with every frame.
To help with tracking all the unique texture references contained in a model a new class TextureRefs has been added.
2012-02-23 23:20:21 +00:00
Bart Trzynadlowski aba801ebb4 Byte swapped sample ROMs. This should fix the audio distortion that many users noticed. The differences are particularly noticeable in Scud Race and Daytona 2. 2012-02-23 03:08:57 +00:00
Bart Trzynadlowski 16e4fcab06 Forgot to update to-do list in previous revision. Added a comment to mark CRender2D::WriteVRAM() as deprecated. 2012-02-23 00:12:46 +00:00
Bart Trzynadlowski fcf1d955a9 Previous "optimization" contained a mistake and made things worse. Removed unnecessary clear of the bottom layer buffer. Now, if there is no bottom layer, it will not be displayed at all and glClear(GL_COLOR_BUFFER_BIT) is used instead. 2012-02-22 01:34:42 +00:00
Bart Trzynadlowski c085be59af Further optimization/simplification of the 2D renderer's main loop. 2012-02-20 04:09:11 +00:00
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
Nik Henson 93d68c5bf8 Added missing library WbemUuid.lib to VS project linker options 2012-01-22 16:33:40 +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 4c7fe2f266 MinGW Makefile now uses cmd prompt commands, not UNIX/msys. 2012-01-18 05:58:11 +00:00
Bart Trzynadlowski 1d64fc2c9e Added a MinGW Makefile for users of GCC on Windows. 2012-01-18 05:28:34 +00:00
Bart Trzynadlowski dd4a1320b6 Removed deprecated, unused Turbo68K stuff. 2012-01-18 05:25:39 +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 a1a993917a Added missing shader source files into VS2008 project (not needed for build, just for reference) 2012-01-16 22:15:59 +00:00
Nik Henson b7242d27e8 Added CThread::Sleep && CThread::GetTicks methods 2012-01-16 22:07:17 +00:00
Nik Henson 67036014f8 Fixed Unix Makefile to link okay on Ubuntu 11.10 (archive libraries needed to be referenced at end of linker options) 2012-01-02 17:37:34 +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