Commit graph

105 commits

Author SHA1 Message Date
Ian Curtis ddbf08ac73 don't ask 2017-03-27 22:06:23 +00:00
Ian Curtis f320af2049 fix project files 2017-03-27 22:01:31 +00:00
Bart Trzynadlowski f34e25dfc7 Massive internal change: removed CConfig object and replaced it with a hierarchical config object system (Util::Config::Node). Games are now defined in an XML file. Hopefully I didn't break too many things :/ 2017-03-27 03:19:15 +00:00
Ian Curtis 9fb6acc92d fix scissor code for native resolution (thanks HarryTuttle) 2017-03-22 20:38:44 +00:00
Ian Curtis 9780f333b4 The model3 has this weird issue where the 2d and 3d planes are misaligned by 2 pixels. Originally I made a quick hack that shifted subviewports 2 pixels. But apparently that wasn't enough, as the issue effects everything. Thanks to HarryTuttle for pointing this out, and making a patch :) 2017-03-19 01:33:45 +00:00
Ian Curtis 0a7c0d0864 change throttle logic for smoother playback, we could get closer to 60fps if SDL timers weren't so lame 2016-10-21 00:04:12 +00:00
Bart Trzynadlowski bcc663d4eb Moved logging functions into OSD/Logger.cpp (eventually logging system will be reworked entirely) and added new config tree structure (not yet used). 2016-07-05 01:15:58 +00:00
Bart Trzynadlowski f31f06b42e Fix compilation when SUPERMODEL_DEBUGGER enabled 2016-06-13 00:53:39 +00:00
Bart Trzynadlowski b0911afd1f Added drive board and lamp raw outputs (submitted by SailorSat) 2016-06-07 01:51:16 +00:00
Bart Trzynadlowski 6dc5845d47 Added -vsync and -no-vsync option descriptions to command line help 2016-06-02 23:51:43 +00:00
Bart Trzynadlowski d1330d310c XInput fix: search for all three possible XInput DLLs (xinput1_4.dll, xinput1_3.dll, and xinput9_1_0.dll). I have not tested 32-bit builds. 2016-06-02 00:13:42 +00:00
Ian Curtis 2086b1c9af Stencil layered polys, fixes shadow z fighting in some of the games. Other games maybe using stipple alpha (yuck), not sure yet. 2016-05-27 19:30:40 +00:00
Bart Trzynadlowski 147faf37c9 Added palette bit to list of bits to dump for analysis 2016-05-14 06:21:56 +00:00
Bart Trzynadlowski 595e24ad60 Changed XInput DLL failure message 2016-05-07 03:25:05 +00:00
Bart Trzynadlowski fa65542d76 Added support for A1RGB5 to BMP file writer and added a (commented-out) example of how to use it to dump texture memory in ~CReal3D() 2016-05-03 00:28:56 +00:00
Bart Trzynadlowski e0513ec723 Updated to-do comments 2016-04-29 23:57:15 +00:00
Ian Curtis 2785ecd25f read front buffer 2016-04-28 22:15:36 +00:00
Bart Trzynadlowski 7456aa745c Luminous bit is now also dumped in polygon header analysis because shading modes may depend on whether or not lighting is enabled 2016-04-28 13:18:56 +00:00
Bart Trzynadlowski 0ae9e8013b Fixed polygon header bit analysis code: was forgetting to swap GL buffer back to retrieve pixels from last rendered frame 2016-04-28 01:27:35 +00:00
Bart Trzynadlowski 3c5fcbd241 Forgot a newline 2016-04-27 04:15:22 +00:00
Bart Trzynadlowski c0ec610e99 Polygon header bit analysis code (need to #define DEBUG and use -gfx-state option) 2016-04-27 04:09:50 +00:00
Bart Trzynadlowski 112777385e Added a debug option to load and render a single frame of graphics state from a save state file. Only available if compiled with DEBUG defined. Invoked using: -gfx-state=<file> on command line. 2016-04-24 17:06:14 +00:00
Bart Trzynadlowski 1265c8d184 Using IEmulator interface instead of CModel3 directly 2016-04-24 03:01:42 +00:00
Bart Trzynadlowski 9baa0488e3 Changed save state file version (r340 changed Real3D save format, breaking compatibility with older states, and states were probably already incompatible with 0.2a) 2016-04-24 01:50:03 +00:00
Bart Trzynadlowski 3bd8e20639 Fixed white space and warnings. Fixed second argument to -dis option in cases where other numerical parameters are specified on command line. 2016-04-24 01:40:16 +00:00
Bart Trzynadlowski 198a469ff7 Created IEmulator interface, renamed CBus to IBus and CPCIDevice to IPCIDevice. Frames now rendered when emulator paused. 2016-04-10 03:42:41 +00:00
Bart Trzynadlowski e08b754140 Changed help text to explain that -sound-volume and -music-volume only take effect when DSB is present 2016-04-05 04:31:39 +00:00
Ian Curtis 93f6b01e0b Update project to vs 2013. Clean compile warnings 2016-03-22 12:30:23 +00:00
Ian Curtis 5b3eea25fb fix basic compile errors (with vs) 2016-03-22 11:34:32 +00:00
Bart Trzynadlowski ec7588e2cd Include Version.h 2016-03-22 03:41:00 +00:00
Bart Trzynadlowski 34301e97e1 Adding new 3D engine by Ian Curtis. Old engine moved to Graphics/Legacy3D/. 2016-03-21 04:10:14 +00:00
Bart Trzynadlowski 9802bbbfd8 Fixed compilation errors involving min and max functions 2016-03-21 04:07:32 +00:00
Nik Henson 8835d6fe36 Some updates to Supermodel made at beginning of the year but only now got around to checking in (better late than never...):
- hooked up the remaining controls in Supermodel (except for Magical Truck Adventure which does not work at all yet).  The new controls are:
  * InputAnalogJoyTrigger2 and InputAnalogJoyEvent2 for the additional second trigger and event buttons that were missing from Star Wars Trilogy,
  * InputRearBrake and InputMusicSelect for the rear brake and music selection buttons that were missing from Harley Davidson,
  * InputAnalogGunXXX, InputAnalogTriggerXXX, InputAnalogGunXXX2 and InputAnalogTriggerXXX2 for the analogue guns of Ocean Hunter and LA Machineguns (NOTE: these controls must be calibrated in the games' service menus otherwise they will not work properly.  Also, the alignment of the gun cursor does not line up very well with the mouse position at the moment, but at least the games are a bit more playable now, although still with numerous graphical glitches...)
  * InputSkiXXX for the controls of Ski Champ, making the game playable now.
- hooked up existing InputViewChange control to Harley Davidson's view change button
- improved the handling of InputGearShiftUp/Down inputs so that they work better with the driving games.  With Dirt Devils, ECA, Harley and LeMans this means they map directly to the game's own shift up/down controls, while with the 4-speed games such as Daytona 2, Scud Racer and Sega Rally 2, they simulate the user shifting up and down through the gears
- added defaults for the new controls to Supermodel.ini
- other small code tweaks:
  * fix small bug with handling of pos/neg inputs mapping to a control with inverted range (0XFF to 0x00) - this was needed to get Ski Champ's X-axis to work properly
  * removed Wait method from InputSystem and added to CThread as CThread::Sleep instead
  * added FrameTimings struct to hold all frame timings in a single place
No networking code yet as just haven't had a chance to work on it since initial progress at the beginning of the year - am *hoping* might have some time to pick it up again over Christmas...
2013-11-30 19:39:59 +00:00
Bart Trzynadlowski b017b24b1f Changed output "Pause" to "pause", as it is spelled in MAME, for MAMEHooker. 2012-09-06 05:38:35 +00:00
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 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
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 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 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 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
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 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 b7242d27e8 Added CThread::Sleep && CThread::GetTicks methods 2012-01-16 22:07:17 +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 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