Bart Trzynadlowski
3f6937e1a6
When dumping textures, two T1RGB5 texture maps are written: with and without contour processing. Contour processing can be disabled per-polygon and some textures intended to be used without contour processing contain pixels with T=1 that are clearly not supposed to be transparent. We now output textures_t1rgb5_contour.bmp and textures_t1rgb5_opaque.bmp.
2022-02-05 00:52:34 +00:00
Bart Trzynadlowski
32933ef9b0
Added a -dump-textures option (config key DumpTextures) that writes texture BMP files, one for each known format (12 in all currently)
2022-02-01 23:15:06 +00:00
Ian Curtis
b8aac0a4f8
white space.
2021-12-17 23:58:20 +00:00
Ian Curtis
6f7130c50b
Better document real3d registers
2021-12-17 23:57:12 +00:00
Matthew Daniels
6ff099b5ba
Clear all Real3D DMA registers on reset; uninitialized values were causing issues with MSVC debug builds
2021-12-17 23:36:54 +00:00
Matthew Daniels
e93c5d710f
PowerPC IRQ line deassertion; DMA only fires interrupts when required
...
PowerPC no longer clears its own IRQ line; it is now cleared by the IRQ controller when there are no more pending interrupts. Not all games clear DMA interrupts so it was necessary to tweak the 53C810 SCSI controller and the Real3D DMA interface to only fire interrupts if a certain register is correctly set. 53C810 has the documented DIEN (DMA Interrupt Enable) register; Real3D DMA seems to use the low bit of the dmaConfig register.
Also I removed the net IRQ as no games seem to actually use it.
2021-11-28 01:11:11 +00:00
Matthew Daniels
9ffce8b92a
Getting rid of most of the includes from Supermodel.h; each file now explicitly includes the header files it needs.
...
Making changes to a header file should no longer force the entire project to recompile.
2021-11-22 17:15:06 +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
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
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
9f5a19a04a
Use correct PCI IDs (Harry Tuttle)
2018-07-09 08:06:06 +00:00
Ian Curtis
0b6da91cc0
add the rest of the network board code (Spindizzi)
2018-01-07 14:07:59 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
abd86a5624
- Cleaned up game names (primary sets no longer have revision labels in title).
...
- Added volume controls to UI.
- Renamed "Sega Rally Controls" to "Sega Rally/Dirt Devils Controls" (even though Dirt Devils has no hand brake).
- Hooked up gear shifting and view change for Dirt Devils.
- Removed debug printf()'s from DSB.cpp.
- Removed debug printf() from Real3D.cpp.
- Disabled assertions in SCSPDSP.cpp.
- Converted all error messages in Amp library to Supermodel format.
2011-09-08 05:08:16 +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
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
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
Bart Trzynadlowski
783446fca2
Fixing import mistake: moving source code to trunk/Src.
2011-04-24 01:19:40 +00:00