SII 0 21 августа, 2020 Опубликовано 21 августа, 2020 · Жалоба 1 hour ago, Xenia said: Тогда отчего __inline__ мне ответил, что реализовать игры от "Sega Genesis" на STM32H7 нереально? Ведь у STM32H7 тактовая частота 480 МГц! И пусть там интерлив и всё такое, но по сравнению с 7.61 МГц это очень много, и даже эмуляция нативного кода не должна понижать производительность на порядок. Может, много времени нужно на эмуляцию периферии? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 22 августа, 2020 Опубликовано 22 августа, 2020 (изменено) · Жалоба 3 hours ago, Xenia said: Тогда отчего __inline__ мне ответил, что реализовать игры от "Sega Genesis" на STM32H7 нереально? Реализовать игры от SEGA Genesis на STM32H74x реально. Только вы должны понимать, что это потребует от вас переписывания кода M68000+Z80 на C/Assembler STM32. Я вот даже боюсь представить, сколько человеко-лет уйдёт на переписывание хотя бы одной игры. 3 hours ago, Xenia said: Ведь у STM32H7 тактовая частота 480 МГц! И пусть там интерлив и всё такое, но по сравнению с 7.61 МГц это очень много, и даже эмуляция нативного кода не должна понижать производительность на порядок. Вы один процессор будете эмулировать или всё-же полностью игровую приставку? Плюс к тому же вы оставили без внимания второй процессор Z80, без которого большая часть игр не запустится. А железо? Оно будет реальное, им будет управлять STM32 ? Или тоже эмулироваться будет? Вы бы для начала посмотрели исходный код какого-нибудь эмулятора SEGA Genesis, прежде чем вступать в дискуссии. И определились что нужно: реализовать игры SEGA на STM32(если да, то какие именно?) или всё-же портировать эмулятор. Прошло достаточно приличное количество времени, за которое можно перенести несколько эмуляторов на STM32. И почему выбор пал на STM32? Современный Allwinner какой-нибудь будет на порядок лучше смотреться в этих задачах! 1 hour ago, SII said: Может, много времени нужно на эмуляцию периферии? Очень тепло. Но не только в этом загвоздка. Даже китайцы (учитывая их любовь к опен-сорцу и эмуляции ретро-приставок) до сих пор не освоили SEGA Genesis(Megadrive). Хотя на гитхабе есть исходники. https://whycan.cn/t_2198.html Вот консоль на STM32 + внешняя SDRAM. На манеже все те же - относительно "лёгкие" эмуляторы: NES, TurboGrafx16, SEGA GameGear/MasterSystem, SG-1000. Нет ни SEGA GEnesis, ни SNES, ни NEO-GEO, ни CPS , ни тем более GBA. On 8/19/2020 at 5:58 PM, RadiatoR said: Ждём реинкарнации коптера от почты РФ Было бы здОрово! Уже давно пора использовать коптеры для доставки почты Изменено 22 августа, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 22 августа, 2020 Опубликовано 22 августа, 2020 (изменено) · Жалоба Вот цитата из того форума: Quote 之前我发过一个帖子:开源目前为止STM32绝无仅有的PCE游戏模拟器,F7流畅40帧! Я уже публиковал пост: открытый исходный код уникального игрового симулятора PCE для STM32, F7 сглаживает 40 кадров! Что-то как-то слабёхо у него вышло. У меня даже на STM32H743 без внешней памяти - вышли все честные ровные 60 FPS + звук: Наверное тот чел на китайском форуме не занимался оптимизацией. И звук в эмуляторе мне пришлось переделать, брал сорец совершенно другого эмулятора. Изменено 22 августа, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 3 часа назад, __inline__ сказал: Вы бы для начала посмотрели исходный код какого-нибудь эмулятора SEGA Genesis, прежде чем вступать в дискуссии. И определились что нужно: реализовать игры SEGA на STM32(если да, то какие именно?) или всё-же портировать эмулятор. Я не вступала с вами в дискуссию, а лишь задала вопрос про STM32H7: 16.07.2020 в 02:26, Xenia сказал: А известно ли вам, на каком процессоре оригинальный SEGA Megadrive работал? Ведь давно это было. Неужели в те времена уже существовали процессоры круче STM32H7? Ведь не эмуляция же нативного кода так сильно убивает скорость? На что получила вот такой ваш ответ: 16.07.2020 в 03:17, __inline__ сказал: Ждём эмулятора SEGA MegaDrive от Xenia На STM32H7, с плавными 60 FPS, без пропуска кадров и с нелагающим звуком и музыкой. Ясно, что после такого ответа мне пришлось задать этот же вопрос другому человеку (_4afc_), который был в курсе технических характеристик Sega Genesis. 3 часа назад, __inline__ сказал: Вы один процессор будете эмулировать или всё-же полностью игровую приставку? Плюс к тому же вы оставили без внимания второй процессор Z80, без которого большая часть игр не запустится. А железо? Оно будет реальное, им будет управлять STM32 ? Или тоже эмулироваться будет? Да тоже. Тем более что ныне существуют двухядерные STM32H747/STM32H757, где второе ядро ну никак не слабее Z80. 3 часа назад, __inline__ сказал: И почему выбор пал на STM32? Современный Allwinner какой-нибудь будет на порядок лучше смотреться в этих задачах! По двум причинам. Во-первых, STM32 - это контроллер (MCU), ему и карты в руки управлять периферией, включая дисплей. А во-вторых, я просто ближе с ним знакома, и платы на нем у меня есть, тогда как с Allwinner'ом я никогда прежде не встречалась. 3 часа назад, __inline__ сказал: Только вы должны понимать, что это потребует от вас переписывания кода M68000+Z80 на C/Assembler STM32. Я вот даже боюсь представить, сколько человеко-лет уйдёт на переписывание хотя бы одной игры. Полагаю, что C/C++ для этих целей вполне достаточно, тем паче, что у ARM'ов ассемблер гадкий :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 1 hour ago, Xenia said: Ясно, что после такого ответа мне пришлось задать этот же вопрос другому человеку Зря вы так обижаетесь. На самом деле, вы даже не представляете, сколько всего вылезет по ходу пьесы. Мне очень тяжело это объяснять людям, не знакомым со спецификой портирования эмуляторов. Со стороны действительно всё выглядит достаточно просто: "взял и портировал". А на деле придётся кучу всего решать. А лезть в дебри мне бы не хотелось, хотя бы по причине остаться непонятым. Есть более простой способ: накатать retropie на "малинку". Там уже всё "искаропки", мозг напрягать не нужно. Для STM32 мне такие решения неизвестны, возможно будете первыми 1 hour ago, Xenia said: Во-первых, STM32 - это контроллер (MCU), ему и карты в руки управлять периферией, включая дисплей. А во-вторых, я просто ближе с ним знакома, и платы на нем у меня есть Ну раз платы уже есть, тогда надо браться за дело... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 8 часов назад, __inline__ сказал: Реализовать игры от SEGA Genesis на STM32H74x реально. Только вы должны понимать, что это потребует от вас переписывания кода M68000+Z80 на C/Assembler STM32. Зачем?? При такой разнице в быстродействии, думаю эмулировать можно выполняя эмулируемый бинарный код в режиме интерпретатора. Ничего не "переписывая". Цитата Даже китайцы (учитывая их любовь к опен-сорцу и эмуляции ретро-приставок) до сих пор не освоили SEGA Genesis(Megadrive). Хотя на гитхабе есть исходники. Видимо это мало кому интересно Был бы спрос, нашлось бы и решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 47 минут назад, jcxz сказал: При такой разнице в быстродействии, думаю эмулировать можно выполняя эмулируемый бинарный код в режиме интерпретатора. Ничего не "переписывая". Как-то давно баловался подобным делом с программами для ZX Spectrum перенося их на контроллер, там кроме эмуляции кодов проца нужно было еще и эмулировать железо, причем довольно точно, т.к. большинство игрушек использовало его документированные, но и самое хреновое - недокументированные особенности. Предположу, что здесь есть что-то подобное, плюс всякие специфические видеоускорители и пр... Так что эмулировать проц - это еще даже не половина всей задачи... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 22 минуты назад, mantech сказал: Как-то давно баловался подобным делом с программами для ZX Spectrum перенося их на контроллер, там кроме эмуляции кодов проца нужно было еще и эмулировать железо, причем довольно точно, т.к. большинство игрушек использовало его документированные, но и самое хреновое - недокументированные особенности. Предположу, что здесь есть что-то подобное, плюс всякие специфические видеоускорители и пр... Так что эмулировать проц - это еще даже не половина всей задачи... Ну и что? Конечно нужно эмулировать периферию. Ну так вроде ТС как раз этим и занимается. Я вообще о другом говорил: При эмуляции в режиме интерпретатора не нужны исходники программ. Да и трудозатраты будут на порядки меньше - не нужно разбираться и переписывать каждую программу по-отдельности. Достаточно один раз написать эмулятор и на нём пойдут все (или почти все, в зависимости от его качества) программы. PS: Хотя наверное правильнее это назвать "симулятором". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 22 августа, 2020 Опубликовано 22 августа, 2020 (изменено) · Жалоба 1 hour ago, jcxz said: Видимо это мало кому интересно Был бы спрос, нашлось бы и решение. Я бы перефразировал "видимо это мало кому по силам". Не вижу логичности. Игры под "тяжёлые" приставки действительно намного лучше, не вижу повода утверждать об их малоинтересности. Вдовесок добавлю, спрос на исходники эмуляторов есть, периодически спрашивают исходники именно под конкретный МК. Вариант опенсорца под ПК мало кого устраивает, так как там выкарчёвывать из них дофига надо. 1 hour ago, jcxz said: Зачем?? При такой разнице в быстродействии, думаю эмулировать можно выполняя эмулируемый бинарный код в режиме интерпретатора. Ничего не "переписывая". Это всего-лишь был ответом на вопрос от Xenia: 10 hours ago, __inline__ said: Тогда отчего __inline__ мне ответил, что реализовать игры от "Sega Genesis" на STM32H7 нереально? Ясен пень, что игры от "Sega Genesis" реализовавыть на STM возможно , но невыгодно по времени-трудозатратам. Но возможно. 40 minutes ago, jcxz said: PS: Хотя наверное правильнее это назвать "симулятором". Да хоть как его назови, проблем это не решит. 59 minutes ago, mantech said: Как-то давно баловался подобным делом с программами для ZX Spectrum перенося их на контроллер, там кроме эмуляции кодов проца нужно было еще и эмулировать железо, причем довольно точно, т.к. большинство игрушек использовало его документированные, но и самое хреновое - недокументированные особенности. Предположу, что здесь есть что-то подобное, плюс всякие специфические видеоускорители и пр... Так что эмулировать проц - это еще даже не половина всей задачи... Люто плюсую. Периферия в некоторых приставках действительно навороченая, на несколько голов выше спектрумовской. Одни только 4 плоскости с полу-прозрачностью с разрешением 1024x512 у графического чипа CPS что только стоят К слову видео-чип SEGA Genesis работает на 53 МГц Но двух ядер STM32 должно хватить, вопрос в другом. Как скоро нам ждать результатов, Xenia ? Изменено 22 августа, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 39 минут назад, __inline__ сказал: Периферия в некоторых приставках действительно навороченая, на несколько голов выше спектрумовской. Одни только 4 плоскости с полу-прозрачностью с разрешением 1024x512 у графического чипа CPS что только стоят Вот как раз эмуляция графики - самая простая вещь из эмуляции всей периферии. Так как надо по большому счёту просто переконвертировать содержимое памяти из одного формата в другой. Сложнее эмулировать какую-то периферию, работающую в реальном времени, если нужно точно эмулировать её тайминги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 24 minutes ago, jcxz said: Сложнее эмулировать какую-то периферию, работающую в реальном времени, если нужно точно эмулировать её тайминги. А что это за периферия, если не считать звука? Имеется в виду, где реально точно соблюдать надо. Понятно, что кнопочки, нажимаемые пользователем, должны обрабатываться достаточно быстро, но 10 мс туда-сюда роли не сыграют... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 22 августа, 2020 Опубликовано 22 августа, 2020 (изменено) · Жалоба 26 minutes ago, jcxz said: Сложнее эмулировать какую-то периферию, работающую в реальном времени, если нужно точно эмулировать её тайминги. Вот тут я с вами согласен. В старых играх это сплошь и рядом! Учитывается каждый такт! Даже счётчик отрисовываемой строки используется для смены палитры "на лету", чтобы увеличить число цветов в кадре. В эмулях СЕГи эмуляция по числу тактов одной строки экрана. Изменено 22 августа, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 августа, 2020 Опубликовано 22 августа, 2020 · Жалоба 1 час назад, SII сказал: А что это за периферия, если не считать звука? Имеется в виду, где реально точно соблюдать надо. Понятно, что кнопочки, нажимаемые пользователем, должны обрабатываться достаточно быстро, но 10 мс туда-сюда роли не сыграют... Я именно звук и имел в виду в первую очередь. Но может и ещё что-то есть. Я игрушками не интересуюсь, но могу предположить, что могут быть какие-то светодиодо-моргалки, управляемые ШИМ-ом. 1 час назад, __inline__ сказал: В эмулях СЕГи эмуляция по числу тактов одной строки экрана. Когда (когда-то давно) я писал свой эмулятор старенького компа, то я учитывал число тактов на каждую команду. И периодически синхронизировал скорость эмуляции с числом тактов эмулируемого бинарного кода. Если это делать достаточно часто, то эмуляция получается плавной. Мой эмулятор работал на i486-100МГц под ДОС, поэтому получалась довольно плавная синхронизация (не было ОС, отбирающей такты в произвольное время). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 23 августа, 2020 Опубликовано 23 августа, 2020 · Жалоба On 8/22/2020 at 11:59 AM, jcxz said: При такой разнице в быстродействии, думаю эмулировать можно выполняя эмулируемый бинарный код в режиме интерпретатора. Ничего не "переписывая". Только интерпритатор должен быть честный, без кеша и прочего. На Спектруме Z80, помимо недокументированных команд, часто использовался самомодифицирующийся код - в том числе для ускорения. На Сеге в MC68000 часто для сокрытия исходников был переход в середину многобайтной команды - тогда далее весь код менялся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 23 августа, 2020 Опубликовано 23 августа, 2020 · Жалоба 1 час назад, _4afc_ сказал: Только интерпритатор должен быть честный, без кеша и прочего. Интерпретатор - это программа. И что такое "кеш программы"? не понимаю... А платформа, на которой выполняется этот интерпретатор (например - какой-то МК), должна быть как можно более быстродействующей (для более плавной синхронизации). А значит - все доступные кеши должны быть включены по максимуму. 1 час назад, _4afc_ сказал: На Спектруме Z80, помимо недокументированных команд, часто использовался самомодифицирующийся код - в том числе для ускорения. На Сеге в MC68000 часто для сокрытия исходников был переход в середину многобайтной команды - тогда далее весь код менялся. И что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться