Zen Intergalactic Ninja. В первом уровне когда берёшь лечилку добавляется 1 в оперативке адрес 0090. Я не могу найти откуда эта единица приходит. Хотел поменять на 3 при взятии лечилки. Но не получилось.
Просто нужно перехватить запись в $90, подпрограмма такая (CPU $E150, в файле 0x1E160):
LDA $90
CMP #$03
BCS $E158
INC $90
E158:
RTSТ. е. макс. кол-во лечилок 3 и хитрость в том, что вызов такой:
B3E5:
JSR $E150
BCC $B3ED
JSR $B56B ; Если было 3 лечилки перед взятием, то добавить 1000 очков.
B3ED:
JSR $B3A0Поэтому нужно решать, давать ли доп. очки. Если вы хотите добавлять 3 лечилки, при этом иметь ограничение в 3 и не добавлять доп. очки, то достаточно заменить на: LDA #$03 | STA $90 | CLC | RTS. Для +3 и поднятия ограничения до 253-255 (с кривым отображением):
LDA $90
ADC #$03
BCS skip ; BCS $E158
STA $90
skip:
RTSПеред ADC #$03 нужен CLC, но места нет и вроде там всегда Carry не стоит, если что, то просто будет добавлено 4 лечилки вместо 3.
Для другой логики или отображения больше 9 лечилок нужно свободное место, которого в роме мало. Я делал когда-то простой хак и использовал место от подпрограммы защиты от пиратства: CPU $FFCF-$FFF3 (37 байт, файл 1FFDF-20003) и нужно убрать вызов (CPU $F81D: EA EA EA, файл 1F82D).