Commit graph

544 commits

Author SHA1 Message Date
Bart Trzynadlowski 037bfc648d Byte swapping utility function 2016-08-10 03:27:59 +00:00
Bart Trzynadlowski 718c237063 Added ValueAsBool(), ValueAsBoolWithDefault(), and ValueAsUnsignedWithDefault() 2016-08-10 03:27:01 +00:00
Bart Trzynadlowski 52d6eac7e5 Added Util::Config::Node::ValueAsUnsigned() with support for base 10 and 16 ('0x' prefix) 2016-07-10 04:25:41 +00:00
Bart Trzynadlowski 331d7042f2 Added Util::ToLower() 2016-07-10 04:25:12 +00:00
Bart Trzynadlowski a84aacf80b Config::Node::Add() now supports nested keys (e.g., Add("foo/bar/baz", "0") will create three nested config nodes) 2016-07-09 15:19:17 +00:00
Bart Trzynadlowski 24c341120a Changed Config::Node::Create() to Add() and added a Set() method (for INI semantics). Turned Test_Config.cpp into a proper unit test reporting pass/fail for each test. 2016-07-09 14:45:48 +00:00
Bart Trzynadlowski 2e069af603 Adding tinyxml2 lib 2016-07-07 05:05:27 +00:00
Bart Trzynadlowski 724dc93294 XML parsing support for new config system 2016-07-07 04:59:10 +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 0ab486645c Updated Fragment_NoSpotlight.glsl (fragment shader for legacy engine without spot light) 2016-07-04 01:00:24 +00:00
Ian Curtis 732bff2769 disable spot light if the extent is zero 2016-06-29 20:53:19 +00:00
Ian Curtis efa7776871 parse some unimplemented spot light values from viewport 2016-06-27 17:35:27 +00:00
Bart Trzynadlowski de043355bc Marked offset of code in CROM for scudp 2016-06-24 01:01:30 +00:00
Ian Curtis d058a29ac8 stencil translucent non textured polys 2016-06-19 23:33:06 +00:00
Ian Curtis 85c4d85562 refactor 2016-06-19 21:43:09 +00:00
Ian Curtis c2b1db11f8 Cull geometry based on the culling distances in the nodes. Should give some sort of speedup on lower end pcs where the CPU is predominantly the bottle neck. 2016-06-16 20:05:29 +00:00
Bart Trzynadlowski f31f06b42e Fix compilation when SUPERMODEL_DEBUGGER enabled 2016-06-13 00:53:39 +00:00
Ian Curtis d799c63b1a cache bound texture 2016-06-10 11:29:20 +00:00
Ian Curtis 48a79a8f14 cleaning 2016-06-10 10:18:47 +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 8440bc7f03 support negative exponent 2016-06-03 09:33:46 +00:00
Ian Curtis 5081ee99dc Add code to convert the 16bit float format used by the hardware back into float 754 format. 16bit floats are used for the culling radiuses in the nodes. 2016-06-03 00:01:34 +00:00
Bart Trzynadlowski 6dc5845d47 Added -vsync and -no-vsync option descriptions to command line help 2016-06-02 23:51:43 +00:00
Ian Curtis 9bc1fbf0cb remove dead code 2016-06-02 21:26:50 +00:00
Bart Trzynadlowski 968652bcfb Added a Split() function to Util::Format. 2016-06-02 03:14:46 +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 ff8e9d6aad Check for overflow. Fixes some fade effects 2016-05-30 23:10:56 +00:00
Bart Trzynadlowski 9a49fefe12 Legacy engine: fixed texture offsets (VON2 was broken by last commit). Texture coordinates are wrapped within the bank first and then the bank can be swapped. This also allows the full range of texture coordinate bits to be used as specified in the Pro-1000 SDK. 2016-05-30 19:18:11 +00:00
Ian Curtis 36074d9fd5 Y texture offsets are just 5 bits. Texture coordinate wrap around happens in the same texture sheet, not into the next one. Fixes various texturing bugs in sega rally. 2016-05-30 13:25:00 +00:00
Bart Trzynadlowski d1f49675b1 Legacy engine: Culling node texture Y offset is only 5 bits (fixes Sega Rally 2 initials decal) 2016-05-29 20:49:28 +00:00
Bart Trzynadlowski 2ee0d9018e New engine: modf -> std::modf (fixes compilation on gcc) 2016-05-28 20:54:25 +00:00
Bart Trzynadlowski 1a908dd414 Legacy engine: expanded color index to 12 bits from 11. Does this affect any games? 2016-05-28 20:50:05 +00:00
Bart Trzynadlowski 5c1a240565 New engine: expanded color indices to 12 bits from 11. Added PolygonHeader::ColorIndex and SensorColorIndex methods. 2016-05-28 20:49:10 +00:00
Bart Trzynadlowski 2ef5203839 Forgot to describe one polygon header field in Model.cpp 2016-05-28 20:40:45 +00:00
Bart Trzynadlowski e4a5c341dd Updated polygon header descriptions 2016-05-28 20:33:10 +00:00
Bart Trzynadlowski 0ebb8d5d47 Legacy engine: Added stencil buffering for layered models and shadows. Not as accurate as new engine because stencil buffering is applied per-model rather than per-polygon, so the entire model must consist of stencil-tested polygons. In practice, though, this seems to work fine. 2016-05-28 19:52:30 +00:00
Ian Curtis ce03c13847 Optimise non smooth texture repeat to only effect texture boundaries, rather than poly boundaries. Fixes a few ugly artefacts 2016-05-28 13:21:35 +00:00
Ian Curtis 661f19be19 fix transparency values, values are from 0-32, not 0-16 where the top bit disables 2016-05-27 22:20:57 +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
Ian Curtis 8979246642 remove bad rom patches 2016-05-26 16:21:42 +00:00
Ian Curtis 3f9936d664 don't clamp after spot light code, looks much closer to h/w 2016-05-26 09:06:09 +00:00
Bart Trzynadlowski 8ba8d7290e Hooked up Sega Bass Fishing / Get Bass controls 2016-05-26 04:13:22 +00:00
Ian Curtis 89c987fae1 basic spotlight code 2016-05-26 00:08:12 +00:00
Bart Trzynadlowski a0910f96fb Fixed fog in legacy 3D engine. Now computed same as new engine, with 4-bit light modifier and corrected fog mixing in shaders. 2016-05-25 04:00:02 +00:00
Bart Trzynadlowski 6dc35f9563 Updated legacy engine vertex shader to use specular shininess and coefficient along with old equation. Still not correct (too strong compared to the old method). 2016-05-25 03:10:36 +00:00
Ian Curtis c5ce2b9679 fix alpha testing for texture format 7 2016-05-22 19:17:15 +00:00
Ian Curtis 65d6342947 remove dead code 2016-05-21 16:26:00 +00:00
Ian Curtis fd3eb49369 support 4 bit textures 2016-05-21 15:50:54 +00:00
Ian Curtis e108b56664 correctly mask pointers 2016-05-19 22:23:50 +00:00
Ian Curtis a79fd2786a optimise hash table access for better performance 2016-05-19 19:04:44 +00:00
Ian Curtis ff8d311dcc support colour table pointer 2016-05-18 23:06:41 +00:00
Ian Curtis 7e3c097a31 remove debug code 2016-05-16 17:26:53 +00:00
Ian Curtis 828fd8ebb4 Fog start is apparently the fog value at the viewport (0,0,0) I guess like an ambient value. Default value is negative 2016-05-16 17:10:04 +00:00
Ian Curtis 9e279a0c1f Non luminous polygons seem to be effected by the lightModifier also. API seems to have no restriction in this regard, neither does the SDK. The ocean hunter requires this for some of the 2d stuff. Light modifier values only seem to exist between 0-16, which is strange for 5 bits of precision. Possibly top bit disables the effect and lower 4 bits are the value. This clearly differs from the SDK, but without this the values come out clearly wrong. 2016-05-16 10:49:00 +00:00
Ian Curtis 62eafacfc3 adjust (hopefully correct) fog equation 2016-05-16 10:44:16 +00:00
Ian Curtis bc08276d60 preliminary specular 2016-05-15 16:24:49 +00:00
Bart Trzynadlowski c9147bc93d - Removed a stale comment 2016-05-14 06:31:44 +00:00
Bart Trzynadlowski 897b1acb21 Legacy renderer changes:
- Updated shading model. Unfortunately, it is far from perfect but it seems to be the best I can do for now. Not really much of a difference from before except that the Scud Race castle is fixed at the expense of the Yosemite level in LA Machineguns being too bright.
- Added lots of notes in the shading code.
- Passing both specular coefficient and shininess to shader. This will probably break specular lighting for now until the shader is updated to use the shininess correctly.
- Color table address in polygon RAM is now obtained from culling nodes as they are traversed (found this in the Pro-1000 SDK).
2016-05-14 06:25:35 +00:00
Bart Trzynadlowski 147faf37c9 Added palette bit to list of bits to dump for analysis 2016-05-14 06:21:56 +00:00
Ian Curtis c4b5b185c6 Disable light modifier on fog, seems not to work .. values don't make sense. Maybe the model3 doesn't use these. 2016-05-13 19:26:10 +00:00
Ian Curtis c8f8cd1655 remove dead code 2016-05-13 08:40:53 +00:00
Ian Curtis e295ad6868 double up polys for two sided polys, fixes some diffuse lighting problems 2016-05-13 08:39:48 +00:00
Bart Trzynadlowski ddf3d5213d FLT_MAX -> std::numeric_limits<float>::max() 2016-05-10 03:08:36 +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
Ian Curtis 34c81eabee update header documentation 2016-05-09 16:53:12 +00:00
Ian Curtis 43add90d2f Fix bad texture seems 2016-05-09 16:26:34 +00:00
Bart Trzynadlowski 846c9d0edd Reverted stencil mask change. This reintroduces the Scud Race 'ROLLING START' bug. Previous 'fix' did not work for Magical Truck Adventure anyway and also broke some games (Daytona 2 transmission and course select screen, ECA title screen). The stencil mask is not shifted by 16 pixels and I suspect that either there is some unknown trick to horizontal scrolling or that the behavior is affected by hidden raster timing registers hidden in the JTAG interface. 2016-05-08 21:17:02 +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
Bart Trzynadlowski 5d048958b9 Rewrote 2D renderer and fixed 2D layer priorities, stencil mask clipping (Scud Race 'ROLLING START'), and cleaned up code. Unfortunately, the new code is about 50% slower, mostly due to the need to perform stencil clipping after scrolling. 2016-05-07 21:54:03 +00:00
Ian Curtis 69a44a5d5f add texture helper functions 2016-05-07 18:57:06 +00:00
Ian Curtis 242cddac2d remove pointless loop 2016-05-07 15:45:02 +00:00
Ian Curtis ded3168060 Split face colour from per vertex poly colour. Fixes colour bleeding between connected polys in harley. 2016-05-07 15:28:04 +00:00
Bart Trzynadlowski 595e24ad60 Changed XInput DLL failure message 2016-05-07 03:25:05 +00:00
Ian Curtis 05e1e4de37 update poly header class 2016-05-06 15:00:12 +00:00
Bart Trzynadlowski fee1cfb126 Fixed compilation on gcc (gotos cannot cross variable declarations) 2016-05-05 22:01:59 +00:00
Ian Curtis da4bab5f9b Flat shaded polys can't share vertex normals with adjacent connected polys. Fixes some bad lighting in Harley on pavements 2016-05-05 08:06:06 +00:00
Ian Curtis b2da849d90 support flat shading 2016-05-05 00:01:17 +00:00
Ian Curtis 3693a51cbb Make sure texture is bound to correct texture unit, stop flashing micro textures in daytona 2016-05-04 16:30:15 +00:00
Ian Curtis b0569007ef set correct microtexture wrap mode 2016-05-04 10:30:58 +00:00
Ian Curtis c545b9fd85 preliminary microtexture 2016-05-04 00:35:07 +00:00
Ian Curtis 396fba7d24 skip viewports marked as disabled, might stop parsing some bad data 2016-05-03 21:17:37 +00:00
Ian Curtis 6d1aa4d527 fix compilation 2016-05-03 18:38:06 +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
Ian Curtis c459772f8e wrap invalid texture sizes, seems to fix bad textures in srally2 (skid marks) 2016-05-01 19:52:02 +00:00
Ian Curtis 7ec7906c0f Turn off lighting if fixed shading (or no normals) flag is present. Fixes some of the lighting weirdness in scud 2016-04-30 20:32:44 +00:00
Bart Trzynadlowski 48767b2267 Legacy engine: fixed per-vertex fixed shading to incorporate Ian's findings that the intensity value is signed and that fixed shading applies only when lighting is enabled 2016-04-30 16:23:25 +00:00
Ian Curtis 23a5839d46 Daytona seems to use 3 bits for texture transparency, will figure it out later but for now this works 2016-04-30 09:02:38 +00:00
Ian Curtis 30ca1792bb Fix fixed shading maths 2016-04-30 08:58:13 +00:00
Bart Trzynadlowski e0513ec723 Updated to-do comments 2016-04-29 23:57:15 +00:00
Ian Curtis c499e6640c fixed shading code 2016-04-29 23:03:46 +00:00
Bart Trzynadlowski 57d5bc8367 Legacy engine: preliminary per-vertex fixed shading. Only limited testing with LA Machineguns (appears to work), Sega Rally 2 (appears okay), and Scud Race (fixes expert course bridge but not other mis-colored polygons). 2016-04-29 03:56:06 +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 34e8f00382 Legacy engine: extracting fixed shading component (but still can't use it because unsure of how to activate) 2016-04-28 13:18:15 +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
Ian Curtis 09e27e3082 color flag 2016-04-27 16:42:31 +00:00
Ian Curtis a246fc1454 make compilable with visual studio 2016-04-27 11:17:12 +00:00
Ian Curtis 8f6ab2fcf9 simplify 2016-04-27 08:13:22 +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 04fba1466d Added utility function to write BMP files 2016-04-27 04:08:49 +00:00
Bart Trzynadlowski 3682ab7300 Updated polygon header description with double-sided bit (forgot it in last update!) 2016-04-26 23:06:40 +00:00
Bart Trzynadlowski 85a77bb016 Added an updated description of the polygon header to the top of Legacy3D/Models.cpp 2016-04-26 23:04:11 +00:00
Ian Curtis 3e8439c09c fix model normals, add code for fixed shading, as of yet flag to turn it on is unknown 2016-04-26 09:06:48 +00:00
Bart Trzynadlowski b730fc466c Legacy engine: vertex normals are standalone and do not need to be added to polygon normal 2016-04-26 00:12:02 +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 908d979cd7 Flattened out nested if-statements in new engine's fragment shader to improve compatibility with older GPUs (e.g., NVS 300) 2016-04-22 23:46:49 +00:00
Ian Curtis 58d187e59a parse viewports in normal order 2016-04-19 22:05:12 +00:00
Ian Curtis df9fefd064 walk siblings before children, fixes some of the transparency drawing issues in ocean hunter 2016-04-18 22:25:05 +00:00
Ian Curtis 057ee94210 simplify 2016-04-18 14:06:10 +00:00
Ian Curtis a5301efed6 avoid cast warning 2016-04-17 00:02:16 +00:00
Ian Curtis c4dc96ef71 simplify list code 2016-04-17 00:00:51 +00:00
Bart Trzynadlowski 34d4d8981d Fixed 8-bit texture decoding in legacy 3D engine. Contour mode/alpha still needs to be made consistent (as much as possible) with new engine. 2016-04-15 04:26:42 +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
Ian Curtis 499ac0e1c9 Don't use variable sized variables across platforms, unless needed 2016-04-11 09:00:20 +00:00
Ian Curtis 6d313fcf9e Fix - cannot specify explicit initializer for arrays 2016-04-11 08:38:59 +00:00
Bart Trzynadlowski 94c66eea7b Figured out Step 1.0 VROM texture uploads. Fixes missing textures in VF3 and VF3TB. 2016-04-11 03:48:36 +00:00
Bart Trzynadlowski ef87093824 Debugger compilation fixed: CBus -> IBus 2016-04-11 03:39:19 +00:00
Bart Trzynadlowski 2524f2e837 Fixed Magical Truck Adventure by emulating VROM texture ports as a FIFO. Now, VF3 crashes on Akira's stage (and probably the other stages with texture glitches). Other games may be affected, too (not thoroughly tested yet). 2016-04-11 00:19:10 +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 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
Ian Curtis f52cb3c491 tweak frustum planes 2016-04-08 23:29:31 +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
Bart Trzynadlowski 22907b033f Fixes for non-Windows builds: Makefile updated and fixed header files in Vec.cpp 2016-04-05 04:30:52 +00:00
Ian Curtis 5f68544641 revert viewport code 2016-04-04 10:50:05 +00:00
Ian Curtis ecea4cad56 change tex format 4 2016-04-04 10:21:34 +00:00
Bart Trzynadlowski 38d5d14157 Clamping diffuse+ambient light intensity to 1.0 (legacy engine) 2016-04-04 04:32:10 +00:00
Bart Trzynadlowski faf5f9cf48 Added a comment about viewports 2016-04-04 04:31:26 +00:00
Bart Trzynadlowski 6d9426759b Fixed texture enable bit (fixes Star Wars light sabers and Sega Rally 2 cones) and added a hack for (and more comments about) color modulation. Scud Race, Sega Rally 2, LA Machineguns, etc. look correct now, but Fighting Vipers 2 shadows are no longer dark enough. Other bugs may exist. 2016-04-04 03:50:24 +00:00
Bart Trzynadlowski 1d4f5c871d Fixed Types.h include 2016-04-04 03:43:55 +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 d8aefa421d 8-bit texture upload byte selection (thanks to Ville; but not tested yet); code cleanup 2016-04-04 03:42:26 +00:00
Ian Curtis d155fbd6e4 rgb values were swapped for paletted colours 2016-04-03 23:21:50 +00:00
Ian Curtis 3bc2794b0a Use the correct texture enable bit 2016-04-03 16:10:40 +00:00
Bart Trzynadlowski 3c8352f4ca Added a comment: observation of Star Wars and Scud Race color modulation issues. 2016-04-03 04:09:06 +00:00
Ian Curtis 688af26846 Possible work around for slightly incorrect viewport positions in ECA and harley 2016-04-02 22:13:59 +00:00
Ian Curtis a99f022487 add missing include 2016-04-02 22:08:25 +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
Bart Trzynadlowski c0f679479a Added virtual destructor to CDSB 2016-04-02 21:35:06 +00:00
Bart Trzynadlowski 0d989831ed Added encryption keys, converted to cstdint types, fixed whitespace 2016-04-02 21:33:33 +00:00
Bart Trzynadlowski c7ad13fb31 Whitespace, cstdint types 2016-04-02 21:32:28 +00:00
Ian Curtis c7412828d4 Use proper texture wrapping mode for 2d. Stops garbage down the top and left sides. Should really use NPOT texture. 2016-04-02 12:23:46 +00:00
Ian Curtis 7e7847bc83 Allow asymmetric projection matrices. Fixes a bunch of missing effects and bad camera angles in harley. 2016-03-31 09:27:42 +00:00
Ian Curtis aee89390ba add LOD table data. Maybe we can get clipping planes out of these 2016-03-28 20:11:46 +00:00
Ian Curtis e79b241a49 properly mark dynamic meshes as such 2016-03-28 19:58:36 +00:00
Ian Curtis e1278f4451 allow 8 bit mono textures to be contour textures, fixes a bunch of missing transparency in harley la riders 2016-03-27 08:39:40 +00:00
Ian Curtis ffaed8ae32 clear the rom mesh buffer 2016-03-26 22:48:51 +00:00
Ian Curtis 4992e59673 Cache rom models, for better performance. 2016-03-26 22:44:26 +00:00
Ian Curtis 8488f22ac5 2016-03-24 13:26:28 +00:00
Ian Curtis 0327db246f WIP 2016-03-24 13:17:17 +00:00
Ian Curtis 23172c9aec fix for bad matrix with NaN 2016-03-23 01:05:02 +00:00
Bart Trzynadlowski 5c513445b1 Fixed detected axis printf() and compiler warnings (hopefully I did not parenthesize any conditionals incorrectly!) 2016-03-23 00:47:53 +00:00
Ian Curtis f031e5d095 finish front/back face culling code based on matrix determinant. Optimised opengl to avoid redundant state changes. 2016-03-22 23:39:59 +00:00
Ian Curtis 8ea5978093 fix parenthesis error 2016-03-22 21:59:51 +00:00
Ian Curtis e7eb912eaa add maths functions 2016-03-22 13:47:28 +00:00
Ian Curtis 93f6b01e0b Update project to vs 2013. Clean compile warnings 2016-03-22 12:30:23 +00:00
Ian Curtis ce99c47f8a Remove double copy of shaders 2016-03-22 11:40:24 +00:00
Ian Curtis 5b3eea25fb fix basic compile errors (with vs) 2016-03-22 11:34:32 +00:00
Bart Trzynadlowski 3627213577 Fixed compiler warnings, whitespace, and moved local variable declarations to site of assignment 2016-03-22 03:43:31 +00:00
Bart Trzynadlowski ec7588e2cd Include Version.h 2016-03-22 03:41:00 +00:00
Bart Trzynadlowski 028727b389 Fixed typo that broke build 2016-03-22 02:44:38 +00:00
Bart Trzynadlowski 4c7186b1f1 Fixed warnings and whitespace 2016-03-22 01:37:55 +00:00
Bart Trzynadlowski 78609688c5 Fixed warnings and whitespace 2016-03-22 01:24:23 +00:00
Bart Trzynadlowski bd09b3b68b Fixed warnings and whitespace 2016-03-22 01:16:46 +00:00
Bart Trzynadlowski f0488a3c94 Moved lastCycles static int out of header file (fixes compiler warnings) 2016-03-22 01:05:34 +00:00
Bart Trzynadlowski 3afe3cf1a7 Moved 2016-03-21 23:27:30 +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 708455a82d CRender3D -> CLegacy3D 2016-03-21 23:22:26 +00:00
Bart Trzynadlowski 60ce6180c0 Update Supermodel.h with graphics path and moved version string to separate header file 2016-03-21 23:20:32 +00:00
Bart Trzynadlowski d61b01ab6f Removing legacy 3D engine files that were already moved to Graphics/Legacy3D 2016-03-21 23:12:17 +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
Bart Trzynadlowski 0579e65ebd Added registers to debugger: ctr, xer, srr0, srr1, sdr1, imiss, dmiss, hid0, hid1 2016-03-21 04:03:44 +00:00
Bart Trzynadlowski 27c20ff5e5 Fixed compiler warnings 2016-03-21 04:02:14 +00:00
Bart Trzynadlowski 8f87bb1698 53c810: do not increment DSP when executing interrupt instruction. Fixes invalid polygons in Virtua Fighter 3. Thanks to Ian Curtis for discovering that the polygons were incorrectly-copied garbage. 2016-02-23 05:28:17 +00:00
Bart Trzynadlowski 8e6712d2c7 Fixed display of PowerPC condition code bits in debugger (were backwards) and changed XER to print as hex. 2015-12-07 05:56:36 +00:00
Bart Trzynadlowski 3d00225cba Support for loading an arbitrary (non-game) CROM image. 2015-12-07 05:29:07 +00:00
Bart Trzynadlowski 1035b0c6a8 Gracefully handle the case when a zip file contains no known Model 3 ROM set. 2015-06-13 02:57:41 +00:00
Bart Trzynadlowski 6bf4244207 Converted line endings from DOS to UNIX format. 2015-06-13 02:56:26 +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
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 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
Bart Trzynadlowski f1e93bcd8f - Fixed Win32 GCC Makefile.
- Reverted Nik's polygon palette index change in Models.cpp. Subtracting 1 was breaking Scud Race.
- Added an explicit typecast in Inputs.cpp, which GCC requires for some reason.
2012-07-16 02:27:55 +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
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