Commit graph

225 commits

Author SHA1 Message Date
Bart Trzynadlowski 47253d8398 Fixed graphics analysis -gfx-state option 2023-11-11 13:55:02 -08:00
Bart Trzynadlowski a57b379498 DSB.h: when generating a debug build in gcc w/ -g, k_framePeriod was causing a linker error. Not sure why k_timerPeriod wasn't but made them both constexpr. 2023-11-11 13:46:05 -08:00
Ian Curtis 8dda8e9105 Fix the line of sight function.
Polygons have a line of sight value that's either a 0 or 1. We write this value into the stencil buffer, then read the app can read it back to determine the polygon attribute is visible or not. The returned value is 1/depth value in world coordinates. The first bit of the float is actually a control bit, 1 indicates no geometry hit, 0 indicates geometry hit.
2023-11-03 13:24:59 +00:00
Ian Curtis 6595b9320e Rewrite the renderer a bit to spit out the finished graphics from the 3d chip on separate buffers. One buffer is for opaque pixels, and 2 more for translucent pixels. Before the frame was composited on the back buffer, which meant the tilegen had to have been drawn first. This way the images are now totally independant of the tilegen chip so can be drawn as soon as the register write 0xC is written to the tilegen.
Some games update the tilegen after the ping_ping bit has flipped at 66% of the frame, so we need to split the tilegen drawing up into two stages to get some effects to work. So having the tilegen draw independantly of the 3d chip can make this happen.
2023-10-14 20:05:00 +01:00
Bart Trzynadlowski 7867c0145e
Model3.cpp: Comment describing scan line timing. 2023-09-25 14:45:57 +02:00
Matthew Daniels 801945d066 Whitespace 2023-09-25 14:41:35 +02:00
gm-matthew 24d24db988 Ping-pong flip timing depends of the value of tilegen register 0x08
Also make the debugger display 16 bytes per line when using the "listmemory" command. Mirrored system registers can now be watched
2023-09-25 14:41:35 +02:00
gm-matthew b2fee4242c DMA device register always returns Step 1.x PCI ID
Step 2.x games by AM3 request PCI ID this way and expect to see 0x16c311db
2023-08-20 17:43:40 -07:00
gm-matthew 015e8e9212 Drive board uses the value 0xFF (not 0x00) on ports 42 and 45 to stop all effects when port 46 is set to 0xFF; fixes FFB effects continuing after game ends 2023-07-01 23:21:51 -07:00
CapitaineSheridan 18f3c23a9f Work around to prevent I/O error after a while on fishing games with tension 2023-05-07 21:41:57 -07:00
CapitaineSheridan 7e025e64a2 Memory allocated but not released. 2022-12-28 18:24:11 -08:00
Matthew Daniels 7513cc769a Update Model3.cpp
whitespace
2022-11-25 15:27:12 -08:00
gm-matthew 6a392f2cc9 Add comment 2022-11-25 15:27:12 -08:00
gm-matthew 916d3d3af1 whitespace 2022-11-25 15:27:12 -08:00
gm-matthew 2063303a4d Wait until IRQ2 is acknowledged before starting IRQ40 sequence. Fixes Ski Champ hanging at FBI screen when region set to USA 2022-11-25 15:27:12 -08:00
gm-matthew 79a2414f3f Incomplete texture headers uploaded via FIFO are now discarded. Ski Champ sends one more 32-bit word via DMA than it should which was causing Supermodel to erroneously intepret the extra word as another texture 2022-11-19 21:06:39 -08:00
toxieainc 4c727abdc8 change all INT16 mixing/intermediate clamping to floats
also fixes 3 bugs:
1) mpeg right channel volume was always using the left channel volume, too
2) too high MusicVolume setting was not clamped to 0..200
3) too high SoundVolume setting was not clamped to 0..200
2022-11-06 13:00:13 -08:00
toxieainc b98be0c2e7 optimize ReadRegister, as localtime (at least on MSVC/Windows) is significantly showing up in profiling
e.g. in SW Trilogy

caches localtime until time changes (i.e. limits calls to 1/sec)
2022-07-11 18:47:13 +02:00
toxieainc 4961951a89 fix a real error (m68kdasm) and some harmless performance warnings and use modern headers 2022-07-11 18:10:41 +02:00
toxieainc e0053b3a46 fix some real errors (Model3,InputSystem), minor errors (SCSP,SDL/Main) and some performance warnings 2022-07-11 17:43:59 +02:00
Ian Curtis a742a73772 njz3: Fix sound volume with new quadrophonic audio code 2022-06-19 16:15:54 +00:00
Ian Curtis 83e7b5f45d njz3: Proper quadrophonic audio support. Need 4+ speakers to take advantage otherwise down mixed to stereo. 2022-06-09 21:10:39 +00:00
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
Matthew Daniels 646b46fd4b Adjust the number of PowerPC cycles executed per frame to assume 57.524 Hz refresh rate
Fighting Vipers 2 attract mode no longer requires 100+ MHz to run smoothly

Supermodel itself still runs at 60 Hz
2022-01-23 15:32:53 +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 94772ae3d9 Include required header files in Model3GraphicsState.h - fixes potential build errors in GCC 2021-12-15 13:55:27 +00:00
Matthew Daniels 0c47ac831a Increase MIDI FIFO buffer size for SCSP; should prevent FIFO overflows
Also use similar macro for DSB FIFO buffer
2021-11-30 23:01:37 +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
Matthew Daniels 50465f9a5a Shared RAM on simulated netboard is now double-buffered; Spikeout Final Edition no longer requires a hack to work.
Preparing to enable simulated netboard to run in its own thread
2021-11-05 00:23:29 +00:00
Matthew Daniels b62110617b New JTAG patch for Sega Rally 2; linked mode now fully working.
Few other minor changes
2021-10-30 23:00:49 +00:00
Matthew Daniels 94d8a1b22d Increase size of DSB2 FIFO buffer; fixes Sega Rally 2 music occasionally not switching or fading out 2021-10-26 22:47:24 +00:00
Matthew Daniels a20366d338 Fix netboard resets and detection of simulated netboard linking to itself 2021-04-19 22:15:50 +00:00
Matthew Daniels 5a570ce7fe Adding simulated netboard; all linked games except Sega Rally 2 working at full speed. 2021-04-14 01:20:45 +00:00
Matthew Daniels 98d4f1c6f6 Corrected alignment issues with netboard RAM; send/receive parameters no longer need to be manipulated to work correctly. Fixes bugs including Scud Race linked car orientation. 2021-03-22 01:08:45 +00:00
SpinDizzy 020e2d1b32 DSB2 clock speed from 4MHz to 11MHz. 2021-03-13 08:17:11 +00:00
SpinDizzy de470aaf52 Fixed cycle counting overflow that was causing DSB2 to halt execution. 2021-03-07 10:12:37 +00:00
Ian Curtis 6cf9974102 missing header 2021-03-03 20:31:57 +00:00
SpinDizzy 46b1de2238 DSB2 IRQ 2 now fires at 1KHz rather than once per frame, improving
music timing in Daytona USA 2 and Sega Rally 2. DSB1 CPU timing 
increased from 1MHz to 4MHz, improving music fade timing in Scud Race. 
Thanks to gm_matthew for these discoveries.
2021-03-03 15:30:19 +00:00
Ian Curtis e3374256ff Just a few compile warnings 2021-02-20 22:19:16 +00:00
Ian Curtis 0bfc2aea31 Fix project file 2021-02-19 11:03:48 +00:00
SpinDizzy e4998f57fd Skichamp Driveboard error fix. 2021-02-18 10:35:38 +00:00
SpinDizzy 08d4735ee8 Huge refactor of the Driveboard:
-Separate each possible boards (wheel, joystick, skipad, billboard).
-Defined a Driveboard type in Games.xml for each games.
-Due to the refactoring, Driveboard Savestates have changed (a common base data + a specific board data are saved).
-Backwards compatibility with previous save states is maintained.
-Driveboard rom section is no longer required anymore. This disables Driveboard emulation in case the rom is not found.
-Added Billboard emulation (vf3, vs2, fvipers2, von2). 7 segments and lamps Outputs are redirected to Supermodel outputs.
-Changes project to C++ 17 standard.
2021-02-18 10:29:15 +00:00
SpinDizzy 6627b1e95f The controls of bass/getbass games were no longer good, following recent rom set name changes in Games.xml. 2021-01-05 14:24:57 +00:00
SpinDizzy 6626afc8bb Added rumble skipad in Ski Champ game.
This is only a simulation (cmd are interpreted), not an emulation because we lack informations on the game itself and its driveboard (does it have dedicated cpu/rom ?).
2020-12-30 17:14:14 +00:00
SpinDizzy 1f50519905 Magical Truck Adventure rom patch to unlock region. (enter service menu, then Start P1, Start P1, Service, Start P1, Service, Test) 2020-12-21 15:39:15 +00:00
SpinDizzy 5143669cb9 Star Wars Trilogy lever feedback activated 2020-10-24 09:12:54 +00:00