Realmente mola, sobre todo para reuniones de usuarios, realmente se pueden tener 16 joysticks ya que va enchufado cada uno de 8 a un puerto del joystick. Otra cosa es lo rápido que se implemente el código y lo adictivo que se hagan los juegos...
Aquí os dejo un poco de info extra:
Adapter itselfs features 40MHz 8bit CPU from Freescale, HCS08 family. Communication works at 1 joystick port. So, you can connect 2 adapters or connect 8 adapters to 1 (64 joysticks then
)
Transfer of 1 byte takes 1-3 raster lines, depending on code you want to use. If you will use "non synced code" (you don't neet to SEI at C64 side, show sprites, cross bad lines), then transfering 8 JOY datas will take ~16 raster lines. So, you can transfer data realtime @ 50 FPS.
Adapter itselfs scan joystick every ~100us.
When you will use PS/2 mouses, C64 will need to transfer more datas ofcourse.
This is 'core' code on C64 side (fully non synced version)
read lda #$00
sta $dc00
lda #$1f
sta $dc02
jsr delay
jsr delay
lda #$10
sta $dc00
sta $dc02
ldx #0
beq gogo
loop ldy #$10
sty $dc00
gogo jsr delay
lda $dc00
asl a
asl a
asl a
asl a
ldy #0
sty $dc00
sta rcv+1
jsr delay
lda $dc00
and #$0f
rcv ora #$00
sta player_joy,x
and #$60
bne error_reading
inx
cpx #8
bne loop
lda #$7f
sta $dc00
lda #$ff
sta $dc02
delay rts
It could be optimized to save some cycles.
Fastest version looks like
(prolog)
lda $dc00
asl a
asl a
asl a
asl a
eor $dc00
sta joy_1
nop
nop
lda $dc00
asl a
asl a
asl a
asl a
eor $dc00
sta joy_2
...
That's all
You get '8' bytes, each byte for 1 joystick. Bits are same as 'c64' one.
Ya podéis empezar a programar...
Saludos