int AFILE_OpenFile(const char *filename, int reboot, int diskno, int readonly) { int type = AFILE_DetectFileType(filename); switch (type) { case AFILE_ATR: case AFILE_ATX: case AFILE_XFD: case AFILE_ATR_GZ: case AFILE_XFD_GZ: case AFILE_DCM: case AFILE_PRO: if (!SIO_Mount(diskno, filename, readonly)) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_XEX: case AFILE_BAS: case AFILE_LST: if (!BINLOAD_Loader(filename)) return AFILE_ERROR; break; case AFILE_CART: case AFILE_ROM: /* TODO: select format for ROMs; switch 5200 ? */ if (CARTRIDGE_Insert(filename) != 0) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_CAS: case AFILE_BOOT_TAPE: if (!CASSETTE_Insert(filename)) return AFILE_ERROR; if (reboot) { CASSETTE_hold_start = TRUE; Atari800_Coldstart(); } break; case AFILE_STATE: case AFILE_STATE_GZ: #ifdef BASIC Log_print("State files are not supported in BASIC version"); return AFILE_ERROR; #else if (!StateSav_ReadAtariState(filename, "rb")) return AFILE_ERROR; /* Don't press Option */ GTIA_consol_table[1] = GTIA_consol_table[2] = 0xf; break; #endif default: break; } return type; }
int AFILE_OpenFile(const char *filename, int reboot, int diskno, int readonly) { int type = AFILE_DetectFileType(filename); switch (type) { case AFILE_ATR: case AFILE_ATX: case AFILE_XFD: case AFILE_ATR_GZ: case AFILE_XFD_GZ: case AFILE_DCM: case AFILE_PRO: if (!SIO_Mount(diskno, filename, readonly)) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_XEX: case AFILE_BAS: case AFILE_LST: if (!BINLOAD_Loader(filename)) return AFILE_ERROR; break; case AFILE_CART: case AFILE_ROM: { int r; if (reboot) r = CARTRIDGE_InsertAutoReboot(filename); else r = CARTRIDGE_Insert(filename); switch (r) { case CARTRIDGE_CANT_OPEN: case CARTRIDGE_BAD_FORMAT: return AFILE_ERROR; case CARTRIDGE_BAD_CHECKSUM: case 0: /* ok */ break; default: #ifdef BASIC Log_print("Raw cartridge images are not supported in BASIC version."); return AFILE_ERROR; #else /* BASIC */ /* r > 0 */ #ifndef ANDROID CARTRIDGE_SetTypeAutoReboot(&CARTRIDGE_main, UI_SelectCartType(r)); #else return (r << 8) | AFILE_ROM; #endif /* ANDROID */ break; #endif /* BASIC */ } } break; case AFILE_CAS: case AFILE_BOOT_TAPE: if (!CASSETTE_Insert(filename)) return AFILE_ERROR; if (reboot) { CASSETTE_hold_start = TRUE; Atari800_Coldstart(); } break; case AFILE_STATE: case AFILE_STATE_GZ: #ifdef BASIC Log_print("State files are not supported in BASIC version"); return AFILE_ERROR; #else if (!StateSav_ReadAtariState(filename, "rb")) return AFILE_ERROR; /* Don't press Start nor Option */ GTIA_consol_override = 0; break; #endif default: break; } return type; }