reios: reset gdrom state at reset
Fixes "Reboot to BIOS" exception when loading another game
This commit is contained in:
parent
ad2e142b01
commit
1762987aae
|
@ -23,7 +23,7 @@
|
|||
|
||||
#define debugf(...) DEBUG_LOG(REIOS, __VA_ARGS__)
|
||||
|
||||
gdrom_hle_state_t gd_hle_state = { 0xffffffff, 2, BIOS_INACTIVE };
|
||||
gdrom_hle_state_t gd_hle_state;
|
||||
|
||||
static void GDROM_HLE_ReadSES()
|
||||
{
|
||||
|
@ -644,9 +644,7 @@ void gdrom_hle_op()
|
|||
case GDROM_INIT:
|
||||
// Initialize the GDROM subsystem. Should be called before any requests are enqueued.
|
||||
DEBUG_LOG(REIOS, "GDROM: HLE GDROM_INIT");
|
||||
gd_hle_state.last_request_id = 0xFFFFFFFF;
|
||||
gd_hle_state.next_request_id = 2;
|
||||
gd_hle_state.status = BIOS_INACTIVE;
|
||||
gd_hle_state = {};
|
||||
break;
|
||||
|
||||
case GDROM_RESET:
|
||||
|
|
|
@ -49,21 +49,23 @@ void gdrom_hle_op();
|
|||
typedef enum { BIOS_ERROR = -1, BIOS_INACTIVE, BIOS_ACTIVE, BIOS_COMPLETED, BIOS_DATA_AVAIL } gd_bios_status;
|
||||
struct gdrom_hle_state_t
|
||||
{
|
||||
u32 last_request_id;
|
||||
u32 next_request_id;
|
||||
gd_bios_status status;
|
||||
u32 command;
|
||||
gdrom_hle_state_t() : params{}, result{} {}
|
||||
|
||||
u32 last_request_id = 0xFFFFFFFF;
|
||||
u32 next_request_id = 2;
|
||||
gd_bios_status status = BIOS_INACTIVE;
|
||||
u32 command = 0;
|
||||
u32 params[4];
|
||||
u32 result[4];
|
||||
u32 cur_sector;
|
||||
u32 multi_read_sector;
|
||||
u32 multi_read_offset;
|
||||
u32 multi_read_count;
|
||||
u32 multi_read_total;
|
||||
u32 multi_callback;
|
||||
u32 multi_callback_arg;
|
||||
bool dma_trans_ended;
|
||||
u64 xfer_end_time;
|
||||
u32 cur_sector = 0;
|
||||
u32 multi_read_sector = 0;
|
||||
u32 multi_read_offset = 0;
|
||||
u32 multi_read_count = 0;
|
||||
u32 multi_read_total = 0;
|
||||
u32 multi_callback = 0;
|
||||
u32 multi_callback_arg = 0;
|
||||
bool dma_trans_ended = false;
|
||||
u64 xfer_end_time = 0;
|
||||
|
||||
bool Serialize(void **data, unsigned int *total_size)
|
||||
{
|
||||
|
|
|
@ -763,6 +763,7 @@ void reios_reset(u8* rom)
|
|||
else
|
||||
INFO_LOG(REIOS, "font.bin: loaded %zd bytes", size);
|
||||
}
|
||||
gd_hle_state = {};
|
||||
}
|
||||
|
||||
void reios_term() {
|
||||
|
|
Loading…
Reference in New Issue