PDA

Просмотр полной версии : Qaop:HTML5 ZX Spectrum emulator



breeze
03.05.2012, 16:08
.

vinxru
03.05.2012, 16:20
Крутой язык программирования Java Script! Имея многоядерный 64-битный процессор частотой 3 ГГц, гигабайты ОЗУ, а еще видеоплату, которая может быть мощнее всего компьютера. :) Мы кое как смогли эмулировать ZX Spectrum.

Браво разработчикам JS ! Гениальное творение :)

Eltaron
03.05.2012, 16:27
Браво разработчикам JS ! Гениальное творение :)
А что, сильно дофига принципиально кроссплатформенных эмуляторов написано?
Этот даже в браузере в телефоне должен работать.

vinxru
03.05.2012, 16:34
А что, сильно дофига принципиально кроссплатформенных эмуляторов написано?
Этот даже в браузере в телефоне должен работать.

Java например.

Eltaron
03.05.2012, 16:59
Java например.
Ага, эмуль для десктопа не будет работать в браузере, апплет не будет работать на телефоне, а j2me-приложение для телефона - на андроиде. А с айфоном вообще все плохо.
Сабж же способен работать везде. Теоретически.

vinxru
03.05.2012, 17:06
Ага, эмуль для десктопа не будет работать в браузере, апплет не будет работать на телефоне, а j2me-приложение для телефона - на андроиде. А с айфоном вообще все плохо.
Сабж же способен работать везде. Теоретически.

Печально, когда Oracle купила Java и наехала на пользователей, то все разработчики решили забить на интеграцию. А так все хорошо начиналось.

Есть еще Flash. Он то же побыстрее будет. Но он так же не всеми поддерживается.

Пусть у JS нет сейчас альтернативы, но это не прощает его производительности. Пора бы уже Гуглу прикрутить какую нибудь производительную виртуальную машину к своему браузеру, а остальные подтянутся. Гуглу это было бы выгодно, он смог бы реализовать полноценный Веб Офис...

newart
03.05.2012, 17:16
Есть эмуляция бипера и 128й режим.
Бипер сделан под Web Audio API и работает только в хроме.
А в остальном эмуль понравился, работает действительно шустро, но не во фрейм конечно.

Eltaron
03.05.2012, 17:21
Пусть у JS нет сейчас альтернативы, но это не прощает его производительности. Пора бы уже Гуглу прикрутить какую нибудь производительную виртуальную машину к своему браузеру, а остальные подтянутся.
Не выйдет, это скриптовый язык со всеми плюшками вроде динамической типизации, да еще и с совершенно безумной моделью наследования.
Если на джаве писать в том же стиле, как пишут на JS - а это возможно (где вообще возможно) только с постоянным использованием рефлексии - то скорость будет ничуть не выше, чем у JS.

Но разработчики браузеров и так стараются, как могут. Практически каждый релиз хрома/файрфокса декларирует увеличение скорости интерпретации JS на несколько процентов.

PS а, виртуальную машину не для JS, а как отдельную новую фичу? Ну, flash и silverlight - это вполне оно. Правда, HTML5 и CSS3 именно для их убийства и созданы :)

newart
03.05.2012, 17:44
ну отчего же, в 12м FireFox тоже звук отличный
В Опере и IE тишина.

Zorki-4k
03.05.2012, 22:05
В фаерфоксе слышу звук, других браузеров не держим. Правда, если бипать в бейсике, то тормозит.

Zorki-4k
04.05.2012, 15:33
breeze, Win7, FF 12.0

mastermind
06.05.2012, 01:32
Пора бы уже Гуглу прикрутить какую нибудь производительную виртуальную машину к своему браузеру, а остальные подтянутся.
Дык в хроме давно уже JIT (см. http://code.google.com/p/v8/ ) и в файрфоксе тоже. (https://wiki.mozilla.org/JavaScript:TraceMonkey )

---------- Post added at 00:32 ---------- Previous post was at 00:29 ----------


Не выйдет, это скриптовый язык со всеми плюшками вроде динамической типизации, да еще и с совершенно безумной моделью наследования.
Ну по крайней мере типизированные массивы сделали уже довольно давно http://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays/

Есть даже C/C++ компилятор в JS: https://github.com/kripken/emscripten/wiki
В современных браузерах (и на современном железе) код получаемый в результате работает довольно шустро. (см. демки по ссылке выше + вот еще Doom: http://www.youtube.com/watch?v=WDUPZRQf7oc )

vinxru
06.05.2012, 01:33
Дык в хроме давно уже JIT (см. http://code.google.com/p/v8/ ) и в файрфоксе тоже. (https://wiki.mozilla.org/JavaScript:TraceMonkey )

А толку то. Я про производительность писал. А то у нас аналог 286 процессора на реальном 4-х ядерном 64-битном процессоре.

mastermind
06.05.2012, 01:52
А толку то. Я про производительность писал. А то у нас аналог 286 процессора на реальном 4-х ядерном 64-битном процессоре.
Вот тут есть кое какие тесты: http://blog.j15r.com/2011/12/for-those-unfamiliar-with-it-box2d-is.html
Судя по первой картинке код скомпиленный emscripten работает в chrome всего раз в 20 медленнее нативного (C).

vinxru
06.05.2012, 02:00
Недавно народ пытался переписать Doom на Java Script. Что бы игра не сильно тормозила в 320x200, они урезали движок так, что перс временами проваливался и стрелял сквозь стены, а картинка глючила.

Через пару недель они убрали игруху из интернета.

На хабре новость про Doom была.

---------- Post added at 01:00 ---------- Previous post was at 00:57 ----------

Doom - это 1993 год. На 20 лет отстают от прогресса.

mastermind
06.05.2012, 02:09
Ну не то чтобы портировали особо, скомпилировали как раз упомянутым enscripten (где на хабре про тормоза, обрезание фич и т.п.-то? http://habrahabr.ru/links/120356/ ), ссылку на youtube я выше давал.
Убрали потому что правообладатели наехали.

Портированный в JS есть Quake 2, кстати: http://code.google.com/p/quake2-gwt-port/, видео: http://www.youtube.com/watch?v=fyfu4OwjUEI

---------- Post added at 01:09 ---------- Previous post was at 01:04 ----------


Doom - это 1993 год. На 20 лет отстают от прогресса.
20 лет назад тоже можно было скомпилировать сишный код Дума в JS и запустить в браузере? (в виртуальной машине JS)

vinxru
06.05.2012, 02:20
скомпилировали как раз упомянутым enscripten

Дак я Doom у упомянул, как пример работы enscripten.


где на хабре про тормоза, обрезание фич и т.п.-то?

А это то что я видел и мои друзья, которым я ссылку разослал. Я же первый побежал играть в свою любимую игруху.


Убрали потому что правообладатели наехали.

Ну да, наивно так думать. Если они запретили WAD, то в сети лежит куча бесплатных WAD-ов. Этот DOOM это демонстрация возможностей enscripten, а не возможность поиграть в оригинальный DOOM.

И вообще, правообладатели даже исходники опубликовали и не трогают десятки современных клонов.

---------- Post added at 01:20 ---------- Previous post was at 01:13 ----------


20 лет назад тоже можно было скомпилировать сишный код Дума в JS и запустить в браузере? (в виртуальной машине JS)

Сейчас сишный код транслируют в JS, а JS компилируется в нативный код. А 20 лет назад люди компилировали сишный код прямо в нативный. И программа получалась в >1000 раз производительнее.

Грубо, максимум:
4 ядра по 2 команды за такт по 3 ГГц = 4*2*3000 = 24000 миллиона операций. Может обработать 128 бит за такт.
1 ядро 4 такта на команду 33 Мгц = 33/4 = 8 миллионов операций. Может обработать 32 бита за 4 такта.

mastermind
06.05.2012, 02:22
Ну да, наивно так думать.
Угу, и письмо от юристов id software мозиловцы никак сами сочинили: https://wiki.mozilla.org/Legal/Infringement_Notices/3_June_2011

vinxru
06.05.2012, 02:26
х.з. Почему же ZDoom, GZDoom, jDoom, WinDoom.. не закрыли?

mastermind
06.05.2012, 02:29
Сейчас сишный код транслируют в JS, а JS компилируется в нативный код. А 20 лет назад люди компилировали сишный код прямо в нативный.
Да и сейчас никто не запрещает компилировать прямо в нативный. Но и компиляция в JS имеет свое применение. 20 лет назат такого выбора не было.

И программа получалась в >1000 раз производительнее.
Результаты тестов что я приводил выше говорят что эта цифра мягко говоря завышена (реально порядка 20 раз разница), да и если б действительно в 1000 раз была разница, ни о каких Думах и т.п. не могло бы быть и речи совсем.

---------- Post added at 01:29 ---------- Previous post was at 01:28 ----------


х.з. Почему же ZDoom, GZDoom, jDoom, WinDoom.. не закрыли?
Х.з., правообладатель вправе решать что запрещать что разрешать делать со своей собственностью.

vinxru
06.05.2012, 02:37
да и если б действительно в 1000 раз была разница, ни о каких Думах и т.п. не могло бы быть и речи совсем.


Дак дум работает с теми же FPS на 386DX 40 Мгц. Этот процессор явно не в 20 раз медленнее современного. А значительно медленнее.

P.S. Это я еще не вспоминаю о современных видеоплатах, в которых 3000 ядерные процессоры. 3072 ядра * 917000000 Гц = 2 817 024 000 000 операций в секунду.

Q-Master
07.05.2012, 22:15
Да и сейчас никто не запрещает компилировать прямо в нативный. Но и компиляция в JS имеет свое применение. 20 лет назат такого выбора не было.


А нативный код в бразвере это какой? Процессоров 100500 штук разных и поддержать хотя-бы основные уже геморрой. JS в данном случае спасает-же.

mastermind
07.05.2012, 22:22
А нативный код в бразвере это какой? Процессоров 100500 штук разных и поддержать хотя-бы основные уже геморрой.
Я не имеел ввиду браузеры в данном случае.

sergio78
08.05.2012, 23:00
Какая фиг разница. Нативный код в браузере, тоже тормоз ещё какой. Ради прикола, поставте игрушку мини ниндзи в версии репак-торрент едишон, а потом запустите в хроме её нативный порт. Почувствуй , как говорится разницу. Я не понимаю, зачем всё это сделано. Кому то ресурсов современного компа слишком много, или предполагалось кухарок основам программирования обучать?

Q-Master
09.05.2012, 21:45
Я не имеел ввиду браузеры в данном случае.

А есть разница? Есть много процов. Более того, открою тебе страшнейшую тайну: Есть процы с разным порядком следования байт в памяти и разными принципами построения слов инструкций ЦП. А самое прикольное в том, что большинство горе-прогламеров понятия об этом не имеет и пишет то, что якобы кросс-платформенно, а в результате работает только на очень определенном наборе цп. В таких случаях интерпретаторы таки спасают. Ну или ллвм.