Commit Graph

11753 Commits

Author SHA1 Message Date
Stanislav Shwartsman
9abd8ba8fa old legacy disasm: omit printing rep prefix if no repeatable opcode 2017-12-28 20:52:46 +00:00
Stanislav Shwartsman
9659641cbf distinguish between vzeroupper/vzeroall in old legacy disasm 2017-12-28 20:20:13 +00:00
Stanislav Shwartsman
4c03fe3e2c fixed disasm of vcvtps2ph/ph2ps opcodes 2017-12-28 19:59:42 +00:00
Volker Ruppert
c505716ff1 First step of the Voodoo code restructuring. Now we have a base class
bx_voodoo_base_c that contains the shared code and the new classes
bx_voodoo_1_2_c and bx_banshee_c with the specific implementations. There are
not functional changes yet. TODO: The Banshee specific stuff could be moved to
separate files, but should still remain in the same plugin as Voodoo 1/2.
2017-12-28 09:54:22 +00:00
Stanislav Shwartsman
27a7925810 fix for MOV to CR3 in long mode with PCID enabled - patch by Kent Williams 2017-12-25 19:49:45 +00:00
Volker Ruppert
d5e2fbed00 Some work on the Voodoo Banshee emulation.
- Fixed alignment for unpacked monochrome source data in case the calculated
  required amount of data for one row is more than the given source pitch.
  In even rows the leftmost pixel comes from the LSB bit #7 as expected.
  In odd rows the whole row is aligned to the next dword boundary (the rightmost
  pixel comes from the MSB bit #0). This alternating alignment is not documented,
  but fixes some bitmaps (e.g. Win95 login / logout dialogs).
- Fixed calculation of host-to-screen data size for the pixel alignment > 0 and
  color depth > 8.
- Added minimal support for pixel format conversion (32/24 to 16).
2017-12-25 09:27:00 +00:00
Stanislav Shwartsman
ed8fa8ac61 fix compilation with no AVX enabled 2017-12-24 15:38:21 +00:00
Volker Ruppert
625f3cf6f5 Some small changes for the Voodoo Banshee emulation.
- Also set the "Banshee busy" flag if one of the CMDFIFOs is busy.
- Fixed CMDFIFO error message condition.
- Tiled source pitch is only used for screen-to-screen operations.
2017-12-24 10:15:34 +00:00
Volker Ruppert
2cbe839deb Fixed outdated start address for the system BIOS image and added link to
'romimage' option.
2017-12-24 09:37:02 +00:00
Stanislav Shwartsman
32661d4de6 supposed to fix osx compilation 2017-12-22 08:35:04 +00:00
Stanislav Shwartsman
ca034f0642 fixed disasm of sse insertps instruction 2017-12-21 18:18:10 +00:00
Volker Ruppert
6adba30922 Some small changes for the Voodoo Banshee emulation.
- Use the CMDFIFO wakeup on vertical retrace only for the 3D mode.
- Report screen mode change (2D, 3D, mixed).
- Added BX_ERRORs for currently unsupported pixel format conversion.
2017-12-20 22:12:54 +00:00
Stanislav Shwartsman
59c542fb06 fix disasm of FISTTP opcodes 2017-12-19 20:36:55 +00:00
Stanislav Shwartsman
4337a062e2 disasm memsize for gather opcodes 2017-12-19 19:51:55 +00:00
Stanislav Shwartsman
15187110ef implement disasm of implicit memory reference for maskmovdqu/maskmovq opcodes. fix vmaskmovdqu disasm for legacy disasm as well 2017-12-19 19:45:30 +00:00
Stanislav Shwartsman
e086f7ba19 split INSERTPS opcode to reg and mem forms 2017-12-19 19:25:40 +00:00
Volker Ruppert
b30ec133a3 Some work on the Voodoo Banshee emulation.
- Only continue bitblt operation if width and height is > 0 after clipping.
- Temporary hack: Processing CMDFIFO packets directly after completion fixes
  some display issues (FIXME: 3D mode should work like Voodoo2).
2017-12-17 22:23:20 +00:00
Stanislav Shwartsman
4b7d7c9501 align UD opcodes with latest Intel SDM in old disasm 2017-12-17 18:55:03 +00:00
Stanislav Shwartsman
ce3eafa535 disasm fix 2017-12-17 18:47:21 +00:00
Stanislav Shwartsman
79ec183ff6 fixup for MMX opcodes disasm 2017-12-17 17:21:02 +00:00
Volker Ruppert
b2a92fddfa Voodoo Banshee code cleanups and optimizations. 2017-12-17 16:55:10 +00:00
Stanislav Shwartsman
e0c3433f7f bugfix in old disasm 2017-12-16 19:34:14 +00:00
Stanislav Shwartsman
5dc5e01a12 disasm fixes and reorg of pinsr* opcodes 2017-12-16 18:34:20 +00:00
Volker Ruppert
96f269d453 Some work on the Voodoo Banshee emulation.
- Handling variable 'gui_update_pending' like Voodoo 1/2 fixes 3D display
  flicker. Simplified first stage of the update() code. Some 3D display issues
  still need to be investigated.
- Added missing 16-bit write support in 3D memory space.
- Added separate method for linear FB writes und use it for CMDFIFO packet type
  5, destination code 0. Added minimal "byte disable" support in this code.
2017-12-15 20:54:09 +00:00
Stanislav Shwartsman
6a4e8ff2f1 fixed typo in prev commit 2017-12-13 21:08:10 +00:00
Stanislav Shwartsman
f362f34ed6 correctly decode PINSRQ instruction 2017-12-13 20:59:41 +00:00
Stanislav Shwartsman
69b29c3e15 added compilation instructions for bxdisasm_new.cc 2017-12-13 20:27:02 +00:00
Stanislav Shwartsman
50a799ea11 split handlers for PINSRD/Q opcodes. fix disasm for MULX instruction 2017-12-13 20:18:59 +00:00
Stanislav Shwartsman
07bff3be43 fixed decoding of VPINSRB/W/D/Q and VINSERTPS with EVEX prefix 2017-12-13 20:02:12 +00:00
Stanislav Shwartsman
8a311515dd correctly decode VPEXTRB/W/D/Q - these opcodes allowed to be with VEX.L=0 only
fixed disasm module compilation with no AVX enabled
remove duplicate opcode handlers
2017-12-13 19:51:25 +00:00
Stanislav Shwartsman
2f3c9d3c8c correct disasm for movsxd opcode 2017-12-13 18:44:13 +00:00
Volker Ruppert
47f3936de2 Some work on the Voodoo Banshee emulation.
- Added Banshee specific registers in register_w() since they use the same
  addresses as the Voodoo2 CMDFIFO config registers in register_w_common().
  Now the fullscreen 3D mode is basicly working. The display flickers sometimes
  and the desktop is possibly unusable after leaving 3D mode. This may be
  caused by the still incorrect CMDFIFO implementation.
- Split the host-to-screen method in two ones: one for the pattern case (ternary
  ROPs) and one optimized for the standard case (binary ROPs).
- Improved the foreground/background color handling for bitblt operations.
2017-12-13 18:40:45 +00:00
Stanislav Shwartsman
df877cc03d adjustments to old disasm done during validation of new disasm 2017-12-13 18:18:20 +00:00
Stanislav Shwartsman
c1dc514c2a clarify disasm of movlhps/movhlps opcodes 2017-12-12 08:55:09 +00:00
Stanislav Shwartsman
fd953421f4 new disasm: add correct memaccess size for FLDCW 2017-12-11 19:58:09 +00:00
Stanislav Shwartsman
a84d9cf1c7 disasm: fix crc32 operand description 2017-12-11 19:45:50 +00:00
Stanislav Shwartsman
a028ef7c9c bugfix for decoder with EVEX enabled 2017-12-11 19:29:11 +00:00
Stanislav Shwartsman
e46f37b40e fixed disasm of memsize for sse legacy instructions 2017-12-11 18:33:33 +00:00
Stanislav Shwartsman
404a5f2c53 bugfix for previous commit 2017-12-11 16:41:48 +00:00
Stanislav Shwartsman
b03f78d652 updates for bochs decoder and decoder based disasm 2017-12-11 15:45:43 +00:00
Volker Ruppert
99a90c295a Some work on the Voodoo Banshee emulation.
- Prepared update() code for 3D support (not yet working).
- Attempt to fix the LFB base address.
- CMDFIFO packet type 5: Added support for destination code 0 (linear FB).
2017-12-10 16:39:11 +00:00
Volker Ruppert
d621db4c81 USB xHCI fixes for Win 8.1 by Ben Lunt. 2017-12-09 11:18:18 +00:00
Volker Ruppert
df6246601e Some fixes for the Voodoo Banshee emulation.
- Always check if CMDFIFO is still enabled in the FIFO thread loop.
- Fixed offset for 3D register access (3D still not usable).
- Apply FBI mask when accessing memory in tiled desktop mode to avoid segfault.
- Added support for 16-bit writes to LFB.
- Don't access Voodoo2 CMDFIFO in Banshee mode.
- Set up the correct chipmask for Banshee (it has only one TMU).
- Fixed CMDFIFO enable message (using index #0 and #1).
2017-12-08 18:24:54 +00:00
Volker Ruppert
dd694757f4 Attempt to fix the calculation of the source pitch and the total amount of
dwords required for host-to-screen operations. There are no related error
messages in the log when I test 8, 24 and 32 bpp modes. There are still display
errors caused by buggy code, incorrect CMDFIFO implemenation or undocumented
features. The 16 bpp mode is still unusable possibly caused by CMDFIFO. 3D mode
testing cannot start before this mode is okay.
2017-12-06 21:36:08 +00:00
Stanislav Shwartsman
c80e587ded properly handle kmask registers in modrm form 2017-12-05 19:33:23 +00:00
Stanislav Shwartsman
8f15cfb514 fixed link err with debugger enabled 2017-12-05 19:23:41 +00:00
Volker Ruppert
54650e8cd1 Fixed possible compilation error (thanks to Ben Lunt). 2017-12-03 08:09:47 +00:00
Volker Ruppert
93b51df2cb Including stdint.h is not required here, since we are using Bit8u, Bit16u etc,
(thanks to Ben Lunt).
2017-12-03 07:56:45 +00:00
Volker Ruppert
aca3c9a29c Some work on the Voodoo Banshee emulation.
- Host-to-screen blt: Added support for host data word wizzling.
- Added variable 'vtimer_running' to simplify the CMDFIFO code.
- Minor other change.
2017-12-02 17:15:48 +00:00
Stanislav Shwartsman
31ea453921 fixed bogus assert 2017-12-02 16:40:03 +00:00