static int loadsample (TCHAR *path, struct drvsample *ds) { struct zfile *f; uae_u8 *buf; int size; TCHAR name[MAX_DPATH]; f = zfile_fopen (path, _T("rb"), ZFD_NORMAL); if (!f) { _tcscpy (name, path); _tcscat (name, _T(".wav")); f = zfile_fopen (name, _T("rb"), ZFD_NORMAL); if (!f) { write_log (_T("driveclick: can't open '%s' (or '%s')\n"), path, name); return 0; } } zfile_fseek (f, 0, SEEK_END); size = zfile_ftell (f); buf = xmalloc (uae_u8, size); zfile_fseek (f, 0, SEEK_SET); zfile_fread (buf, size, 1, f); zfile_fclose (f); ds->len = size; ds->p = decodewav (buf, &ds->len); xfree (buf); return 1; }
int driveclick_loadresource (struct drvsample *sp, int drivetype) { int i, ok; ok = 1; for (i = 0; i < 5; i++) { int type = -1; int len = -1; unsigned char* data = NULL; switch(i) { case 0: type = DS_CLICK; data = drive_click_data; len = drive_click_data_size; break; case 1: type = DS_SPIN; data = drive_spin_data; len = drive_spin_data_size; break; case 2: type = DS_SPINND; data = drive_spinnd_data; len = drive_spinnd_data_size; break; case 3: type = DS_START; data = drive_startup_data; len = drive_startup_data_size; break; case 4: type = DS_SNATCH; data = drive_snatch_data; len = drive_snatch_data_size; break; } struct drvsample* s = sp + type; //write_log("decode drive click sample %d from %p len %d\n", type, // data, len); s->p = decodewav((uae_u8*) data, &len); s->len = len; } return ok; }
static int loadsample (const char *path, struct drvsample *ds) { struct zfile *f; uae_u8 *buf; int size; f = zfile_fopen (path, "rb"); if (!f) { write_log ("driveclick: can't open '%s'\n", path); return 0; } zfile_fseek (f, 0, SEEK_END); size = zfile_ftell (f); buf = malloc (size); zfile_fseek (f, 0, SEEK_SET); zfile_fread (buf, size, 1, f); zfile_fclose (f); ds->len = size; ds->p = decodewav (buf, &ds->len); free (buf); return 1; }
int driveclick_loadresource (struct drvsample *sp, int drivetype) { int type, ok; ok = 1; for (type = 0; type < DS_END; type++) { //int type = -1; //int len = -1; //unsigned char* data = NULL; const char *name = NULL; switch(type) { case 0: //type = DS_CLICK; //data = drive_click_data; //len = drive_click_data_size; name = "drive_click.wav"; break; case 1: //type = DS_SPIN; //data = drive_spin_data; //len = drive_spin_data_size; name = "drive_spin.wav"; break; case 2: //type = DS_SPINND; //data = drive_spinnd_data; //len = drive_spinnd_data_size; name = "drive_spinnd.wav"; break; case 3: //type = DS_START; //data = drive_startup_data; //len = drive_startup_data_size; name = "drive_startup.wav"; break; case 4: //type = DS_SNATCH; //data = drive_snatch_data; //len = drive_snatch_data_size; name = "drive_snatch.wav"; break; } if (!name) { continue; } char *path = g_build_filename(g_driveclick_path, name, NULL); int64_t size = fs_path_get_size(path); if (size >= 0) { int len = (int) size; void *buffer = g_malloc(len); FILE* f = g_fopen(path, "rb"); int read = fread(buffer, 1, len, f); if (read == size) { struct drvsample* s = sp + type; //write_log("decode drive click sample %d from %p len %d\n", // type, data, len); s->p = decodewav((uae_u8*) buffer, &len); s->len = len; } g_free(buffer); } g_free(path); } return ok; }