PDA

Просмотр полной версии : Эмулятор ZX-Poly



Raydac
01.02.2015, 18:36
Эмулятор ZX-Poly, который также поддерживает и эмуляцию ZX-Spectrum 128 и ограниченную эмуляцию платформы Spec256.
Статья на Хабре о платформе, создании и возможностях (https://habr.com/ru/post/472232/)
Страница проекта (https://github.com/raydac/zxpoly). Линк для скачивания (https://github.com/raydac/zxpoly/releases).
Текущая версия релиза: 2.3.4

Эмулятор написан на Java и требует JDK 21+ если запускать из JAR. В релизах имеются пресобранные дистрибутивы с Java для Windows, MacOS и Linux.

https://github.com/raydac/zxpoly/blob/master/docs/screenshots/zxpoly234_summersanta2022.png?raw=true

Поддерживаются следующие форматы:

Снапшоты : Z80, SNA, SZX, ZXP (формат снапшотов ZX-Poly), ZIP (архивы снапшотов Spec256), ROM, PROM(ROM for ZXPoly)
Форматы ленты: TZX, TAP, WAV
Форматы дисков: TRD, SCL


Клавиатура:

F5 - показать ZX-Клавиатуру
F1 - помощь
F3 - включить максимальную скорость эмуляции
ALT - SS
SHIFT - CS


Kempston джойстик эмулируется кнопками джойстика на NUMPAD
Эмуляция kempston-мыши включается опционально
Эмулируется бипер, по умолчанию отключен
Эмулирует Covox (порт #FB), по умолчанию отключен
Эмулирует TurboSound (NedoPC)
Эмулирует ULA Plus палитру
Эмулирует AY-3-8910, по умолчанию стереосхема ABC
Добавлена поддержка геймпадов и джойстиков
Есть активируемая виртуальная onscreen клавиатура

Raydac
21.11.2019, 13:13
опубликована статья От «Цветорасширителя для ZX-Spectrum» до ZX-Poly (https://habr.com/ru/post/472232/) на habrahabr.ru

andrews
21.11.2019, 14:30
Игорь, забей на реальное железо! Если не переделывать корку(силиконовый софт-образ Z80 в fpga, говорят имеющийся недопилен до ума)В эмуляторе играть на адаптированных играх тоже неплохо! И потом, если 4 проца тебе нужны только для графики, то почему не допилить видеоконтроллер? Из потока линий кода надо отселектировать касающиеся работы с видеопамятью и не грузить ими обычный проц, а сразу направлять в граф проц

Raydac
21.11.2019, 15:23
И потом, если 4 проца тебе нужны только для графики
там нет как такового видео-контроллера, есть 4 проца и несколько доп.видеорежимов, соответственно можно делать что угодно, программист ограничен только процами, памятью и тем как видеосигнал выводится

andrews
21.11.2019, 15:25
там нет как такового видео-контроллера, есть 4 проца и несколько доп.видеорежимов, соответственно можно делать что угодно, программист ограничен только процами, памятью и тем как видеосигнал выводитсяа инструментарий? На чем кодить? И если нет ограничений по железу, то почему не увеличить количество цветов градаций яркости у каждого проца? Вроде ты палитры хотел когда-то делать? В новоделы меньше чем 4 Мбайт чипы ОЗУ никто не ставит ведь.

Raydac
21.11.2019, 15:39
а инструментарий? На чем кодить? И если нет ограничений по железу, то почему не увеличить количество цветов градаций яркости у каждого проца? Вроде ты палитры хотел когда-то делать? В новоделы меньше чем 4 Мбайт чипы ОЗУ никто не ставит ведь.

ну кодить на том же на чем и для ZX-Spectrum кодят, как еще то, на асме. Потенциально с такой схемой можно впендорить 24 процессора и получить TrueColor без всяких палитр, но идея в том, что-бы от реальности несильно отрываться. Уйти от одного бита на пиксель на уровне процессора, это сразу потерять совместимость с базовой платформой, а значит и с софтом.

Dexus
21.11.2019, 15:55
Spec256 работает по такой же схеме, но с 8мью "виртуальными" процессорами.

Raydac
21.11.2019, 16:06
Spec256 работает по такой же схеме, но с 8мью "виртуальными" процессорами.
если бы он работал по "такой же схеме", то у меня не было бы проблем с "стыриванием" и адаптацией его расцвеченных программ, но он работает по совсем другой схеме, увы и поэтому возможен только на виртуальном Z80 с 64 битными секционированными регистрами

Lethargeek
21.11.2019, 16:27
если бы он работал по "такой же схеме", то у меня не было бы проблем с "стыриванием" и адаптацией его расцвеченных программ,
нету там никаких "его программ", только графика, просто стырить ты которую не можешь по большому счёту только из-за разрядности

Raydac
21.11.2019, 16:50
нету там никаких "его программ", только графика, просто стырить ты которую не можешь по большому счёту только из-за разрядности
у Spec256 ясно написано:
Each time a z80 instruction is emulated, the same instruction is simulated with data always supposed to be graphics. I´ve named this parallel processor Z80_GFX. Z80_GFX modifies its memory zone accordig to the instructions and doesn´t do anything with Z80´s memory zone.

что в переводе означает, что есть Z80 который выполняет управляющую программу и Z80GFX который все пытается интерпретировать как графику, имхо это дает очень жирный плюс в плане "при раскраске можно жирно водить кистью и смело красить и исполняемый код", а в ZX-Poly при таком сразу получаешь вот такое
https://hsto.org/webt/gp/yg/5k/gpyg5khuq7hn9jvvbgny5hddqrs.png

Titus
21.11.2019, 16:57
что в переводе означает, что есть Z80 который выполняет управляющую программу и Z80GFX который все пытается интерпретировать как графику, имхо это дает очень жирный плюс в плане "при раскраске можно жирно водить кистью и смело красить и исполняемый код", а в ZX-Poly при таком сразу получаешь вот такое
Так это как раз более удобно, что система Spec256 не дает разойтись процессорам в разные стороны)

Lethargeek
21.11.2019, 17:02
Each time a z80 instruction is emulated, the same instruction is simulated with data always supposed to be graphics
в переводе это означает, что команды выполняются те же самые и нету никаких особых "его программ"


имхо это дает очень жирный плюс в плане "при раскраске можно жирно водить кистью и смело красить и исполняемый код"
не придумывай, красили в эмулях попиксельно, медленно и печально, и даже если рядышком случайно испорчен код, кто тебе мешает вытянуть только графику?

Raydac
21.11.2019, 17:05
Так это как раз более удобно, что система Spec256 не дает разойтись процессорам в разные стороны)
еще как удобно, очень хорошая идея, там нет процессоров, есть получается Z80 и 64 битный виртуальный ведомый графический SIMD Z80 на одном как бы чипе связанные внутренностями

- - - Добавлено - - -


не придумывай, красили в эмулях попиксельно, медленно и печально, и даже если рядышком случайно испорчен код, кто тебе мешает вытянуть только графику?
в ZX-Poly нет связи между процессорами на уровне их внутренних блоков, они совершенно независимые как если на плату чипы напаять и знают только то что им на пины приходит, соответственно и нет никакой возможности сделать "modifies its memory zone accordig to the instructions and doesn´t do anything with Z80´s memory zone" как в Spec256

Lethargeek
21.11.2019, 17:14
и нет никакой возможности сделать "modifies its memory zone accordig to the instructions and doesn´t do anything with Z80´s memory zone" как в Spec256
а нафиг это делать? пусть модифицирует на здоровье, графику обычно в код не копируют, а неграфические байты в плоскостях должны совпадать

Raydac
21.11.2019, 17:50
а нафиг это делать? пусть модифицирует на здоровье, графику обычно в код не копируют, а неграфические байты в плоскостях должны совпадать
судя по тем исходникам Spec256 что я видел, GPU в нем, каждый шаг синхронизирует с Z80 (исполняющим немодифицированную программу) свои внутренние регистры PC,SP,I,R,IFF1,IFF2,HALT_STATE. Т.е. если напортачишь в коде для графического раскраской, он переживет, если надругательство будет нешибко сильным. С реальными Z80 и Z80 в ZX-Poly к сожалению так нельзя, а то я бы тоже был бы только рад если бы внутрипроцессорная шина и синхронизация состояний была.

Lethargeek
21.11.2019, 18:19
если напортачишь в коде для графического раскраской, он переживет,
блин, еще раз, медленно, по слогам: НЕ-ТУ НИ-КА-КО-ГО "КО-ДА ДЛЯ ГРА-ФИ-ЧЕС-КО-ГО" отдельного - код оригинальный везде работает
если байты кода в плоскостях твоих совпадают, и нет переходов по результатам операций с байтами графики - у тебя продолжится всё синхронно
а если переходы такие были - то с любой раскраской рассинхронизируются процы, хоть потыренной, хоть нарисованной тобой лично

Raydac
21.11.2019, 18:24
блин, еще раз, медленно, по слогам: НЕ-ТУ НИ-КА-КО-ГО "КО-ДА ДЛЯ ГРА-ФИ-ЧЕС-КО-ГО" отдельного - код оригинальный везде работает
я смотрю код одного из эмуляторов поддерживающих Spec256 (https://github.com/jxsvoboda/gzx/blob/master/z80g.c) и по крайней мере это мне объясняет почему я не смог запустить извлеченные планы из Spec256 раскраски, которые прекрасно бы работали, если бы там не было внутренней синхронизации

Lethargeek
21.11.2019, 19:13
я смотрю код одного из эмуляторов поддерживающих Spec256 и по крайней мере это мне объясняет почему я не смог запустить извлеченные планы из Spec256 раскраски,
а смотреть надо было в сами "извлечённые планы" и разбираться в каждом конкретном случае (вполне возможно, что какие-то заведутся)

- - - Добавлено - - -

это я к тому, что при раскраске средствами эмулятора первым делом во все плоскости копируется вся память, включая код, и он должен там остаться вполне рабочим
но могли также красить посторонними инструментами или даже код вычищать нарочно, чтобы рядом не пестрел и не отвлекал

- - - Добавлено - - -

для проверки попробуй свою раскраску (минимальную) сделать в эмузвине и запустить эти плоскости в своём эмуляторе

Raydac
21.11.2019, 20:23
а смотреть надо было в сами "извлечённые планы" и разбираться в каждом конкретном случае (вполне возможно, что какие-то заведутся)
я не могу пробовать EmuzWin, потому что у меня нет винды, а он не кросс-платформенный, но я вполне допускаю, что можно сделать изменение на плане, где будет зацеплена только графическая часть и это запустится, единственное что это уже переходит в "дело случая"... может быть в следующей версии поддержу тоже Spec256 в своем эмуле, будет хотяб кросс-платформенная эмуляция, а то официальный тоже только под винду

NEO SPECTRUMAN
21.11.2019, 20:55
я не могу пробовать EmuzWin, потому что у меня нет винды
обычно если нет венды то помогает wine (не знаю как там работает эмузвин)
или вы сидите на пылесосе на котором его нет? :)

andrews
21.11.2019, 22:27
Что мешает добавить бит, чтобы каждый из процессоров мог выполнять свой код пока нет обращения к видеопамяти? А когда есть, чтобы синхронно выполнять один и тот же

Dexus
22.11.2019, 02:54
Насколько я понимаю, Spec256 и не планировался в железе. И концепция фактически подразумевала 8 параллельно работающих спектрумов, каждый из которых синхронно загружает и запускает свой экземпляр одной и той же игры, с обычной однобитной, но различающейся графикой. Но вывод на дисплей при этом происходит "аккумулированный", собирая 8мибитный "пиксель" с учётом 256 цветовой палитры. Близость концепции тут именнов самой идее - распараллеливание битмапов по параллельным ипостасям одной машины. Но ZX-Poly технологически более продвинут и "круче", с тем же 2x режимом, и теоретической возможностью использования 4х процессорной системы именно как 4хпроцессорной, ускоряя ту же математику, тот же 3D (если вывод на экран делать в обычном режиме, с одного из 4х).
В общем, занятная штука.

Raydac
22.11.2019, 10:15
И концепция фактически подразумевала 8 параллельно работающих спектрумов, каждый из которых синхронно загружает и запускает свой экземпляр одной и той же игры
да, плюс судя по коду эмулятора, там не только параллельное исполнение, но и синхронизация состояния "графических процессоров" по ведущему процессору выполняющему неизмененный снапшот

- - - Добавлено - - -


Что мешает добавить бит, чтобы каждый из процессоров мог выполнять свой код пока нет обращения к видеопамяти? А когда есть, чтобы синхронно выполнять один и тот же
в существующий софт, даже один бит добавить это адская проблема

andrews
22.11.2019, 10:54
в существующий софт, даже один бит добавить это адская проблема
а не о существующем софте речь, существующий софт и знать ничего не будет об этом бите. А при старте эмулятора, если надо устанавливаешь его в 1 или сбрасываешь в 0, и в зависимости от этого режим либо тот, что есть, либо каждый из процессоров выполняет свой код, а при обращении любого к видеопамяти идет прерывание на все и они начинают синхронно выполнять один и тот же код. По кодовым сегментам для линкера можно будет указывать для какого процессора из 4 код и загрузчику будет понятно, в чью память грузить. А сейчас, если все 4 проца исполняют один и тот же код, то это никак не многопроцессорная система!

Raydac
22.11.2019, 11:35
По кодовым сегментам для линкера можно будет указывать для какого процессора из 4 код и загрузчику будет понятно, в чью память грузить.
немногопроцессорная система это Spec256, так как там нельзя запустить 8 процессоров идти по своим путям, они по главному засинхронизируют состояния всеравно, а тут загрузи просто разные данные в память модулей и стартуй и поедут своими путями

Bedazzle
22.11.2019, 15:32
а не о существующем софте речь

А смысл писать чисто новый софт под несуществующее ретро? Проще под любую живую платформу.

Тут задумка именно с минимальными внедрениями улучшить существующие шедевры.

andrews
22.11.2019, 19:50
А смысл писать чисто новый софт под несуществующее ретро? Проще под любую живую платформу.
Тут задумка именно с минимальными внедрениями улучшить существующие шедевры.хмм, не такой простой вопрос, как кажется с первого раза. Сложность компьютера это повышение порога для вхождения. У вас есть портфолио игр для Android и потенциальные инвесторы с миллионом евро? А тем у кого их нет? Гораздо приятней написать своими силами,чем идти к кому-то в кабалу. В таком случае наверно малые компьютеры 70 и 80-х, которые Вы именуете ретро вам не интересны. А другим людям они интересны-настолько интересны, что они даже готовы заниматься редизайном чипов, которые давно сняты с производства. Ведь авторские права на старые архитектуры ничтожны в юридическом смысле в подавляющем большинстве случаев. И это "новодел", для коллекционеров он мало интересен. А обычным пользователям интересен вполне. Потому что пользоваться простыми вещами в этом есть определенный кайф. Их можно полностью освоить при дефиците времени и минимизировать любые риски "черных ящиков". Это если совсем коротко. А если символически, наблюдая, что здесь собрались не одни уже только спектрумисты, я теперь именую всю нашу тусовку "цифровые партизаны"

Bedazzle
22.11.2019, 22:02
Сложность компьютера это повышение порога для вхождения.

Нет. Множество бабулек со смартфонами пример.


У вас есть портфолио игр для Android и потенциальные инвесторы с миллионом евро? А тем у кого их нет? Гораздо приятней написать своими силами,чем идти к кому-то в кабалу.

Ну так пишите, кто не даёт? Несколько тредов, в которых замечал вас последнее время - одно бесконечное бла-бла-бла с наполеоновскими даже не планами, а просто намётками на идеи.


В таком случае наверно малые компьютеры 70 и 80-х, которые Вы именуете ретро вам не интересны.

Рад, что вы составили своё мнение на мой счёт. Предлагаю на этом закончить непродуктивную дискуссию, которая перешла в оффтопик.

Raydac
30.11.2019, 13:20
ради интереса, вставил в версию 2.0.1-SNAPSHOT поддержку архивов от Spec256. чтобы заодно и проверить сходность. Процентов 80 игры Spec256 имхо очень жестко расчитаны именно на виртуальный проц с 64 битными графическими регистрами. У меня такого нет и я просто пускаю 8 ядер на их собственной памяти, с последующей синхронизацией некоторых регистров (по умолчанию IX IY и F с сохранением флага C), но сделал что в *.CFG файл (который юзается обычно EmuzWin) можно добавить опцию zxpAlignRegs где установить какие регистры должны сихронизироваться с процом который выполняет неизмененную программу (всего получается 9 спеков в параллель). К примеру для ScoobyDoo этот параметр
zxpAlignRegs=HLXY а для Renegade это
zxpAlignRegs=DE. Так вроде худо бедно работает, но не все игрухи и видно что расчет Spec256 именно не на многопроцессорность, а на SIMD процессор с длинными регистрами.
https://raw.githubusercontent.com/raydac/zxpoly/master/docs/screenshots/Spec256emulationScoobyDoo.png
обрабатываются только архивы ZIP, содержащие игру в SNA формате, файлы могут быть во вложенных директориях, так как прочесываются все файле в зипе и анализируется только расширение, соответственно в одном архиве должна быть одна игра
из атрибутов кладовского эмулятора, я поддержал только BkOverFF

Bedazzle
30.11.2019, 19:47
ради интереса, вставил в версию 2.0.1-SNAPSHOT поддержку архивов от Spec256. чтобы заодно и проверить сходность.

Круть!

Raydac
13.12.2019, 01:50
вроде немного удалось разобраться с эмуляцией Spec256, конечно неполностью, но большинство опубликованных игр эмуль теперь "тянет", не работают корректно "knightlore" (там мне кажется какая-то трабла с SNA, он и просто так не эмулится нормально), AtticAttack, Bubbler и Solomon's keys
всем рассказывавшим о том что "там просто в параллель процы", хочется пожелать жизненных успехов :D, на деле, у разных игр еще и разные регистры синхронить приходится

NEO SPECTRUMAN
13.12.2019, 05:28
на деле, у разных игр еще и разные регистры синхронить приходится
А что синхронить все по одному 1-му
или по одному 9-му не прокатывает?

- - - Добавлено - - -


всем рассказывавшим о том что "там просто в параллель процы"
zx poly при этом как то же работает
в режиме "просто в параллель процы"

тоесть реализация spec256 возможна и таким образом
но есно не все будет работать
тк очевидно что "легким движением руки" прочитав один "разный" байт
можно запустить 8 независимых потоков в своих грязных многоядерных целях :)


а сколько сделанного не работает в режиме "в параллель процы"?

Raydac
13.12.2019, 09:35
а сколько сделанного не работает в режиме "в параллель процы"?
без синхронизации PC и SP не работают практически все адаптированные игры, а так даже небольшую базу встроенную методом тыка пришлось делать


// base of registers for some known adapted spec256 games
// allowed A,F,B,C,D,E,H,L,X,x,Y,y,1,0,P,S,s,a,f,b,c,d,e,h,l
//-----------------------------------
// reg.set: A,F,B,C,D,E,H,L,1(F without C)
// alt.set: a,f,b,c,d,e,h,l,0(F' without C)
// indexex: X(high byte IX), x(lower byte IX),Y(high byte IY), y(lower byte IY)
// special: P(PC),S(high byte SP),s(lower byte SP)
//-----------------------------------

rene256,eccdc84f404e341db54f96bd6230ac35ca7ee9a101 d96c81210d3b8203f53043,DEPSs
threeweeks48k,128ec8814387b0a338c6c22e4dd80c148406 0189c9342477064d348b9207112a,1HPSs
phantis1,ec8275e41af1efb80fd086d2f36013f5eed37f0f0 ee386b23dd237c7f0730759,1XxYyHLDEPSs
underw,85f4811cee40c859060c9412d93bced02f0966a365a 34f761cc97eceab8fbd0b,HLPSs
brucelee256,429b5a50d3ce7b8b7236b18d8e8c5307f0165d 436bcdbd0d8b354e101d312708,FfPSsXxYyHhLlBbCc
dizzy1,89906936113c676288a2e958ea3744195c1f6d213ab 7841c0d98f2f036df1380,HLPSs
scoobydoo256,ddb1960d4aa5b1a3069f0b61fea6d0284c535 1eb5eaa45b073721c9baaf096ee,HLXxYyPSs
sabrew,3e74bfeefe7b69d163a12e001ae4ce6416a43ada28f c32569ad2df747d1b83e9,HhLlXxYyFfPSs


как миксуются стандартные атрибуты с Spec256 цветами, для чего у Кладова есть в cfg параметры DownColorsMixed и UpColorsMixed, так и неясно

Lethargeek
13.12.2019, 21:41
а так даже небольшую базу встроенную методом тыка пришлось делать
а можешь поставить бряки на расхождение и логи выложить, где оно происходит? надо же причину установить
лучше для threeweeks48 и phantis1 - у меня от них остались куски дизасма

Raydac
14.12.2019, 17:30
а можешь поставить бряки на расхождение и логи выложить, где оно происходит? надо же причину установить
лучше для threeweeks48 и phantis1 - у меня от них остались куски дизасма
там немного не так работает, посмотрел как скажем renegade раскрашенная на кладовском работает, дак она работает плохо, потому что там ненужныые регистры синхронятся как раз, т.е. получается что надо синхронизировать такие регистры, которые не участвуют в графике к примеру и у всех это разное

Lethargeek
14.12.2019, 18:18
там немного не так работает, посмотрел как скажем renegade раскрашенная на кладовском работает, дак она работает плохо, потому что там ненужныые регистры синхронятся как раз, т.е. получается что надо синхронизировать такие регистры, которые не участвуют в графике к примеру и у всех это разное
я не утверждал, КАК работает; мы не знаем; может быть, можно вовсе без синхронизации обойтись, а достаточно подчистки мусорных данных

кстати, в первых двух ренегатах отдельные спрайты с глюками (маски нет или испорченная), что в оригинале малозаметно, но может проявиться в раскраске

Raydac
15.12.2019, 14:48
зарелизил версию 2.0.1 в которой поддержана эмуляция (через многопроцессорность) Spec256. В качестве снапшотов обрабатываются только zip архивы содержащие SNA файл.

Raydac
22.12.2019, 19:54
зарелижена версия 2.0.2, багфиксинг и улучшения в GUI, пофикшена эмуляция игры Solomon's key для Spec256

Raydac
31.12.2019, 20:16
зарелизил версию 2.0.3, где сделан микс цветов атрибутов и Spec256 палитры + пофикшено дефолтное значение флага BkOverFF из-за которого в предыдущей версии пропадали некоторые элементы белого цвета в Spec256 играх
вобщем сейчас проблема с отображением только для следующих игр в Spec256
- Knight Lore
- Aticatack
- Bubbler
они играют но трабла в цветах

Raydac
19.01.2020, 01:06
зарелизил версию 2.0.4
- сделан рефакторинг Spec256
- добавлена поддержка бипера (так как сделано через Java Sound API, то могут быть какиенить артефакты), по умолчанию поддержка деактивирована, включается через меню опций
- добавлены источники загрузки ROM128+TRDOS

https://youtu.be/NugmFS3Us_Q

Raydac
14.03.2020, 14:01
Вышел релиз 2.0.5, как главная фича - добавлена поддержка джойстиков и геймпадов ну и немного переработан вывод звука чтобы можно было слышать загружаемый с магнитофона файл

https://youtu.be/mdujjdmcEvk

Raydac
01.06.2020, 08:48
Sebastian Braunert попросил дать возможность раскрашивать игры сделанные в AGDx, но у них там нет спрайт-масок и проверка столкновения раскрашенных объектов рассинхронизирует пути исполнения программ в режиме ZXPoly, но в Spec256 это не страшно. Заимпрувил свой редактор спрайтов чтобы экспортировать в Spec256 снапшот и вот что с его игрухой вышло

https://youtu.be/_j78G5hcmkE

NEO SPECTRUMAN
01.06.2020, 09:06
Raydac, а может стоит переименовать тему в "эмулятор zx poly\spec256" ?
ато тема воспринимается каждый раз как "еще один \ очередной эмулятор ZX"
когда она периодически всплывает

Raydac
01.06.2020, 09:40
а может стоит переименовать тему в "эмулятор zx poly\spec256" ?
ну если модераторы могут, то пусть переименуют, а то я не вижу каких то опций на эту тему в форуме

CityAceE
01.06.2020, 10:53
Переименовал тему.

Lethargeek
01.06.2020, 17:12
Sebastian Braunert попросил дать возможность раскрашивать игры сделанные в AGDx, но у них там нет спрайт-масок и проверка столкновения раскрашенных объектов рассинхронизирует пути исполнения программ в режиме ZXPoly, но в Spec256 это не страшно. Заимпрувил свой редактор спрайтов чтобы экспортировать в Spec256 снапшот и вот что с его игрухой вышло
а при чём тут агд? сеуд же самостоятельный движок, просто тоже мерзотно-ксорный

Raydac
01.06.2020, 20:52
а при чём тут агд? сеуд же самостоятельный движок, просто тоже мерзотно-ксорный
а ну да, я в них не разбираюсь, просто на меня потом вышел разработчик agdx и поэтому подумал что это одно и тоже

Raydac
13.06.2020, 13:57
вышла новая версия 2.0.6
- сделан рефакторинг и оптимизации
- добавлена поддержка видеостриминга MPEG TS (требует FFmpeg), хотел играть джостиком на телеке, но задержка плеера - на моей приставке всеж слишком большая а настройки напрямую не выведены, самую играбельно минимальную получил только на FFplay
- добавлена поддержка загрузки POK файлов
- в редакторе сделан экспорт в Spec256 формат, что позволяет красить и пускать игры в 16 цветах в режиме Spec256

https://youtu.be/wLO3SqeRcp4

Raydac
14.06.2020, 11:33
пример быстрой частичной колоризации с экспортом в Spec256 в редакторе Zx-Poly Sprite Corrector

https://youtu.be/OytncRQvBlc

NEO SPECTRUMAN
14.06.2020, 12:50
Raydac, а можно сделать открытие при помощи dragndrop-а ?
и открытие любого файла вообще
тк софтварь может пригодиться и для других целей

так же у меня не получается проделать зум
ни каким известным мне способом

пробовал на zxpoly-sprite-corrector-2.0.6.zip

с кисточкой вообще классная идея

да и нужно впиливать поддержку всей поллитры спек256
уже нужно отправлять этот глючный вдоль и поперек emuzwin на пенсию

- - - Добавлено - - -

и вообще про наличие такой тулзы нужно написать в первом посте же :v2_yahoo:

Raydac
14.06.2020, 12:51
так же у меня не получается проделать зум
ни каким известным мне способом
зум стандартно как и на всем софте CTRL+mouse wheel работает, если я правильно понял о чем речь
неочень понятно что подразумевается под "открытием любого файла", редактор может открывать то что поддерживает ичей формат ему известен

NEO SPECTRUMAN
14.06.2020, 12:56
зум стандартно как и на всем софте CTRL+mouse
не у всех есть физически колесо мыши
(например то что на тачпадах к использованию не пригодно
и его проще отключить чем смирится с постоянными глюками)
у меня оно замаплено на кнопки
и вместе с контром это не фурычит

можно продублировать на ctrl+/- или просто на колесико?



под "открытием любого файла", редактор может открывать то что поддерживает ичей формат ему известен
то есть открывать чей формат ему НЕ известен
например любой бинарный дамп памяти с любым расширением и любого по возможности размера

Raydac
14.06.2020, 13:00
не у всех есть физически колесо мыши
у меня оно замаплено на кнопки
и вместе с контром это не фурычит
с таким не сталкивался еще, добавлю опции в меню

- - - Добавлено - - -


например любой бинарный дамп памяти с любым расширением и любого по возможности размера
а куда потом сохранять такое? редактор заточен под вполне утилитарную роль редактирования дампа памяти спека всеж

NEO SPECTRUMAN
14.06.2020, 13:07
а куда потом сохранять такое? редактор заточен под вполне утилитарную роль редактирования дампа памяти спека всеж
ну да

а как тогда щас сохраняется scr trd ?


как вариант
для такого сохранять только в виде бинарника
ложить в бинарник 4 8 раза разные слоя

или экспортировать в виде 8 бит на пиксель
можно будет как нибудь это использовать


можно просто чисто для просмотра
без возможности редактирования и сохранения


ну и так же может быть полезно делать в ширину больше чем 32 байта
нужно 256
тк можно хранить графику в виде столбцев
когда в L ложиться номер символа
и с инкриментом одного H

Raydac
15.06.2020, 11:14
добавил в версию 2.0.7-SNAPSHOT пункты меню Zoom In и Zoom Out

- - - Добавлено - - -


а как тогда щас сохраняется scr trd ?
редактор был сделан не для редактирования оригинального файла, а как нанесение "штукатурки" поверх существующего чтобы получить изображение для ZX-Poly 16 цветов или 512 на 384 режим, т.е. там есть оригинальные данные (base) и вот поверх мы рисуем выставляя маску где юзать базовые данные а где штукатурку и когда сохраняешь то сохраняется микс в виде 4х файлов

gorus13
15.06.2020, 15:09
Snapshot 2.0.7 на MacOS
При запуске ошибка JRELoadError

Raydac
15.06.2020, 15:28
Snapshot 2.0.7 на MacOS
При запуске ошибка JRELoadError
Java версии 1.8 и выше установлена? можно если что установить отсюда https://bell-sw.com/pages/downloads/#/java-11-lts

Raydac
09.08.2020, 17:02
по просьбе пользователя с Украины, начиная с 2.0.7-SNAPSHOT добавлена поддержка видеофильтров, сделал фильтры
- grayscale
- Old TV
- Gaussian blur
так же сделал поддержку covox (порт FB)
73236

Andrey_PROFI
09.08.2020, 21:31
Raydac, просьба не отвлекаться на рюшечки "для жителей укр-ы"... Они отвлекают Вас от главного, от самого процесса отладки для соответствия эмуляции.

Raydac
15.08.2020, 23:23
в 2.0.7-SNAPSHOT добавленя поддержка AY-3-8910

Raydac
16.08.2020, 12:23
вышел релиз 2.0.7

https://youtu.be/r-WwVBBx1I4

Raydac
26.08.2020, 09:12
в 2.0.8-SNAPSHOT, добавил поддержку TurboSound(NedoPC), включается через флаг в Preferences (требует перезапуска эмуля)

Shamancs
28.08.2020, 20:03
вышел релиз 2.0.7


ай нид, хелп )
скачал версию с jdk, но при запуске в логе ругается вот так:
%JAVA_RUN%="java.exe"
------JAVA_VERSION------
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) Client VM (build 25.171-b11, mixed mode)
------------------------
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

что я делаю не так?

Raydac
28.08.2020, 22:04
надо запускать экзешник, тут судя по всему стартуешь run_with_log.bat, который запускает не встроенную JVM а установленную в системе, проверю что к чему

Shamancs
29.08.2020, 12:17
надо запускать экзешник, тут судя по всему стартуешь run_with_log.bat, который запускает не встроенную JVM а установленную в системе, проверю что к чему

спасибо, помогло!

эмуль нравится, но сразу пару вопросов возникло:
1. у меня какой то баг со звуком, каждые 2-3 секунды музыка или тишина прерывается коротким "хрип-хрип", как будто контакт на zx-динамике отходит ) это известная фича?
2. спектрофоны 22 и 23 не запускаются, проверил на анриле - работают

Raydac
29.08.2020, 12:42
1. у меня какой то баг со звуком, каждые 2-3 секунды музыка или тишина прерывается коротким "хрип-хрип", как будто контакт на zx-динамике отходит ) это известная фича?
2. спектрофоны 22 и 23 не запускаются, проверил на анриле - работают
какая версия эмулятора?

- - - Добавлено - - -


2. спектрофоны 22 и 23 не запускаются, проверил на анриле - работают
не все баги отловлены, думаю у меня не всё гладко эмулируется в плане работы с диском, надо будет переделать модуль вг93

Shamancs
29.08.2020, 20:14
какая версия эмулятора?


zxpoly-emul-2.0.7-windows-x64-withjdk

Raydac
31.08.2020, 01:04
2. спектрофоны 22 и 23 не запускаются, проверил на анриле - работают
да, что то даже непонятно почему спектрофон не запускается, 20й всё ок грузится и работает, а гружу с диска спектрофон 22 и он после загрузки висит на HALT при этом что IFF1 что IFF2 сброшены, т.е. чистый DI HALT, может какие то хитрые есть выкрутасы у загрузчиков которые надо поддержать

Raydac
04.09.2020, 01:27
сделал переделки по работе со звуком, чтобы быстрее всё работало, так что можно 2.0.8-SNAPSHOT версию попробовать (https://github.com/raydac/zxpoly/releases/tag/2.0.8-S), у Java к сожалению достаточно уродский Java Sound API

Raydac
12.09.2020, 15:14
вышел релиз 2.1.0, улучшена эмуляция Z80 и 8910, разные улучшения и рефакторинг

https://youtu.be/CTTrmFwTP90

ZEman
12.09.2020, 19:21
.

Raydac
12.09.2020, 20:18
думаю что медленная закачка с гитхаба это когда только опубликуешь и микрософт еще не успеет по региональным зеркалам раскидать

Shamancs
14.09.2020, 21:50
вышел релиз 2.1.0, улучшена эмуляция Z80 и 8910, разные улучшения и рефакторинг

Круто, звук теперь дубасит, что надо!

Raydac
26.09.2020, 14:16
сделал релиз 2.1.1
- пофиксил найденные ошибки в эмуляции Z80 (теперь демка Atarin идет с нормальным звуком)
- пофиксил ошибку о обработке кастомных ROM в режиме Spec256
- добавлена возможность использования WAV файлов для чтения с "магнитофона"

https://youtu.be/rdzeoIqp0as

Lethargeek
26.09.2020, 21:22
а чего бордюрные полоски такие странные?

Raydac
26.09.2020, 21:33
а чего бордюрные полоски такие странные?
я не эмулирую бордюр полностью для скорости отрисовки, там гдет 60 с копейками участков закрашиваемые

Lethargeek
26.09.2020, 21:49
не эмулирую бордюр полностью для скорости отрисовки
прям теряюсь, как сегодня отрисовка может быть такой медленной, вроде жаба отстаёт от няшной не на порядки

Raydac
27.09.2020, 13:04
прям теряюсь, как сегодня отрисовка может быть такой медленной, вроде жаба отстаёт от няшной не на порядки
в Java со всем этим делом работаешь через разные абстрактные слои, которые не делались для игрового применения и не всегда оптимально подходят, к тому же в эмуле приходится эмулировать до 8 одновременно работающих спектрумов и очень разные видеорежимы, ну и фон где рисуется бордюр это отдельная часть от экрана спектрума в эмуле, что позволяет без проблем скалить колесиком мышки сам спековский экран

Lethargeek
27.09.2020, 15:03
в Java со всем этим делом работаешь через разные абстрактные слои, которые не делались для игрового применения и не всегда оптимально подходят,
какие слои? рисовать весь кадр нужно тупо в массив/массивы и потом единожды в конце кадра обработка и системный вызов для вывода, который не должен особо жрать


к тому же в эмуле приходится эмулировать до 8 одновременно работающих спектрумов
вроде современного железа должно хватать, даже при неоптимальной эмуляции многократно (вот не верю, что жаба тормозная настолько)


и очень разные видеорежимы,
не одновременно же, и опять-таки неважно, если в массивах


ну и фон где рисуется бордюр это отдельная часть от экрана спектрума в эмуле,
так тогда наоборот, даже проще, тупо fill в бордюрный массив от одного out(#FE) до другого

Raydac
27.09.2020, 16:53
вроде современного железа должно хватать, даже при неоптимальной эмуляции многократно (вот не верю, что жаба тормозная настолько)
ну мож я неоптимальный код написал который неочень быстр, джаву можно изнасиловать так что будет не медленнее сей, но у меня есть постоянный риск при таком перестать понимать что я напрограммил

andrews
27.09.2020, 16:58
Тогда ты первопроходец! И можешь этим воспользоваться с каким-нить "Java4Games"

Raydac
30.09.2020, 01:12
чет торкнуло меня и я ради прикола вставил в эмулятор видеофильтр Black & White (только белые и черные пиксели по паттерну), забавно игрухи смотрятся
73592
но пока играл в одну игруху в этом режиме подумалось, что разрешение достаточно низкое, всего 512x384 и по идее если бы были такие дисплеи (или электронные книги) для слепых, то можно было бы на них выводить

NEO SPECTRUMAN
30.09.2020, 01:23
были такие дисплеи (или электронные книги) для слепых, то можно было бы на них выводить
те что я видел в интернетах
физически только под текст
каждый 2х4 отделен друг от друга пустотой...

да и наверно полный "экран" стоил бы дороже...

- - - Добавлено - - -


всего 512x384
и наверно это даже многовато

Raydac
30.09.2020, 01:29
те что я видел в интернетах
физически только под текст
каждый 2х4 отделен друг от друга пустотой...
да и наверно полный "экран" стоил бы дороже...
я тоже в сети только под одну две строки текста нахожу, хотя находятся статьи еще за 2009-2014й о том что "какие то южнокорейцы/немцы делают электронную книгу для незрячих" (https://habr.com/ru/post/228269/), но х.з. чем закончилось

NEO SPECTRUMAN
30.09.2020, 01:52
вот нашел blitab
https://www.perkinselearning.org/sites/elearning.perkinsdev1.org/files/u5747/Blitab5.jpg
https://www.perkinselearning.org/sites/elearning.perkinsdev1.org/files/u5747/blitab3.jpg
https://www.perkinselearning.org/sites/elearning.perkinsdev1.org/files/styles/scale_only_519x374/public/Blitab4.jpg?itok=7APn1Gh-

вопрос нахрена там экран снизу?
лучше б сделали физические кнопки для ввода
и визуализацию интерфейса прямо на поверхности...


- - - Добавлено - - -


хотя находятся статьи еще за 2009-2014й о том что "какие то южнокорейцы/немцы делают электронную книгу для незрячих", но х.з. чем закончилось
и во всех них одни и те же фотки
и изобрели то индусы
то пиндосы
то еще ктото

и на каждой статье
разработан очередной первый в мире планшет для слепых...

а купить где либо ноль...

- - - Добавлено - - -

там вон даже телефон нарисовался в концепциях
https://rubryka.com/wp-content/uploads/2020/01/14-14-840x480-c-1.jpg

- - - Добавлено - - -


еще всякие девайсы
https://www.touchpadpro.org/

на вид чота интересное и даже цветное
https://mediaprocessor.websimages.com/width/463/crop/12,9,435x324/www.touchpadpro.org/diagr.jpg
https://mediaprocessor.websimages.com/width/901/crop/0,18,901x245/www.touchpadpro.org/qd4orjevty7ixoyunw7t.jpg


еще меня добивает
кроме того что все девайсы word first
так еще и не одной вменяемой фотки нет
сплошное 400х300...

Raydac
30.09.2020, 02:00
кроме того что все девайсы word first
так еще и не одной вменяемой фотки нет
сплошное 400х300...
сколько ни попадались в поисковике, всё выглядит как концепт-макеты, а не как реальные даже прототипы, скорее всего промоматериалы для выжимания бабла из инвесторов

NEO SPECTRUMAN
30.09.2020, 02:05
сколько ни попадались в поисковике
я думаю пока все на что стоит расчитывать сейчас выглядит так
https://cdn.shopify.com/s/files/1/1192/0390/products/brailliant-bi-40-braille-display-hardware-humanware-assistive-technology-146687_700x.jpg?v=1571439664
https://images-na.ssl-images-amazon.com/images/I/51phshcRhrL._AC_SL1000_.jpg

и то у них цены заоблачные
по нашим меркам

Raydac
23.12.2020, 01:32
опубликован релиз 2.1.2
добавлен чб видео фильтр, режим фуллскрин, проапдейчены зависимости, небольшие улучшения в эмуляции spec256

Raydac
06.03.2021, 14:07
вышла версия 2.1.3, по просьбам пользователей добавлены новые видео фильтры, кликабельная экранная клавиатура, добавлена возможность задавать клавиши для джойстиков и отключать клавиатуру, различные фиксы и улучшения, может теперь писать gif и с большинством включенных видеофильтров

ZEman
06.03.2021, 19:35
багов много.
фулскрин - работает но, получается пустой экран и посередине изображение.
экранная клавиатура загораживает всю нижнюю часть окна эмулятора, из-за чего использование оной становится бессмысленным.

Raydac
06.03.2021, 20:15
фулскрин - работает но, получается пустой экран и посередине изображение.
экранная клавиатура загораживает всю нижнюю часть окна эмулятора, из-за чего использование оной становится бессмысленным.
ctrl+wheel mouse позволяет увеличивать-уменьшать как хочется
клавиатуру можно делать отдельным окном если выставить специальный флаг в преференцес, сделать так чтобы клавиатура и была встроена в экран и не скрывала ничего, не получится, поэтому пока мышл не над ней, она полупрозрачная

ZEman
06.03.2021, 21:00
я конечно понимаю что можно, но во всех нормальных эмуляторах по умолчанию, фулскрин - это картинка на весь экран.

Raydac
06.03.2021, 21:12
я конечно понимаю что можно, но во всех нормальных эмуляторах по умолчанию, фулскрин - это картинка на весь экран.
идея неплохая, заимплеменчу в следующей версии

- - - Добавлено - - -

меня больше заботит как убрать странное мельтешение спрайтов в играх типа Back To The Future III и Gryzor, как понимаю там спрайты меняются в процессе одной отрисовки экрана не раз

Raydac
24.06.2021, 17:57
вышла новая версия 2.2.0, наконец то пофиксил эмуляцию Z80 так что теперь все тест сюиты на нем "зеленые" даже с недокументированными флагами и хитрыми последовательностями ccf+scf, заимпрувил эмуляцию FDD так что многие демки стали работать, хотя конечно до идеала эмуляции ВГ93 еще далековато весьма

Raydac
25.07.2021, 15:40
для фана быстренько расцветил alien8 игруху, без сюрпризов, заняло несколько часов, положил в адаптированные в проекте
https://raw.githubusercontent.com/raydac/zxpoly/master/adapted/Alien8/alien8_video.gif

Bedazzle
26.07.2021, 16:25
Что-то странное с редактором.
Открыл 48к SNA, пробую промотать по памяти ползунком. Дополз до адреса примерно в 48 тыщ, дальше не даёт. Стрелочками можно скроллить, но чтобы попасть на нужный адрес, придётся ждать.
Вручную адрес тоже не вписать. :(

Ладно, мотаю для проверки на 15616, где должен находиться пзушный шрифт. Там пустота. Видимо, используется внутренняя адресация эмуля?

https://i.imgur.com/au6DUha.png

Raydac
26.07.2021, 21:13
спрайт корректор показывает только данные которые загрузил из снапшота, так что искать там пзу и прочее не надо, сколько из снапшота загружено, столько и доступно, в данном случае 48 кб, адрес тут не адрес, а смещение от начала данных. Спрайт корректор и был сделан для редактирования снапшотов и получения на их базе новых снапшотов

Bedazzle
26.07.2021, 23:26
спрайт корректор показывает только данные которые загрузил из снапшота, так что искать там пзу и прочее не надо

Ок, понятно.


сколько из снапшота загружено, столько и доступно, в данном случае 48 кб, адрес тут не адрес, а смещение от начала данных.

Жалко что нет правильного адреса для загруженного sna или z80.
Я знаю правильные адреса, где расположена графика, и логично искать её там, а не пересчитывать от начала файла (это для тапки ещё как-то объяснимо).

Кроме этого, при загрузке из tap показывает блоки, и если случайно тыкнуть на заголовочный, программа предупреждает, что грузить его не будет.
А зачем в таком случае давать пользователю возможность выбирать такие блоки? :/

Raydac
27.07.2021, 00:26
Кроме этого, при загрузке из tap показывает блоки, и если случайно тыкнуть на заголовочный, программа предупреждает, что грузить его не будет.
А зачем в таком случае давать пользователю возможность выбирать такие блоки? :/
это на случай если надо бинарный блок из тап проимпортировать и раскрасить для дальнешего своего какого то использования, давно делал, надо будет посмотреть как запретить тогда выбор

Bedazzle
27.07.2021, 01:41
надо будет посмотреть как запретить тогда выбор

Да, так лучше.

Raydac
07.08.2021, 17:00
зарелизил версию 2.2.1, теперь там стереозвук и интерлейсинг добавлен, пробовал контендед мемори сделать, но она пока что то неочень вышла

Raydac
19.12.2021, 23:08
вышла версия 2.2.2, по настоятельной просьбе пользователей добавил поддержку TZX файлов, так же по мелочам фиксы, рефакторинг и улучшения

Raydac
15.01.2022, 20:41
вышла версия 2.2.3, улучшена совместимость с спеком 128м в режиме ZX128, по запросам пользователей стало возможно добавлять быстрые кнопки на панель, теперь можно грузить образы ROM, я и не знал что были картриджи для ZXInterfaceII

Raydac
02.05.2022, 15:19
вышла версия 2.3.0, заимпрувил рендер, пофиксил некоторые баги, заимпрувил z80 эмуляцию, добавил по просьбе пользователей пару сервисных опций

Raydac
27.08.2022, 14:18
вышла версия 2.3.1, небольшой рефакторинг и багфиксы, по просьбе пользователей добавил поддержку Ula Plus палитры и SZX снапшотов

Raydac
23.03.2023, 13:11
зарелизил версию 2.3.2, небольшие багфиксы, добавил настройку для снижения уровня потребления ресурсов, встроенную Java поднял дол 20+37

Raydac
24.01.2024, 11:52
маленький туториал по раскраске, а то какие то западные люди наткнулись на эмуль и попросили

https://youtu.be/REQVfg8cAFA?si=eGLPJV8bu5KI_ge0

Raydac
03.05.2024, 01:16
один из авторов игры Comando Quatro сделал колоризованную версию для ZX-Poly, привожу текст пулл реквеста


Hello
I'm the programmer of "Comando Quatro" (yes, 35 years ago) and I've recently discovered your emulator (TLDR; I've recently rejoined my old colleagues from Gamesoft and they even invite us to give talks about those years: https://www.youtube.com/watch?v=TKIFtYspv1U , in spanish).
I have tried to adapt my game to "mode 4", colouring the graphics. It has been fun to meet again with that game that took me so many hours of sleep when I was only 20 years old.
I think the most appropriate place to publish the result is here.
I haven't added too many colour details. The main feature of the result is that... there is no more "colour clash".
Thanks for your work.
Best regards.

https://github.com/raydac/zxpoly/raw/master/adapted/ComandoQuatro/ComandoQuatro.gif
ссылка на ZXP файл (https://github.com/raydac/zxpoly/blob/master/adapted/ComandoQuatro/ComandoQuatro.zxp)

Lethargeek
03.05.2024, 02:15
I haven't added too many colour details. The main feature of the result is that... there is no more "colour clash".
но при этом потерялся один эффект - отлетающие от удара враги в оригинале меняли цвет
я её давно уже раскрашивал для юлакса (а точнее, просто обесклэшивал, что быстрее) и мне сохранить его удалось

Raydac
07.12.2024, 21:42
в связи с приближающимся x-mas сделал раскраску для игры Summer Santa Update 2022 (https://spectrumcomputing.co.uk/entry/39005/ZX-Spectrum/Summer_Santa_2022_Update)
скачать можно отсюда (https://github.com/raydac/zxpoly/blob/master/adapted/SummerSanta2022/SummerSanta2022.zxp)
https://github.com/raydac/zxpoly/blob/master/adapted/SummerSanta2022/SummerSanta2022ZxPoly.gif?raw=true