goodboy, этот вариант сбрасывается от нажатия любой клавиши, а по окончании мелодии наглухо зависает (т.е. даже бесконечного воспроизведения нет)
А 30-килобайтный "монстр" ведет себя почти идеально (там наверно, не мудрствуя лукаво, всю игру целиком впихнули)
Куплю корпус и материнку от Spectrum +2/+3
goodboy, претензии то претензиями, может ведь так получится, что лёгких путей нет, и что выбор только между двумя золами, причем какое из них наименьшее - это ещё вопрос. Т.е. либо каждую проблемную мелодию фиксить под плеер, либо плеер каждый раз фиксить под каждую конкретную мелодию. Т.е. один фиг каждый раз придется вручную что-то фиксить. И если плеер может фиксить только tiboh , то мелодии может фиксить не только лишь он, таким образом гипотетический кпд процесса выше, если фиксить мелодии... )
Вот если бы плеер можно было бы раз и навсегда пофиксить, то это другое дело, один раз пофиксил плеер и больше не надо фиксить мелодии. Но реально ли это? Вот в чём вопрос!
Пробовал "родной" плеер, тот, который работает с тапками, а написан на бейсике (!), что-то он короче нифига не лучше плеера tiboha, мягко говоря...
- - - Добавлено - - -
Конкретно с Робином можно забить, пусть будет 30 кб., пофиг, не смертельно, главно что она не виснет и не сбрасывается.
Куплю корпус и материнку от Spectrum +2/+3
В итоге получилось 199 годных мелодий.
Но ещё нужно выдрать музыку как минимум из:
- Rad Ramp Racer
- Pariboro
- 1943
- Sooty & Sweep
И неплохо бы ещё из:
- Crapbert Buttslut
- Vallation
- Rainbow Islands
- Helter Skelter
- Pi-R Squared
Все мелодии я разделил на 3 группы, предполагается, что каждой группе будет выделен отдельный TRD:
1) мелодии, в которых нет зацикливания, т.е. в плеере они будут играть одна за другой, автоматически. Таких 48 штук пока. Я им длительности подкорректирую, чтобы гигантских пауз не было.
2) мелодии, которые зациклены, переключать мелодии придется ручками (86 шт.)
3) мелодии, которые глючны, переключать мелодии можно только посредством ресета (65 шт.)
+ ещё есть несколько мелодий (из числа 65 мелодий третьей группы), которые даже не играют, а сразу вешают/сбрасывают комп. Неплохо бы их починить, чтобы хоть в третью группы их засунуть можно было.
И ещё, в третьей группе оказались 20 совсем уж легендарных мелодий
Судите сами (в аттаче). Надо их пофиксить, чтобы переместить их во вторую или первую группу. Мелодии из таких легендарных игр просто не могут тусоваться в 3-ей группе с инвалидами, это зашквар какой-то получится
Учитываясложную обстановку на фронтах, всё вышеизложенное, в тред кастуются:
@Titus
@tiboh
@Шынни
@Kalantaj
@DenisGrachev
@все кто неравнодушен к музыке и спектруму
Любая скромная лепта приветствуется!
Последний раз редактировалось ZX_NOVOSIB; 27.01.2018 в 18:44.
Куплю корпус и материнку от Spectrum +2/+3
чосразушынни?
что и в каком виде собрать для тебя, о эстет?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Шынни, выдрать бипер-мелодии надо из игр, в .ay
https://www.worldofspectrum.org/proj...ds/AYMakeR.zip - это прога, которая .ay делает.
Инструкция. Инглиш.
AYMake Russian Version
Utility for creating AY-files.
Author Sergey Bulba
Idea James McKay
(c)2001 S.V. Bulba
2 of September 2001
Using.
------
AYMake designed as Win32 console command line-based tool.
For start working type in command line:
AYMakeR [inifilename]
Inifilename is name of text file with special instructions for AYMakeR utility.
If inifilename was specified then AYMakeR generates AY-file with same name but
with extension .ay. If inifile is bad then AYMakeR outputs to the screen error
messages.
INI-file structure.
-------------------
There are 17 keywords are defined in AYMakeR (you can use both small and
capital chars, AYMakeR converts it to small in any way). All keywords
has default value, so you can miss some keys in INI-file.
1. Author
This keyword is used to define songs author string. Due to limitations of
AY-file specifications, Author string only one for whole AY-file. Default
value is empty string.
2. Misc
This keyword is used to define string called "Miscellaneous". Also, due to
limitations of AY-file specifications, Misc-string only one for whole AY-file.
Default value is empty string.
3. FileVersion
This keyword is used to define release version of AY-file. If you are doing
AY-file first time, you can to define FileVersion = 0. If you'll rebuild this
file in future, you can change FileVersion to 1 and so on. Range for this key
is from 0 to 255. Default value is 0.
4. PlayerVersion
This keyword defines required AY-files player version. If you do not know what
player version you need, use 0. Range is from 0 to 255. Default value is 0.
For more information, see AY-files specifications.
5. Ripper
Extra key for string with information about you (AY-files creator). If you want
write some words in AY-file about yourself, use this key. But I recommend do not
do it. Default value is empty string.
6. FirstSong
Song number from which playing starts. Song number 0 is 1st, 1 is 2nd and so on.
Range is from 0 to 255. Default value is 0. FirstSong can not be greater then
number of song in created AY-file.
7. NewSong
Special key to tell to AYMakeR that new song is defined from next line. No any
values for this key.
8. Name
This keyword is used to define song name string. Name string can be defined for
each song of AY-file. Default value is empty string.
9. Stack
Key for defining Z80 SP-register value for current song. Default value is 0.
Available range is from 0 to 65535.
10. INIT
Key defines address of initialization routine in Z80 memory. Default value is 0,
i.e. due to AY-file specification equal to first block loading address.
Available range is from 0 to 65535.
11. INTERRUPT
Key defines address of interrupt-handling routine. Default value is 0. Available
range is from 0 to 65535.
12. SongLength
Length of song in seconds or 1/50 of second (interrupts). Finally, value is
converted to the 1/50 of second. So, available range is from 1 to 65535
interrupts. No default value.
13. FadeLength
Length of fade at the end of song in seconds or interrupts. Available range is
from 0 to 65535 interrupts. Default value is 0 (recommended).
14. HiReg
Value for high part of all Z80 common registers (see AY-file specification).
Default value is 0.
15. LoReg
Value for low part of all Z80 common registers (see AY-file specification).
Default value is 0.
16. CodeName
String with block file name. This block contents part of Z80 memory. Each song
of AY-file can have one or more blocks. No default value.
17. CodeAddress
Address in Z80 memory of block defined by CodeName key. Available range is from
1 to 65535. No default value.
Some examples of key using:
----------------------------------[example begin]
Author=TAO of ACF
Misc=(c)Codemasters
NewSong
SongLength=8000
CodeName=Block1.bin
CodeAddress=32768
CodeName=Block2.bin
CodeAddress=#7F3E
NewSong
CodeName=Block3.bin
CodeAddress=32768
SongLength=1:30
----------------------------------[example end]
Some rules for creating INI-files.
1. Use any text editor
2. Empty lines are ignored
3. One line can contain only one keyword and its value
4. Use chars of keywords in any case
5. Tabulators and spaces around of keywords and its values are ignored
6. NewSong defines current (new) song
7. Current song related keywords could be used only after NewSong keyword
8. Each CodeName keyword defines new block for current song
9. CodeAddress can and must be specified only after CodeName
10. Each block length is equal to corresponding file length
11. If several identical keywords are met then last value is used
12. Ripper keyword simply puts to AY-file corresponding string. You can see
it only in text or hex viewer, for example
13. Before creating AY-files, please, read AY-file specifications
14. Numeric values can be decimal (ex.: 32768) and hex (ex.: #8000)
15. Time values can be ordinary numbers for defining 1/50 of seconds (ex: 15000
or #13E) or special time format: 1:50.2465, that means "1 minut and 50.2465
seconds"
Due to described rules, you can see next completely identical lines:
----------------------------------[example begin]
SongLength=1:30
SongLength = 1:30.000
SongLength =4500
SONGLENGTH = #1194
Songlength = 0:90.000
----------------------------------[example end]
AY-file specifications.
-----------------------
This is text from readme.txt of Micro Speccy (an AY-files player)
- AY-file format (thanks to Patrik Rak for help).
Originally this format was supporting on Amiga's DeliTracker (DeliAY plug-in).
Therefore, all word data is in Motorola order (from hi to low). Also, all
pointers are signed and relative (from current position in file to pointed
data). So, AY-file is sequences of records. First record is header. Here you
are:
TAYFileHeader=packed record
FileID, //'ZXAY'
TypeID:longword; //'EMUL'
FileVersion, //Version of song file (release version)
PlayerVersion:byte; //Required player version. Micro Speccy
//works as player of version 3.
//Now available values:
//0 Use zero, if you do not
// know what player version
// you need
//All other player versions and short
//description of these players next:
//1 initial player version
//2 first 256 bytes is
// filled with 0xC9 (ret),
// not just last init byte
//3 PC rewrite, different
// Z80 init routine, full
// Z80 emulation, supports
// 48k tunes.
PSpecialPlayer, //It's for tunes which contained "custom
//player" in m68k assembly. As Patrik Rak
//is saying, exists only one AY-file of this
//kind. So, can be simply ignored.
PAuthor,PMisc:smallint; //Relative pointers to the
//Author and Misc NTStrings
NumOfSongs,FirstSong:byte; //Number of songs and first song values, both
//are decreased by 1
PSongsStructure:smallint; //Relative pointer to song structure
end;
Next is song structure (repeated NumOfSongs + 1 times):
TSongStructure=packed record
PSongName,PSongData:smallint;//Relative pointers to NTStr song
//name and song data
end;
All described above is rightly for any AY-file. Following data only for
TypeID = 'EMUL'. Next is song data:
TSongData=packed record
AChan,BChan,
CChan,Noise:byte; //These are actually four bytes which specify
//which Amiga channels will play which AY
//channel (A,B,C and Noise, respectively). The
//legal value is any permutation of 0,1,2,3.
//The most common is 0,1,2,3. Not used in
//Micro Speccy, of course
SongLength:word; //Song duration in 1/50 of second. If ZERO then
//length is unknown (infinitely). Not used in
//Micro Speccy
FadeLength:word; //Duration of volume fade after end of song in
//1/50 of second. Not used in Micro Speccy
HiReg,LoReg:byte; //HiReg and LoReg for all common registers:
//AF,AF',HL,HL',DE,DE',BC,BC',IX and IY
PPoints, //Relative pointer to points data
PAddresses:smallint; //Relative pointer to blocks data
end;
Next is points data:
TPoints = packed record
Stack,Init,Inter:word; //Values for SP, INIT and INTERRUPT addresses
end;
Next is blocks data (words, offsets are signed):
Address1 //Address of 1st block in Z80 memory
Length1 //Length of 1st block
Offset1 //Relative offset in AY-file to this block
Address2 //and for 2nd block
Length2
Offset2
...
AddressN //and for Nth (last) block
LengthN
OffsetN
ENDWORD //ZERO word (end of blocks data)
//so block can't have ZERO
//address
Notes from Patrik Rak:
The word values should be always aligned at 2 byte offsets. Otherwise the
DeliAY will crash (it's the limitation of the m68000).
In case Address+Length > 65536, DeliAY decreases the size to make it
== 65536.
From me:
In case CurrPositionInAYFile+Offset+Length > AYFileSize, MicroSpeccy
and AYPlay decreases the size to make it == AYFileSize. I must to say,
that if it is then this is broken AY-file. But there are many that ones
in the world.
- How player of version 3 must play one of songs of AY File
a) Fill #0000-#00FF range with #C9 value
b) Fill #0100-#3FFF range with #FF value
c) Fill #4000-#FFFF range with #00 value
d) Place to #0038 address #FB value
e) if INIT equal to ZERO then place to first CALL instruction address of
first AY file block instead of INIT (see next f) and g) steps)
f) if INTERRUPT equal to ZERO then place at ZERO address next player:
DI
CALL INIT
LOOP: IM 2
EI
HALT
JR LOOP
g) if INTERRUPT not equal to ZERO then place at ZERO address next player:
DI
CALL INIT
LOOP: IM 1
EI
HALT
CALL INTERRUPT
JR LOOP
h) Load all blocks for this song
i) Load all common lower registers with LoReg value (including AF
register)
j) Load all common higher registers with HiReg value
k) Load into I register 3 (this player version)
l) load to SP stack value from points data of this song
m) Load to PC ZERO value
n) Disable Z80 interrupts and set IM0 mode
o) Emulate resetting of AY chip
p) Start Z80 emulation
As you can see, blocks of AY files can to rewrite standard player routine
with own one. So, if you can not adapt some of tunes to standard player,
you can write own player and place it at INIT address or even at 0x0001
address (block of AY-file can be loaded at any address except 0x0000).
Links.
------
- AYMakeR supporting site
http://bulba.at.kz/
- AYMakeR author
Sergey Bulba, [email protected]
- .AY files and AYmake V0.11 by James McKay (24/05/2000)
http://www.void.jump.org/projectay
- Amstrad CPC .AY files (1.3 Mb archive)
http://cracktros.planet-d.net/cpc/emulcpc.zip
- Project AY site developer
bcass, [email protected]
Source text.
------------
AYMakeR comes together with its source text in Pascal. You can use it as free
as you want.
Understanding AY-files ideology.
--------------------------------
For understanding AY-files ideology, I am recommending to split several already
existing AY-files. I had wrote special tool called "aysplitr". You can download
it from http://bulba.at.kz/. There are also old "aysplit" for old James McKay's
AYMake.[свернуть]
Инструкция. Перевод.
AYMake разработан как консольный консольный инструмент Win32.
Для запуска рабочего типа в командной строке:
AYMakeR [inifilename]
Inifilename - это имя текстового файла со специальными инструкциями для утилиты AYMakeR.
Если указано inifilename, AYMakeR генерирует AY-файл с тем же именем, но
с расширением .ay. Если inifile плохо, тогда AYMakeR выводит на экран ошибку
Сообщения.
INI-файловая структура.
-------------------
В AYMakeR определено 17 ключевых слов (вы можете использовать как малые, так и
капитальные символы, AYMakeR каким-либо образом преобразует его в малый). Все ключевые слова
имеет значение по умолчанию, поэтому вы можете пропустить некоторые ключи в INI-файле.
1. Автор
Это ключевое слово используется для определения строки автора песен. Из-за ограничений
Спецификации AY-файла, строка автора только одна для всего AY-файла. По умолчанию
Значение - пустая строка.
2. Разное
Это ключевое слово используется для определения строки под названием «Разное». Кроме того, из-за
ограничения спецификаций AY-файла, Misc-string только для всего AY-файла.
Значение по умолчанию - пустая строка.
3. FileVersion
Это ключевое слово используется для определения версии AY-файла. Если вы делаете
AY-файл в первый раз, вы можете определить FileVersion = 0. Если вы восстановите это
файл в будущем, вы можете изменить FileVersion на 1 и так далее. Диапазон для этого ключа
от 0 до 255. Значение по умолчанию равно 0.
4. PlayerVersion
Это ключевое слово определяет требуемую версию проигрывателя AY-файлов. Если вы не знаете, что
вам нужна версия игрока, используйте 0. Диапазон от 0 до 255. Значение по умолчанию - 0.
Для получения дополнительной информации см. Спецификации AY-файлов.
5. Потрошитель
Дополнительный ключ для строки с информацией о вас (создатель AY-файлов). Если ты хочешь
напишите несколько слов в AY-файле о себе, используйте этот ключ. Но я не рекомендую
сделай это. Значение по умолчанию - пустая строка.
6. FirstSong
Номер песни, с которого начинается воспроизведение. Номер песни 0 - 1, 1 - 2 и так далее.
Диапазон от 0 до 255. Значение по умолчанию равно 0. FirstSong не может быть больше
количество песен в созданном AY-файле.
7. NewSong
Специальный ключ, чтобы сообщить AYMakeR, что новая песня определена из следующей строки. Никакой
значения для этого ключа.
8. Имя
Это ключевое слово используется для определения названия песни. Строку имени можно определить для
каждая песня AY-файла. Значение по умолчанию - пустая строка.
9. Стек
Ключ для определения значения регистра Z80 SP для текущей песни. Значение по умолчанию - 0.
Доступный диапазон от 0 до 65535.
10. ИНИТ
Ключ определяет адрес инициализации в памяти Z80. Значение по умолчанию - 0,
то есть из-за спецификации AY-файла, равной первому адресу загрузки блока.
Доступный диапазон от 0 до 65535.
11. ПРЕРЫВАНИЕ
Ключ определяет адрес процедуры обработки прерываний. Значение по умолчанию равно 0. Доступно
диапазон от 0 до 65535.
12. SongLength
Длина песни в секундах или 1/50 секунды (прерывания). Наконец, значение
преобразуется в 1/50 секунды. Таким образом, доступный диапазон составляет от 1 до 65535
перебивает. Значение по умолчанию отсутствует.
13. FadeLength
Длина затухания в конце песни в секундах или прерывания. Доступный диапазон
от 0 до 65535 прерываний. Значение по умолчанию - 0 (рекомендуется).
14. HiReg
Значение для высокой части всех регистров Z80 (см. Спецификацию AY-файла).
Значение по умолчанию - 0.
15. LoReg
Значение для низкой части всех регистров Z80 (см. Спецификацию AY-файла).
Значение по умолчанию - 0.
16. CodeName
Строка с именем файла блока. Этот блок содержит часть памяти Z80. Каждая песня
AY-файла может иметь один или несколько блоков. Значение по умолчанию отсутствует.
17. CodeAddress
Адрес в памяти Z80 блока, определенного ключом CodeName. Доступный диапазон от
1 до 65535. Значение по умолчанию отсутствует.
Некоторые примеры использования ключа:
---------------------------------- [пример начинается]
Автор = TAO ACF
Разное = (с) Codemasters
Новая песня
SongLength = 8000
CodeName = Block1.bin
CodeAddress = 32768
CodeName = Block2.bin
CodeAddress = # 7F3E
Новая песня
CodeName = Block3.bin
CodeAddress = 32768
SongLength = 1: 30
---------------------------------- [примерный конец]
Некоторые правила для создания INI-файлов.
1. Используйте любой текстовый редактор
2. Пустые строки игнорируются.
3. Одна строка может содержать только одно ключевое слово и его значение
4. Используйте символы ключевых слов в любом случае
5. Таблицы и пробелы вокруг ключевых слов и его значений игнорируются.
6. NewSong определяет текущую (новую) песню
7. Текущие ключевые слова, связанные с песней, могут использоваться только после ключевого слова NewSong
8. Каждое ключевое слово CodeName определяет новый блок текущей песни
9. CodeAddress может и должен указываться только после CodeName
10. Каждая длина блока равна соответствующей длине файла
11. Если выполняется несколько идентичных ключевых слов, используется последнее значение
12. Ключевое слово Ripper просто помещает в AY-файл соответствующую строку. Ты можешь видеть
****это только в текстовом или шестнадцатеричном просмотре, например
13. Перед созданием AY-файлов, пожалуйста, прочитайте спецификации AY-файла
14. Числовые значения могут быть десятичными (например: 32768) и шестнадцатеричными (например: # 8000)
15. Значения времени могут быть обычными числами для определения 1/50 секунд (например: 15000
****или # 13E) или специальный формат времени: 1: 50,2465, что означает «1 минута и 50,2465
****секунд»
Из-за описанных правил вы можете увидеть следующие полностью идентичные строки:
---------------------------------- [пример начинается]
SongLength = 1: 30
SongLength = 1: 30,000
SongLength = 4500
SONGLENGTH = # 1194
*Songlength = 0: 90.000
---------------------------------- [примерный конец]
Спецификации AY-файла.
-----------------------
Это текст из файла readme.txt Micro Speccy (проигрывателя AY-файлов)
- Формат AY-файла (спасибо Патрику Раку за помощь).
**Первоначально этот формат поддерживался на DeliTracker от Amiga (плагин DeliAY).
**Поэтому все данные слова находятся в заказе Motorola (от hi до low). Кроме того, все
**указатели подписаны и относительны (от текущей позиции в файле до
**данные). Таким образом, AY-файл представляет собой последовательности записей. Первая запись - это заголовок. Вот ты
**находятся:
**TAYFileHeader = упакованная запись
***FILEID, // 'ZXAY'
***TypeID: длинное слово; // 'EMUL'
***FileVersion, // Версия файла песни (версия выпуска)
***PlayerVersion: байт; // Требуемая версия игрока. Micro Speccy
// работает как игрок версии 3.
// Теперь доступные значения:
// 0 Используйте ноль, если вы не
// знаю, какая версия игрока
// тебе нужно
// Все версии других игроков и короткие
// описание следующих игроков:
// 1 начальная версия игрока
// 2 первых 256 байта
// заполняется 0xC9 (ret),
// не только последний байт init
// 3 Перезапись ПК, разные
// Z80 init, полная
// Эмуляция Z80, поддержка
// 48k мелодий.
***PSpecialPlayer, // Это для мелодий, которые содержат "custom
// игрок "в сборке m68k. Как Патрик Рак
// говорит, существует только один AY-файл этого
//своего рода. Таким образом, можно просто игнорировать.
***PAuthor, PMisc: SMALLINT; // Относительные указатели на
// Автор и Разное NTStrings
***NumOfSongs, FirstSong: байт; // Количество песен и значений первой песни, оба
// уменьшены на 1
***PSongsStructure: SMALLINT; // Относительный указатель на структуру песни
**конец;
**Далее - структура песни (повторяется NumOfSongs + 1 раз):
**TSongStructure = упакованная запись
***PSongName, PSongData: smallint; // Относительные указатели на песню NTStr
// имя и данные песни
***конец;
**Все, что описано выше, справедливо для любого AY-файла. Следующие данные только для
**TypeID = 'EMUL'. Далее приведены данные о песнях:
*
**TSongData = упакованная запись
***Ахан, BChan,
***CChan, шум: байты; // Это фактически четыре байта, которые указывают
// какие каналы Amiga будут играть, какие AY
// канал (A, B, C и шум соответственно).
// юридическое значение - любая перестановка 0,1,2,3.
// Наиболее распространенным является 0,1,2,3. Не используется в
// Micro Speccy, конечно
***SongLength: слово; // Продолжительность песни в 1/50 секунды. Если ZERO тогда
// длина неизвестна (бесконечно). Не используется в
// Micro Speccy
***FadeLength: слово; // Продолжительность тома исчезает после окончания песни в
// 1/50 секунды. Не используется в Micro Speccy
***HiReg, LoReg: байт; // HiReg и LoReg для всех общих регистров:
// AF, AF ', HL, HL', DE, DE ', BC, BC', IX и IY
***PPoints, // Относительный указатель на данные точек
***PAddresses: SMALLINT; // Относительный указатель на блоки данных
**конец;
**Далее приведены данные о точках:
**TPoints = упакованная запись
***Стек, Init, Интер: слово; // Значения для адресов SP, INIT и INTERRUPT
**конец;
**Далее - данные блоков (слова, смещения подписаны):
******Address1 // Адрес 1-го блока в памяти Z80
******Длина1 // Длина 1-го блока
******Offset1 // Относительное смещение в AY-файле к этому блоку
******Address2 // и для второго блока
******Length2
******смещение2
******...
******AddressN // и для N-го (последнего) блока
******LengthN
******OffsetN
******ENDWORD // ZERO word (конец данных блоков)
// поэтому у блока не может быть ZERO
//адрес
**Примечания от Патрика Рака:
**Значения слов всегда должны быть выровнены с 2 байтовыми смещениями. В противном случае
**DeliAY выйдет из строя (это ограничение m68000).
**Если адрес + длина> 65536, DeliAY уменьшает размер, чтобы сделать это
**== 65536.
**От меня:
**В случае CurrPositionInAYFile + Offset + Length> AYFileSize, MicroSpeccy
**и AYPlay уменьшает размер, чтобы сделать его == AYFileSize. Должен сказать,
**что если это тогда, это сломано AY-файл. Но есть много таких
**в мире.
- Как игрок версии 3 должен сыграть одну из песен AY-файла
****a) Заполнить # 0000- # 00FF диапазон с # C9 значением
****b) Заполнить диапазон # 0100- # 3FFF значением #FF
****c) Заполните # 4000- # FFFF диапазон с номером # 00
****d) Поместите на # 0038 адрес #FB значение
****e) если INIT, равный ZERO, затем помещается в первый адрес инструкции CALL
*******первый блок файлов AY вместо INIT (см. следующий f) и g) шаги)
****f) если INTERRUPT, равный ZERO, затем поместите на адрес ZERO следующего игрока:
DI
CALL INIT
LOOP: IM 2
EI
HALT
JR LOOP
****g) если INTERRUPT не равен ZERO, тогда поместите на адрес ZERO следующего игрока:
DI
CALL INIT
LOOP: IM 1
EI
HALT
CALL INTERRUPT
JR LOOP
h) Загрузите все блоки для этой песни
**** i) Загрузите все общие нижние регистры с помощью значения LoReg (включая AF
******* регистр)
**** j) Загрузите все общие более высокие регистры с использованием значения HiReg
**** k) Загрузите в регистр 3 (эта версия игрока)
**** l) загрузить значение стека SP из точек данных этой песни
**** м) Нагрузка на ПК Значение ZERO
**** n) Отключить прерывания Z80 и установить режим IM0
**** o) Эмулировать сброс AY-чипа
**** p) Начало эмуляции Z80
** Как вы можете видеть, блоки файлов AY могут переписывать стандартную процедуру проигрывателя
** с собственным. Итак, если вы не можете адаптировать некоторые мелодии к стандартным игрокам,
** вы можете написать собственный плеер и поместить его на адрес INIT или даже в 0x0001
** адрес (блок AY-файла может быть загружен по любому адресу, кроме 0x0000).
[свернуть]
А те мелодии, которые в аттаче, они очень некорректно работают с плеером, видимо криво выдраны. Чинить их наверно нельзя. Вернее процесс починки наверно равен процессу выдирания бипер-мелодии с нуля из игры (?)
goodboy и tiboh наверно могут подтвердить/опровергнуть/дополнить мои измышления... )
Куплю корпус и материнку от Spectrum +2/+3
не знаю. гляну на первые из списка, но выглядит тз странно.
по-хорошему надо создать txt список того что есть в наличии.
я например смотрю на WoS, а там для SuperRobinHood вообще лежит музон из другой игры.
для каких-то игр бипера там нет, но он есть у ZX_NOVOSIB`а
...........
а вот пример одной и той-же мелодии на ay/beeper
(длительность выставлена от балды).
Последний раз редактировалось goodboy; 28.01.2018 в 13:48.
Зачем меня приплёл ZX_NOVOSIB Заниматься такой аналитической работой просто жалко времени.
Единственное что могу подсказать что у Pariboro есть исходники и можно там music.bin сконвертить как-нибудь.
И ещё вот такой архив нашёл у себя на винте, но у вас наверное всё есть из него
beepor.zip
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)