Exemplo n.º 1
0
static void updateTech(void)
{
	char buf[16000];
	char *p = buf;
	const char *ext;
	int type;
	int i;
	ext = ASAPInfo_GetOriginalModuleExt(edited_info, saved_module, saved_module_len);
	if (ext != NULL)
		p += sprintf(p, "Composed in %s\r\n", ASAPInfo_GetExtDescription(ext));
	i = ASAPInfo_GetSongs(edited_info);
	if (i > 1) {
		p += sprintf(p, "SONGS %d\r\n", i);
		i = ASAPInfo_GetDefaultSong(edited_info);
		if (i > 0)
			p += sprintf(p, "DEFSONG %d (song %d)\r\n", i, i + 1);
	}
	p += sprintf(p, ASAPInfo_GetChannels(edited_info) > 1 ? "STEREO\r\n" : "MONO\r\n");
	p += sprintf(p, ASAPInfo_IsNtsc(edited_info) ? "NTSC\r\n" : "PAL\r\n");
	type = ASAPInfo_GetTypeLetter(edited_info);
	if (type != 0)
		p += sprintf(p, "TYPE %c\r\n", type);
	p += sprintf(p, "FASTPLAY %d (%d Hz)\r\n", ASAPInfo_GetPlayerRateScanlines(edited_info), ASAPInfo_GetPlayerRateHz(edited_info));
	if (type == 'C')
		p += sprintf(p, "MUSIC %04X\r\n", ASAPInfo_GetMusicAddress(edited_info));
	if (type != 0) {
		p = appendAddress(p, "INIT %04X\r\n", ASAPInfo_GetInitAddress(edited_info));
		p = appendAddress(p, "PLAYER %04X\r\n", ASAPInfo_GetPlayerAddress(edited_info));
		p = appendAddress(p, "COVOX %04X\r\n", ASAPInfo_GetCovoxAddress(edited_info));
	}
	i = ASAPInfo_GetSapHeaderLength(edited_info);
	if (i >= 0) {
		while (p < buf + sizeof(buf) - 17 && i + 4 < saved_module_len) {
			int start = saved_module[i] + (saved_module[i + 1] << 8);
			int end;
			if (start == 0xffff) {
				i += 2;
				start = saved_module[i] + (saved_module[i + 1] << 8);
			}
			end = saved_module[i + 2] + (saved_module[i + 3] << 8);
			p += sprintf(p, "LOAD %04X-%04X\r\n", start, end);
			i += 5 + end - start;
		}
	}
	chomp(buf);
	SendDlgItemMessage(infoDialog, IDC_TECHINFO, WM_SETTEXT, 0, (LPARAM) buf);
}
Exemplo n.º 2
0
    HRESULT GetData(LPCSHCOLUMNID pscid, PROPVARIANT *pvarData, BOOL vista)
    {
        if (!m_hasInfo)
            return S_FALSE;

        if (pscid->fmtid == FMTID_SummaryInformation) {
            if (pscid->pid == PIDSI_TITLE)
                return GetString(pvarData, ASAPInfo_GetTitle(m_pinfo));
            if (pscid->pid == PIDSI_AUTHOR)
                return GetAuthors(pvarData, vista);
        }
        else if (pscid->fmtid == FMTID_MUSIC) {
            if (pscid->pid == PIDSI_ARTIST)
                return GetAuthors(pvarData, vista);
            if (pscid->pid == PIDSI_YEAR) {
                int year = ASAPInfo_GetYear(m_pinfo);
                if (year < 0) {
                    pvarData->vt = VT_EMPTY;
                    return S_OK;
                }
                pvarData->vt = VT_UI8;
                pvarData->ulVal = (ULONG) year;
                return S_OK;
            }
        }
        else if (pscid->fmtid == FMTID_AudioSummaryInformation) {
            if (pscid->pid == PIDASI_TIMELENGTH) {
                int duration = ASAPInfo_GetDuration(m_pinfo, ASAPInfo_GetDefaultSong(m_pinfo));
                if (duration < 0) {
                    pvarData->vt = VT_EMPTY;
                    return S_OK;
                }
                if (g_windowsVer == WINDOWS_OLD) {
                    duration /= 1000;
                    char timeStr[16];
                    sprintf(timeStr, "%02d:%02d:%02d", duration / 3600, duration / 60 % 60, duration % 60);
                    return GetString(pvarData, timeStr);
                }
                else {
                    pvarData->vt = VT_UI8;
                    pvarData->uhVal.QuadPart = 10000ULL * duration;
                    return S_OK;
                }
            }
            if (pscid->pid == PIDASI_CHANNEL_COUNT) {
                pvarData->vt = VT_UI4;
                pvarData->ulVal = (ULONG) ASAPInfo_GetChannels(m_pinfo);
                return S_OK;
            }
        }
        else if (pscid->fmtid == CLSID_ASAPMetadataHandler) {
            if (pscid->pid == 1) {
                pvarData->vt = VT_UI4;
                pvarData->ulVal = (ULONG) ASAPInfo_GetSongs(m_pinfo);
                return S_OK;
            }
            if (pscid->pid == 2)
                return GetString(pvarData, ASAPInfo_IsNtsc(m_pinfo) ? "NTSC" : "PAL");
        }
        return S_FALSE;
    }