Fix start address when calculating block size. Fixes rendering issues in Wolfenstein 3D.
This commit is contained in:
parent
8a91051e25
commit
fc369826a4
1 changed files with 4 additions and 4 deletions
|
|
@ -401,7 +401,7 @@ void exec386_dynarec(int cycs)
|
||||||
}
|
}
|
||||||
else if (valid_block && !cpu_state.abrt)
|
else if (valid_block && !cpu_state.abrt)
|
||||||
{
|
{
|
||||||
uint32_t start_pc = cpu_state.pc;
|
uint32_t start_pc = cs+cpu_state.pc;
|
||||||
const int max_block_size = (block->flags & CODEBLOCK_BYTE_MASK) ? ((128 - 25) - (start_pc & 0x3f)) : 1000;
|
const int max_block_size = (block->flags & CODEBLOCK_BYTE_MASK) ? ((128 - 25) - (start_pc & 0x3f)) : 1000;
|
||||||
|
|
||||||
cpu_block_end = 0;
|
cpu_block_end = 0;
|
||||||
|
|
@ -447,7 +447,7 @@ void exec386_dynarec(int cycs)
|
||||||
will prevent any block from spanning more than
|
will prevent any block from spanning more than
|
||||||
2 pages. In practice this limit will never be
|
2 pages. In practice this limit will never be
|
||||||
hit, as host block size is only 2kB*/
|
hit, as host block size is only 2kB*/
|
||||||
if ((cpu_state.pc - start_pc) >= max_block_size)
|
if (((cs+cpu_state.pc) - start_pc) >= max_block_size)
|
||||||
CPU_BLOCK_END();
|
CPU_BLOCK_END();
|
||||||
|
|
||||||
if (trap)
|
if (trap)
|
||||||
|
|
@ -477,7 +477,7 @@ void exec386_dynarec(int cycs)
|
||||||
else if (!cpu_state.abrt)
|
else if (!cpu_state.abrt)
|
||||||
{
|
{
|
||||||
/*Mark block but do not recompile*/
|
/*Mark block but do not recompile*/
|
||||||
uint32_t start_pc = cpu_state.pc;
|
uint32_t start_pc = cs+cpu_state.pc;
|
||||||
const int max_block_size = (block->flags & CODEBLOCK_BYTE_MASK) ? ((128 - 25) - (start_pc & 0x3f)) : 1000;
|
const int max_block_size = (block->flags & CODEBLOCK_BYTE_MASK) ? ((128 - 25) - (start_pc & 0x3f)) : 1000;
|
||||||
|
|
||||||
cpu_block_end = 0;
|
cpu_block_end = 0;
|
||||||
|
|
@ -519,7 +519,7 @@ void exec386_dynarec(int cycs)
|
||||||
will prevent any block from spanning more than
|
will prevent any block from spanning more than
|
||||||
2 pages. In practice this limit will never be
|
2 pages. In practice this limit will never be
|
||||||
hit, as host block size is only 2kB*/
|
hit, as host block size is only 2kB*/
|
||||||
if ((cpu_state.pc - start_pc) >= max_block_size)
|
if (((cs+cpu_state.pc) - start_pc) >= max_block_size)
|
||||||
CPU_BLOCK_END();
|
CPU_BLOCK_END();
|
||||||
|
|
||||||
if (trap)
|
if (trap)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue