Commit graph

163 commits

Author SHA1 Message Date
Ian Curtis e1827cfd13 Stretch the time the ping_pong bit flips a bit to bump writes into correct frame. Otherwise they end up getting written at like 99.8% of the frame and overlapping with the next. 2019-11-08 20:36:11 +00:00
Ian Curtis 2e6968fe9d Thanks to our anonymous contributor who managed to patch a model 3 game and run it on real h/w, we were able to obtain some timing values we had been long been missing for correct emulation. The h/w polls something called the ping_pong bit at start-up to sync the GPU with the CPU. Unfortunately we didn't have the correct values and just manually used some per game hacks to get games to run. This mostly worked, but some games were writing more or less frames than they should have been for a given time period. When the ping_pong bit flips at 66% of the frame time, games were writing data for a new frame, which meant writes were often straddling 2 separate frames. We aren't 100% sure if IRQ2 or the ping_pong bit is vblank. 2019-11-07 20:29:17 +00:00
Ian Curtis 8aa476aeeb Previous mpeg audio code worked for me in debug mode, but the release build had some serious corruption issues when being built in visual studio. Replaced the old spaghetti code with a more modern implementation. 2019-02-21 14:56:25 +00:00
SpinDizzy 6fe878b1d3 Restore Sega Rally 2 music in some practice stages 2019-02-07 06:32:46 +00:00
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
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 78039e91a8 2018-10-28 18:30:04 +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 9f5a19a04a Use correct PCI IDs (Harry Tuttle) 2018-07-09 08:06:06 +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 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
Ian Curtis f7678d918e remove using namespace from headers .. 2018-01-03 17:51:24 +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 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
Bart Trzynadlowski 3ca37089ca Get rid of unused variable warning 2017-09-27 13:20:09 +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 7590f50350 cannot specify explicit initializer for arrays - fix for visual studio 2017-09-24 22:03:31 +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 f6707ecfba Fixed graphics state analyzer 2017-04-04 23:28:06 +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 ff624afb4d The mipmap data in some games seems to being sent behind the base textures, and when the base textures are bound and created the mipmap chain is not yet valid in memory. To fix this, we invalidate the base textures, when the mipmap chain is updated. 2017-03-25 00:06:24 +00:00
Ian Curtis 17f7c2d9f6 use 32bit types 2017-03-23 17:18:33 +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
Ian Curtis 519cce34f5 remove debug code 2017-03-19 09:54:51 +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 2ddc8a30e0 Clear queued texture uploads after processing them. Saves re-uploading the same textures whilst paused 2016-11-20 17:02:59 +00:00
Ian Curtis 10dd530cde More accurate 2D colours. White should map to 255 not 248 2016-11-15 12:44:47 +00:00