Измерение скорости объекта/персонажа (Vel X / Vel Y)
|
|
BlackTriangle | Дата: Воскресенье, 13.06.2021, 19:36 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Здравствуйте, прошу помочь советом экспертов: как можно измерить скорость движения персонажа в 2D (velocity x) (например в эмуляторе MAME) ? В идеале бы узнать про постоянную и ускорение. Есть ли какие-нибудь способы без глубокого копания в коде. Благодарю.
Сообщение отредактировал BlackTriangle - Воскресенье, 13.06.2021, 19:38 |
|
| |
TLT | Дата: Воскресенье, 13.06.2021, 20:17 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 2365
Статус: Оффлайн
| Без копания никак. По пикселям что-ли время отмерять? =) Нужно работать с утилитами дебаггинга (смотреть память в реальном времени), как минимум. Если в mame есть возможность подключать скриптинг через плагин, то можно запрограммировать счётчик и т.п. Короче, непонятно зачем это нужно и зачем так загоняться...
Вот так.
|
|
| |
BlackTriangle | Дата: Воскресенье, 13.06.2021, 20:20 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Нужно для точного переноса механики игры, если скорость анимации замерить просто (пауза каждый тик), то вот со скоростью движения проблема. Думал, может есть способ. Конкретно нужно для измерения скоростей в Мортал Комбате.
Сообщение отредактировал BlackTriangle - Воскресенье, 13.06.2021, 20:22 |
|
| |
TLT | Дата: Понедельник, 14.06.2021, 00:09 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 2365
Статус: Оффлайн
| Цитата BlackTriangle ( ) Конкретно нужно для измерения скоростей в Мортал Комбате. В каком именно? Тебе повезло, исходные коды некоторых аркадных версий есть в сети! Разбирай код, тайминги.
Вообще, фанаты игр знают это и чувствуют, что им не нужны точные измерения, могут сделать "на глаз", что называется.
Вот так.
|
|
| |
BlackTriangle | Дата: Понедельник, 14.06.2021, 07:53 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Благодарю, посмотрю. На глаз конечно любой может, а вот 1 в 1 перенести
|
|
| |
BlackTriangle | Дата: Понедельник, 14.06.2021, 10:28 | Сообщение # 6 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Назрел новый вопрос: выяснил некоторые скорости в десятичном формате для Мортал Комбат 1, например ход вперед 163840, при конвертации в шестнадцатиричную систему все хорошо, получаем 28000 (2.8 Vel X) скорости, однако это прокатывает только для положительных значений, если скорость отрицательная, то число уже другое - 4294836224. Вопрос: как сконвертировать и в каком формате оно находится?
Данные коротко: Скорость хода вперед - 163840 [28000] [2.8] Скорость хода назад - 4294836224 [?] Скорость прыжка вперед - 262144 [40000] [4] Скорость прыжка назад - 4294705152 [?] [Должно быть -4]
|
|
| |
TLT | Дата: Понедельник, 14.06.2021, 15:05 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 2365
Статус: Оффлайн
| Цитата BlackTriangle ( ) Скорость прыжка назад - 4294705152 [?] [Должно быть -4]
Отрицательное число как бы отчёт с конца зарезервированного диапазона значения.
Нужно смотреть документацию платформы. У каждой по-разному.
Например, у Sega Mega Drive так:
Data Types Integer: Values: -32,768 to 65,535 (2 bytes long) Long: Values: -2,147,483,648 to 2,147,483,647 (4 bytes long)
Например, если я напишу код для SMD:
То на экране выведется:
Вот так и у автомата, наверное.
Если нужно показать именно отрецательное число, то делается так:
Код a = -8 b = 65535-a+1 Print "-";b
Отрисуется:
Вот так.
|
|
| |
BlackTriangle | Дата: Понедельник, 14.06.2021, 15:12 | Сообщение # 8 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Спасибо, про разный диапазон не знал, что-нибудь попробую нарыть, а то я думал это какая-то общая математическая формула.
|
|
| |