mapper tweaks, srm file name

This commit is contained in:
ikari 2009-11-16 01:33:27 +01:00
parent 0b46b04dd9
commit 6d6fe8cfb7
4 changed files with 32 additions and 11 deletions

View File

@ -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;
}

View File

@ -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)

View File

@ -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;

View File

@ -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;