From 9fcdc082d24ccbec882a6c4027a409487895f6cb Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 17 Apr 2021 16:37:55 +0300 Subject: [PATCH] Fix an SDL crash, minor tweak to BESS SGB --- Core/save_state.c | 3 +++ Core/sm83_cpu.c | 4 ++-- SDL/gui.c | 10 ++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Core/save_state.c b/Core/save_state.c index af60203..b83790b 100644 --- a/Core/save_state.c +++ b/Core/save_state.c @@ -1117,6 +1117,9 @@ done: read_bess_buffer(&sgb.attribute_map, file, (void *)gb->sgb->attribute_map, sizeof(gb->sgb->attribute_map)); read_bess_buffer(&sgb.attribute_files, file, (void *)gb->sgb->attribute_files, sizeof(gb->sgb->attribute_files)); + gb->sgb->effective_palettes[12] = gb->sgb->effective_palettes[8] = + gb->sgb->effective_palettes[4] = gb->sgb->effective_palettes[0]; + gb->sgb->player_count = sgb.multiplayer_state >> 4; gb->sgb->current_player = sgb.multiplayer_state & 0xF; if (gb->sgb->player_count > 4 || gb->sgb->player_count == 3 || gb->sgb->player_count == 0) { diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 042514c..377f519 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -1525,8 +1525,8 @@ static void cb_prefix(GB_gameboy_t *gb, uint8_t opcode) } static GB_opcode_t *opcodes[256] = { - /* X0 X1 X2 X3 X4 X5 X6 X7 */ - /* X8 X9 Xa Xb Xc Xd Xe Xf */ +/* X0 X1 X2 X3 X4 X5 X6 X7 */ +/* X8 X9 Xa Xb Xc Xd Xe Xf */ nop, ld_rr_d16, ld_drr_a, inc_rr, inc_hr, dec_hr, ld_hr_d8, rlca, /* 0X */ ld_da16_sp, add_hl_rr, ld_a_drr, dec_rr, inc_lr, dec_lr, ld_lr_d8, rrca, stop, ld_rr_d16, ld_drr_a, inc_rr, inc_hr, dec_hr, ld_hr_d8, rla, /* 1X */ diff --git a/SDL/gui.c b/SDL/gui.c index f872af5..b8e69cd 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1302,8 +1302,14 @@ void run_gui(bool is_running) } case SDL_DROPFILE: { if (GB_is_stave_state(event.drop.file)) { - dropped_state_file = event.drop.file; - pending_command = GB_SDL_LOAD_STATE_FROM_FILE_COMMAND; + if (GB_is_inited(&gb)) { + dropped_state_file = event.drop.file; + pending_command = GB_SDL_LOAD_STATE_FROM_FILE_COMMAND; + } + else { + SDL_free(event.drop.file); + } + break; } else { set_filename(event.drop.file, SDL_free);