В Avenger (Gremlin'86) замечен интересный глюк для прогресса завершения квеста, который под конец игры выводится в процентах. При победе там 98% (ну, и ничего бы, казалось, ошиблись с суммой этапов прогресса). Однако проверка, из чего состоят эти этапы (с гибелью после каждого взятого предмета), приводит к любопытным результатам.
До взятия сосуда процентов всегда 0%, зато гибель после первого взятого предмета может вернуть очень разный результат.
Оказывается, процедура расчета прогресса берет количество взятых предметов, умножает на 10 и прибавляет к нему небольшой случайный бонус. Но для 0 всегда выдается 0, а когда собраны все предметы, то выдается 99+флаг победы (то есть ухода с территории). Вот только флаг этот равен 0xFF, то есть -1. Поэтому при гибели без побега можно получить даже 99%. Может, это так задумано, мудрость ниндзя - погибнуть после выполнения миссии почетнее? Однако нет, ниндзя забирает очень важный предмет, свиток, который необходимо отнести и вернуть (подразумевается по сюжету). К тому же в историях Way of the Tiger, по мотивам которых создавалась игра, герой должен выжить и претерпеть еще много приключений.
Скрытый текст
Колдует это функция по адресу BBC2, а собственно вариант со сложением -1 (или 0) с 99 по адресу BBC8. Можно попатчить это хотя бы так:
...
CP 09
JR NZ,BBD4
LD A,(B037)
CPL
ADD A,64
JR BBE9
; BBD4
LD B,09
LD C,A
...
Тогда 100 должно быть вместо 98.
Можно было бы вообще, еще приуменьшить результат со всеми взятыми предметами и гибелью, чтобы стоимость побега была не в 1%, но тогда, видимо, понадобились бы где-то байта 4 в стороне.
Там есть еще неясный момент чуть ниже, взятое случайное число, ограниченное его до 7, зачем-то проверяется на 7 - если 7, то из него вычитается 2. Выглядит лишним. Может, 7 было несчастливым у авторов.
Но эти манипуляции можно сохранить как занятную фичу.
[свернуть]




), приводит к любопытным результатам.
Ответить с цитированием