Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5
  • 1
  • 2
  • 3
  • 4
  • 5
DreamShell 4.0 RC 3
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7249
Зарегистрирован: 04.01.2005
Рейтинг: 31
Сказал спасибо: 149
Поблагодарили 1227 раз(а) в 767 сообщ.
Сообщение: #97
RE: DreamShell 4.0 RC 3
Тут не все так просто. Объясню принцип действия.
Игры расчитывают что данные с привода летят в память по DMA и этим занимается DMAC (некая периферия в CPU), а не сам CPU.
В это время CPU занят просчетами в самой игре. Поэтому HDD/CF в режиме true async DMA это наиболее благоприятные условия для игры. Но такие условия могут дать только HDD/CF с ISO образами (или оптимизированные GDI) запущенными в DMA режиме.
В случаях же SD, HDD в PIO режиме, CDI и не оптимизированные GDI образы не могут работать в true async DMA режиме, а значит приходится блокировать процессор на время передачи данных ибо он участвует в этом процессе постоянно.

Эмуляция асинхронного чтения необходима для того, чтобы не блокировать процессор полностью чтением данных, которые игра запросила.
Она разбивает данные на части и каждый кадр в игре считывает 1 часть. Размер этой части задается как раз этой цифрой, о которой ты говоришь.
Чем меньше часть, тем меньше будет просадка FPS при подгрузке данных во время геймплея. Это особенно заметно в Shenmue 2 и Crazy Taxi 2, советую на них поиграться с эмуляцией асинха на ISO образах и поймешь что к чему.

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

Если во время геймплея подгружаются данные, то слишком маленькое значение этого параметра, может привести к пустотам в игровом мире (данные не будут успевать за действиями).
Если же игра не грузит данных налету во время геймплея, то нет необходимости ставить маленькие значения в эмуляции, лучше поставить побольше, чтобы быстрее происходила загрузка игры. Но опять же, слишком большое значение может привести к лагам в видео роликах, если оно и без этого не лагало (непожатые видео в GDI на SD всегда тормозят, а в рипах вполне сносно работать могут).

Так вот, откуда взялась цифра 1+. На самом деле это означает 1.5 сектора и это используется только у SD при условии что используется ISO образ или оптимизированный GDI (как для true async dma). Эта та грань, за которую в играх переступать не рекомендуется, иначе данные не будут успевать. Для HDD меньше 2 ставить смысла нет, он эти 2 сектора очень быстро читает даже в PIO, поэтому я не делал для него таких изысков.
Если соблюдены условия с форматом образов, то SD может не только читать по 1.5 сектора, в этом случае эмуляция асинх работает несколько иначе в принципе. Я бы даже назвал это некой смесью true async и emu async. Конечно, это далеко от true async, так как SPI интерфейс для SD это априори тяжелая работа для CPU, но кое что удается все же выкинуть из циклов. Допустим при обычной эмуляции асинх, каждый кадр в игре делается запрос к устройству на чтение части данных через файловую систему. В случае же с true async или "особым" async у SD, запрос отправляется только 1 раз и потом уже каждый кадр делается опрос состояния, а в случае с SD так и еще считывание части данных с помощью CPU на низком уровне, которые контроллер SD подготовил для нас после запроса. Т.е. получается что мы не отправляем каждый раз новый запрос и не ждем пока контроллер SD ответит (блокируя CPU дольше чем хотелось бы), а отправляем его 1 раз (когда игра попросила) и потом просто дочитываем данные с каждым кадром, при этом минуя еще и часть кода файловой системы. Все это экономит ресурсы CPU, которые очень нужны при использовании SD.

Кстати в эмуляции асинх есть еще одна хитрость. Если игра запросила 100+ секторов за раз, то я предполагаю в коде что загружается либо сама игра на старте просто, либо уровень в ней, в общем геймплея нету, игрок тупо ждет загрузки. На этот случай я вообще выключаю эмуляцию асинх и гружу этот кусок максимально быстро. Без этой маленькой фишки, игры, с малыми значениями emu async грузились бы утомительно долго на старте и во время загрузки уровней. Конечно алгоритм не идеален, игра может разными частями грузить и во время старта, но тут уже ничего не поделаешь, часть загрузки ускоряется и то хорошо.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 20.03.2015 в 12:02, отредактировал пользователь SWAT.)
20.03.2015 11:54
Вебсайт Найти все сообщения Цитировать это сообщение
 Сказали спасибо: PVS , SILENT_Pavel
Создать ответ 


Сообщения в этой теме
DreamShell 4.0 RC 3 - SWAT - 06.09.2014, 15:33
RE: DreamShell 4.0 RC 3 - kof888 - 06.09.2014, 19:46
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 08:49
RE: DreamShell 4.0 RC 3 - wallace - 06.09.2014, 23:19
RE: DreamShell 4.0 RC 3 - TeX - 07.09.2014, 01:45
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 08:55
RE: DreamShell 4.0 RC 3 - aldair - 07.09.2014, 10:55
RE: DreamShell 4.0 RC 3 - kof888 - 07.09.2014, 08:59
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 15:15
RE: DreamShell 4.0 RC 3 - R4mb0 - 07.09.2014, 18:28
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 18:37
RE: DreamShell 4.0 RC 3 - R4mb0 - 11.09.2014, 18:00
RE: DreamShell 4.0 RC 3 - SWAT - 12.09.2014, 08:02
RE: DreamShell 4.0 RC 3 - Thiago - 12.09.2014, 15:28
RE: DreamShell 4.0 RC 3 - SuperClaw - 07.09.2014, 17:22
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 18:14
RE: DreamShell 4.0 RC 3 - SWAT - 07.09.2014, 20:13
RE: DreamShell 4.0 RC 3 - SuperClaw - 08.09.2014, 05:50
RE: DreamShell 4.0 RC 3 - SWAT - 08.09.2014, 06:46
RE: DreamShell 4.0 RC 3 - SWAT - 09.09.2014, 09:40
RE: DreamShell 4.0 RC 3 - TeX - 08.09.2014, 21:46
RE: DreamShell 4.0 RC 3 - aldair - 09.09.2014, 06:10
RE: DreamShell 4.0 RC 3 - aldair - 09.09.2014, 07:45
RE: DreamShell 4.0 RC 3 - SuperClaw - 10.09.2014, 10:20
RE: DreamShell 4.0 RC 3 - SWAT - 10.09.2014, 13:39
RE: DreamShell 4.0 RC 3 - SuperClaw - 10.09.2014, 14:14
RE: DreamShell 4.0 RC 3 - Thiago - 10.09.2014, 15:25
RE: DreamShell 4.0 RC 3 - Thiago - 10.09.2014, 20:34
RE: DreamShell 4.0 RC 3 - SWAT - 11.09.2014, 08:43
RE: DreamShell 4.0 RC 3 - Thiago - 11.09.2014, 15:40
RE: DreamShell 4.0 RC 3 - SWAT - 11.09.2014, 15:47
RE: DreamShell 4.0 RC 3 - Thiago - 11.09.2014, 16:32
RE: DreamShell 4.0 RC 3 - SuperClaw - 11.09.2014, 16:52
RE: DreamShell 4.0 RC 3 - SWAT - 13.09.2014, 06:49
RE: DreamShell 4.0 RC 3 - Lin - 13.09.2014, 15:29
RE: DreamShell 4.0 RC 3 - SWAT - 14.09.2014, 10:09
RE: DreamShell 4.0 RC 3 - SWAT - 13.10.2014, 08:42
RE: DreamShell 4.0 RC 3 - megavolt85 - 13.10.2014, 10:22
RE: DreamShell 4.0 RC 3 - SWAT - 13.10.2014, 13:02
RE: DreamShell 4.0 RC 3 - cybdyn - 13.10.2014, 16:04
RE: DreamShell 4.0 RC 3 - SWAT - 14.10.2014, 07:28
RE: DreamShell 4.0 RC 3 - Ukushuka - 19.11.2014, 05:53
RE: DreamShell 4.0 RC 3 - SWAT - 26.11.2014, 09:01
RE: DreamShell 4.0 RC 3 - jjaa081620 - 30.11.2014, 05:48
RE: DreamShell 4.0 RC 3 - SWAT - 30.11.2014, 11:28
RE: DreamShell 4.0 RC 3 - aldair - 02.12.2014, 17:23
RE: DreamShell 4.0 RC 3 - SWAT - 03.12.2014, 14:23
RE: DreamShell 4.0 RC 3 - SWAT - 16.02.2015, 12:05
RE: DreamShell 4.0 RC 3 - megavolt85 - 08.03.2015, 15:36
RE: DreamShell 4.0 RC 3 - SWAT - 10.03.2015, 09:59
RE: DreamShell 4.0 RC 3 - alex - 11.03.2015, 21:54
RE: DreamShell 4.0 RC 3 - megavolt85 - 11.03.2015, 23:08
RE: DreamShell 4.0 RC 3 - alex - 12.03.2015, 07:10
RE: DreamShell 4.0 RC 3 - megavolt85 - 12.03.2015, 14:52
RE: DreamShell 4.0 RC 3 - SuperClaw - 16.03.2015, 20:26
RE: DreamShell 4.0 RC 3 - SWAT - 16.03.2015, 21:22
RE: DreamShell 4.0 RC 3 - SuperClaw - 17.03.2015, 07:44
RE: DreamShell 4.0 RC 3 - SWAT - 17.03.2015, 15:06
RE: DreamShell 4.0 RC 3 - SuperClaw - 17.03.2015, 20:32
RE: DreamShell 4.0 RC 3 - megavolt85 - 17.03.2015, 21:12
RE: DreamShell 4.0 RC 3 - SuperClaw - 18.03.2015, 04:57
RE: DreamShell 4.0 RC 3 - SWAT - 18.03.2015, 09:55
RE: DreamShell 4.0 RC 3 - PVS - 19.03.2015, 17:21
RE: DreamShell 4.0 RC 3 - SuperClaw - 18.03.2015, 11:11
RE: DreamShell 4.0 RC 3 - SWAT - 18.03.2015, 15:54
RE: DreamShell 4.0 RC 3 - SuperClaw - 18.03.2015, 20:22
RE: DreamShell 4.0 RC 3 - SWAT - 19.03.2015, 10:44
RE: DreamShell 4.0 RC 3 - megavolt85 - 19.03.2015, 11:10
RE: DreamShell 4.0 RC 3 - SuperClaw - 19.03.2015, 12:10
RE: DreamShell 4.0 RC 3 - megavolt85 - 19.03.2015, 12:27
RE: DreamShell 4.0 RC 3 - SuperClaw - 19.03.2015, 15:17
RE: DreamShell 4.0 RC 3 - SuperClaw - 19.03.2015, 19:15
RE: DreamShell 4.0 RC 3 - megavolt85 - 19.03.2015, 19:55
RE: DreamShell 4.0 RC 3 - SuperClaw - 19.03.2015, 20:31
RE: DreamShell 4.0 RC 3 - SWAT - 19.03.2015, 20:42
RE: DreamShell 4.0 RC 3 - PVS - 20.03.2015, 00:23
RE: DreamShell 4.0 RC 3 - SWAT - 19.03.2015, 20:37
RE: DreamShell 4.0 RC 3 - megavolt85 - 19.03.2015, 20:37
RE: DreamShell 4.0 RC 3 - SWAT - 20.03.2015 11:54
RE: DreamShell 4.0 RC 3 - SuperClaw - 20.03.2015, 13:32
RE: DreamShell 4.0 RC 3 - SWAT - 20.03.2015, 15:59
RE: DreamShell 4.0 RC 3 - SuperClaw - 20.03.2015, 17:38
RE: DreamShell 4.0 RC 3 - SWAT - 21.03.2015, 21:22
RE: DreamShell 4.0 RC 3 - SuperClaw - 21.03.2015, 18:16
RE: DreamShell 4.0 RC 3 - megavolt85 - 21.03.2015, 18:38
RE: DreamShell 4.0 RC 3 - SuperClaw - 22.03.2015, 13:10
RE: DreamShell 4.0 RC 3 - megavolt85 - 22.03.2015, 16:42
RE: DreamShell 4.0 RC 3 - SuperClaw - 22.03.2015, 17:28
RE: DreamShell 4.0 RC 3 - megavolt85 - 22.03.2015, 19:10
RE: DreamShell 4.0 RC 3 - SuperClaw - 23.03.2015, 08:25
RE: DreamShell 4.0 RC 3 - SuperClaw - 24.03.2015, 20:29
RE: DreamShell 4.0 RC 3 - megavolt85 - 24.03.2015, 20:44
RE: DreamShell 4.0 RC 3 - SuperClaw - 25.03.2015, 06:00
RE: DreamShell 4.0 RC 3 - matsen13 - 15.04.2015, 02:08
RE: DreamShell 4.0 RC 3 - SWAT - 15.04.2015, 09:36
RE: DreamShell 4.0 RC 3 - matsen13 - 15.04.2015, 15:19
RE: DreamShell 4.0 RC 3 - SWAT - 15.04.2015, 15:44
RE: DreamShell 4.0 RC 3 - matsen13 - 15.04.2015, 17:34
RE: DreamShell 4.0 RC 3 - matsen13 - 16.04.2015, 01:29
RE: DreamShell 4.0 RC 3 - megavolt85 - 16.04.2015, 01:56
RE: DreamShell 4.0 RC 3 - SWAT - 16.04.2015, 11:08
RE: DreamShell 4.0 RC 3 - matsen13 - 16.04.2015, 13:32
RE: DreamShell 4.0 RC 3 - ands - 16.04.2015, 18:51
RE: DreamShell 4.0 RC 3 - megavolt85 - 16.04.2015, 20:58
RE: DreamShell 4.0 RC 3 - matsen13 - 17.04.2015, 12:33
RE: DreamShell 4.0 RC 3 - SWAT - 17.04.2015, 15:08
RE: DreamShell 4.0 RC 3 - wallace - 18.04.2015, 00:07
RE: DreamShell 4.0 RC 3 - ands - 17.04.2015, 18:23
RE: DreamShell 4.0 RC 3 - megavolt85 - 17.04.2015, 21:31
RE: DreamShell 4.0 RC 3 - megavolt85 - 18.04.2015, 03:41
RE: DreamShell 4.0 RC 3 - megavolt85 - 24.08.2015, 22:48
RE: DreamShell 4.0 RC 3 - SWAT - 25.08.2015, 09:24
RE: DreamShell 4.0 RC 3 - megavolt85 - 25.08.2015, 21:20
RE: DreamShell 4.0 RC 3 - megavolt85 - 25.08.2015, 21:37
RE: DreamShell 4.0 RC 3 - Zombar - 21.09.2015, 08:57
RE: DreamShell 4.0 RC 3 - SWAT - 26.08.2015, 13:20
RE: DreamShell 4.0 RC 3 - Izotov - 05.12.2015, 00:03
RE: DreamShell 4.0 RC 3 - SWAT - 06.12.2015, 10:36
RE: DreamShell 4.0 RC 3 - TeX - 31.12.2015, 16:40
RE: DreamShell 4.0 RC 3 - PoataryKot - 01.01.2016, 01:41
RE: DreamShell 4.0 RC 3 - zero35 - 01.01.2016, 05:06
RE: DreamShell 4.0 RC 3 - SWAT - 01.01.2016, 15:58
RE: DreamShell 4.0 RC 3 - zero35 - 02.01.2016, 03:00
RE: DreamShell 4.0 RC 3 - SWAT - 02.01.2016, 10:08
RE: DreamShell 4.0 RC 3 - zero35 - 02.01.2016, 12:16

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
Звезда DreamShell v4.0.1 Release SWAT 12 825 Вчера 05:04
Посл. сообщение: jjaa081620
Улыбка DreamShell bootloader bios megavolt85 171 523900 26.12.2024 23:53
Посл. сообщение: megavolt85
Звезда DreamShell v4.0.0 Release SWAT 202 112746 14.10.2024 14:09
Посл. сообщение: SWAT
  ISO_CSO in Dreamshell aldair 0 811 12.10.2024 02:57
Посл. сообщение: aldair
  GTA3 Dreamshell SD Card/Dreamcast aldair 3 2445 26.08.2024 06:29
Посл. сообщение: SWAT
Радуга DreamShell на GitHub SWAT 73 129288 23.08.2024 06:13
Посл. сообщение: SWAT
  Dreamshell freeze at logo boot up pkerga 17 6030 22.07.2024 06:10
Посл. сообщение: SWAT
  Custom DreamShell Themes pcwzrd13 11 28992 27.04.2024 13:42
Посл. сообщение: Ro Magnus Larsson
Баг ISO Loader 0.8.x Beta + preview of DreamShell v4.0 RC 5 SWAT 918 880854 01.02.2024 13:22
Посл. сообщение: SWAT
  DreamShell on Hacker news SWAT 0 2062 10.01.2024 06:52
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 12 Гость(ей)