Важная информация

User Tag List

Показано с 1 по 2 из 2

Тема: Набор процедур для работы с клавиатурой в играх

  1. #1
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    207 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Набор процедур для работы с клавиатурой в играх

    Скрытый текст

    Код:
    ;scan_kbd -вешается на прерывания сканирование клавиатуры
    ;	-остальные подпрограммы работают с массивом созданым этой подпрограммой
    ;HL,BC,AF
    
    ;scan_ctrl -проверяет нажатые клавиши согласно таблице k_table до 8 штук
    ;HL,DE,BC,AF,HL',DE',BC'
    ;A         -результат
    
    ;test_joypad - проверка управления scan_ctrl 
    ;HL,DE,BC,AF,HL',DE',BC'
    ;	   - в ячейке key_presed только что нажатых кнопок
    ;	   - в ячейке key_holded удерживаемых кнопок
    
    ;scan_tbl -используется при задании таблицы сканкодов для k_table
    ;HL,BC,AF
    ;BC       -результат B-ряд 0-7 С-маска #10-#01
    
    ;key_char     -сканирование нажатой клавиши 
    ;HL,DE,BC,AF
    ;A,key_presed -результат
    
    ;test_key -проверка нажатия любой новой клавиши через key_char
    ;HL,DE,BC,AF
    ;A        -клавиша
    ;Carry    -нажата новая клавиша 
    ;NotCarry -удерживаемых старая клавиша или ничего не нажато 
    
    ;test_kemp  -тестирование подключенного kempston joystikа с 1ой кнопкой 
    ;HL,DE,BC,AF
    ;A,kemp_act -#00 джойстик присутсвует
    ;	  -#c9 джойстик не найден
    
    ;по схеме
    ;	store_kemp_act
    ;	call test_kemp
    ;	xor #c9
    ;	xor store_kemp_act
    ;	ld (kemp_act),a
    ;можно включать/выключать обработку джойстика
    
    ;------------------------------------
    scan_kbd
    	ld 	a,-2
    	ld 	c,a
    	ld 	hl,kb_buf
    	dup 	7
    	ld 	b,a
    	ini
    	rlca
    	edup
    	ld 	b,a
    	ini
    	ret
    ;------------------------------------
    scan_ctrl
    	ld 	bc,k_table
    	ld 	de,kb_buf
    	exx
    	ld	e,#80
    scan_ctrl0
    	exx
    	ld	a,(bc)
    	inc	bc
    	ld	l,a
    	ld	h,0
    	add	hl,de
    	ld	a,(bc)
    	inc	bc
    	and	(hl)
    	cp	1
    	exx
    	rr	e
    	jr	nc,scan_ctrl0
    	ld	a,e
    kemp_act	ret
    	in	a,(#1f)
    	and	#1f
    	or	e
    	ret
    ;------------------------------------
    test_joypad
    	call	scan_ctrl
    	ld	c,a
    	ld	a,(key_holded)
    	xor	c
    	and	c
    	ld	(key_presed),a
    	ld	a,c
    	ld	(key_holded),a
    	ret
    ;------------------------------------
    scan_tbl
    	ld	hl,kb_buf
    	ld	b,8
    scan_tbl0
    	ld	c,#10		
    scan_tbl1
    	ld	a,(hl)
    	and	c
    	cp	1
    	jr	c,scan_tbl2
    	rrc	c
    	jr	nc,scan_tbl1
    	inc	hl
    	djnz	scan_tbl0
    	ld	c,b
    	ret
    scan_tbl2
    	ld	a,8
    	sub	b
    	ld	b,a
    	ret
    ;------------------------------------
    key_char
    	ld	de,keys_table
    	ld	hl,kb_buf
    	ld	c,8
    key_char0	
    	ld	a,(hl)
    	inc	hl
    	ld	b,5
    key_char1
    	rra
    	jr	nc,key_char2
    	inc	de
    	djnz	key_char1				
    	dec	c
    	jr	nz,key_char0
    key_char2	
    	ld	a,(de)
    	ld	(key_presed),a
    	ret
    ;------------------------------------
    test_key
    	call	key_char
    	ld	c,0
    old_key	equ	$-1
    	ld	(old_key),a	
    	cp	c
    	scf
    	ccf
    	ret	z
    	cp	1
    	ccf
    	ret
    ;------------------------------------
    test_kemp
    	ld	bc,#001f
    	ld	l,b
    	ld	e,b
    i_00
    	in	a,(c)
    	or	e
    	ld	e,a
    	dec	l
    	jr	nz,i_00
    
    	ld	a,e
    	and	c
    	jr	z,kemp_present
    	ld	a,#c9
    kemp_present
    	ld	(kemp_act),a
    	ret	
    ;------------------------------------
    k_table	
    ; p o a q Sp En H R	
    ; 0 1 2 3 4 
    ; r l d u f 
    
    	db	5, 1	;right p   5, 1	
    	db	5, 2	;left  o   5, 2
    	db	1, 1	;down  a   1, 1
    	db	2, 1	;up    q   3, 1
    
    	db	7, 1	;fire  spc 7, 1
    	db	6, 1	;key6  en  6, 1
    
    	db	2, 8	;key7  R   2, 8
    	db	5, 16	;key8  Y   5, 16
    
    key_presed db 	0
    key_holded db	0
    
    kemp_var	db	0	
    cur_keys	db	0
    kb_buf	ds	8	
    	
    ;	  1 2 4 8 16	
    ;#fe 0	 cs z x c v
    ;#fd 1 	  a s d f g
    ;#fb 2	  q w e r t
    ;#f7 3	  1 2 3 4 5
    ;#ef 4	  0 9 8 7 6
    ;#df 5	  p o i u y
    ;#bf 6 	 en l k j h
    ;#7f 7	sp ss m n b
    keys_table
    	db	#01,"ZXCV"
    	db	"ASDFG"
    	db	"QWERT"
    	db	"12345"
    	db	"09876"	
    	db	"POIUY"
    	db	#0d,"LKJH"
    	db	#20,#02,"MNB",#00
    [свернуть]
    Последний раз редактировалось jerri; 30.11.2020 в 20:44. Причина: Фикс бага
    С уважением,
    Jerri / Red Triangle.

  2. Эти 9 пользователя(ей) поблагодарили jerri за это полезное сообщение:

    Bedazzle (11.11.2020), DenisGrachev (01.12.2020), Dr.OM (01.12.2020), mastermind (03.12.2020), nzeemin (11.11.2020), Sergey (29.04.2023), Slider (12.11.2020), stepmotor (12.11.2020), Urguk (09.11.2022)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    207 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Внимание был обнаружен баг.
    Просьба перекачать.
    С уважением,
    Jerri / Red Triangle.

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

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

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

Похожие темы

  1. Набор платок для апгрейда.
    от zorel в разделе Несортированное железо
    Ответов: 313
    Последнее: 08.09.2016, 14:22
  2. Пара процедур для новой игры SLIP'a
    от newart в разделе Программирование
    Ответов: 34
    Последнее: 29.03.2014, 17:54
  3. Библиотека нужных процедур для написания демо
    от GM BIT в разделе Программирование
    Ответов: 297
    Последнее: 14.02.2014, 08:47
  4. Набор логики для сборки Ленинград-1
    от moxjemi в разделе Барахолка (архив)
    Ответов: 49
    Последнее: 10.01.2012, 16:43
  5. Куплю набор м/с для БК0010-01
    от IlyaMIV в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 19.05.2010, 20:25

Ваши права

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