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

Сообщений: 7137
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 139
Поблагодарили 1172 раз(а) в 730 сообщ.
Сообщение: #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.0 Release SWAT 137 28734 Сегодня 19:05
Посл. сообщение: SWAT
  Custom DreamShell Themes pcwzrd13 11 23786 27.04.2024 13:42
Посл. сообщение: Ro Magnus Larsson
Улыбка DreamShell bootloader bios megavolt85 147 467275 05.04.2024 00:45
Посл. сообщение: megavolt85
Радуга DreamShell на GitHub SWAT 69 101504 16.03.2024 17:14
Посл. сообщение: yo4yo4
Баг ISO Loader 0.8.x Beta + preview of DreamShell v4.0 RC 5 SWAT 918 558432 01.02.2024 13:22
Посл. сообщение: SWAT
  DreamShell on Hacker news SWAT 0 1048 10.01.2024 06:52
Посл. сообщение: SWAT
  DreamShell v4.0 UI controls manual SWAT 0 1255 21.11.2023 07:04
Посл. сообщение: SWAT
Информация DreamShell в Discord SWAT 0 3164 06.03.2023 07:53
Посл. сообщение: SWAT
  New to Dreamshell/Retrodream DeanBMT 2 4373 26.01.2023 00:35
Посл. сообщение: DeanBMT
  DreamShell с Алиэкспрес - почти нечего не работает - так и должно быть? Emigrant 11 10158 11.07.2022 09:07
Посл. сообщение: SWAT

Переход:


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