Skip to content

Commit ebb66a5

Browse files
committed
Added menu options for SGB settings
1 parent 6f32044 commit ebb66a5

File tree

7 files changed

+89
-66
lines changed

7 files changed

+89
-66
lines changed

snes/const.a65

+3-1
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ mtext_cfg_bsx .byt "BS-X Settings", 0
195195
mtext_cfg_browser .byt "Browser Settings", 0
196196
mtext_cfg_chip .byt "Chip Options", 0
197197
mtext_cfg_ingame .byt "In-game Settings", 0
198+
mtext_cfg_savestates .byt "Savestates Settings", 0
198199
mtext_cfg_scic .byt "SuperCIC Settings", 0
199200
mtext_bsx_timesource .byt "BS-X clock", 0
200201
mtext_bsx_time .byt "Custom time", 0
@@ -214,7 +215,7 @@ mtext_ingame_holdoff .byt " ",129,"Initial holdoff", 0
214215
mtext_ingame_savestate .byt "In-game savestates", 0
215216
mtext_savestate_slots .byt " ",129,"Savestate slots", 0
216217
mtext_loadstate_delay .byt " ",129,"Load delay (frames)", 0
217-
mdesc_sgb_enable_state .byt " ",129,"SGB2 savestates (XR, XL)", 0
218+
mtext_sgb_enable_state .byt "SGB2 savestates (XR, XL)", 0
218219
mtext_ingame_regionpatch .byt "Auto region patch", 0
219220
mtext_ingame_1chiptransientfixes .byt "1CHIP transient fixes", 0
220221
mtext_ingame_brightlimit .byt "Brightness limit", 0
@@ -231,6 +232,7 @@ mdesc_cfg_bsx .byt "BS-X/Satellaview specific settings", 0
231232
mdesc_cfg_browser .byt "Change file browser settings", 0
232233
mdesc_cfg_chip .byt "Set special chip features", 0
233234
mdesc_cfg_ingame .byt "Set in-game features", 0
235+
mdesc_cfg_savestates .byt "Set savestates features", 0
234236
mdesc_cfg_scic .byt "Enable/Disable SuperCIC and set video modes", 0
235237
mdesc_bsx_timesource .byt "Choose what date and time BS-X games see", 0
236238
mdesc_bsx_time .byt "Set custom time and date for BS-X games", 0

snes/menudata.a65

+79-58
Original file line numberDiff line numberDiff line change
@@ -433,65 +433,18 @@ menu_enttab_ingame:
433433
.word !(mfunc_isenabled_hooks-1)
434434
.byt ^(mfunc_isenabled_hooks-1)
435435

436-
.byt MTYPE_VALUE
437-
.word !mtext_ingame_savestate
438-
.byt ^mtext_ingame_savestate
439-
.word !kv_savestates
440-
.byt ^kv_savestates
441-
.byt OPTTYPE_KVBYTE
442-
.word !CFG_ENABLE_INGAME_SAVESTATE
443-
.byt ^CFG_ENABLE_INGAME_SAVESTATE
444-
.word !mdesc_ingame_savestate
445-
.byt ^mdesc_ingame_savestate
446-
.byt 0,0,0
447-
.byt 0,0,0
448-
.word !(mfunc_isdisabled_hooks-1)
449-
.byt ^(mfunc_isdisabled_hooks-1)
450-
451-
.byt MTYPE_VALUE
452-
.word !mtext_savestate_slots
453-
.byt ^mtext_savestate_slots
454-
.word !kv_onoff
455-
.byt ^kv_onoff
456-
.byt OPTTYPE_KVBYTE
457-
.word !CFG_ENABLE_SAVESTATE_SLOTS
458-
.byt ^CFG_ENABLE_SAVESTATE_SLOTS
459-
.word !mdesc_savestate_slots
460-
.byt ^mdesc_savestate_slots
461-
.byt 0,0,0
462-
.byt 0,0,0
463-
.word !(mfunc_isenabled_savestate-1)
464-
.byt ^(mfunc_isenabled_savestate-1)
465-
466-
.byt MTYPE_VALUE
467-
.word !mtext_loadstate_delay
468-
.byt ^mtext_loadstate_delay
469-
.word !opt_0_to_30
470-
.byt ^opt_0_to_30
471-
.byt OPTTYPE_BYTE
472-
.word !CFG_LOADSTATE_DELAY
473-
.byt ^CFG_LOADSTATE_DELAY
474-
.word !mdesc_loadstate_delay
475-
.byt ^mdesc_loadstate_delay
436+
.byt MTYPE_SUBMENU
437+
.word !mtext_cfg_savestates
438+
.byt ^mtext_cfg_savestates
439+
.word !menu_enttab_savestates
440+
.byt ^menu_enttab_savestates
441+
.byt 0
476442
.byt 0,0,0
443+
.word !mdesc_cfg_savestates
444+
.byt ^mdesc_cfg_savestates
477445
.byt 0,0,0
478-
.word !(mfunc_isenabled_savestate-1)
479-
.byt ^(mfunc_isenabled_savestate-1)
480-
481-
.byt MTYPE_VALUE
482-
.word !mtext_sgb_enable_state
483-
.byt ^mtext_sgb_enable_state
484-
.word !kv_onoff
485-
.byt ^kv_onoff
486-
.byt OPTTYPE_KVBYTE
487-
.word !CFG_SGB_ENABLE_STATE
488-
.byt ^CFG_SGB_ENABLE_STATE
489-
.word !mdesc_sgb_enable_state
490-
.byt ^mdesc_sgb_enable_state
491446
.byt 0,0,0
492447
.byt 0,0,0
493-
.word !(mfunc_isenabled_savestate-1)
494-
.byt ^(mfunc_isenabled_savestate-1)
495448

496449
.byt MTYPE_VALUE
497450
.word !mtext_ingame_regionpatch
@@ -552,6 +505,73 @@ menu_enttab_ingame:
552505

553506
.byt 0
554507

508+
menu_enttab_savestates:
509+
; HEADER
510+
.byt 1
511+
.word !mtext_cfg_savestates
512+
.byt ^mtext_cfg_savestates
513+
; ENTRIES
514+
.byt MTYPE_VALUE
515+
.word !mtext_ingame_savestate
516+
.byt ^mtext_ingame_savestate
517+
.word !kv_savestates
518+
.byt ^kv_savestates
519+
.byt OPTTYPE_KVBYTE
520+
.word !CFG_ENABLE_INGAME_SAVESTATE
521+
.byt ^CFG_ENABLE_INGAME_SAVESTATE
522+
.word !mdesc_ingame_savestate
523+
.byt ^mdesc_ingame_savestate
524+
.byt 0,0,0
525+
.byt 0,0,0
526+
.byt 0,0,0
527+
528+
.byt MTYPE_VALUE
529+
.word !mtext_savestate_slots
530+
.byt ^mtext_savestate_slots
531+
.word !kv_onoff
532+
.byt ^kv_onoff
533+
.byt OPTTYPE_KVBYTE
534+
.word !CFG_ENABLE_SAVESTATE_SLOTS
535+
.byt ^CFG_ENABLE_SAVESTATE_SLOTS
536+
.word !mdesc_savestate_slots
537+
.byt ^mdesc_savestate_slots
538+
.byt 0,0,0
539+
.byt 0,0,0
540+
.word !(mfunc_isenabled_savestate-1)
541+
.byt ^(mfunc_isenabled_savestate-1)
542+
543+
.byt MTYPE_VALUE
544+
.word !mtext_loadstate_delay
545+
.byt ^mtext_loadstate_delay
546+
.word !opt_0_to_30
547+
.byt ^opt_0_to_30
548+
.byt OPTTYPE_BYTE
549+
.word !CFG_LOADSTATE_DELAY
550+
.byt ^CFG_LOADSTATE_DELAY
551+
.word !mdesc_loadstate_delay
552+
.byt ^mdesc_loadstate_delay
553+
.byt 0,0,0
554+
.byt 0,0,0
555+
.word !(mfunc_isenabled_savestate-1)
556+
.byt ^(mfunc_isenabled_savestate-1)
557+
558+
.byt MTYPE_VALUE
559+
.word !mtext_sgb_enable_state
560+
.byt ^mtext_sgb_enable_state
561+
.word !kv_onoff
562+
.byt ^kv_onoff
563+
.byt OPTTYPE_KVBYTE
564+
.word !CFG_SGB_ENABLE_STATE
565+
.byt ^CFG_SGB_ENABLE_STATE
566+
.word !mdesc_sgb_enable_state
567+
.byt ^mdesc_sgb_enable_state
568+
.byt 0,0,0
569+
.byt 0,0,0
570+
.word !(mfunc_isenabled_hooks-1)
571+
.byt ^(mfunc_isenabled_hooks-1)
572+
573+
.byt 0
574+
555575
menu_enttab_scic:
556576
; HEADER
557577
.byt 1
@@ -637,11 +657,12 @@ mfunc_isdisabled_hooks:
637657
rtl
638658

639659
mfunc_isenabled_savestate:
640-
jsl mfunc_isenabled_hooks
641-
bcc +
660+
; jsl mfunc_isenabled_hooks
661+
; bcc +
642662
lda @CFG_ENABLE_INGAME_SAVESTATE
643663
bne ++
644-
+ sec
664+
; +
665+
sec
645666
rtl
646667
++clc
647668
rtl

src/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#----------------------------------------------------------------------------
2323

2424
# Read configuration file
25-
CONFIG=config-mk2
25+
CONFIG=config-mk3
2626
ifndef CONFIG
2727
$(info ERROR: Please use $(MAKE) CONFIG=... to specify at least one config file.)
2828
$(info Available configs:)

src/memory.c

+1-3
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,6 @@ uint32_t load_rom(uint8_t* filename, uint32_t base_addr, uint8_t flags) {
275275
printf(" file_offset=0x%lx", file_offset);
276276
printf(" OK.\n");
277277
}
278-
smc_id(&romprops, file_offset);
279-
file_close();
280278

281279
if(flags & LOADROM_WITH_COMBO) {
282280
printf("Combo Transition...");
@@ -296,7 +294,7 @@ uint32_t load_rom(uint8_t* filename, uint32_t base_addr, uint8_t flags) {
296294
if (!sgb_update_file(&filename)) return 0;
297295

298296
filesize = file_handle.fsize;
299-
smc_id(&romprops, 0);
297+
smc_id(&romprops, file_offset);
300298
file_close();
301299

302300
/* SGB assign the SGB FPGA file and relocate the snes image to the 512KB RAM */

src/obj-mk2/sd2snes.hex

-16 Bytes
Binary file not shown.

src/savestate.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "savestate.h"
88
#include "yaml.h"
99
#include "cfg.h"
10+
#include "cheat.h"
1011

1112
#include <string.h>
1213
#include <stdlib.h>
@@ -18,7 +19,7 @@ extern snes_romprops_t romprops;
1819
char * inputs = "BYsSudlrAXLR";
1920

2021
void savestate_program() {
21-
if(romprops.fpga_conf != FPGA_BASE) // currently only works with fpga_base
22+
if(romprops.fpga_conf != NULL) // currently only works with fpga_base
2223
return;
2324

2425
sram_writeset(0x0, SS_CODE_ADDR, 0x10000);
@@ -28,7 +29,8 @@ void savestate_program() {
2829

2930
fpga_set_snescmd_addr(SNESCMD_EXE);
3031

31-
if(CFG.enable_ingame_savestate && CFG.enable_ingame_hook == 0 && file_status == FILE_OK) {
32+
if(CFG.enable_ingame_savestate && file_status == FILE_OK) {
33+
cheat_nmi_enable(0); // disable ingame hooks because it doesn't work with savestates currently
3234
file_close();
3335

3436
load_sram((uint8_t*) savestate_code, SS_CODE_ADDR);

utils/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CC := gcc
1+
CC := D:/Development/mingw32/bin/gcc
22

33
CFLAGS = -Wall -Wstrict-prototypes -Werror
44

0 commit comments

Comments
 (0)