Ну то есть втыкаем это устройство в системный разъем, включаем спек, грузим игру, жмем REC и оно начинает на встроенную карту памяти писать RZX, т.е. картинку и музыку. (или любой другой формат, но который потом можно было бы сконвертировать в rzx)
Ну то есть втыкаем это устройство в системный разъем, включаем спек, грузим игру, жмем REC и оно начинает на встроенную карту памяти писать RZX, т.е. картинку и музыку. (или любой другой формат, но который потом можно было бы сконвертировать в rzx)
Куплю корпус и материнку от Spectrum +2/+3
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
RZX это не картинка и музыка, это нажатия на клаве и джойстике привязанные к тактам процессора и снимку памяти.
Последний раз редактировалось Lion17; 12.04.2015 в 22:36.
Окей. Можно ли сделать устройство которое будет записывать нажатия клавиатуры, привязанные к тактам процессора и снимку памяти? )
Куплю корпус и материнку от Spectrum +2/+3
Последний раз редактировалось Eltaron; 12.04.2015 в 23:31.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Не везде сработает. Например, рандомайзер в зависимости от момента нажатия. Не там поймал нажатие, монстр не оттуда вылетел и вся запись пошла не так.
---------- Post added 13.04.2015 at 00:02 ---------- Previous post was 12.04.2015 at 23:56 ----------
Сделать-то можно, но не просто. Сначала нужно тормознуть систему, сделать полную копию памяти. Затем запустить систему причем с того же такта в фрейме, на котором ее тормозили. Затем писать каждое нажатие/отпускание с номером такта в фрейме и номером фрейма.
Воспроизведение все также - только в записанные моменты имитировать нажатия/отпускания.
Ну, rzx же как-то работает.
Ещё раз - конкретный такт, когда было чтение порта, не запоминается. Запоминаются результаты всех чтений портов в течение фрейма. Сохраняются в массив, причем сохраняется только значение, а сам номер порта нам даже и не нужен. При воспроизведении rzx-ины, в этот фрейм как результат первого чтения (любого порта) используем первое значение из массива, как результат второго чтения - второе. Легко понять, что эта схема будет работать идеально - ведь единственный способ пустить программу не по тем ветвям исполнения, по которых она шла при записи (а, значит, получить другое количество чтений портов) - это получить не те данные при, опять же, чтении из порта. Замкнутый круг. Так что до тех пор, пока мы исполняем rzx на том же железе, на каком она была записана, проблем не будет вообще.
Рандомайзер не проблема, он же не магическим образом работает. Самому алгоритму генерации псевдослучайного числа вообще пофиг rzx - не rzx. Seed же для его инициализации может быть получен только от внешнего устройства - а у нас все их состояния записаны.
---------- Post added at 02:38 ---------- Previous post was at 02:36 ----------
Да, вот это самое тонкое место. Синхронизировать железку и программу, чтобы начать отсчет одновременно. Всё остальное, что требуется - это тупой сниффер шины.
Последний раз редактировалось Eltaron; 13.04.2015 в 00:40.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Согласен, если писать все чтения, то работать будет.
---------- Post added at 08:07 ---------- Previous post was at 08:06 ----------
Ну, тут можно дождаться начала прерывания и только тогда заморозить систему.
---------- Post added at 08:10 ---------- Previous post was at 08:07 ----------
Кстати, для 128к необходимо каким-то образом получить содержимое системного регистра. Для клонов проблем нет - нужно просто подключиться к выходам регистра, а вот для фирменного спекки.
А при аппаратном воспроизведении надо его еще и записать.
Для rzx нужно перед записью полный снепшот сделать, включая состояние регистра и счетчика тактов на видеогенераторе, а это через zxbus не сделаешь
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)