russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Измерение скорости объекта/персонажа (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
Статус: Оффлайн
Нужно для точного переноса механики игры, если скорость анимации замерить просто (пауза каждый тик), то вот со скоростью движения проблема. Думал, может есть способ. sad Конкретно нужно для измерения скоростей в Мортал Комбате.

Сообщение отредактировал 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 перенести cool
 
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:

Код
    Num1=-1
    print ;Num1


То на экране выведется:

Цитата
65535


Вот так и у автомата, наверное.

Если нужно показать именно отрецательное число, то делается так:

Код
    a = -8
    b = 65535-a+1
    Print "-";b


Отрисуется:

Цитата
-8



Вот так.
 
BlackTriangleДата: Понедельник, 14.06.2021, 15:12 | Сообщение # 8
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
Спасибо, про разный диапазон не знал, что-нибудь попробую нарыть, а то я думал это какая-то общая математическая формула.
 
  • Страница 1 из 1
  • 1
Поиск: