Commit graph

39 commits

Author SHA1 Message Date
CapitaineSheridan b19fdb6a77 Change Media folder to Assets folder.
Naming variable convention.
Command line change -crosshair-style = vector|bmp.
Config ini variable change CrosshairStyle = vector|bmp.
CCrosshair::DrawCrosshair optimisation.
Modifying UpdateCrosshairs() to eliminate global variable.
2023-03-13 20:18:51 -07:00
CapitaineSheridan 1b066fe4b3 Crosshair refactor
-add a new separate class for crosshair
-crosshair coordinates are calculated by matrix instead of recreating every object at correct coordinates
-add ability to scale crosshair by dpi
-add ability to use bitmap crosshair (located in ./Media/). 32bits bmp format + alpha
-cmd line "-bitmapcrosshair" or "-vectorcrosshair" and/or BitmapCrosshair=0|1 in config file
-these changes are only for lost world game with Crosshairs=1|2|3

don't forget to copy the 2 crosshair images in Supermodel/Media folder
2023-03-13 20:18:51 -07:00
Ian Curtis 25604512f4 The model 3 (actually model 1,2 and 3) all used some crazy refresh rate of 57.524hz. If your screen refresh rate is 60hz, supermodel will work fine, but really run too fast. Anyway if you create a custom refresh rate, supermodel will automatically pick this, and set it when the emulator is in fullscreen mode. Apparently this works with most monitors, even cheapo low end ones.
To active set your command line to:
-res=1920,1080 -vsync -fullscreen -true-hz

Replace the resolution with whatever your monitor's native resolution is.
2022-12-19 00:13:08 +00:00
Fernando Casas Schössow 317f8bacde First review code changes (identation and cosmetic changes) 2022-12-12 16:49:07 -08:00
Fernando Casas Schössow d11efb8553 Changed pathType from string var to enum 2022-12-12 16:49:07 -08:00
Fernando Casas Schössow df7787f040 Keep Supermodel files (config, nvram, saves, etc.) in a predictable path when running on Linux 2022-12-12 16:49:07 -08:00
toxieainc 4961951a89 fix a real error (m68kdasm) and some harmless performance warnings and use modern headers 2022-07-11 18:10:41 +02:00
toxieainc e0053b3a46 fix some real errors (Model3,InputSystem), minor errors (SCSP,SDL/Main) and some performance warnings 2022-07-11 17:43:59 +02:00
Ian Curtis 83e7b5f45d njz3: Proper quadrophonic audio support. Need 4+ speakers to take advantage otherwise down mixed to stereo. 2022-06-09 21:10:39 +00:00
SpinDizzy ab367774d3 Introduce new config keywords.
In xinput mode, lets the choice to have left and right gamepad motors vibrate together.
XInputStereoVibration = 1 (both motors) [default]
XInputStereoVibration = 0 (separate motors)

In sdl input mode, new control option to set minimum strength above which a Model 3 constant force command will be simulated on an sdl gamepad device.
SDLConstForceThreshold = 30 [default]
note : the vibration strength can be mod with SDLConstForceMax = [val]
2021-01-30 09:54:03 +00:00
SpinDizzy ca57659fcb Remove using namespace from headers. 2020-09-16 07:03:03 +00:00
SpinDizzy 4f347ff3f1 SDL1 to SDL2 internal changes 2020-04-19 08:34:58 +00:00
Ian Curtis a7e851d578 updated command line help 2018-09-14 20:31:34 +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
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
Bart Trzynadlowski 595e24ad60 Changed XInput DLL failure message 2016-05-07 03:25:05 +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
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
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 611ef43ba5 Now compiles with MinGW. Among other things, the use of __uuidof() was removed. 2012-01-18 04:59:42 +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
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
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 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
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 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 2f5bf43bda Updated copyright information and added headers to all remaining files except debugger. 2011-09-14 19:08:43 +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
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
Nik Henson dc368c1edd Added configuring of DirectInput and XInput force feedback parameters via config file 2011-09-12 20:05:58 +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
Nik Henson c5d585440c Changes to CDirectInputSystem:
- Added parameters for DirectInput and XInput force feedback effects (although still need to add code to persist them in configuration file)
- Added extra friction feedback effect and tidied up existing effects
2011-09-06 19:05:22 +00:00
Nik Henson 03fa9532eb - Added function-based interface Audio for OSD sound output, together with SDL implementation
- Added object interface CThread for OSD threading and synchronization, together with SDL implementation
- Added multi-threading to CModel3 so that separate CPUs (PPC of main board, 68K of sound board and Z80 of drive board) can be run in separate threads if requested to improve performance on multi-core PCs
- Added -multi-threaded command line option (default is to run single-threaded still)
2011-07-20 21:14:00 +00:00
Nik Henson 809892c69c Added check for error that occurs when calling CoInitialize from a managed context 2011-06-27 23:06:08 +00:00
Nik Henson e8782b98fa Changes relating to input system:
- Added ability to configure axis min, centre and max values in INI file.  This allows some types of steering wheel pedals that use an inverted value range to work properly with the emulator.
 - Modified CINIFile to read and write signed numbers (needed for above change).
 - Added check at configuration start for "bad" input sources such as axes that are wrongly calibrated or buttons that are always triggering a value.  Otherwise they cause the configuration loop to wait indefinitely for the axis or button to be released.
 - Removed superfluous check for XInput devices when XInput is not enabled in CDirectInputSystem.
 - Improved force beedback code in CDirectInputSystem and also added the extra feedback effects needed so far for drive board emulation.
2011-06-22 13:06:52 +00:00
Nik Henson 5e247021be Changes relating to input system:
- Fixed bug with mapping of multiple assignments.
- Added new ! operator for input mappings, which lets the user specify that an input must not be active.
- Added option to print info about input system (such as settings and detected keyboards, mice and joysticks) during input configuration.
- Added new trigger input for lightgun games with a configurable option to automatically pull trigger when offscreen input is activated (this makes playing with the mouse easier as the gun can be reloaded with single mouse button, rather than having to press both
 buttons at the same time).
- Added -xinput command line option that switches to using XInput API rather than DirectInput for XBox 360 controllers (this allows the XBox 360 controller's two triggers to be read independently which works better for driving games when they are mapped to accele
rator and brake).
- Added initial version of force feedback implementation to DirectInputSystem (this still needs work).
2011-06-05 20:53:39 +00:00
Bart Trzynadlowski 783446fca2 Fixing import mistake: moving source code to trunk/Src. 2011-04-24 01:19:40 +00:00