mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
rearrange globals
scripted find/replace gives slightly better code on ARM, less unnecessary asm, ~400 bytes saved
This commit is contained in:
parent
759c9d3846
commit
93f9619ed8
47 changed files with 532 additions and 573 deletions
|
@ -99,7 +99,7 @@ void Pico32xStartup(void)
|
|||
elprintf(EL_STATUS|EL_32X, "32X startup");
|
||||
|
||||
// TODO: OOM handling
|
||||
PicoAHW |= PAHW_32X;
|
||||
PicoIn.AHW |= PAHW_32X;
|
||||
sh2_init(&msh2, 0, &ssh2);
|
||||
msh2.irq_callback = sh2_irq_cb;
|
||||
sh2_init(&ssh2, 1, &msh2);
|
||||
|
@ -136,7 +136,7 @@ void p32x_reset_sh2s(void)
|
|||
if (p32x_bios_m == NULL) {
|
||||
sh2_set_gbr(0, 0x20004000);
|
||||
|
||||
if (!(PicoAHW & PAHW_MCD)) {
|
||||
if (!(PicoIn.AHW & PAHW_MCD)) {
|
||||
unsigned int idl_src, idl_dst, idl_size; // initial data load
|
||||
unsigned int vbr;
|
||||
|
||||
|
@ -200,12 +200,12 @@ void PicoUnload32x(void)
|
|||
sh2_finish(&msh2);
|
||||
sh2_finish(&ssh2);
|
||||
|
||||
PicoAHW &= ~PAHW_32X;
|
||||
PicoIn.AHW &= ~PAHW_32X;
|
||||
}
|
||||
|
||||
void PicoReset32x(void)
|
||||
{
|
||||
if (PicoAHW & PAHW_32X) {
|
||||
if (PicoIn.AHW & PAHW_32X) {
|
||||
p32x_trigger_irq(NULL, SekCyclesDone(), P32XI_VRES);
|
||||
p32x_sh2_poll_event(&msh2, SH2_IDLE_STATES, 0);
|
||||
p32x_sh2_poll_event(&ssh2, SH2_IDLE_STATES, 0);
|
||||
|
@ -216,13 +216,13 @@ void PicoReset32x(void)
|
|||
|
||||
static void p32x_start_blank(void)
|
||||
{
|
||||
if (Pico32xDrawMode != PDM32X_OFF && !PicoSkipFrame) {
|
||||
if (Pico32xDrawMode != PDM32X_OFF && !PicoIn.skipFrame) {
|
||||
int offs, lines;
|
||||
|
||||
pprof_start(draw);
|
||||
|
||||
offs = 8; lines = 224;
|
||||
if ((Pico.video.reg[1] & 8) && !(PicoOpt & POPT_ALT_RENDERER)) {
|
||||
if ((Pico.video.reg[1] & 8) && !(PicoIn.opt & POPT_ALT_RENDERER)) {
|
||||
offs = 0;
|
||||
lines = 240;
|
||||
}
|
||||
|
@ -376,7 +376,7 @@ static void run_sh2(SH2 *sh2, int m68k_cycles)
|
|||
elprintf_sh2(sh2, EL_32X, "+run %u %d @%08x",
|
||||
sh2->m68krcycles_done, cycles, sh2->pc);
|
||||
|
||||
done = sh2_execute(sh2, cycles, PicoOpt & POPT_EN_DRC);
|
||||
done = sh2_execute(sh2, cycles, PicoIn.opt & POPT_EN_DRC);
|
||||
|
||||
sh2->m68krcycles_done += C_SH2_TO_M68K(*sh2, done);
|
||||
sh2->state &= ~SH2_STATE_RUN;
|
||||
|
@ -521,13 +521,13 @@ void sync_sh2s_lockstep(unsigned int m68k_target)
|
|||
}
|
||||
|
||||
#define CPUS_RUN(m68k_cycles) do { \
|
||||
if (PicoAHW & PAHW_MCD) \
|
||||
if (PicoIn.AHW & PAHW_MCD) \
|
||||
pcd_run_cpus(m68k_cycles); \
|
||||
else \
|
||||
SekRunM68k(m68k_cycles); \
|
||||
\
|
||||
if ((Pico32x.emu_flags & P32XF_Z80_32X_IO) && Pico.m.z80Run \
|
||||
&& !Pico.m.z80_reset && (PicoOpt & POPT_EN_Z80)) \
|
||||
&& !Pico.m.z80_reset && (PicoIn.opt & POPT_EN_Z80)) \
|
||||
PicoSyncZ80(SekCyclesDone()); \
|
||||
if (Pico32x.emu_flags & (P32XF_68KCPOLL|P32XF_68KVPOLL)) \
|
||||
p32x_sync_sh2s(SekCyclesDone()); \
|
||||
|
@ -550,7 +550,7 @@ void PicoFrame32x(void)
|
|||
p32x_sh2_poll_event(&msh2, SH2_STATE_VPOLL, 0);
|
||||
p32x_sh2_poll_event(&ssh2, SH2_STATE_VPOLL, 0);
|
||||
|
||||
if (PicoAHW & PAHW_MCD)
|
||||
if (PicoIn.AHW & PAHW_MCD)
|
||||
pcd_prepare_frame();
|
||||
|
||||
PicoFrameStart();
|
||||
|
|
|
@ -787,7 +787,7 @@ static u32 PicoRead8_32x_on(u32 a)
|
|||
}
|
||||
|
||||
if ((a & 0xfc00) != 0x5000) {
|
||||
if (PicoAHW & PAHW_MCD)
|
||||
if (PicoIn.AHW & PAHW_MCD)
|
||||
return PicoRead8_mcd_io(a);
|
||||
else
|
||||
return PicoRead8_io(a);
|
||||
|
@ -831,7 +831,7 @@ static u32 PicoRead16_32x_on(u32 a)
|
|||
}
|
||||
|
||||
if ((a & 0xfc00) != 0x5000) {
|
||||
if (PicoAHW & PAHW_MCD)
|
||||
if (PicoIn.AHW & PAHW_MCD)
|
||||
return PicoRead16_mcd_io(a);
|
||||
else
|
||||
return PicoRead16_io(a);
|
||||
|
@ -871,7 +871,7 @@ static void PicoWrite8_32x_on(u32 a, u32 d)
|
|||
}
|
||||
|
||||
if ((a & 0xfc00) != 0x5000) {
|
||||
if (PicoAHW & PAHW_MCD)
|
||||
if (PicoIn.AHW & PAHW_MCD)
|
||||
PicoWrite8_mcd_io(a, d);
|
||||
else
|
||||
PicoWrite8_io(a, d);
|
||||
|
@ -909,7 +909,7 @@ static void PicoWrite16_32x_on(u32 a, u32 d)
|
|||
}
|
||||
|
||||
if ((a & 0xfc00) != 0x5000) {
|
||||
if (PicoAHW & PAHW_MCD)
|
||||
if (PicoIn.AHW & PAHW_MCD)
|
||||
PicoWrite16_mcd_io(a, d);
|
||||
else
|
||||
PicoWrite16_io(a, d);
|
||||
|
@ -938,15 +938,18 @@ static void PicoWrite16_32x_on(u32 a, u32 d)
|
|||
u32 PicoRead8_32x(u32 a)
|
||||
{
|
||||
u32 d = 0;
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
// regs are always readable
|
||||
d = ((u8 *)Pico32x.regs)[(a & 0x3f) ^ 1];
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((a & 0xfffc) == 0x30ec) { // a130ec
|
||||
d = str_mars[a & 3];
|
||||
goto out;
|
||||
if (PicoIn.opt & POPT_EN_32X) {
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
// regs are always readable
|
||||
d = ((u8 *)Pico32x.regs)[(a & 0x3f) ^ 1];
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((a & 0xfffc) == 0x30ec) { // a130ec
|
||||
d = str_mars[a & 3];
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
elprintf(EL_UIO, "m68k unmapped r8 [%06x] @%06x", a, SekPc);
|
||||
|
@ -960,14 +963,17 @@ out:
|
|||
u32 PicoRead16_32x(u32 a)
|
||||
{
|
||||
u32 d = 0;
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
d = Pico32x.regs[(a & 0x3f) / 2];
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((a & 0xfffc) == 0x30ec) { // a130ec
|
||||
d = !(a & 2) ? ('M'<<8)|'A' : ('R'<<8)|'S';
|
||||
goto out;
|
||||
if (PicoIn.opt & POPT_EN_32X) {
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
d = Pico32x.regs[(a & 0x3f) / 2];
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((a & 0xfffc) == 0x30ec) { // a130ec
|
||||
d = !(a & 2) ? ('M'<<8)|'A' : ('R'<<8)|'S';
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
elprintf(EL_UIO, "m68k unmapped r16 [%06x] @%06x", a, SekPc);
|
||||
|
@ -980,7 +986,8 @@ out:
|
|||
|
||||
void PicoWrite8_32x(u32 a, u32 d)
|
||||
{
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
if ((PicoIn.opt & POPT_EN_32X) && (a & 0xffc0) == 0x5100) // a15100
|
||||
{
|
||||
u16 *r = Pico32x.regs;
|
||||
|
||||
elprintf(EL_32X, "m68k 32x w8 [%06x] %02x @%06x", a, d & 0xff, SekPc);
|
||||
|
@ -1008,7 +1015,8 @@ void PicoWrite8_32x(u32 a, u32 d)
|
|||
|
||||
void PicoWrite16_32x(u32 a, u32 d)
|
||||
{
|
||||
if ((a & 0xffc0) == 0x5100) { // a15100
|
||||
if ((PicoIn.opt & POPT_EN_32X) && (a & 0xffc0) == 0x5100) // a15100
|
||||
{
|
||||
u16 *r = Pico32x.regs;
|
||||
|
||||
elprintf(EL_UIO, "m68k 32x w16 [%06x] %04x @%06x", a, d & 0xffff, SekPc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue