mapper tweaks, srm file name
This commit is contained in:
parent
0b46b04dd9
commit
6d6fe8cfb7
@ -212,7 +212,7 @@ int main(void) {
|
||||
set_avr_ena(1);
|
||||
|
||||
_delay_ms(100);
|
||||
uart_puts_P(PSTR("SNES GO!\n"));
|
||||
uart_puts_P(PSTR("SNES GO!\r\n"));
|
||||
snes_reset(0);
|
||||
|
||||
uint8_t cmd = 0;
|
||||
@ -227,14 +227,19 @@ int main(void) {
|
||||
_delay_ms(100);
|
||||
// snes_reset(1);
|
||||
set_avr_ena(0);
|
||||
// dprintf("Selected name: %s\n", file_lfn);
|
||||
dprintf("Selected name: %s\n", file_lfn);
|
||||
load_rom(file_lfn);
|
||||
strcpy(strrchr((char*)file_lfn, (int)'.'), ".srm");
|
||||
dprintf("SRM file: %s\n", file_lfn);
|
||||
load_sram(file_lfn, SRAM_SAVE_ADDR);
|
||||
set_avr_ena(1);
|
||||
snes_reset(1);
|
||||
_delay_ms(100);
|
||||
snes_reset(0);
|
||||
break;
|
||||
default:
|
||||
dprintf("unknown cmd: %d\n", cmd);
|
||||
cmd=0; // unknown cmd: stay in loop
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
#ifndef MEMORY_H
|
||||
#define MEMORY_H
|
||||
|
||||
#define SRAM_WORK_ADDR (0x100000L)
|
||||
#define SRAM_DB_ADDR (0x080000L)
|
||||
#define SRAM_DIR_ADDR (0x300000L)
|
||||
#define SRAM_CMD_ADDR (0x601004L)
|
||||
|
||||
29
src/smc.c
29
src/smc.c
@ -53,7 +53,7 @@ uint8_t checkChksum(uint16_t cchk, uint16_t chk) {
|
||||
}
|
||||
|
||||
void smc_id(snes_romprops_t* props) {
|
||||
uint8_t score, maxscore=1, score_idx=0;
|
||||
uint8_t score, maxscore=1, score_idx=2; // assume LoROM
|
||||
|
||||
snes_header_t* header = &(props->header);
|
||||
|
||||
@ -64,9 +64,9 @@ void smc_id(snes_romprops_t* props) {
|
||||
// _delay_ms(30);
|
||||
score = 0;
|
||||
} else {
|
||||
score = smc_headerscore(header);
|
||||
score = smc_headerscore(header)/(1+(num&1));
|
||||
}
|
||||
// dprintf("%d: offset = %lX; score = %d\n", num, hdr_addr[num], score);
|
||||
dprintf("%d: offset = %lX; score = %d\n", num, hdr_addr[num], score);
|
||||
// _delay_ms(100);
|
||||
if(score>=maxscore) {
|
||||
score_idx=num;
|
||||
@ -81,7 +81,7 @@ void smc_id(snes_romprops_t* props) {
|
||||
}
|
||||
|
||||
// restore the chosen one
|
||||
// dprintf("winner is %d\n", score_idx);
|
||||
dprintf("winner is %d\n", score_idx);
|
||||
// _delay_ms(30);
|
||||
file_readblock(header, hdr_addr[score_idx], sizeof(snes_header_t));
|
||||
switch(header->map & 0xef) {
|
||||
@ -94,10 +94,27 @@ void smc_id(snes_romprops_t* props) {
|
||||
case 0x25:
|
||||
props->mapper_id = 2;
|
||||
break;
|
||||
default: // invalid/unsupported mapper, use header location
|
||||
switch(score_idx) {
|
||||
case 0:
|
||||
case 1:
|
||||
props->mapper_id = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
props->mapper_id = 1;
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
props->mapper_id = 2;
|
||||
break;
|
||||
default:
|
||||
props->mapper_id = 0; // whatever
|
||||
props->mapper_id = 1; // whatever
|
||||
}
|
||||
}
|
||||
if(header->romsize == 0 || header->romsize > 13) {
|
||||
header->romsize = 13;
|
||||
}
|
||||
|
||||
props->ramsize_bytes = (uint32_t)1024 << header->ramsize;
|
||||
props->romsize_bytes = (uint32_t)1024 << header->romsize;
|
||||
props->expramsize_bytes = (uint32_t)1024 << header->expramsize;
|
||||
|
||||
@ -79,7 +79,7 @@ void snes_main_loop() {
|
||||
uart_puthexshort(saveram_crc);
|
||||
uart_putcrlf();
|
||||
set_busy_led(1);
|
||||
save_sram((uint8_t*)"/test.srm", saveram_size, saveram_base_addr);
|
||||
save_sram(file_lfn, saveram_size, saveram_base_addr);
|
||||
set_busy_led(0);
|
||||
}
|
||||
saveram_crc_old = saveram_crc;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user