Всё правильно!

Но у меня есть подозрение, что ты не до конца серьёзно отнёсся к теме начальной инициализации. Тебе показалось, что я предлагаю из какой-то прихоти заменить макрос на подпрограмму. Но я предлагал оставить макрос, но заключить его в подпрограмму. И не из прихоти, а для начальной инициализации.

Предположим в игре есть ГГ, который вот вот умрёт. Игрок давит на "R", но отпустить кнопку не успевает, ГГ умирает по игровой причине. Показывается анимация смерти, потом надпись: "Приготовся!". Игрок уже отпустил "R", готовится такой. А макрос твой помнит, что кнопка R, переиграть, была нажата. И как только начнётся главный игровой цикл, твой макрос увидит, что кнопку только что отпустили. И игрок потеряет вместо одной жизни сразу две жизни. Это плохо.