naomi: fix reboot. clean up

fix reboot (and exiting service menu) by disabling legacy dimm board
emulation
clean up. typo in var name
This commit is contained in:
Flyinghead 2020-01-24 23:30:16 +01:00
parent 48efdac9b4
commit 7d33816d25
5 changed files with 13 additions and 26 deletions

View File

@ -14,8 +14,6 @@
#include "naomi_cart.h"
#include "naomi_regs.h"
u32 naomi_updates;
//#define NAOMI_COMM
static const u32 BoardID=0x980055AA;
@ -372,7 +370,6 @@ u32 reg_dimm_parameterl;
u32 reg_dimm_parameterh;
u32 reg_dimm_status = 0x11;
bool NaomiDataRead = false;
static bool aw_ram_test_skipped = false;
void naomi_process(u32 command, u32 offsetl, u32 parameterl, u32 parameterh)
@ -428,7 +425,6 @@ void Naomi_DmaStart(u32 addr, u32 data)
return;
}
NaomiDataRead = true;
SB_GDST|=data&1;
if (SB_GDST==1)
@ -544,7 +540,6 @@ void naomi_reg_Reset(bool hard)
SB_GDST = 0;
SB_GDEN = 0;
NaomiDataRead = false;
aw_ram_test_skipped = false;
GSerialBuffer = 0;
BSerialBuffer = 0;

View File

@ -23,6 +23,3 @@ extern u32 reg_dimm_offsetl;
extern u32 reg_dimm_parameterl;
extern u32 reg_dimm_parameterh;
extern u32 reg_dimm_status;
extern bool NaomiDataRead;
extern u32 naomi_updates;

View File

@ -703,7 +703,7 @@ u32 NaomiCartridge::ReadMem(u32 address, u32 size)
{
case 0x3c: // 5f703c: DIMM COMMAND
DEBUG_LOG(NAOMI, "DIMM COMMAND read<%d>", size);
return reg_dimm_command | (NaomiDataRead ? 0 : -1); //pretend the board isn't there for the bios
return 0xffff; //reg_dimm_command
case 0x40: // 5f7040: DIMM OFFSETL
DEBUG_LOG(NAOMI, "DIMM OFFSETL read<%d>", size);
return reg_dimm_offsetl;
@ -789,11 +789,11 @@ u32 NaomiCartridge::ReadMem(u32 address, u32 size)
case NAOMI_COMM2_STATUS0_addr & 255:
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS0 read");
return comm_offset_status0;
return comm_status0;
case NAOMI_COMM2_STATUS1_addr & 255:
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS1 read");
return comm_offset_status1;
return comm_status1;
default:
break;
@ -836,7 +836,6 @@ void NaomiCartridge::WriteMem(u32 address, u32 data, u32 size)
if (data&0x100)
{
asic_CancelInterrupt(holly_EXP_PCI);
naomi_updates=100;
}
else if ((data&1)==0)
{
@ -936,13 +935,13 @@ void NaomiCartridge::WriteMem(u32 address, u32 data, u32 size)
return;
case NAOMI_COMM2_STATUS0_addr & 255:
comm_offset_status0 = (u16)data;
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS0 set to %x", comm_offset_status0);
comm_status0 = (u16)data;
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS0 set to %x", comm_status0);
return;
case NAOMI_COMM2_STATUS1_addr & 255:
comm_offset_status1 = (u16)data;
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS1 set to %x", comm_offset_status1);
comm_status1 = (u16)data;
DEBUG_LOG(NAOMI, "NAOMI_COMM2_STATUS1 set to %x", comm_status1);
return;
default: break;

View File

@ -1,5 +1,4 @@
#ifndef NAOMI_CART_H
#define NAOMI_CART_H
#pragma once
#include <string>
#include "types.h"
@ -55,8 +54,8 @@ protected:
// Naomi 840-0001E communication board
u16 comm_ctrl = 0xC000;
u16 comm_offset = 0;
u16 comm_offset_status0 = 0;
u16 comm_offset_status1 = 0;
u16 comm_status0 = 0;
u16 comm_status1 = 0;
u16 m68k_ram[128 * 1024 / sizeof(u16)];
u16 comm_ram[64 * 1024 / sizeof(u16)];
};
@ -125,5 +124,3 @@ struct InputDescriptors
};
extern InputDescriptors *NaomiGameInputs;
#endif //NAOMI_CART_H

View File

@ -240,7 +240,6 @@ extern u32 reg_dimm_offsetl;
extern u32 reg_dimm_parameterl;
extern u32 reg_dimm_parameterh;
extern u32 reg_dimm_status;
extern bool NaomiDataRead;
bool rc_serialize(void *src, unsigned int src_size, void **dest, unsigned int *total_size)
{
@ -538,7 +537,7 @@ bool dc_serialize(void **data, unsigned int *total_size)
REICAST_S(reg_dimm_parameterl);
REICAST_S(reg_dimm_parameterh);
REICAST_S(reg_dimm_status);
REICAST_S(NaomiDataRead);
REICAST_SKIP(1); // NaomiDataRead
REICAST_S(settings.dreamcast.broadcast);
REICAST_S(settings.dreamcast.cable);
@ -804,7 +803,7 @@ static bool dc_unserialize_libretro(void **data, unsigned int *total_size)
REICAST_US(reg_dimm_parameterl);
REICAST_US(reg_dimm_parameterh);
REICAST_US(reg_dimm_status);
REICAST_US(NaomiDataRead);
REICAST_SKIP(1); // NaomiDataRead
REICAST_US(settings.dreamcast.broadcast);
REICAST_US(settings.dreamcast.cable);
@ -1145,7 +1144,7 @@ bool dc_unserialize(void **data, unsigned int *total_size)
REICAST_US(reg_dimm_parameterl);
REICAST_US(reg_dimm_parameterh);
REICAST_US(reg_dimm_status);
REICAST_US(NaomiDataRead);
REICAST_SKIP(1); // NaomiDataRead
if (version < V5)
{