???
Вид для печати
???
Информацию о форматах (BIM, MAI, RPK, MAY, MAO) для справочника можно?;)
Конечно можно, но не сейчас ... Там структура очень проста, главное, - расписать компрессию. Я уже доделаю первую нормальную версию и выложу полное описание.
----------------------------
Кто успел до этого момента скачать, перекачивайте заново, я малость ошибся и собрал старую версию ...
Link: http://entire.nm.ru/downloads/MasonAySetup.exe
На чем написана программа? Планируется ли кросс-платформенная версия?
Всё сделано для этого ! В Config'е в самом конце сделаю настройку. На данный момент всё отображается по цветовой таблице.
А вот Насчёт шрифтов, - дилема ... Думаю, что я сделаю пару видов шривтотв на выбор, но совершенно любой выбирать не дам. Я хотел, что бы редактор работал на старых видео-картах, и если использовать шрифты высокой точности, то начинаются дикие тормоза. Понятно, что на современных картах вы этого не заметите. Плюс ко всему у меня нет человека, который нарисовал бы мне шрифты.
Тут есть ньюансы. Сейчас включён режим Wild Sound AY, под мою звуковую карту для Speccy. В следующей версии я сделаю управление этой функцией, пока только галочка (да/нет).
Кстати, учитывайте, что нет управления шумом в колонке трека возле огибающей. Плюс в данный момент поддерживается только два эффекта - 3xxx(slide) и Fxxx(speed). То есть некоторые мелодии могу звучать не корректно.
---------- Post added at 08:12 ---------- Previous post was at 08:02 ----------
Написано всё на, считай что, pascal'е ... Компилируется всё на DELPHI. Но я компилировал первые версии на CURLIX'е под Linux'ом, и старался писать так, что бы не сипользовать наворотов DELPHI. Кросс ПиЦи можно устроить, но кросс-платформенность - нет, там много ассемблера под 386 архитектуру. Но если вопрос возникает лишь в том, что бы запускать редактор под Linux'ом, то я сделал всё, что бы это можно было сделать. В крайнем случае можно под Wine'ом, проверял не один раз.
???
Твой код кроме тебя никто не сможет поддерживать. Да и ты сам через N лет тоже слету не сможешь.
Писанина на асме имеет смысл, если производительность нужна любой ценой. В сложившейся ситуации людей платформами, отличными от win32 гораздо больше, нежели людей, имеющих железо, для которого стоит делать оптимизацию.Код:while (curTick < LastData.Tick) //render cycle
{
if (curTick >= nextSampleTick) //need to store sample
{
const bool isYM(0 != (params.Flags & Sound::PSG_TYPE_YM));
const Sound::Sample result[] = {
GetVolume(ToneBitA & NoiseBitA & VolumeA, isYM),
GetVolume(ToneBitB & NoiseBitB & VolumeB, isYM),
GetVolume(ToneBitC & NoiseBitC & VolumeC, isYM)
};
dst.ApplySample(result, ArraySize(result));
nextSampleTick += ticksPerSample;
}
curTick += 8;//base freq divisor
if (++TimerA >= GetToneA())
{
TimerA = 0;
BitA = ~BitA;
}
if (++TimerB >= GetToneB())
{
TimerB = 0;
BitB = ~BitB;
}
if (++TimerC >= GetToneC())
{
TimerC = 0;
BitC = ~BitC;
}
if (++TimerN >= GetToneN())
{
TimerN = 0;
Noise = (Noise * 2 + 1) ^ (((Noise >> 16) ^ (Noise >> 13)) & 1);
BitN = (Noise & 0x10000) ? ~0 : 0;
}
if (++TimerE >= GetToneE())
{
TimerE = 0;
Envelope += Decay;
if (Envelope & ~unsigned(31))
{
const unsigned envTypeMask = 1 << GetEnv();
if (envTypeMask & ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) |
(1 << 5) | (1 << 6) | (1 << 7) | (1 << 9) | (1 << 15)))
{
Envelope = Decay = 0;
}
else
{
if (envTypeMask & ((1 << 8) | (1 << 12)))
{
Envelope &= 31;
}
else
{
if (envTypeMask & ((1 << 10) | (1 << 14)))
{
Decay = -Decay;
Envelope += Decay;
}
else
{
Envelope = 31;
Decay = 0; //11, 13
}
}
}
}
}//envelope
}