static void getstatfilename(TCHAR *path, const TCHAR *ext, int size) { file_cpyname(path, modulefile, size); file_cutext(path); file_catname(path, str_dot, size); file_catname(path, ext, size); }
static void getstatfilename(char *path, const char *ext, int size) { file_cpyname(path, datadir, size); file_cutext(path); file_catname(path, "np2sdl.", size); file_catname(path, ext, size); }
void dialog_waverec(HWND hWnd) { #if defined(SUPPORT_RECVIDEO) const bool bShiftDown = (::GetKeyState(VK_SHIFT) < 0); recvideo_close(); #endif // defined(SUPPORT_RECVIDEO) sound_recstop(); TCHAR szPath[MAX_PATH]; file_cpyname(szPath, bmpfilefolder, NELEMENTS(szPath)); file_cutname(szPath); file_catname(szPath, szWaveFile, NELEMENTS(szPath)); UINT8 bCheck = FALSE; if ((dlgs_createfilenum(hWnd, &fpWave, szPath, NELEMENTS(szPath))) && (sound_recstart(szPath) == SUCCESS)) { file_cpyname(bmpfilefolder, szPath, NELEMENTS(bmpfilefolder)); sysmng_update(SYS_UPDATEOSCFG); bCheck = TRUE; } #if defined(SUPPORT_RECVIDEO) if (bShiftDown) { file_cutext(szPath); file_catname(szPath, _T(".avi"), NELEMENTS(szPath)); recvideo_open(hWnd, szPath); } #endif // defined(SUPPORT_RECVIDEO) xmenu_setwaverec(bCheck); }
/** * 設定ファイルのパスを得る * @param[out] lpPath パス * @param[in] cchPath パス バッファの長さ */ void initgetfile(LPTSTR lpPath, UINT cchPath) { LPCTSTR lpIni = Np2Arg::GetInstance()->iniFilename(); if (lpIni) { file_cpyname(lpPath, lpIni, cchPath); LPCTSTR lpExt = file_getext(lpPath); if (lpExt[0] != '\0') { file_catname(lpPath, s_szExt, cchPath); } } else { file_cpyname(lpPath, modulefile, cchPath); file_cutext(lpPath); file_catname(lpPath, s_szExt, cchPath); } }
void initgetfile(OEMCHAR *path, UINT size) { const OEMCHAR *ext; file_cpyname(path, modulefile, size); if (np2arg.ini) { if ((np2arg.ini[0] == '/') || (np2arg.ini[0] == '-')) { file_cutname(path); file_catname(path, file_getname(np2arg.ini + 2), size); } else { file_cpyname(path, np2arg.ini, size); } ext = file_getext(path); if (ext[0] != '\0') { file_catname(path, ext_ini, size); } } else { file_cutext(path); file_catname(path, ext_ini, size); } }
// イメージファイルの実体を開き、各種情報構築 BRESULT setsxsidev(SXSIDEV sxsi, const OEMCHAR *path, const _CDTRK *trk, UINT trks) { FILEH fh; long totals; CDINFO cdinfo; UINT mediatype; UINT i; #ifdef TOCLOGOUT OEMCHAR logpath[MAX_PATH]; OEMCHAR logbuf[2048]; TEXTFILEH tfh; #endif // trk、trksは有効な値が設定済みなのが前提 if ((trk == NULL) || (trks == 0)) { goto sxsiope_err1; } fh = file_open_rb(path); if (fh == FILEH_INVALID) { goto sxsiope_err1; } cdinfo = (CDINFO)_MALLOC(sizeof(_CDINFO), path); if (cdinfo == NULL) { goto sxsiope_err2; } ZeroMemory(cdinfo, sizeof(_CDINFO)); cdinfo->fh = fh; trks = min(trks, NELEMENTS(cdinfo->trk) - 1); CopyMemory(cdinfo->trk, trk, trks * sizeof(_CDTRK)); #ifdef TOCLOGOUT file_cpyname(logpath, path, NELEMENTS(logpath)); file_cutext(logpath); file_catname(logpath, str_logB, NELEMENTS(logpath)); tfh = textfile_create(logpath, 0x800); if (tfh == NULL) { return(FAILURE); } TOCLOG(OEMTEXT("STR _CDTRK LOG\r\n"), 0); for (i = 0; i < trks; i++) { TOCLOG(OEMTEXT("trk[%02d]\r\n"), i); TOCLOG(OEMTEXT(" adr_ctl = 0x%02X\r\n"), cdinfo->trk[i].adr_ctl); TOCLOG(OEMTEXT(" point = %02d\r\n"), cdinfo->trk[i].point); TOCLOG(OEMTEXT(" [pos0][pos][ ] = [%18I32d]"), cdinfo->trk[i].pos0); TOCLOG(OEMTEXT("[%18I32d][ ]\r\n"), cdinfo->trk[i].pos); TOCLOG(OEMTEXT(" sec[ ][str][end] = [ ][%18I32d]"), cdinfo->trk[i].str_sec); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].end_sec); TOCLOG(OEMTEXT(" sectors = %I32d\r\n"), cdinfo->trk[i].sectors); TOCLOG(OEMTEXT(" sector_size = %d\r\n"), cdinfo->trk[i].sector_size); TOCLOG(OEMTEXT(" sector [pregap][start][end] = [%18I32d]"), cdinfo->trk[i].pregap_sector); TOCLOG(OEMTEXT("[%18I32d]"), cdinfo->trk[i].start_sector); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].end_sector); TOCLOG(OEMTEXT(" img_sec[pregap][start][end] = [%18I32d]"), cdinfo->trk[i].img_pregap_sec); TOCLOG(OEMTEXT("[%18I32d]"), cdinfo->trk[i].img_start_sec); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].img_end_sec); TOCLOG(OEMTEXT(" offset [pregap][start][end] = [0x%016I64X]"), cdinfo->trk[i].pregap_offset); TOCLOG(OEMTEXT("[0x%016I64X]"), cdinfo->trk[i].start_offset); TOCLOG(OEMTEXT("[0x%016I64X]\r\n"), cdinfo->trk[i].end_offset); TOCLOG(OEMTEXT(" pregap_sectors = %I32d\r\n"), cdinfo->trk[i].pregap_sectors); TOCLOG(OEMTEXT(" track_sectors = %I32d\r\n"), cdinfo->trk[i].track_sectors); } TOCLOG(OEMTEXT("END _CDTRK LOG\r\n"), 0); textfile_close(tfh); #endif #if 1 if (sxsi->totals == -1) { totals = set_trkinfo(fh, cdinfo->trk, trks, 0); if (totals < 0) { goto sxsiope_err3; } sxsi->totals = totals; } #else totals = issec(fh, cdinfo->trk, trks); // とりあえず sxsi->read = sec2048_read; totals = issec2048(cdinfo->fh); if (totals < 0) { sxsi->read = sec2352_read; totals = issec2352(cdinfo->fh); } if (totals < 0) { sxsi->read = sec2448_read; totals = issec2448(cdinfo->fh); } if (totals < 0) { sxsi->read = sec_read; totals = issec(cdinfo->fh, cdinfo->trk, trks); } if (totals < 0) { goto sxsiope_err3; } #endif mediatype = 0; for (i = 0; i < trks; i++) { if (cdinfo->trk[i].adr_ctl == TRACK_DATA) { mediatype |= SXSIMEDIA_DATA; } else if (cdinfo->trk[i].adr_ctl == TRACK_AUDIO) { mediatype |= SXSIMEDIA_AUDIO; } } // リードアウトトラックを生成 cdinfo->trk[trks].adr_ctl = 0x10; cdinfo->trk[trks].point = 0xaa; // cdinfo->trk[trks].pos = totals; cdinfo->trk[trks].pos = sxsi->totals; cdinfo->trks = trks; file_cpyname(cdinfo->path, path, NELEMENTS(cdinfo->path)); sxsi->reopen = cd_reopen; sxsi->close = cd_close; sxsi->destroy = cd_destroy; sxsi->hdl = (INTPTR)cdinfo; // sxsi->totals = totals; sxsi->cylinders = 0; sxsi->size = 2048; sxsi->sectors = 1; sxsi->surfaces = 1; sxsi->headersize = 0; sxsi->mediatype = mediatype; #ifdef TOCLOGOUT file_cpyname(logpath, path, NELEMENTS(logpath)); file_cutext(logpath); file_catname(logpath, str_logA, NELEMENTS(logpath)); tfh = textfile_create(logpath, 0x800); if (tfh == NULL) { return(FAILURE); } TOCLOG(OEMTEXT("STR _CDTRK LOG\r\n"), 0); for (i = 0; i < trks; i++) { TOCLOG(OEMTEXT("trk[%02d]\r\n"), i); TOCLOG(OEMTEXT(" adr_ctl = 0x%02X\r\n"), cdinfo->trk[i].adr_ctl); TOCLOG(OEMTEXT(" point = %02d\r\n"), cdinfo->trk[i].point); TOCLOG(OEMTEXT(" [pos0][pos][ ] = [%18I32d]"), cdinfo->trk[i].pos0); TOCLOG(OEMTEXT("[%18I32d][ ]\r\n"), cdinfo->trk[i].pos); TOCLOG(OEMTEXT(" sec[ ][str][end] = [ ][%18I32d]"), cdinfo->trk[i].str_sec); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].end_sec); TOCLOG(OEMTEXT(" sectors = %I32d\r\n"), cdinfo->trk[i].sectors); TOCLOG(OEMTEXT(" sector_size = %d\r\n"), cdinfo->trk[i].sector_size); TOCLOG(OEMTEXT(" sector [pregap][start][end] = [%18I32d]"), cdinfo->trk[i].pregap_sector); TOCLOG(OEMTEXT("[%18I32d]"), cdinfo->trk[i].start_sector); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].end_sector); TOCLOG(OEMTEXT(" img_sec[pregap][start][end] = [%18I32d]"), cdinfo->trk[i].img_pregap_sec); TOCLOG(OEMTEXT("[%18I32d]"), cdinfo->trk[i].img_start_sec); TOCLOG(OEMTEXT("[%18I32d]\r\n"), cdinfo->trk[i].img_end_sec); TOCLOG(OEMTEXT(" offset [pregap][start][end] = [0x%016I64X]"), cdinfo->trk[i].pregap_offset); TOCLOG(OEMTEXT("[0x%016I64X]"), cdinfo->trk[i].start_offset); TOCLOG(OEMTEXT("[0x%016I64X]\r\n"), cdinfo->trk[i].end_offset); TOCLOG(OEMTEXT(" pregap_sectors = %I32d\r\n"), cdinfo->trk[i].pregap_sectors); TOCLOG(OEMTEXT(" track_sectors = %I32d\r\n"), cdinfo->trk[i].track_sectors); } TOCLOG(OEMTEXT("END _CDTRK LOG\r\n"), 0); textfile_close(tfh); #endif return(SUCCESS); sxsiope_err3: _MFREE(cdinfo); sxsiope_err2: file_close(fh); sxsiope_err1: return(FAILURE); }