neoforma » 26.03.08 в 0:08
darksnake
Давайте на секунду от PSP отвлечёмся и взглянем на достаточно старую приставку Nintendo 64. Она вышла в 1996, но до сих пор нет ни одного по-настоящему хорошего эмулятора, который бы честно, без всяких хаков, запускал все игры, как если бы это бы эмулятор был настоящей консолью. Я не помню, упоминал ли я уже на форуме, но один из разработчиков MAME/MESS, известный под ником MooglyGuy занимается как раз исправлением этой, так сказать, проблемы.
PSP по меркам игростроя вышла сегодня утром. На Pong посмотрите (игра вышла в 1972 году). Сейчас есть один эмулятор (не симулятор), который на нормальной скорости работает на современных машинах. Прототип от Дэна Бориса, который появился в прошлом году, работает настолько медленно, что практическое применение ему найти сложно.
Что касается идеального варианта, про который написал Антоха, то вы себе плохо представляете, что такое ЭиБ. Буду использовать десятичную систему (ЭиБ - это в двоичной системе), чтобы было понятно, о каких размерах идёт речь. Сначала идёт бит, потом килобайт, потом мегабайт, потом гигабайт, потом терабайт, потом петабайт, потом эксабайт (аналог эксбибайта в двоичной системе). Гигабайт - это 10 в девятой степени, эксабайт - 10 в восемнадцатой степени. Сделать дамп принципиально невозможно, потому что мы только перешли в терабайтную эру.
Однако в сообщении Антохи содержался сарказм, ибо делать дамп процессора (даже если это будет возможно) - бесполезное занятие. В процессоре не содержится никакой информации, когда он выключен (в отличие от картриджа). Антоха просто сказал, что там дампить нечего. Нужно знать, как он работает, какие инструкции он использует, как он работает с другими устройствами, т.е. как он их всех координирует.
Стоит ещё обратить внимание на разницу в архитектуре платформ. Например, в PSP стоят RISC-процессоры, тогда как, например, Pentium 4 - это, по сути, CISC-процессор. В RISC-процессорах команды очень короткие (в одно действие, например, записать или считать), тогда как инструкции в CISC-процессорах длиннее (записать и считать). Учитывая то, что в PSP (и не только в ней одной) несколько процессоров, надо также обеспечить синхронизированную работу. Насколько мне известно, синхронизация эмуляции на многоядерном процессоре (один эмулирует, например, графическую часть, другой главный - процессор) - достаточно сложное занятие.
Не стоит забывать, что мы живём в реальном мире, а не в идеальном, где действуют физические законы, которые распространяются в том числе и на компьютеры. Например, количество транзисторов в процессоре всё ещё растёт по экспоненте, как гласит закон Мура, однако помимо процессора в компьютере существуют и другие компоненты, такие как оперативная память, жёсткий диск и т.п. Процессор разгоняется до неимоверной скорости, но тут встречается непреодолимая преграда - медленно работающий жёсткий диск. Процессор встаёт на паузу, ждёт когда завершится операция с диском, продолжает работу, опять встаёт на паузу и т.д. И помимо таких серьёзных компонентов, существуют ещё и шлейфы, соединяющие между собой устройства. В них вообще скорость передачи может быть очень низкой и количество ошибок может быть относительно большим из-за плохой изоляции и электромагнитных волн.
Если где серьёзно наврал - извиняйте. Лучше поправьте, чтобы ложную информацию дальше не распространял.