mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
fix incomplete init
This commit is contained in:
parent
f3d1e1e63f
commit
cd0ace2832
4 changed files with 15 additions and 4 deletions
|
@ -17,10 +17,15 @@
|
||||||
int sh2_init(SH2 *sh2, int is_slave, SH2 *other_sh2)
|
int sh2_init(SH2 *sh2, int is_slave, SH2 *other_sh2)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
unsigned int mult_m68k_to_sh2 = sh2->mult_m68k_to_sh2;
|
||||||
|
unsigned int mult_sh2_to_m68k = sh2->mult_sh2_to_m68k;
|
||||||
|
|
||||||
memset(sh2, 0, offsetof(SH2, mult_m68k_to_sh2));
|
memset(sh2, 0, sizeof(*sh2));
|
||||||
sh2->is_slave = is_slave;
|
sh2->is_slave = is_slave;
|
||||||
sh2->other_sh2 = other_sh2;
|
sh2->other_sh2 = other_sh2;
|
||||||
|
sh2->mult_m68k_to_sh2 = mult_m68k_to_sh2;
|
||||||
|
sh2->mult_sh2_to_m68k = mult_sh2_to_m68k;
|
||||||
|
|
||||||
pdb_register_cpu(sh2, PDBCT_SH2, is_slave ? "ssh2" : "msh2");
|
pdb_register_cpu(sh2, PDBCT_SH2, is_slave ? "ssh2" : "msh2");
|
||||||
#ifdef DRC_SH2
|
#ifdef DRC_SH2
|
||||||
ret = sh2_drc_init(sh2);
|
ret = sh2_drc_init(sh2);
|
||||||
|
|
|
@ -85,9 +85,6 @@ void Pico32xStartup(void)
|
||||||
if (!Pico.m.pal)
|
if (!Pico.m.pal)
|
||||||
Pico32x.vdp_regs[0] |= P32XV_nPAL;
|
Pico32x.vdp_regs[0] |= P32XV_nPAL;
|
||||||
|
|
||||||
PREG8(msh2.peri_regs, 4) =
|
|
||||||
PREG8(ssh2.peri_regs, 4) = 0x84; // SCI SSR
|
|
||||||
|
|
||||||
rendstatus_old = -1;
|
rendstatus_old = -1;
|
||||||
|
|
||||||
emu_32x_startup();
|
emu_32x_startup();
|
||||||
|
@ -100,6 +97,8 @@ void p32x_reset_sh2s(void)
|
||||||
|
|
||||||
sh2_reset(&msh2);
|
sh2_reset(&msh2);
|
||||||
sh2_reset(&ssh2);
|
sh2_reset(&ssh2);
|
||||||
|
sh2_peripheral_reset(&msh2);
|
||||||
|
sh2_peripheral_reset(&ssh2);
|
||||||
|
|
||||||
// if we don't have BIOS set, perform it's work here.
|
// if we don't have BIOS set, perform it's work here.
|
||||||
// MSH2
|
// MSH2
|
||||||
|
|
|
@ -207,6 +207,12 @@ void p32x_timers_do(unsigned int m68k_slice)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sh2_peripheral_reset(SH2 *sh2)
|
||||||
|
{
|
||||||
|
memset(sh2->peri_regs, 0, sizeof(sh2->peri_regs)); // ?
|
||||||
|
PREG8(sh2->peri_regs, 4) = 0x84; // SCI SSR
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// SH2 internal peripheral memhandlers
|
// SH2 internal peripheral memhandlers
|
||||||
// we keep them in little endian format
|
// we keep them in little endian format
|
||||||
|
|
|
@ -804,6 +804,7 @@ void p32x_dreq0_trigger(void);
|
||||||
void p32x_dreq1_trigger(void);
|
void p32x_dreq1_trigger(void);
|
||||||
void p32x_timers_recalc(void);
|
void p32x_timers_recalc(void);
|
||||||
void p32x_timers_do(unsigned int m68k_slice);
|
void p32x_timers_do(unsigned int m68k_slice);
|
||||||
|
void sh2_peripheral_reset(SH2 *sh2);
|
||||||
unsigned int sh2_peripheral_read8(unsigned int a, SH2 *sh2);
|
unsigned int sh2_peripheral_read8(unsigned int a, SH2 *sh2);
|
||||||
unsigned int sh2_peripheral_read16(unsigned int a, SH2 *sh2);
|
unsigned int sh2_peripheral_read16(unsigned int a, SH2 *sh2);
|
||||||
unsigned int sh2_peripheral_read32(unsigned int a, SH2 *sh2);
|
unsigned int sh2_peripheral_read32(unsigned int a, SH2 *sh2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue