mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2025-01-13 11:49:06 +01:00
[Core/CPU] improved 68k MOVEM instruction accuracy (implements extra read cycle from memory as verified on real hardware, cf https://gendev.spritesmind.net/forum/viewtopic.php?t=2010)
This commit is contained in:
parent
771452f7a1
commit
6b1dfa1cef
@ -119,6 +119,7 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke)
|
||||
---------------
|
||||
* added Z80 wait-states on 68k bus access (fixes Remute Red Eyes demo)
|
||||
* improved 68k auto-vectored interrupts acknowledge cycle timing accuracy (Bubsy background color corruption during cutscenes)
|
||||
* improved 68k MOVEM instruction accuracy (implements extra read cycle from memory as verified on real hardware)
|
||||
* fixed 68k undocumented behaviors for ABCD/SBCD/NBCD instructions (thanks to Flamewing for his test ROM)
|
||||
* fixed 68k timing of BTST Dn,#Imm instruction (verified by Flamewing in original microcode)
|
||||
* fixed 68k timings of ANDI.L #Imm,Dn, ADDQ.W #Imm,An and TAS instructions (cf. Yacht.txt)
|
||||
|
@ -15231,6 +15231,9 @@ static void m68k_op_movem_16_er_pi(void)
|
||||
}
|
||||
AY = ea;
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if target hardware is impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15250,6 +15253,9 @@ static void m68k_op_movem_16_er_pcdi(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if target hardware is impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15269,6 +15275,9 @@ static void m68k_op_movem_16_er_pcix(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15288,6 +15297,9 @@ static void m68k_op_movem_16_er_ai(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15307,6 +15319,9 @@ static void m68k_op_movem_16_er_di(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15326,6 +15341,9 @@ static void m68k_op_movem_16_er_ix(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15345,6 +15363,9 @@ static void m68k_op_movem_16_er_aw(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15364,6 +15385,9 @@ static void m68k_op_movem_16_er_al(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_W);
|
||||
}
|
||||
|
||||
@ -15384,6 +15408,9 @@ static void m68k_op_movem_32_er_pi(void)
|
||||
}
|
||||
AY = ea;
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15403,6 +15430,9 @@ static void m68k_op_movem_32_er_pcdi(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15422,6 +15452,9 @@ static void m68k_op_movem_32_er_pcix(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15441,6 +15474,9 @@ static void m68k_op_movem_32_er_ai(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15460,6 +15496,9 @@ static void m68k_op_movem_32_er_di(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15479,6 +15518,9 @@ static void m68k_op_movem_32_er_ix(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15498,6 +15540,9 @@ static void m68k_op_movem_32_er_aw(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
@ -15517,6 +15562,9 @@ static void m68k_op_movem_32_er_al(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
/* MOVEM extra read cycle (can have side effect if extra address is not mapped or mapped to hardware impacted by read access) */
|
||||
m68ki_read_16(ea);
|
||||
|
||||
USE_CYCLES(count * CYC_MOVEM_L);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user