Как это корректно сделать? А то меня как-то смущает что-то типа Велесофтовского IF IN 31 > 127 THEN... :(
Вид для печати
Как это корректно сделать? А то меня как-то смущает что-то типа Велесофтовского IF IN 31 > 127 THEN... :(
Привет тёзка. Взломай любую игру и просмотри как там написано. А если тебе нужно на бейсике,- то 10 LET A=IN 31
20 IF A=0 THEN GO TO 10
И в А получаешь результат 1- влево, 2- вправо, 4 и 8 не помню, но там вверх и вниз, 16- стрельба
только это работает если порт, при не нажатых клавишах выдаёт 0.
Ну, а, если тебе нужно для определения любого клона, то желательно на асме.
---------- Post added at 20:29 ---------- Previous post was at 20:15 ----------
Во, блин дочитался. определяй если вместе не нажаты 1 и 2, то есть влево и вправо - значит порт есть. Обычно так проверяют. Но есть такие клоны, у которых этот порт инвертирован.
Может тогда не надо изголяться, а сделать ТОЛЬКО принудительно? А то получится, если я случайно нажму кнопочки джоя во время проверки мне кемпстон отрубит... :(
частенько выводят надпись "kempston joy y/n?"
Что я почти и сделал в релизе Monty...
Original old kempston joystick interfaces for ZX Spectrum don't use data lines D7-D5. IN 31 can return on this hardware undefined values ( floating bus / attribute / pull-up / zero values )
Modern joystick interfaces return always value 0 on D7-D5 and is possible detect joy interface if IN 31 return:
D7 must contain 0 (D4-D6 can be used for three joy buttons) - 0xxxxxxx
D3 and D2 can't contain values 1 - xxxx11xx
D1 and D0 can't contain values 1 - xxxxxx11
Joystick port 31 (for joy detect only) must be read after interrupt - HALT+IN A,(31) for return corect data value (port 31 can return screen attribute value if joy interface absent)
complette test:
EI
HALT
LD E,0
LD BC,#001F
IN B,(C)
LD A,B
RLCA
RET C
LD A,B
AND 3
CP 3
RET Z
LD A,B
RRCA
RRCA
AND 3
CP 3
RET Z
LD E,1
RET
;this code detect joystick interface and return E=1 if joy connect / E=0 if joy absent
Лично я в файтере сделал так:
LD B,0
LD H,0
KT1
IN A,(#1F)
AND #E0
OR H
LD H,A
DJNZ KT1
LD A,H
OR A
JR Z,KJYES
Если джойстик подключен - то произойдёт переход на метку KJYES
На эмуле работает, по логике вещей должно работать и на железе, вот только как это обстоит в отношении советских клонов? Не знаю. Может кто-нибудь проверит?
This detection will work incorrect with old KEMPSTON interfaces:
[IMG]ftp://ftp.worldofspectrum.org/pub/sinclair/technical-docs/KempstonJoystickInterface_Schematics.gif[/IMG]
IN 31 return on D7 and D6 floating data values (log.1 from pull-up or part of attribute byte from ZX screen). If software test joystick after interrupt (ULA show border area) this interface return at D7 and D6 different values on different machines.
Клон, привет,нужна твоя помощь плиз,раньше с ума сходил от игрушки Gunfright вот сейчас замучила настольгия в нете пытался скачать эту игру не выходит она не открывается надо типа имуль но у меня не получается если не сложно можешь написать подробную схему как мне загрусить всё это дело чтоб я мог играть в эту игру на буке( у меня SONY винда виста помоги если можешь я уж месяц мучяюсь я чайник в компах)