Joystick Sinclair

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Joystick Sinclair

Mensaje por climacus » Mié Sep 16, 2015 11:02 am

Buenas.
Alguien me puede decir qué puerto hay que leer y los distintos valores para poder manejar un juego con el Joystick Sinclair?

Gracias y un saludo
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

Avatar de Usuario
Kyp
Sabreman
Mensajes: 444
Registrado: Lun Dic 16, 2013 6:16 pm

Re: Joystick Sinclair

Mensaje por Kyp » Mié Sep 16, 2015 3:58 pm

El joystick Sinclair simula las teclas del cursor, es decir, 5, 6, 7, 8 y 0. Opcionalmente pulsando simultáneamente SHIFT aunque los juegos no suelen mirar eso. Por lo tanto...
El puerto F7FE, bit 0 para la tecla 5.
El puerto EFFE, bits 0, 1,2 y 4 para las teclas 6, 7, 8 y 0.
El puerto FEFE, bit 4 para SHIFT.

utopian
Manic Miner
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm

Re: Joystick Sinclair

Mensaje por utopian » Mié Sep 16, 2015 5:57 pm

Kyp, diría que estás equivocado. El joystick Sinclair 1 simula las teclas del 6 al 0 (puerto $effe) y el Sinclair 2 del 1 al 5 (puerto $f7fe).

Aquí va un trozo de código que uso siempre:

Código: Seleccionar todo

; Returns:  
;		A: joystick state
; Bit #:  765   4   3210
;         |||   |   ||||
;         XXX  BUT1 RLDU
;--------------------------------------
; Read routine for Sinclair 1 joysticks
;--------------------------------------

read_sinclair1_joystick:
	       ld bc, $effe
	       in c, (c)  ; Leemos solo la fila 6-0. Los bits a 0 están pulsados
	       xor a
sinclair1_fire:
		rr c
		jr c, sinclair1_up
		or $10		; fire is pressed
sinclair1_up:
		rr c
		jr c, sinclair1_down
		or $01		; up is pressed
sinclair1_down:
		rr c
		jr c, sinclair1_right
		or $02		; down is pressed
sinclair1_right:
		rr c
		jr c, sinclair1_left
		or $08		; right is pressed
sinclair1_left:
		rr c
		ret c		; no carry, just return
		or $04		; left pressed
		ret

;--------------------------------------
; Read routine for Sinclair 2 joysticks
;--------------------------------------

read_sinclair2_joystick:
	       ld bc, $f7fe
	       in c, (c)  ; Leemos solo la fila 1-5. Los bits a 0 están pulsados
	       xor a
sinclair2_left:
		rr c
		jr c, sinclair2_right
		or $04		; left is pressed
sinclair2_right:
		rr c
		jr c, sinclair2_down
		or $08		; right is pressed
sinclair2_down:
		rr c
		jr c, sinclair2_up
		or $02		; down is pressed
sinclair2_up:
		rr c
		jr c, sinclair2_fire
		or $01		; up is pressed
sinclair2_fire:
		rr c
		ret c		; no carry, just return
		or $10		; left pressed
		ret

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Joystick Sinclair

Mensaje por climacus » Mié Sep 16, 2015 6:12 pm

Ok. Muchísimas gracias.
No tenía ni idea...
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

Avatar de Usuario
Kyp
Sabreman
Mensajes: 444
Registrado: Lun Dic 16, 2013 6:16 pm

Re: Joystick Sinclair

Mensaje por Kyp » Jue Sep 17, 2015 9:41 am

Pues tienes toda la razón :oops:
Aquí tenéis más información (en inglés): http://www.retroisle.com/general/spectrum_joysticks.php

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Joystick Sinclair

Mensaje por climacus » Vie Sep 18, 2015 8:38 am

Kyp escribió:Pues tienes toda la razón :oops:
Aquí tenéis más información (en inglés): http://www.retroisle.com/general/spectrum_joysticks.php
Muchas gracias.

Una preguntilla más...

Para controlar un juego con las flechas del plus 2, cuál hay que usar?
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

utopian
Manic Miner
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm

Re: Joystick Sinclair

Mensaje por utopian » Vie Sep 18, 2015 9:39 am

Las flechas son las teclas del cursor, así que tendrás que detectar la pulsación de CAPS SHIFT y las teclas 56780.

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Joystick Sinclair

Mensaje por climacus » Vie Sep 18, 2015 10:31 am

utopian escribió:Las flechas son las teclas del cursor, así que tendrás que detectar la pulsación de CAPS SHIFT y las teclas 56780.
Pero qué cortico que soy!!!

Muchas gracias de nuevo!!!!
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

Avatar de Usuario
Kyp
Sabreman
Mensajes: 444
Registrado: Lun Dic 16, 2013 6:16 pm

Re: Joystick Sinclair

Mensaje por Kyp » Vie Sep 18, 2015 4:29 pm

utopian escribió:Las flechas son las teclas del cursor, así que tendrás que detectar la pulsación de CAPS SHIFT y las teclas 56780.
Aunque el teclado en sí simula la pulsación de CAPS+nº bastaría con mirar la pulsación del nº, ¿no? Te ahorras unas pocas instrucciones.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 19 invitados