ZXNet эхоконференция «code.zx»
тема: HELP ME !!!
от: Aleksandr Majorov
кому: Ilya Abrosimov
дата: 02 Dec 1999
Хаюшки, Ilya!
Как-то 29-11-99 примерно в 00:19:26 некто Ilya Abrosimov сообщил(а/о)
для All о том, что "HELP ME !!!"
[ ]
IA> Срочно нужен плейер AY-музыки (любого редактора), который в любой момент
IA> времени тратит одинаковое количество тактов (т.е. всегда по максимуму).
IA> Если таковой существует, то намыльте plz.
Да, такой существует.
Тока ты его сам напиши.
Сам плеер-то маленький, а вот файл музона - охрененный!
Значиться в чем прикол:
где тратиться различное время в плеерах?
правильно, на интерпретации команд.
А если ты в памяти будешь держать значение всех регистров AY
в данный момент времени, то твой плеер должен будет только
запихать эти цифирки в AY м все...
т.е. типа вот:
MUS_ADR EQU $+1 : LD HL,music_address
LD E,13
LD C,#FD
LOOP LD B,#FF
OUT (C),E
LD A,(HL)
LD B,#BF
OUT (C),A
INC HL
DEC E
JP P,LOOP
LD (MUS_ADR),HL
и вот это вызываешь в прерывании...
Спросишь как создать дамп AY?
Берешь откомпиленную музыку, ищешь в плеере место,
куда записываются значения регистров.
Во всех плеерах вначале вычисляются значения AY,
а потом эти 14 байт быстренько запихиваются в AY.
Затем хоть на бейсике пишешь такое:
1) проиграть ноту
2) скопировать 14 байт дампа AY в свой буфер
повторяй столько, сколько нот у тебя...
Имхо это единственный вариант плеера который
отрабатывается одинаковое кол-во тактов...
К тому-же он жрет мало тактов ;-))))
В принципе можно ввести комресию...
Hу вот и все *MAS* с кувалдой
|