mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
32x: some timing hacks..
This commit is contained in:
parent
61801d5bc8
commit
8a847c12e6
2 changed files with 18 additions and 2 deletions
|
@ -32,7 +32,7 @@
|
||||||
* sys reg 0004000-00040ff 1 1
|
* sys reg 0004000-00040ff 1 1
|
||||||
* vdp reg 0004100-00041ff 5 5
|
* vdp reg 0004100-00041ff 5 5
|
||||||
* vdp pal 0004200-00043ff 5 5
|
* vdp pal 0004200-00043ff 5 5
|
||||||
* rom 2000000-23fffff 6-15
|
* cart 2000000-23fffff 6-15
|
||||||
* dram/fb 4000000-401ffff 5-12 1-3
|
* dram/fb 4000000-401ffff 5-12 1-3
|
||||||
* fb ovr 4020000-403ffff
|
* fb ovr 4020000-403ffff
|
||||||
* sdram 6000000-603ffff 12 2 (cycles)
|
* sdram 6000000-603ffff 12 2 (cycles)
|
||||||
|
@ -1063,6 +1063,8 @@ static u32 sh2_read8_cs0(u32 a, SH2 *sh2)
|
||||||
{
|
{
|
||||||
u32 d = 0;
|
u32 d = 0;
|
||||||
|
|
||||||
|
sh2_burn_cycles(sh2, 1*2);
|
||||||
|
|
||||||
// 0x3ff00 is veridied
|
// 0x3ff00 is veridied
|
||||||
if ((a & 0x3ff00) == 0x4000) {
|
if ((a & 0x3ff00) == 0x4000) {
|
||||||
d = p32x_sh2reg_read16(a, sh2);
|
d = p32x_sh2reg_read16(a, sh2);
|
||||||
|
@ -1116,6 +1118,8 @@ static u32 sh2_read16_cs0(u32 a, SH2 *sh2)
|
||||||
{
|
{
|
||||||
u32 d = 0;
|
u32 d = 0;
|
||||||
|
|
||||||
|
sh2_burn_cycles(sh2, 1*2);
|
||||||
|
|
||||||
if ((a & 0x3ff00) == 0x4000) {
|
if ((a & 0x3ff00) == 0x4000) {
|
||||||
d = p32x_sh2reg_read16(a, sh2);
|
d = p32x_sh2reg_read16(a, sh2);
|
||||||
if (!(EL_LOGMASK & EL_PWM) && (a & 0x30) == 0x30) // hide PWM
|
if (!(EL_LOGMASK & EL_PWM) && (a & 0x30) == 0x30) // hide PWM
|
||||||
|
@ -1206,6 +1210,15 @@ static void REGPARM(3) sh2_write8_sdram(u32 a, u32 d, SH2 *sh2)
|
||||||
Pico32xMem->sdram[a1 ^ 1] = d;
|
Pico32xMem->sdram[a1 ^ 1] = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void REGPARM(3) sh2_write8_sdram_wt(u32 a, u32 d, SH2 *sh2)
|
||||||
|
{
|
||||||
|
// xmen sync hack..
|
||||||
|
if (a < 0x26000200)
|
||||||
|
sh2_end_run(sh2, 32);
|
||||||
|
|
||||||
|
sh2_write8_sdram(a, d, sh2);
|
||||||
|
}
|
||||||
|
|
||||||
static void REGPARM(3) sh2_write8_da(u32 a, u32 d, SH2 *sh2)
|
static void REGPARM(3) sh2_write8_da(u32 a, u32 d, SH2 *sh2)
|
||||||
{
|
{
|
||||||
u32 a1 = a & 0xfff;
|
u32 a1 = a & 0xfff;
|
||||||
|
@ -1609,7 +1622,8 @@ void PicoMemSetup32x(void)
|
||||||
// CS3 - SDRAM
|
// CS3 - SDRAM
|
||||||
sh2_read8_map[0x06/2].addr = sh2_read8_map[0x26/2].addr =
|
sh2_read8_map[0x06/2].addr = sh2_read8_map[0x26/2].addr =
|
||||||
sh2_read16_map[0x06/2].addr = sh2_read16_map[0x26/2].addr = MAP_MEMORY(Pico32xMem->sdram);
|
sh2_read16_map[0x06/2].addr = sh2_read16_map[0x26/2].addr = MAP_MEMORY(Pico32xMem->sdram);
|
||||||
sh2_write8_map[0x06/2] = sh2_write8_map[0x26/2] = sh2_write8_sdram;
|
sh2_write8_map[0x06/2] = sh2_write8_sdram;
|
||||||
|
sh2_write8_map[0x26/2] = sh2_write8_sdram_wt;
|
||||||
sh2_write16_map[0x06/2] = sh2_write16_map[0x26/2] = sh2_write16_sdram;
|
sh2_write16_map[0x06/2] = sh2_write16_map[0x26/2] = sh2_write16_sdram;
|
||||||
sh2_read8_map[0x06/2].mask = sh2_read8_map[0x26/2].mask =
|
sh2_read8_map[0x06/2].mask = sh2_read8_map[0x26/2].mask =
|
||||||
sh2_read16_map[0x06/2].mask = sh2_read16_map[0x26/2].mask = 0x03ffff;
|
sh2_read16_map[0x06/2].mask = sh2_read16_map[0x26/2].mask = 0x03ffff;
|
||||||
|
|
|
@ -251,6 +251,7 @@ extern SH2 sh2s[2];
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
# define sh2_cycles_left(sh2) (sh2)->icount
|
# define sh2_cycles_left(sh2) (sh2)->icount
|
||||||
|
# define sh2_burn_cycles(sh2, n) (sh2)->icount -= n
|
||||||
# define sh2_pc(sh2) (sh2)->ppc
|
# define sh2_pc(sh2) (sh2)->ppc
|
||||||
#else
|
#else
|
||||||
# define sh2_end_run(sh2, after_) do { \
|
# define sh2_end_run(sh2, after_) do { \
|
||||||
|
@ -262,6 +263,7 @@ extern SH2 sh2s[2];
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
# define sh2_cycles_left(sh2) ((signed int)(sh2)->sr >> 12)
|
# define sh2_cycles_left(sh2) ((signed int)(sh2)->sr >> 12)
|
||||||
|
# define sh2_burn_cycles(sh2, n) (sh2)->sr -= ((n) << 12)
|
||||||
# define sh2_pc(sh2) (sh2)->pc
|
# define sh2_pc(sh2) (sh2)->pc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue