Commit graph

716 commits

Author SHA1 Message Date
SpinDizzy bb89bc8e54 Refactor code from previous svn768 (Note : break old savestate compatibility) 2019-02-05 10:03:50 +00:00
Ian Curtis 90faeafbc4 Fix the audio in sega rally2. The game has packed separate tracks into the left and right audio channels. Selecting the correct track fixes the garbled mess. (Spindizzi) 2019-02-01 21:02:02 +00:00
Ian Curtis f634d19fdc Fix shader. Why this worked on my nvidia card .. I'm not sure. 2019-01-24 19:11:26 +00:00
Ian Curtis 8094c2e2b7 Composite the alpha layers at the end of rendering. To do this we need to mask the alpha pixels with the opaque pixels from the next priority layer. Fixes some overlapping shadows in vf3tb that have different priority layers. I assume that was a game bug, but it works on the real h/w. 2019-01-21 14:30:42 +00:00
SpinDizzy c171356f7d -Added support for specifying multiple sections simultaneously in INI
files, e.g., [ daytona2, dayto2pe ]
-Forgetfulness in 763
2019-01-20 08:02:01 +00:00
Ian Curtis 864bb36b5a Technically backface culling should cull polys when the dot product = 0, since when it equals 0 the polys is perpendicular to the camera and thus invisible. When you complete sega rally2 (if you can get that far lol) the champagne is invisible. The reason is because all the face normals are 0. So when multiplied by the model matrix they are still 0 and get culled. Tweaking the condition to only cull polys when greater than 0 fixes this, and allows these 'bad' polys to render as they do on the model3. 2019-01-16 01:07:56 +00:00
SpinDizzy 98106df68b Inputs can now be configured on a per-game basis 2019-01-13 16:20:19 +00:00
SpinDizzy b0813ef7a0 - PCI bridge can be specified in Games.xml for games that use a different version than expected based on stepping. No more hard-coded exceptions.
- Real3D PCI ID can be specified in Games.xml for exceptions that require it.
- Real3D status bit timing specified in Games.xml for exceptions that require it.
2019-01-13 16:00:37 +00:00
Ian Curtis d8f736e7a8 timing fix for srally2x (Spindizzi) 2019-01-06 23:48:34 +00:00
Ian Curtis 0f49e0b1e9 remove commands that do nothing 2018-12-08 20:01:37 +00:00
Ian Curtis 08eeb20033 clear scissored out areas 2018-12-08 19:55:26 +00:00
Ian Curtis 6075352868 Optimise depth calculation for quad shader. 2018-11-27 20:43:27 +00:00
Ian Curtis 78039e91a8 2018-10-28 18:30:04 +00:00
Ian Curtis 538a714086 Fade out microtextures with higher textures LODs. Fixes incorrectly applied microtextures in LA machineguns. 2018-10-23 00:16:23 +00:00
Ian Curtis b8da2d6064 debug code should be disabled 2018-10-22 21:59:01 +00:00
Ian Curtis bf4d725970 Smooth texture repeat makes no sense for alpha/contour textures with pixel dilate. HW seems to treat them as non smooth anyway. Also implement some line of sight stuff, used by Scud. Really need to check the threading/synchronisation of the register reads but it basically works. 2018-10-19 20:59:46 +00:00
Ian Curtis df02d6a753 return correct PCI ID 2018-10-18 09:42:51 +00:00
Ian Curtis 3dc69f89b8 fix debugging code 2018-10-17 22:36:33 +00:00
Ian Curtis 42eaa7f3d8 fix copy paste error :] 2018-10-14 10:05:24 +00:00
Ian Curtis 3eeec35e7c Correctly emulate the real3d pro-1000 texture modes in our shader. 2018-10-13 13:29:45 +00:00
Ian Curtis 7bcc70a170 Update makefile 2018-10-01 17:42:45 +00:00
Ian Curtis 3dbfa73734 Both lemans24 and dirt devils are rendering some totally transparent objects as the first model in each viewport. The HW seems to skip these entirely, and including them breaks our near/far plane calculations leading to Z fighting. 2018-09-19 20:43:41 +00:00
Ian Curtis e3255e45f3 Tweak the ratio for the near plane. Fixes missing text on the map indicator at the start of spikeout. The vertices are 0.003 units apart so a tonne of precision is required at the near plane to not depth test out. 2018-09-18 21:46:38 +00:00
Ian Curtis c5b156d95d remove debug code 2018-09-18 21:20:15 +00:00
Ian Curtis 5dab9910e2 avoid double matrix load 2018-09-16 08:43:13 +00:00
Ian Curtis a7e851d578 updated command line help 2018-09-14 20:31:34 +00:00
Ian Curtis b5f9ad9651 Quad rendering engine. Set QuadRendering = 1 in the ini file to use, or -quad-rendering at the end of the command line to use. 2018-09-13 12:50:34 +00:00
Ian Curtis e4f5f0bcaf Sega bass fishing is starting some off the meshes with a shared vertex. Without having a previous vertex to share with, the values were just uninitialised and junk. The hardware itself seems to hold the value from the previous mesh, and sega bass fishing relies on this undefined behaviour to function correctly. Storing the cached vertices as member variables instead of locally to the function means it holds the values from the last mesh, and uses those values instead of random garbage. 2018-09-02 21:36:24 +00:00
Ian Curtis c1c2dedcfa remove dead variable 2018-08-09 21:57:51 +00:00
Ian Curtis 9f5a19a04a Use correct PCI IDs (Harry Tuttle) 2018-07-09 08:06:06 +00:00
Ian Curtis 80cf1f9b52 add crosshair effect (Harry Tuttle) 2018-07-04 22:15:44 +00:00
Ian Curtis 73ff32a10d fix cast, and remove extra ; that had snuck into the shaders 2018-06-18 10:24:46 +00:00
Ian Curtis f9be1259c0 Opaque polys definitely depth test with less than or equal. Virtua striker is drawing co-planar polys for the bar gfx 2018-06-17 11:30:01 +00:00
Ian Curtis c7ffd0a808 Draw transparent polys to separate layers and composite at the end. This solves a tonne of transparency errors we had been battling with for a long time. The model3 is strange in the fact it only supports a max of two translucent overlapped polys. They are not blended into the frame normally. Doing this means the topmost translucent polys only are visible in the scene, the equivalent of doing a depth pass first, but without the added cost. 2018-06-16 21:31:29 +00:00
Ian Curtis 7497e3f1a6 forgot parentheses 2018-05-29 14:54:23 +00:00
Ian Curtis f9f43ca66b 2018-05-28 12:55:13 +00:00
Ian Curtis c1e0e3728b optimise hash function and parse out transparency layer select bit 2018-05-28 11:59:48 +00:00
Ian Curtis 2af58f4352 select correct bit .. 2018-05-24 20:19:54 +00:00
Ian Curtis 8452d4c0ef Parse out TranslucencyPatternSelect 2018-05-24 20:13:15 +00:00
Ian Curtis 4d275ba49e Parse siblings after children. It's the only way to get Daytona water fall to look correct without h/w poly sorting. 2018-05-03 18:37:49 +00:00
Bart Trzynadlowski 3f9b1b76e5 Added a stretch mode (-stretch) and modified new renderer's viewport code (hopefully correctly) to handle aspect ratio correction and widening the way the legacy one does. 2018-05-03 03:46:44 +00:00
Ian Curtis c6b86c0812 Render the opaque part of texture transparency in the first pass. Fixes numerous transparency related issues in lemans24 and some in ocean hunter. I don't really know if this is the 'correct' way of solving this because the real3d pro-1000 is a complete black box. There is still a lot we don't understand about how it handles transparency. 2018-05-02 20:10:02 +00:00
Ian Curtis 11a3cdbfd1 remove unnecessary copies 2018-04-24 13:51:53 +00:00
Ian Curtis b39de6e4df Fix controller inputs (Spindizzi) 2018-03-30 12:04:27 +00:00
Bart Trzynadlowski 934941423a Inconsequential typo 2018-03-26 23:02:30 +00:00
Bart Trzynadlowski b5f1b7a2fd Reverted version to 0.3a-WIP. Release version will be updated to 0.4a. 2018-03-26 23:01:18 +00:00
Bart Trzynadlowski f0ea6b45a8 Added ability to load save state at startup using -load-state or InitStateFile (in config file) 2018-03-26 22:59:06 +00:00
Ian Curtis d21e71dced work around for non working jtag code in star wars 2018-03-21 10:26:05 +00:00
Ian Curtis b184ca3e1b Clamping must be applied before the spotlight is applied on step 1.0 h/w. 2018-03-10 09:13:28 +00:00
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 6bc4224154 fix a few compile warnings 2018-01-25 21:07:22 +00:00
Ian Curtis 820f27cea1 A hack to get spikeout to work (uncomment to enable) (Spindizzi) 2018-01-25 20:40:05 +00:00
Ian Curtis 964f08c894 Disable the netboard if EmulateNet=0 (Spindizzi) 2018-01-25 20:38:31 +00:00
Ian Curtis 85a638bc06 remove extra qualifier 2018-01-22 21:10:20 +00:00
Ian Curtis 04758e38b6 Update make files and fix build for the various options (Harry Tuttle) 2018-01-22 21:01:35 +00:00
Ian Curtis b5bbda67d0 fix header files 2018-01-22 18:27:51 +00:00
Ian Curtis 571d1060ee Remove using namespace std from the header files .. 2018-01-21 15:09:11 +00:00
Ian Curtis 8266eecabb Parse out line of sight position. Only known to be used by scud. 2018-01-15 21:27:21 +00:00
Ian Curtis 99b5b9ba1b make the logic a bit clearer 2018-01-15 14:40:59 +00:00
Ian Curtis 22a6166b82 fix Ian's bad maths :) 2018-01-15 13:08:39 +00:00
Ian Curtis a1350d95a2 Update microtexture coordinate logic (Harry Tuttle) 2018-01-14 12:56:24 +00:00
Ian Curtis 863ea95013 simplify maths 2018-01-10 20:37:21 +00:00
Ian Curtis adb5196625 comment out unneeded code 2018-01-10 16:12:33 +00:00
Ian Curtis d708ce9ba2 top/bottom were swapped for off axis projection 2018-01-10 16:08:02 +00:00
Ian Curtis 6efa03112e Rewrite projection maths based upon previously unknown viewport values. The previous values used roughly worked as the normals for frustum planes. Perhaps they were only used for culling and not actually rendering, as sometimes the values don't work correctly. 2018-01-08 18:35:42 +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
Ian Curtis dc3048df24 use the correct c++ deleters 2018-01-06 11:19:04 +00:00
Ian Curtis 19e6aab1fa use a few macros to make debugging less painful 2018-01-06 01:18:14 +00:00
Ian Curtis 314279ed25 Add network board emulation. Currently not linked with the rest of the project. 2018-01-04 19:14:12 +00:00
Ian Curtis f7678d918e remove using namespace from headers .. 2018-01-03 17:51:24 +00:00
Ian Curtis 53c98283aa rename to avoid clash with a #define 2018-01-03 16:19:10 +00:00
Ian Curtis 3ab93cf6ee add asynchronous sending functions 2018-01-02 18:54:34 +00:00
Ian Curtis 58dc18cd11 remove dead variable 2017-12-29 11:46:38 +00:00
Ian Curtis 78ae00faf1 Add basic networking files to supermodel. Currently these are win32 specific but can port to SDL or whatever later. 2017-12-29 11:42:03 +00:00
Ian Curtis 080acd08c2 Fix the smallest texture lods (Harry Tuttle) 2017-12-21 11:14:06 +00:00
Ian Curtis a772dd32fc fix array out of bounds 2017-12-20 18:47:17 +00:00
Ian Curtis 4702fef33e remove debug code 2017-12-19 11:43:17 +00:00
Ian Curtis 429d6cbb02 mark as static 2017-12-17 23:02:25 +00:00
Ian Curtis cc28d5f00e Implement sub 8x8 tile encoding. Fixes incomplete mipmap chains which previously only went down to 8x8 pixels before. It wasn't known these textures existed before. (Harry Tuttle) 2017-12-17 22:25:50 +00:00
Ian Curtis cede67468c Fix some bad/missing textures in fighting vipers. The game is referencing totally illegal texture sizes. The real h/w was just handling it somehow, whilst we were returning null for the textures. This might produce junk textures for the lower mipmaps, but this can be clamped in a later update. 2017-12-13 01:21:25 +00:00
Ian Curtis 62d9584b0d Shift fog maths to fragment shader to fix bug in virtua on. 2017-11-23 17:51:51 +00:00
Ian Curtis bddc86aba9 The vertex shader is run before clipping is done. If fogging values are calculated and clamped in the vertex shader it can interpolate bad values, since the range has been truncated. This happens if the polys overlap the near plane. The solution to clamp the values in the fragment shader. This fixes a bunch of fogging errors I long thought were transparency related errors in the ocean hunter. 2017-11-20 22:21:15 +00:00
Ian Curtis bc7f1e9fac Fixed shading also works with untextured polys. Fixes some shading issues in La machineguns. (Harry Tuttle) 2017-11-07 00:15:57 +00:00
Ian Curtis df44ad458b Update step 1.5 luminous logic with Harry's findings. Fixes various shading issues. 2017-11-05 13:25:33 +00:00
Ian Curtis 8e13c3bbb9 Finish the hash function (Harry Tuttle) 2017-10-19 20:48:53 +00:00
Ian Curtis 7f6df0cc84 Remove fixed shading check from specular. 2017-10-07 12:39:30 +00:00
Ian Curtis eb798ed15e Star wars is the only game to pass unsigned fixed shaded values (per vertex brightness) to the renderer. Originally we thought that the specular flag would turn on unsigned values since it's the only game to set specular with these polys, but this logic turned out to be incorrect. The JTAG interface seems to config the GPU to turn on this functionality. (Harry Tuttle) 2017-10-05 19:15:00 +00:00
Ian Curtis 43cf6b3bbf update spotlight code (Harry Tuttle) 2017-10-05 18:49:08 +00:00
Bart Trzynadlowski 2397b8225a New, saner Makefiles. They still require some customization but share a core Makefile include with auto-generation of dependencies. Multi-threaded building (e.g., make -j6) is supported now. 2017-10-05 02:14:02 +00:00
Ian Curtis 9bac7836ed add missing header 2017-09-30 19:05:04 +00:00
Bart Trzynadlowski 3ca37089ca Get rid of unused variable warning 2017-09-27 13:20:09 +00:00
Ian Curtis 0afd9026dc Fix the sky in one of the levels in virtua on. The problem was caused by the fact we didn't split the mesh by the fog % burn through, so all the polys had the same value. We could use a vertex attrib, but % burn through fog is so rarely used and when it is, normally every poly in the mesh has the same value. 2017-09-26 00:30:08 +00:00
Bart Trzynadlowski 1eac755bc3 Fix tiny memory leak 2017-09-25 00:05:10 +00:00
Ian Curtis 0376f74192 work around for visual studio bug 2017-09-24 22:36:12 +00:00
Ian Curtis adecec77de fix missing header 2017-09-24 22:14:39 +00:00
Ian Curtis 7590f50350 cannot specify explicit initializer for arrays - fix for visual studio 2017-09-24 22:03:31 +00:00