HispaMSX

Re: Pistolas Sega-MSX

2000-02-25 01:32:52
carlos(_punto_)escobar(_en_)excite(_punto_)com soltó algo así como: 


Sería interesante si alguien sabe como se puede obtener la posición del
haz a partir del VDP...

Directamente no sé, pero te aseguro que yo lo he visto hacer usando
la rutina BIOS correspondiente. En Basic son los registros 9 y 10 los
que dan las coordenadas X, Y.

En la BIOS, tenemos la función 001ADh de la SUB-ROM que sirve para
leer indistintamente ratón, track ball, lapiz óptico, monitor sensible,
o paleta gráfica.

Pego aquí directamente lo que dice el Technical Handbook al respecto.

NEWPAD (01ADH)
  Function:     reads the status of mouse or light pen
  Input:        call with setting the following data in A;
                descriptions in parenthesis are return values.
                   8 .......... light pen check (valid at 0FFH)
                   9 .......... returns X-coordinate
                  10 .......... returns Y-coordinate
                  11 .......... returns the light pen switch status
                                (0FFH, when pressed)
                  12 .......... whether the mouse is connected to the
                                port 1 (valid at 0FFH)
                  13 .......... returns the offset in X direction
                  14 .......... returns the offset in Y direction
                  15 .......... (always 0)
                  16 .......... whether the mouse is connected to the
                                port 2 (valid at 0FFH)
                  17 .......... returns the offset in X direction
                  18 .......... returns the offset in Y direction
                  19 .......... (always 0)
  Output:       A
  Registers:    all

-------------------------------------------------------------
Lo único que sé al respecto es que el VDP del MSX2+ y TurboR tiene
deshabilitado el manejo del lapiz óptico, con lo que sólo se puede
usar dicha rutina en un MSX2. 

La rutina BIOS anteriormente expuesta almacena además las coordenadas
X e Y del lapiz óptico en 0FAFEh y 0FB00h, en el siguiente formato:

XSAVE [0FAFEh, 2 bytes]
        Contents: [I OOOOOOO XXXXXXXX]
YSAVE [0FB00h, 2 bytes]
        Contents: [x OOOOOOO YYYYYYYY]
                
                I = 1 lightpen interrupt request
                OOOOOOO = Unsigned offset
                XXXXXXXX = X coordinate
                YYYYYYYY = Y coordinate



Aún así, ignoro si estas rutinas BIOS tiran del VDP o esperan
que el lightpen tenga alguna interfaz. Yo hace años tuve en mis
manos un light pen para MSX que tenía una precisión acojonante. Lo
único que recuerdo es que se metía vía cartucho, y que, según me
explicaron, el lapiz "cazaba" al retrace lo cuál le servía al
VDP para "saber" a dónde apuntaba el lapiz.

En Tilburg vi algo parecido con una pistola NES. No funcionaba por 
"cuadraditos" blancos, sino que tú movías la pistola por la pantalla,
y el punto de mira "te seguía" con mucha precisión (yo diría que
saltos de 2 pixels). Según me explicaron, usaron la función PAD del
BASIC, pero no entendí la explicación "hardwarística".


A ver si alguien habla con más conocimientos sobre el tema.


Un saludo,


Jose Angel Morente (msxjam(_en_)crosswinds(_punto_)net)
*MSX DREAMS*       (msxdreams(_en_)hotmail(_punto_)com)

¡Suscríbete a HispaMSX!
http://es.onelist.com/community/hispamsx
hispamsx-subscribe(_en_)onelist(_punto_)com

msxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsx



<Anterior en la conversación] Conversación actual [Siguiente en la conversación>