void wavfile_testload(const char *fname) { cassette_image *cassette; FILE *f; long offset; int freq, samples, i; INT32 cassamp; INT16 wavsamp; f = fopen(fname, "rb"); if (!f) return; if (cassette_open(f, &stdio_ioprocs, &wavfile_format, CASSETTE_FLAG_READONLY, &cassette)) return; offset = 44; freq = 44100; samples = 5667062; for (i = 0; i < samples; i++) { cassette_get_sample(cassette, 0, i / (double) freq, 0.0, &cassamp); fseek(f, offset + i * 2, SEEK_SET); fread(&wavsamp, 1, 2, f); assert(cassamp == (((UINT32) wavsamp) << 16)); } cassette_close(cassette); }
void cassette_image_device::call_unload() { /* if we are recording, write the value to the image */ if ((m_state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD) update(); /* close out the cassette */ cassette_close(m_cassette); m_cassette = nullptr; /* set to default state, but only change the UI state */ change_state(CASSETTE_STOPPED, CASSETTE_MASK_UISTATE); }
static DEVICE_IMAGE_UNLOAD( cassette ) { device_t *device = &image.device(); dev_cassette_t *cassette = get_safe_token( device ); /* if we are recording, write the value to the image */ if ((cassette->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD) cassette_update(device); /* close out the cassette */ cassette_close(cassette->cassette); cassette->cassette = NULL; /* set to default state, but only change the UI state */ cassette_change_state(device, CASSETTE_STOPPED, CASSETTE_MASK_UISTATE); }
static void device_unload_cassette(mess_image *image) { struct mess_cassetteimg *tag; tag = get_cassimg(image); /* if we are recording, write the value to the image */ if ((tag->state & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD) cassette_update(image); /* close out the cassette */ cassette_close(tag->cassette); tag->cassette = NULL; /* set to default state, but only change the UI state */ cassette_change_state(image, CASSETTE_STOPPED, CASSETTE_MASK_UISTATE); }
int CLIB_DECL main(int argc, char *argv[]) { int i; int found =0; const struct CassetteFormat * const *selected_formats = NULL; cassette_image *cassette; FILE *f; if (argc > 1) { if (!core_stricmp("convert", argv[1])) { // convert command if (argc!=5) { fprintf(stderr, "Wrong parameter number.\n\n"); display_usage(); return -1; } else { for (i = 0; formats[i].name; i++) { if (core_stricmp(formats[i].name,argv[2])==0) { selected_formats = formats[i].formats; found = 1; } } if (found==0) { fprintf(stderr, "Wrong format name.\n\n"); display_usage(); fprintf(stderr, "\n"); display_formats(); return -1; } f = fopen(argv[3], "rb"); if (!f) { fprintf(stderr, "File %s not found.\n",argv[3]); return -1; } if (cassette_open_choices(f, &stdio_ioprocs, get_extension(argv[3]), selected_formats, CASSETTE_FLAG_READONLY, &cassette)) { fprintf(stderr, "Invalid format of input file.\n"); fclose(f); return -1; } cassette_dump(cassette,argv[4]); cassette_close(cassette); fclose(f); goto theend; } } } /* Usage */ fprintf(stderr, "castool - Generic cassette manipulation tool for use with MESS\n\n"); display_usage(); fprintf(stderr, "\n"); display_formats(); fprintf(stderr, "\nExample usage:\n"); fprintf(stderr, " castool.exe convert tzx game.tzx game.wav\n\n"); theend : return 0; }