User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 34

Тема: HeroesII - под классический 128+TR-Dos

  1. #21

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запас в половину верхнего бордюра. Верь мне. И это при наличии музыки.
    Я просил дравер мышки протестировать на разных эмулях и присоветовать, как устранить "мусор" на некоторых их них, а не отрисовку курсора тестить
    Алоний в 3DEngine даже отрубатор мышки встроил, там на каком то эмуле прям грязь была.

    оно небо и земля. нафига так было поганить первую версию?
    Абсолютно идентичные версии до последнего байта. За исключением, - я вырезал менеджер верхней памяти и убрал некоторую графику которая на доп-странице лежала. 48к!
    Последний раз редактировалось DragonsLord; 28.04.2021 в 21:13.

  2. #22

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Абсолютно идентичные версии до последнего байта
    сорри, эмуль на разных компах видать ведет себя по разному
    Но это не умаляет глюка верхней строки.

    Переосмысли п/п вывода курсора.

  3. #23

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Да всё там нормально с курсором. Тупо по быстрому собрал демо из мусора Убрать этот глюк - на изичах, но нафиг не сдалось. Гыгы.

    Кстати, подумалось тут, раз переходим к конкретике, нужно привести код мыши. Я использую такую процедуру:

    Код:
    ;***KEMPMOUSE**
    ;	#FADF - состояние кнопок мышки:
    ;		bit 0 - левая кнопка,
    ;		bit 1 - правая кнопка,
    ;		bit 2 - средняя кнопка.
    ;	#FBDF - X-координата мышки
    ;	#FFDF - Y-координата мышки
    
    ; Восстановление координат
    MXY		LD A,#FB	 ; Прочитать состоянии X-координаты
    		IN A,(#DF)	 ; мышки и
    		LD (MOUSE_X+1),A ; занести его в метку MOUSE_X
    		LD A,#FF	 ; Прочитать состоянии Y-координаты
    		IN A,(#DF)	 ; мышки и
    		LD (MOUSE_Y+1),A ; занести его в метку MOUSE_Y
    		RET
    
    ; Проверка состояния кнопок мышки
    FIRE		LD A,#FA;DF	 ; Чтение байта состояния кнопок
    		IN A,(#DF)
    		RRA		 ; Проверка нажатия левой кнопки
    		JP NC,L_BUT      ; Если нажата, то прейти на метку L_BUT
    		RRA		 ; Проверка нажатия правой кнопки
    		JP NC,R_BUT      ; Если нажата, то прейти на метку R_BUT
    		RET		 ; Кнопки не были нажаты (третья кнопка
    				 ; не используется)
    L_BUT           ld a,(NAJALIKN)  ; нажата левая кнопка мыши
                    or 16          
                    ld (NAJALIKN),a
                    RET
    R_BUT           ld a,(NAJALIKN)  ; нажата правая кнопка мыши
                    or 32
                    ld (NAJALIKN),a
                    RET
    
    ; Движение мышки. X=0..255, Y=0..191
    MOVE		LD A,#FB
    		IN A,(#DF)	 ; Читаем состояние X-координаты мышки
    MOUSE_X		LD E,0		 ; В регистре E предыдущая X-координата
    		LD (MOUSE_X+1),A ; Сохраняем новую координату
    		SUB E		 ; Проверяем изменилась ли X-координата
    		CALL NZ,MOVE_X   ; Если да, то вызываем подпрог. MOVE_X
    		LD A,#FF
    		IN A,(#DF)	 ; Читаем состояние Y-координаты мышки
    MOUSE_Y		LD E,0		 ; В регистре E предыдущая Y-координата
    		LD (MOUSE_Y+1),A ; Сохраняем новую координату
    		SUB E		 ; Проверяем изменилась ли Y-координата
    		CALL NZ,MOVE_Y   ; Если да, то вызываем подпрог. MOVE_Y
    		RET
    
    MOVE_Y		JP M,MOUSE_D	 ; Если флаг S = 1, значит мышку дви-
    			 	 ; гали вниз, иначе вверх
    MOUSE_U		;ADD A,A		 ; Увеличиваем смешение в два раза
    		LD D,A		 ; Сохраняем его в рег. D
    		LD A,(OLDHL)   ; Берем текущую Y-координату курсора
    		SUB D		 ; Уменьшаем ее
    		JR NC,$+3	 ; Если результат оказался меньше 0,
    		XOR A		 ; то обнулить Y-координату
    		LD (OLDHL),A   ; Заносим новую Y-координату курсора
    		RET
    MOUSE_D		NEG		 ; Приводим смешение в нормальный вид
    		;ADD A,A		 ; Увеличиваем смешение в два раза
    		LD D,A		 ; Сохраняем его в рег. D
    		LD A,(OLDHL)   ; Берем текущую Y-координату курсора
    		ADD A,D		 ; Увеличиваем ее
    		JR C,MM_2	 ; Если результат оказался больше 255,
    		CP 192		 ; или больше 191, то
    		JR C,$+4
    MM_2		LD A,191         ; меняем его на 191
    		LD (OLDHL),A   ; Заносим новую Y-координату курсора
    		RET
    MOUSE_L		NEG		 ; Приводим смешение в нормальный вид
    		;ADD A,A		 ; Увеличиваем смешение в два раза
    		LD D,A		 ; Сохраняем его в рег. D
    		LD A,(OLDHL+1)   ; Берем текущую X-координату курсора
    		SUB D		 ; Уменьшаем ее
    		JR NC,$+3	 ; Если результат оказался меньше 0,
    		XOR A		 ; то обнулить X-координату
    		LD (OLDHL+1),A   ; Заносим новую X-координату курсора
    		RET
    MOVE_X		JP M,MOUSE_L	 ; Если флаг S = 1, значит мышку дви-
    			 	 ; гали влево, иначе вправо
    MOUSE_R		;ADD A,A		 ; Увеличиваем смешение в два раза
    		LD D,A		 ; Сохраняем его в рег. D
    		LD A,(OLDHL+1)   ; Берем текущую X-координату курсора
    		ADD A,D		 ; Увеличиваем ее
    		JR NC,$+4	 ; Если результат оказался больше 255,
    		LD A,255         ; то меняем его на 255
    		LD (OLDHL+1),A   ; Заносим новую X-координату курсора
    		RET
    
    NAJALIKN    defb 0
    YMOUSE      defb 90     ;Y 
    XMOUSE      defb 120    ;X
    MXY вызываю один раз в самом начале инициализации всей графической библиотеки, чтобы засинхронить координаты в коде и координаты в ячейках памяти. Больше не вызываю никогда.

    В прерываниях вызываю
    CALL MOVE ;читаем перемещения мышки из порта
    CALL FIRE ;читаем нажатия мыши


    Инициализацию мыши в таком виде НЕ ИСПОЛЬЗУЮ НИКОГДА:

    Код:
    KEMPMOUSE       LD A,#90	; Хитрожопые
    		OUT (#7F),A	; манипуляции
    		OUT (#5F),A	; для Питерских компов
    		LD BC,#FADF
    		IN A,(C)	; Считываем в A состояние порта #FADF
    		PUSH AF		; и сохраняем его на стеке
    		AND #F8		; Проверка старших пяти битов на 1
    		CP #F8
    		CALL NZ,NOTMOUS ; Вызов подпрограммы отключения мышки
    		INC B
    		IN L,(C)	; Считываем в L состояние порта #FBDF
    		LD B,#FF
    		IN H,(C)	; Считываем в H состояние порта #FFDF
    		POP AF		; Восстанавливаем регистр A
    		CP L		; Проверка на совпадение значений
    		JR NZ,$+6	; Если байты разные, то на YESMOUSE
    		CP H		; Если одинаковые, то проверям дальше
    		CALL Z,NOTMOUS  ; Если опять сопали, то на откл. мышки
    
    		CALL MXY 	; чтобы курсор не прыгал в неизвестном направлении
    
    YESMOUS				; мышка обнаружена
    		CALL MOVE
                    CALL FIRE
    		JP QUIT
    NOTMOUS				; мышка не подключена
    		JP QUIT
    QUIT
    		;JP YESMOUS
                    RET
    Что скажут гуру глубокого копания? Если заметите крамольное место - сообщите, почему бажит и как исправить. Повторяю, в чистом виде - всё прекрасно работает и не глючит. Как только привинтил на "Героев" - наблюдаю в Spin считывание мусора - мышка дрыгается самопроизвольно. В Unreal всё норм. Хотелось бы выяснить причину и купировать проблему.

    Может я чёто не так делаю? Например может надо так в прерывании делать?

    CALL MXY
    CALL MOVE ;читаем перемещения мышки из порта
    CALL FIRE ;читаем нажатия мыши

    или ещё какой-нибудь фокус. Может в порт в начале прерывания нуль запихивать? Я не совсем знаток, как порт функционирует. Откуда грязь появляется там, где быть не должно? Может зря я инициализацию выкинул? Может там какая настройка важная есть на этот счёт?...

    Этот пользователь поблагодарил DragonsLord за это полезное сообщение:

    nimdasys_inbox_ru(29.04.2021)

  4. #24

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почему-то всех тянет оффтопить там, где не надо и ничего не писать там, где надо

    Вот парниша видео записал, как этот мусор из порта выглядит:
    https://zx-pk.ru/threads/32718-warcr...=1#post1115133
    Последний раз редактировалось DragonsLord; 29.04.2021 в 14:00.

  5. #25

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там еще от SSHIFT`а она улетает в нирвану.

  6. #26

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    DragonsLord,


    вот это из игры Walker

    Код:
    GETKEY
            LD      HL,KEYDAT
            LD      C,1
    GEK0
            LD      A,(HL)
            IN      A,(#FE)
            INC     HL
            AND     (HL)
            INC     HL
            CP      1
            RL      C
            JR      NC,GEK0
            LD      A,(KEMM)
            OR      A
            JR      Z,NOMOUS
    MOUSD3
            LD      A,#FA
            IN      A,(#DF)
    MOUI    CPL 
            AND     3
            JR      Z,NOMOUS
            LD      B,A
    MOUF    AND     0
            JR      Z,$+4
            SET     4,C
            LD      A,B
    MOUL    AND     0
            JR      Z,$+4
            SET     5,C
    NOMOUS
            LD      A,#FF
            IN      A,(#1F)
    KEM     AND     #1F
            OR      C
            LD      (TRACKEY),A
            LD      C,A
            RET 
    MOUSIN
            LD      BC,#FBDF
            IN      D,(C)
            LD      B,#FF
            IN      E,(C)
            LD      (SUBN+1),DE
            RET 
    MOUSD1
            PUSH    BC
            PUSH    DE
            LD      BC,#FBDF
            IN      D,(C)
            LD      B,#FF
            IN      E,(C)
    SUBN    LD      BC,0
            LD      (SUBN+1),DE
            LD      A,B
            SUB     D
            ADD     A,H
            LD      H,A
            LD      A,C
            SUB     E
            ADD     A,L
            LD      L,A
            POP     DE
            POP     BC
            RET
    а вот как используется
    Код:
    TRAMOV
            LD      HL,(TRADIF)
            LD      A,(KEMM)
            OR      A
            CALL    NZ,MOUSD1
            LD      E,#04   ;TRACK SPEED
    ; ><GFUDLR
    
            RR      C
            JR      C,$+5
            LD      A,H
            ADD     A,E
            LD      H,A
            RR      C
            JR      C,$+5
            LD      A,H
            SUB     E
            LD      H,A
            RR      C
            JR      C,$+5
            LD      A,L
            SUB     E
            LD      L,A
            RR      C
            JR      C,$+5
            LD      A,L
            ADD     A,E
            LD      L,A
    CORR1
            LD      (TRADIF),HL
            RET 
    TRAADD
            LD      HL,(TRADIF)
            EX      DE,HL
            LD      HL,(OTRAC)
            LD      A,D
            NEG 
            LD      D,A
            OR      A
            JP      P,SUBL
    ADDL    NEG 
            LD      D,A
            LD      A,H
            SUB     D
            JR      NC,$+3
            XOR     A
            JR      DTTL
    SUBL    ADD     A,H
            JR      NC,$+4
            LD      A,#FF
            CP      #FF
            JR      C,$+4
            LD      A,#FF
    
    DTTL    LD      H,A
            LD      A,E
            OR      A
            JP      P,SUBH
    ADDH    NEG 
            LD      E,A
            LD      A,L
            SUB     E
            JR      NC,$+3
            XOR     A
            JR      DTTH
    SUBH    ADD     A,L
            JR      NC,$+4
            LD      A,#BF
            CP      #BF
            JR      C,$+4
            LD      A,#BF
    DTTH    LD      L,A
    
            LD      (OTRAC),HL
            LD      HL,0
            JR      CORR1
    не спрашивай почему так.
    Это код 25 летней давности
    С уважением,
    Jerri / Red Triangle.

  7. #27

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Как только привинтил на "Героев" - наблюдаю в Spin считывание мусора - мышка дрыгается самопроизвольно. В Unreal всё норм. Хотелось бы выяснить причину и купировать проблему.
    попробуй убрать опрос kempston joystick`а
    Последний раз редактировалось goodboy; 29.04.2021 в 19:07.

  8. #28

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет опроса кемпстон джойстика вообще.

  9. #29

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а что тогда опрашивается по адресу #ACEB ?
    SNA из поста №15

  10. #30

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В код не смотрел, но чисто сомневаюсь насчёт большого запаса.
    Был бы бы большой запас, так можно было б вывести курсор 4x4 знакоместа.
    Подкрасил вывод стрелки зелёным:







    Представлен ПОЛНЫЙ цикл, т.е.
    - положить старую подложку
    - запомнить новую подложку
    - вывести указатель мыши

    Код:
                                            LD A,4
                                            OUT (#FE),A
                ld      bc,(YMOUSE)
                call    LOJIM               ;вывели подложку
    
                ld      bc,(OLDHL)          ;всегда опаздываем на 1 фрейм
                call    BEREM               ;запомнили подложку + вывели СТРЕЛКУ с маской
                                            LD A,0
                                            OUT (#FE),A
    Нижний край зелёной области должен быть выше нижнего края указателя мыши для гарантированно чёткого вывода без подмигиваний и пропаданий.

    Ещё вопросы к скорости вывода мыши есть?
    Последний раз редактировалось DragonsLord; 30.04.2021 в 16:24.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. WarCraft 1 - под классический 128+TR-Dos
    от DragonsLord в разделе Игры
    Ответов: 984
    Последнее: 17.07.2024, 19:28
  2. Ответов: 70
    Последнее: 20.03.2022, 07:59
  3. Elite - под классический 128+TR-Dos
    от DragonsLord в разделе Игры
    Ответов: 285
    Последнее: 12.03.2022, 00:38
  4. Ответов: 2
    Последнее: 13.04.2021, 15:36
  5. Ответов: 1
    Последнее: 25.07.2018, 19:52

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •