pcem_emulator
f58ec1b8e1
Created new branch main
2019-04-18 17:51:35 +00:00
SarahW
0a5198828a
Latch Voodoo vertices at the start of triangle_setup() before sorting to prevent any races.
2019-04-17 18:04:05 +01:00
SarahW
18a293d5cc
Flush MMU cache on CPU soft reset. Fixes hang on reset under some configurations.
2019-04-14 21:40:32 +01:00
SarahW
d527736d21
ARM64 fixes - mask off immediate data in UOP_MOV_IMM to the destination size, and add UOP_MOVZX_REG_PTR_16 to uop list.
2019-04-14 17:03:07 +01:00
SarahW
f7c7f46712
Add missing ARM64 file to Makefile.am
2019-04-14 15:38:45 +01:00
SarahW
f4074eaacd
Add better immediate handling to ARM64 backend.
2019-04-14 15:38:13 +01:00
SarahW
9a49a75eaf
IDE soft reset should also reset ATAPI devices. Should fix at least some 'Device failed to request command' errors.
2019-04-14 13:47:20 +01:00
SarahW
de177759f7
Fix EA calculations on 3DNow PREFETCH instruction
2019-04-11 20:58:07 +01:00
SarahW
e2cddb8759
Fix Mach64 pixel clock.
2019-04-10 22:13:25 +01:00
SarahW
c0a7fcb343
Correct code present mask when using 16-bit addressing. Fixes graphics issues on Windows 9x with VGA 16-colour driver.
2019-04-10 22:05:26 +01:00
SarahW
c79074c980
Fix timer bug in AudioPCI.
2019-04-10 20:31:31 +01:00
SarahW
73c20a723f
Clear integer registers on CPU reset. Fixes hang on reboot on VA-503+.
2019-04-10 20:28:45 +01:00
SarahW
b2e236e720
Mark FINIT as ending a code block. Fixes crash in Armoured Fist II.
2019-04-09 22:19:39 +01:00
SarahW
fc369826a4
Fix start address when calculating block size. Fixes rendering issues in Wolfenstein 3D.
2019-04-02 20:40:40 +01:00
SarahW
8a91051e25
SST flash now keeps local copy of flash data to write back on device close. Prevents flash corruption when switching models and PCem loads the new BIOS before writing out the old flash.
2019-04-01 21:38:21 +01:00
SarahW
7f99cb7fb1
Use correct value for MAX_INSTRUCTION_COUNT.
2019-04-01 21:24:32 +01:00
SarahW
a0ab14f56f
When unrolling a loop, set op_32, ea_seg and ssegs to the correct values at the start of the loop. Fixes mode setting on Bahamas 64 and most likely some other bugs.
2019-04-01 21:23:09 +01:00
SarahW
7a68bca85f
Fixed some ARM64 build warnings.
2019-03-31 18:23:34 +01:00
SarahW
3890ffdff0
Fixed multiple definition of REG_SP in ARM64 backend. Fixes build warnings, also fixes Windows 3.x.
2019-03-31 18:23:21 +01:00
SarahW
584e67845b
Added ROL, ROR and NOP uops to ARM and ARM64 backends.
2019-03-31 18:21:56 +01:00
SarahW
e3d5309e23
Added SST 39SF010 flash for VA-503+.
2019-03-31 11:29:07 +01:00
SarahW
78572ba468
Added register barriers to LOOPE and LOOPNE. Fixes crash in Age of Empires II.
2019-03-30 21:01:20 +00:00
SarahW
12d73e8a95
Fix zero sized recompiled shifts. Fixes hang in Gunmetal.
2019-03-30 19:45:29 +00:00
SarahW
e8f39da459
Add recompiled versions of ROL and ROR.
2019-03-30 16:10:00 +00:00
SarahW
e2a1ae696f
Added lazy flags for ROL and ROR.
2019-03-30 14:41:02 +00:00
SarahW
8b197e22da
Improved interpreter implementations of ROL and ROR.
2019-03-29 21:06:01 +00:00
SarahW
b77bce1efd
Clear page_mask2 when the second page in a block is inaccessible.
2019-03-28 20:38:33 +00:00
SarahW
efef231d7d
Restore correct CS value when aborting in stack operations in CALL far instructions.
2019-03-28 20:37:55 +00:00
SarahW
56a01a0e04
Provide dummy timing for unknown (usually illegal) opcodes in K6 timing code.
2019-03-26 22:02:00 +00:00
SarahW
61722f120c
Fix block mask calculation. Fixes rendering errors in Blood.
2019-03-25 19:59:46 +00:00
SarahW
7e099c277e
Added basic loop unrolling. Blocks that end in a JMP, LOOP or conditional branch to a previous instruction in the block will be unrolled up to 10 times.
2019-03-25 19:07:51 +00:00
SarahW
b35cf7de09
Fix codegen timing flush at end of a block.
2019-03-22 20:31:57 +00:00
SarahW
52f5f43d82
Fix PC value following FSTCW/FSTSW.
2019-03-22 20:31:29 +00:00
SarahW
4b99070fc0
Flush accumulators before call to non-recompiled instruction.
2019-03-16 15:47:49 +00:00
SarahW
cd9e228b6d
Move CODEBLOCK_IN_DIRTY_LIST check to after checking if block needs to be flushed. Improves performance in Eradicator.
2019-03-16 15:46:48 +00:00
SarahW
ab124776a0
Rework self modifying code handling.
...
Code blocks now have a varying level of granularity in the page and dirty masks.
Most blocks have 64-byte granularity, but blocks that are repeatedly modified
drop to 1-byte granularity. This reduces the maximum size of the affected block
significantly, but reduces recompilation due to data located too close to code.
If the block is still marked as dirty, then it is recompiled without any
immediate instruction parameters being baked into the recompiled code, instead
being fetched from the RAM array as needed. This severely reduces recompilation
rates on some SMC-heavy games, eg Duke Nukem 3D, System Shock, Screamer etc,
giving a major speedup.
2019-03-16 14:53:26 +00:00
SarahW
063ffb4eab
Update Makefile.mingw-wx-sdl2.
2019-02-14 19:39:47 +00:00
SarahW
01e86135ab
Tweak FDC command timing and add register access waitstates. Fixes floppy in Windows 98 with VA-503.
2019-02-13 22:12:53 +00:00
SarahW
a73081f0bd
Fix ARM and ARM64 build errors.
2019-02-13 21:11:27 +00:00
SarahW
3f2d9ecf87
Optimise out redundant uOPs, where the output register is never read.
2019-02-10 12:32:25 +00:00
SarahW
84622584e2
Move CPU tables to separate file.
2019-02-08 21:34:02 +00:00
SarahW
ce4436054d
Replace cpu_has* flags with single cpu_features variable and cpu_has_feature() getter.
2019-02-08 21:22:53 +00:00
SarahW
03b5a44aca
More CPU sanitisation.
2019-02-08 21:17:56 +00:00
SarahW
2554952658
Remove unused checkio_perm() macro.
2019-02-08 19:36:30 +00:00
SarahW
5b58b202a1
More CPU sanitisation.
2019-02-07 22:10:34 +00:00
SarahW
1b8a1e79af
Move common 386+ functions and variables out of 386.c and 386_dynarec.c and into new 386_common.c.
2019-02-07 22:09:59 +00:00
SarahW
dd68b19f0a
Second CPU sanitising pass.
2019-02-07 21:53:44 +00:00
SarahW
1af0b660b3
First pass at sanitising CPU headers.
2019-02-07 21:30:53 +00:00
SarahW
2735920f58
De-duplicate allocation code in mem_init().
2019-02-07 20:34:06 +00:00
SarahW
3c2dbf063e
Remove unused and superfluous variables from mem.c.
2019-02-07 20:23:14 +00:00