Commit graph

133 commits

Author SHA1 Message Date
Ian Curtis 609d1ba19f Fix step 1.0 games with NET_BOARD defined (Spindizzi) 2018-03-08 14:27:28 +00:00
Ian Curtis d8572a923a Update network code (Spindizzi) 2018-02-24 15:53:18 +00:00
Ian Curtis 995cf6adb0 white space 2018-01-29 19:33:29 +00:00
Ian Curtis 10cefb7c61 Support both types of lightgun in lost world. 2nd type fixes some missing fx. Thanks to Any for pointing this out. To use the old type change analog_gun1 to gun1 in the xml file. 2018-01-29 19:31:23 +00:00
Ian Curtis 964f08c894 Disable the netboard if EmulateNet=0 (Spindizzi) 2018-01-25 20:38:31 +00:00
Ian Curtis cf7850602b fix build 2018-01-08 00:13:23 +00:00
Ian Curtis 0b6da91cc0 add the rest of the network board code (Spindizzi) 2018-01-07 14:07:59 +00:00
Bart Trzynadlowski 55bb02d4e5 - New work-in-progress frame timing code (disabled by default, compile with NEW_FRAME_TIMING defined to activate it)
- New JTAG emulation, moved into its own class, CJTAG
- Removed game-specific sun clamp hacks from CNew3D (JTAG and Real3D emulation will call the appropriate method to configure this at run-time)
- Removed JTAG from Real3D save state data and reused some of that space for new state variables having to do with the internal JTAG-based config as well as new frame timing state variables
2017-09-24 20:52:48 +00:00
Bart Trzynadlowski f04a285727 DMA and register space access for Real3D have been unified and CReal3D::ReadRegister() returns little endian data now that the PowerPC handler byte-swaps back, to be consistent with how DMA registers work. 2017-08-29 01:28:21 +00:00
Bart Trzynadlowski 507990a350 Fixed up memory region dumping code to use the new Util::FlipEndian functions 2017-08-19 19:27:58 +00:00
Ian Curtis 063b7d3ea4 Remove debug code 2017-08-09 21:40:48 +00:00
Ian Curtis 5709ee2659 Sometime ago I managed to work out that specular on the model3 is not real specular, and really is just an extension of diffuse lighting. But attempts were derailed by corner cases and the fact we were not handling the normals correctly. Anyway Harry managed to successfully come up with an algorithm, and coefficients that give an almost perfect match to specular on the model3, based soley on observations from video footage! He also worked out that the lighting on hardware 1.5 onwards appears to be unclamped (ie greater than 1). This quite radically changes the brightness of some of the games, but much better matches the original hardware. 2017-08-09 16:56:56 +00:00
Bart Trzynadlowski a649a0d36b Removed patches from source code and moved them into game XML file. Created ROMSet.cpp. Print a more descriptive error when game XML file fails to load. 2017-04-08 18:30:29 +00:00
Bart Trzynadlowski 4ca7d5ef0e Harry Tuttle's change to Harley gear shift to use a single bit instead of two (no detectable difference in behavior, though) 2017-04-07 04:30:27 +00:00
Bart Trzynadlowski c013eab711 Changes by Harry Tuttle: game list more accurately reflects MAME's, added a root level XML "games" node, print ROM version along with title 2017-04-05 05:35:45 +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 61159c07f8 Added 8- and 16-bit tilegen VRAM access handlers to fix missing columns in Star Wars Trilogy tilemaps. Thanks to Spindizzi for initial confirmation that this was the problem. 2017-03-23 04:22:25 +00:00
Bart Trzynadlowski de043355bc Marked offset of code in CROM for scudp 2016-06-24 01:01:30 +00:00
Bart Trzynadlowski b0911afd1f Added drive board and lamp raw outputs (submitted by SailorSat) 2016-06-07 01:51:16 +00:00
Ian Curtis 8979246642 remove bad rom patches 2016-05-26 16:21:42 +00:00
Bart Trzynadlowski 8ba8d7290e Hooked up Sega Bass Fishing / Get Bass controls 2016-05-26 04:13:22 +00:00
Bart Trzynadlowski 8c082abab9 Added some IRQ-related code (commented out for now) from MAME findings. May incorporate in the future when investigating IRQs and timing again. 2016-05-10 03:08:03 +00:00
Bart Trzynadlowski a9095e6c8e Added a register read handler for tilegen (although nothing seems to benefit from it) 2016-05-08 20:30:45 +00:00
Bart Trzynadlowski 9249eaa29f Fixed logic for clearing bottom layer. Added new functions to 2D renderer interface. Avoid drawing top and bottom surfaces when no layers are present there. Added some comments to tile 2016-05-08 19:27:08 +00:00
Ian Curtis 6d1aa4d527 fix compilation 2016-05-03 18:38:06 +00:00
Bart Trzynadlowski 9a2bb78add Hooked up Magical Truck Adventure controls 2016-04-13 03:28:04 +00:00
Ian Curtis d2563c035f you were right Bart :) (Fixes broken sound in last build) 2016-04-11 15:16:35 +00:00
Bart Trzynadlowski 775256118d Fixed Magical Truck Adventure country check (accidentally removed a line in previous commit). 2016-04-10 23:57:55 +00:00
Bart Trzynadlowski 7ade3a6abb Magical Truck Adventure expects 0x03 to be returned from MIDI control port (thanks, Ville). Game now boots but crashes because VROM texture uploads clobber memory for some reason. 2016-04-10 21:47:07 +00:00
Bart Trzynadlowski a202d8adc3 Do not print extra hardware message when there is none 2016-04-04 03:42:55 +00:00
Bart Trzynadlowski 6e5c301de8 Encryption device emulation (thanks to MAME), fixed warnings in Model3.cpp, added a string formatter helper, and updated Win32 GCC Makefile. 2016-04-02 21:50:40 +00:00
Ian Curtis 93f6b01e0b Update project to vs 2013. Clean compile warnings 2016-03-22 12:30:23 +00:00
Bart Trzynadlowski 47c54d100b Updated to support new IRender3D interface and added FrameTimings object. 2016-03-21 23:25:29 +00:00
Bart Trzynadlowski ee8afa17c3 Contribution by Luciano Lopez:
- Added vs215o ROM set.
- Security board data for vs298 now also returned for vs2v991, vs299, vs299a, and vs299b, helping them run.
2015-05-12 02:50:28 +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 08d347ccc7 Small tweak to get to compile under GCC (Unix/MacOS) 2012-07-24 20:37:40 +00:00
Nik Henson a3c15e8208 Slight tweak to changes made to sound board synchronisation code in previous commit. The previous change was necessary to ensure no deadlock when waiting for sound board thread to exit but it introduced unwanted buffer overruns (with the end result being that the sound was often speeded up) so have added an extra check in WakeSoundBoardThread to prevent this. 2012-07-24 20:18:30 +00:00
Nik Henson 108ac64de8 - CModel3::StopThreads was rather gracelessly killing threads while they were waiting on their semaphores, which works okay Windows but not on Mac OS-X where it was preventing Supermodel from exiting properly. Hence, have instead altered StopThreads to signal to threads that they should exit and wait until until they have all done so. This is much better and is what I should have done the first time around had I not been so lazy :-)!
- Also fixed a small race condition in WakeSoundBoardThread.  Previously if it happened to be called just before the sound board thread had finished processing a frame's worth of audio but before it had got around to waiting on the sync condition variable then the wake notification would be lost.
2012-07-23 20:35:10 +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
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
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 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
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
Bart Trzynadlowski 4c3d6e1abf Fixed a MAGIC_NUMBER comment typo. 2011-12-23 21:03:24 +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 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 f695ff7094 CModel3::StopThreads() now makes sures threads are paused before deleting thread objects. 2011-09-18 22:49:21 +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 2f5bf43bda Updated copyright information and added headers to all remaining files except debugger. 2011-09-14 19:08:43 +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 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 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 4040b7eeee Forgot to disable drive board if ROM not loaded. 2011-09-08 01:13:25 +00:00
Bart Trzynadlowski 70ec09de92 - Added drive board ROM loading.
- Changed EnableFFeedback -> ForceFeedback to be more consistent with the other options.
- Updated help text.
2011-09-08 01:07:06 +00:00
Nik Henson d7ee278f69 Added handling of drive board (if attached) 2011-09-07 07:21:56 +00:00
Bart Trzynadlowski 498d90d667 Multithreading was always enabled in the CModel3 constructor. Disabled this behavior. 2011-09-05 19:05:47 +00:00
Bart Trzynadlowski bda9efebac - getbass now uses MPC106.
- Fixed some error messages in 53C810.cpp.
- Fixed stereo (was swapped) and added a flip stereo option.
2011-09-01 06:43:01 +00:00
Bart Trzynadlowski b647cd5a4b - Added Spikeout Final Edition.
- Minor change to DSB save state loading: only loopEnd is checked before using MPEG_SetLoop().
2011-08-28 20:56:36 +00:00
Bart Trzynadlowski 87dc5b4181 - Fixed format strings for messages involving __LINE__.
- Fixed an MPEG related crash when loading save states. If usingLoopStart is 0, it is important not to call MPEG_SetLoop()!
- -input-system is working again.
- Changed the format of some messages here and there.
2011-08-28 04:37:41 +00:00
Bart Trzynadlowski 8be2966ecb - Added crosshairs for light gun games and disabled mouse cursor in full screen mode (no way to re-enable it now).
- Fixed Real3D FIFO buffer overflow bug.
- Input system cannot be changed for non-Windows builds (only SDL is available).
- Added Spikeout-specific controls.
2011-08-27 21:37:37 +00:00
Bart Trzynadlowski b19f600fec - Added mappings for individual joysticks in Virtual On for dual-joystick gamepads.
- Input settings are now only read from "global" to avoid confusion.
2011-08-26 05:06:34 +00:00
Bart Trzynadlowski d318efe58c - Program settings are now managed by the CConfig class.
- Moved Logger.h to OSD/, cleaned up comments.
- Command line and config file parsing have been rewritten.
- Began replacing C standard library headers with C++ versions (eg. stdio.h -> cstdio). I think I got most of them, but not all.
2011-08-19 20:43:07 +00:00
Bart Trzynadlowski 5e1ea75374 Fixed memory pool macros to (hopefully) work with gcc. 2011-08-15 05:59:33 +00:00
Bart Trzynadlowski 52cd9d834b Save state support for 68K, Z80, sound board, DSB1, and MPEG playback. 2011-08-09 18:16:06 +00:00
Bart Trzynadlowski 6c71ec28af Protection now works for ecax. 2011-08-07 03:10:07 +00:00
Bart Trzynadlowski 603bd1bb86 - Added a patch for vs215. 2011-08-05 06:49:51 +00:00
Bart Trzynadlowski d859115074 - krom's patches for vf3a, harleyb, and ecax. 2011-08-05 06:22:34 +00:00
Bart Trzynadlowski 6b55cfb765 - krom added remaining ROM sets. Spikeout Final Edition disabled because it is a bad dump.
- Added patches for scuda and scudj.
- Added a TO-DO reminder in INIFile.cpp.
2011-08-03 03:18:51 +00:00
Bart Trzynadlowski fce3c7ad7c - skichamp now works, but controls are not hooked up and seems to overload the display lists like many non-working Step 2.x games do. To bypass the drive board error, enter the test menu and exit again. It will reboot and run.
- Added some notes on the cause of the "NO DAUGHTER BOARD DETECTED" error in Real3D.cpp.
- Removed some debug code from texture uploader.
2011-08-02 03:33:40 +00:00
Bart Trzynadlowski ddd6fa92ef - Improved 68K interface. Now supports context switching.
- CSoundBoard is not derived from CBus.
- Optimized sound board memory handlers (now using switch statements).
- Added DSB emulation (based on R. Belmont's M1 source code).
- Improved ROM loading: only unique ROMs (those not shared amongst games) are used to identify games. The ROM loader will no longer get confused as easily.
- General cleanup here and there, removed unused Render.h file.
2011-07-31 02:37:31 +00:00
Bart Trzynadlowski 5b373f687f - Sega Bass Fishing now uses an MPC106, allowing it to boot. 2011-07-22 06:43:53 +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
Bart Trzynadlowski 12693a70f6 - Patched out a decrementer loop that was preventing Spikeout from starting up. 2011-07-20 06:20:40 +00:00
Bart Trzynadlowski 004339e601 - Added sound ROMs to Daytona 2 (BOTE and PE).
- Implemented bank switching for sample ROMs. It is probably incorrect because there is still 2MB of unaccounted-for space.
- Added a few important TO-DO notes.
2011-07-16 04:53:12 +00:00
Bart Trzynadlowski 325f9ab2e8 - stwcx. now always writes to memory.
- Added PPC/68K communication and automatically generated sound IRQs. Sound is now mostly working :)
- Increased SCSP MIDI buffer length to 128 to simulate a large FIFO for PPC->68K commands.
- Added sound ROMs to those games which have 8 MB of sample ROMs.
2011-07-13 07:11:27 +00:00
Bart Trzynadlowski b2afd274cb 2011-07-13 05:29:02 +00:00
Bart Trzynadlowski c73cb830dc - Added the Musashi 68K emulator by Karl Stenerud. Obtained Karl's explicit permission to relicense the code under GPL.
- Added a 68K interface, CPU/68K/M68K.*.
- Moved Turbo68K source files to CPU/68K/Turbo68K. It is no longer used but is being retained in the source tree for now. The LSR instruction has not been fixed in this update.
- Changed sound board code to use the new 68K interface (and hence, Musashi).
- Changed version string from 0.2-WIP to 0.2a-WIP. This is still an alpha version.
- Above changes have broken the 68K debugger.
2011-07-12 04:57:12 +00:00
Bart Trzynadlowski b0e8755afc Added Spikeout protection data.
Added code to detect and abort erroneous 0-length texture transfers (was causing Spikeout to hang the emulator).
2011-07-06 05:07:04 +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
Renamed from Model3/Model3.cpp (Browse further)