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