Werton, не забудьте протестировать на самом точном эмуляторе
Exodus.
Баги/неточности:
1. Разрыв снаряда у белой стены смещён слева и сверху (первый скриншот, поймал обе стороны), это касается и узких блоков. На других блоках не замечал, нужно проверить. Это похоже связано с других багом: наездом танка на правую и нижнюю границы поля.
2. Снаряд появляется поверх танка ближе к центру (второй скриншот). В оригинале снаряды летят поверх танков, это видно по врагам и появляются над пушкой, но не так близко от центра (проверьте сами на всякий случай).
3. Звуки должны прекращаться во время паузы.
4. В оригинале анимация взрывов медленнее.
5. Взрывы о границы поля в оригинале появляются чуть дальше и это варьируется (сравнение на последних двух скриншотах). Это если вы собираетесь в точности переносить.
6. Game Over на поле должно рисоваться примерно на 16 пикселей выше. Количество жизней также смещено.
7. Иногда игрок пробивает сразу половину кирпичной стены вместо четверти, причём зависит это от текущей позиции. Я встаю как на последнем скриншоте и стреляю в орла, пробивает сразу по половине, но срабатывает не всегда. Такое получается и из других положений, как минимум если стрелять сверху-вниз.
Werton, проверил еще раз в Mednaffen, Fusion и Gens. В первых двух все отлично, а вот в Gens заметны подтормаживания, хотя по фпс вроде стабильно.
Еще при старте уровня, когда идет заполнение серым, видно вот такое:
(Ссылка на вложение)
лишний кусочек)
Неверно реализован "эффект штор", также в конце открытия мерцание.
Лишний кусок из 8 тайлов (64 пикселя по ширине) потому что рисуется не 32 тайла (256 пикселей по ширине), начиная слева, а 40 тайлов (320 пикселей) для другого режима (у SMD либо 320, либо 256 ширина). Память расположена слева-направо, сверху-вниз, вот и залезает вниз.
Мерцание из-за того, что поле рисуется обычно на слое A, но для эффекта рисуется на B, а серые блоки "открываются" на A, после слои резко меняются. Возможно стоило всегда рисовать на B (он дальше), либо что-то делать с прерываниями. Вспомнил: ведь можно просто приоритет у тайлов заднего слоя выставить выше и рисовалось бы поверх, тогда слои B и A не пришлось бы менять.
Обновление: добавил гифку с открытием "штор", там видны разрывы в начале и конце. Попробуйте использовать SYS_disableInts() и SYS_enableInts().
Обновление 2:
Scarabay, на счёт fps, которые показывает эмулятор - они бесполезны, так как отображают способность вашего компьютер справляться с эмуляцией. Нужен вывод fps через код игры, который может опускать хоть до 1, если нагрузить вычислениями.
Обновление 3: добавил ещё багов.