а может, вместо рвущего темп игры сообщения, лучше пусть колёсики начинают (да и продолжают) вертеться, только если удалось сохраниться? если возможно
Вид для печати
Теперь, если на чекпоинте крутилки крутятся, значит ты сохранился.
Думаю, надо и в первой части тоже самое сделать.
Но всё же иногда случается странное. Например, точно записался на второй базе (тут же проверил, убившись, потом перезагрузил снап) и через некоторое время, умирая в следующих комнатах, возрождался почему-то снова на первой.
- - - Добавлено - - -
А может, это именно вторая база проблемная? Не припомню, на стримах были случаи незаписи (после крутилок) на следующих?
Скорее ты в снапах как-то не так сохранился, до записи.
Я тестировал так: заснапшотился перед второй базой. Потом запрыгивал на неё, добивался чтобы крутилось, умирал, и возрождался на ней. И так много раз, по всякому.
Ну и код конкретный сейчас: сразу проверяется сохранены ли мы, только если сохранены - идёт крутилка, а если не сохранены, то уже проверка, так ли стоим, и если так, то сохраняем.
Сделал и первую часть m3. За основу взял оригинал.
- - - Добавлено - - -
Были несохранения и дальше. И в первой части были несохранения.
Особенно если "Speed Up" берёшь. Вообще не сохраняет.
А давайте чтобы прямо идеал-релиз замутить. Может вместе со Слайдером. Я то точно щас буду играть в последние версии отсюда, а людям наверное было бы удобнее все в одном. Просто в природе есть DSK-версия для +3. Не уверен, но вроде они туды добавили звуков. Было бы прикольно на ее основе сделать один релиз со всеми опциями, типа читы, оригинальная/модифицированная графика, фикс платформ... Было бы круто просто.
А вот что выяснилось на последнем стриме. Ввод пароля на Еве не получался. Буковки выстреливали с немыслимой скоростью. Нажав "8" получали "88888888888".
Покопался. Оказалось что отжатие кнопки ждётся... изменением считанного из порта байта. Вместе со старшими тремя битами. А если в них шум, или сигнал с мафона, то вот и получается резкое "отжатие", хотя физически кнопку палец ещё держит. А значит следом будет резкое нажатие, и так далее.
Подправил код, чтобы учитывалось изменение только младших 5 бит.
Попутно выяснилось, что вводить можно весьма странно, нажимая и пережимая одновременно несколько клавиш. А кнопку аш("H") и пробел ввести не получается.
Подробности
Код:ORG 0DD9BH ORG 0DD9BH
; DD9B - jump/call references:
; JP from DDF6H, DDFBH, DE07H
PUSH IY ;DD9B FDE5
; DD9D - jump/call references:
; JP from DDCCH
LD IX,AE1AH ;DD9D DD211AAE
LD IY,AE2AH ;DDA1 FD212AAE
LD B,08H ;DDA5 0608
; DDA7 - jump/call references:
; DJNZ from DDCAH
PUSH BC ;DDA7 C5
LD C,(IX+00H,AE24H) ;DDA8 DD4E00
LD B,(IX+01H,AE25H) ;DDAB DD4601
LD (A244H),BC ;DDAE ED4344A2
IN A,(C) ;DDB2 ED78
; Сканируем порты
LD B,05H ;DDB4 0605
LD E,00H ;DDB6 1E00
LD D,A ;DDB8 57
; DDB9 - jump/call references:
; DJNZ from DDBEH
RRCA ;DDB9 0F
; Сканируем кнопки
JP NC,DDCFH ;DDBA D2CFDD
; в поисках нажатой
INC E ;DDBD 1C
DJNZ DDB9H ;DDBE 10F9
POP BC ;DDC0 C1
INC IX ;DDC1 DD23
INC IX ;DDC3 DD23
LD DE,0005H ;DDC5 110500
ADD IY,DE ;DDC8 FD19
DJNZ DDA7H ;DDCA 10DB
JP DD9DH ;DDCC C39DDD
; DDCF - jump/call references:
; JP from DDBAH
; нашли нажатую кнопку
POP BC ;DDCF C1
PUSH DE ;DDD0 D5
; Совершенно ненужный пуш
; DDD1 - jump/call references:
; JP from DDDAH
LD C,(IX+00H,AE24H) ;DDD1 DD4E00
LD B,(IX+01H,AE25H) ;DDD4 DD4601
IN A,(C) ;DDD7 ED78
; Читаем снова, из того-же порта
CP D ;DDD9 BA
; Сравниваем, совпадает ли с первоначальным значением !!!!!!!!!
JP Z,DDD1H ;DDDA CAD1DD
; Если не совпадает, то значит кнопку отжали!!!????
; А может не отжали, а просто скачат биты 5,6,7, один из которых сигнал с мафона!
LD A,E ;DDDD 7B
SLA A ;DDDE CB27
SLA A ;DDE0 CB27
SLA A ;DDE2 CB27
LD D,47H ;DDE4 1647
ADD D ;DDE6 82
; лишняя пересылка в D. Можно сразу ADD 47h
LD (A246H),A ;DDE7 3246A2
POP DE ;DDEA D1
; соотретственно ненужный поп, в E и так нужное значение.
LD D,00H ;DDEB 1600
ADD IY,DE ;DDED FD19
LD A,(IY+00H,AE43H) ;DDEF FD7E00
POP IY ;DDF2 FDE1
CP A,20H ;DDF4 FE20
JP Z,DD9BH ;DDF6 CA9BDD
CP A,48H ;DDF9 FE48
JP Z,DD9BH ;DDFB CA9BDD
LD IY,DE13H ;DDFE FD2113DE
LD B,05H ;DE02 0605
; DE04 - jump/call references:
; DJNZ from DE0CH
CP (IY+00H,AE43H) ;DE04 FDBE00
JP Z,DD9BH ;DE07 CA9BDD
INC IY ;DE0A FD23
DJNZ DE04H ;DE0C 10F6
LD IY,DE13H ;DE0E FD2113DE
RET ;DE12 C9
Патч заключался в замене
CP D ;DDD9 BA
На
XOR D
AND 1Fh
То есть на сравнение не всего байта, а только младших 5-ти бит.
[свернуть]