В Bomberman'е неправильно вертикальный скролл работает. Снизу должна картинка с меню выезжать, вместо этого мусор какой-то.
Там PS/2 клавиатура опрашивается (ячейки #F0..#FF Глюк часов)
Вид для печати
У меня при попытке подсунуть ts-bios.rom показывает лишь черный квадрат и белый бордюр. Как уж только не ресетил. Собирал origin/master.
В режиме пентево в глюке в бейзконфе пишет NONE. Это нормально?
И вообще я нифига не понял с этими конфами...
Особо ничего интересного нет, посему кидаю прямо сюда. Все, что больше 1%.
Просто запуск и выход:
Запуск, подключение образа, загрузка, сохранение снапшота, выход:Код:Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
23.90 1.30 1.30 6220800 0.00 0.00 vidDrawNormal
18.75 2.32 1.02 614726 0.00 0.00 vidSync
9.74 2.85 0.53 448914 0.00 0.01 zxExec
6.43 3.20 0.35 448914 0.00 0.00 cpuExec
5.88 3.52 0.32 1016670 0.00 0.00 memRd
5.70 3.83 0.31 1016670 0.00 0.00 memrd
5.33 4.12 0.29 emuThreadMain(void*)
2.39 4.25 0.13 71443 0.00 0.01 sndSync(int)
2.21 4.37 0.12 142886 0.00 0.00 aymGetVolume
2.02 4.48 0.11 163550 0.00 0.00 memwr
1.47 4.56 0.08 142886 0.00 0.00 aymSync
1.47 4.64 0.08 448914 0.00 0.00 bdiSync
1.47 4.72 0.08 vidDrawBorder
1.29 4.79 0.07 163550 0.00 0.00 memWr
1.29 4.86 0.07 72686 0.00 0.00 tapSync
По поводу функции vidDrawNormal. Вместо кучи проверок на каждый пук лучше используй полиморфизм по полной- для рисования в каждой области экрана отдельная функция с одной (максимум- двумя) проверками на позицию и соответствующей сменой "рисовальщика". Ты ж его уже и так используешь для разных видеорежимов:)Код:Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
22.05 5.47 5.47 35404660 0.00 0.00 vidDrawNormal
17.69 9.86 4.39 5505912 0.00 0.00 vidSync
12.82 13.04 3.18 4937034 0.00 0.00 zxExec
9.75 15.46 2.42 4937034 0.00 0.00 cpuExec
7.21 17.25 1.79 emuThreadMain(void*)
5.60 18.64 1.39 7010016 0.00 0.00 memRd
3.67 19.55 0.91 4937034 0.00 0.00 bdiSync
3.31 20.37 0.82 7010016 0.00 0.00 memrd
2.72 21.05 0.68 406611 0.00 0.00 sndSync(int)
1.73 21.48 0.43 vidDrawBorder
1.61 21.88 0.40 4937034 0.00 0.00 memGetCellFlags
1.01 22.13 0.25 813222 0.00 0.00 aymGetVolume
vidDrawBorder - а это кто? У меня таких не водится.
И результаты как бы не отвечают на вопрос "почему x86_64 ест больше, чем x86".
С отрисовкой тоже покопаюсь...
---------- Post added at 23:46 ---------- Previous post was at 23:41 ----------
Знать бы из какого места берётся то, что должно показываться.
Водится:) Похоже на какой-то заглушечный вывод одного бордюра без экрана.
64-битная версия просаживается на vidSync, а 32-битная на vidDrawNormal. В этой самой vidSync просто куча всяких сравнений, сопровождающихся чтениями (по 32 бита, что для 64-битной платформы является невыровненным). Попробовал поменять все критические int в структуре на size_t - получил ускорение:) Вплоть до некорректности результатов- проц перестал переключаться на повышенную частоту и показатели процессорного времени стали выше, чем в основном тесте. Но vidDrawNormal переместилась в лидеры.
Где бы поподробнее почитать про опрос ps/2 клавы через cmos - коды, как строится буфер, что происходит при нажатии-отпускании? По результатам работы TSСonf-Unreal'а вытянул только коды клавиш, и они не совпадают с теми, что есть в доке к ATM2...
PS: Скролл заставки в бомберману починил, только всё равно экран сначала заливается сиреневым, а потом поверх вылезает картинка. В самой игре всё пердит, тормозит и переливается - много глюков эмуляции.
[00:02] Нашёл тут... http://www.computer-engineering.org/ps2keyboard - может, пригодится
Каким-то образом прошивка ПЗУ берёт эти данные для отображения на экране - вот только как?
Похоже, сброс в биос TS-конфы пытается загрузиться с HDD/SD-карты и при неудаче выводит сообщение в текстовом режиме, которого у меня ещё нет - тут будет черный экран. Попробуй посбрасываться в разные страницы ПЗУ (0-биос, 1-тырдос, 2-basic128, 3-basic48). В консоль не плюётся ничего типа "TS in ..." или "TS out ..."?