HardWareMan, без декапса могу тебе на 100% сказать , в Sega нет подтверждения INT по M1+IORQ , и то для нас проблема , это показал код плеера. Сейчас кое что проверю ,более развернуто опишу.
Вид для печати
HardWareMan, без декапса могу тебе на 100% сказать , в Sega нет подтверждения INT по M1+IORQ , и то для нас проблема , это показал код плеера. Сейчас кое что проверю ,более развернуто опишу.
На данный момент -
https://www.youtube.com/watch?v=uB4I...ature=youtu.be
По поводу INT , проблема в том , что плеер написан был под сеговский INT , и это надо поисправлять , а инфы по полной организации SMPS формата я не нашел , так по кускам то тут то там почитал , из самого плеера по коду принцип более менее понятен , но ест еще темные пятна.
Вот для сравнения INT Sega и пентагона , и соответственно обработка такого длиннючего инта на сеге совсем иная
https://d.radikal.ru/d15/1804/23/3cd76ccd1e85t.jpg https://d.radikal.ru/d04/1804/25/f4ee6b58b6f8t.jpg
На сеге ИНТ ровно 1 строку растра.
Нашел откуда получаются глючки в звуке , и теперь задача ,может у кого то мысли будут.
Нам в основном цикле надо при проигрывании мелодии выводить в DAC звук PCM , делать это надо по любому при запрещенных прерываниях , иначе лезут глюки.
Теперь вопрос ,какова вероятность при таком коде пропустить прерывание ? так как 28 тактов это притык !
Итого 28 тактов , это самый быстрый алгоритм что я смог придумать , при обязательном условии что между LD (HL),A и LD (HL),C не должно бытьКод:DI
LD (HL),A ;7
INC HL ;6
NOP ;4
LD (HL),C ;7
EI ;4
меньше 8 тактов иначе данные у нас в YM2612 могут не записаться.
- - - Добавлено - - -
PS могу извратиться и сократить код на два такта и будет 26 тактов. Тогда мы как думаете точно не пропустим прерывание ?
А если например HL = #CFFF ? Мы заберем данные не там )
Нет конечно , у нас INT 50гЦ , как это может быть частотой PCM.
В дух словах попробую просто описать на абстрактном примере нашей аушки , аушка играет на прерываниях но код в прерывании должен быть крайне быстрый , так как все остальное время процессор играет трекерный MOD , и когда проц играет трекерный MOD мы не имеем права пропустить ни одного прерывания что бы не сбилась аушка, это грубое но похожее представление сеговского плеера )
- - - Добавлено - - -
goodboy, можно конечно проверять HL перед запретом прерываний ,что бы потом только L увеличивать ,но это тоже займет время которое при проигрывании PCM весьма ограничено.
- - - Добавлено - - -
goodboy, и опять же при запрете прерываний на 26 тактов , в наших ZX мы точно не пропустим прерывание ?