Firmware: refactor SNES reset pulse

This commit is contained in:
Maximilian Rehkopf 2012-07-01 03:08:36 +02:00
parent 6038d94d0f
commit 023901cab2
5 changed files with 16 additions and 12 deletions

View File

@ -367,9 +367,7 @@ void cmd_sreset(void) {
resetstate = parse_unsigned(0,1,10);
snes_reset(resetstate);
} else {
snes_reset(1);
delay_ms(20);
snes_reset(0);
snes_reset_pulse();
}
}
void cmd_settime(void) {

View File

@ -223,13 +223,14 @@ printf("PCONP=%lx\n", LPC_SC->PCONP);
sram_memset(SRAM_SYSINFO_ADDR, 13*40, 0x20);
printf("SNES GO!\n");
snes_reset(1);
delay_ms(1);
fpga_reset_srtc_state();
delay_ms(SNES_RESET_PULSELEN_MS);
sram_writebyte(32, SRAM_CMD_ADDR);
snes_reset(0);
uint8_t cmd = 0;
uint64_t btime = 0;
uint32_t filesize=0;
sram_writebyte(32, SRAM_CMD_ADDR);
printf("test sram\n");
while(!sram_reliable()) cli_entrycheck();
printf("ok\n");
@ -275,9 +276,7 @@ printf("PCONP=%lx\n", LPC_SC->PCONP);
case SNES_CMD_RESET:
/* process RESET request from SNES */
printf("RESET requested by SNES\n");
snes_reset(1);
sleep_ms(10);
snes_reset(0);
snes_reset_pulse();
cmd=0; /* stay in menu loop */
break;
case SNES_CMD_LOADLAST:

View File

@ -290,9 +290,7 @@ uint32_t load_rom(uint8_t* filename, uint32_t base_addr, uint8_t flags) {
if(flags & LOADROM_WITH_RESET) {
fpga_dspx_reset(1);
snes_reset(1);
delay_ms(10);
snes_reset(0);
snes_reset_pulse();
fpga_dspx_reset(0);
}

View File

@ -48,7 +48,7 @@ volatile int reset_pressed;
void prepare_reset() {
snes_reset(1);
delay_ms(1);
delay_ms(SNES_RESET_PULSELEN_MS);
if(romprops.ramsize_bytes && fpga_test() == FPGA_TEST_TOKEN) {
writeled(1);
save_sram(file_lfn, romprops.ramsize_bytes, SRAM_SAVE_ADDR);
@ -71,6 +71,12 @@ void snes_init() {
snes_reset(1);
}
void snes_reset_pulse() {
snes_reset(1);
delay_ms(SNES_RESET_PULSELEN_MS);
snes_reset(0);
}
/*
* sets the SNES reset state.
*

View File

@ -38,10 +38,13 @@
#define MENU_ERR_NODSP (1)
#define MENU_ERR_NOBSX (2)
#define SNES_RESET_PULSELEN_MS (1)
uint8_t crc_valid;
void prepare_reset(void);
void snes_init(void);
void snes_reset_pulse(void);
void snes_reset(int state);
uint8_t get_snes_reset(void);
void snes_main_loop(void);