A 4-player adapterekről

Két típusa létezik, az egyik a Classic Games Adapter (CGA), ez valamivel bonyolultabb áramkört is foglal magába, a másik a Digital Excess+Hitmen Adapter (D&H). Erről készült a kép is.

Az eddig kész 4 játékossal játszható játékok:
Név KiadóTámogatott adapter
Bombmania Classical GamesCGA, D&H(*)
QuadTris ProtovisionCGA
QuadTron ProtovisionCGA
(*) készült hozzá patch

(Remélhetőleg) a készítésük folyamatban a következőknek:
Név KiadóTámogatott adapter
IK+ 3Players Ninja/The DreamsCGA, D&H
Detonators 2 Digital ExcessCGA, D&H

A D&H Adapter-ről

Bevezető

A fejlesztése abból indult, hogy a csapat tagjai (Digital Excess & Hitmen) a MekkaSymposium 99-en látták a BombMania-t és a hozzá tartozó adaptert. A csapat két tagja akkor kezdett hozzá a Detonator 2 kódolásához és szerették volna ha kettőnél többen is játszhatnának vele. Miután feltörték a játékot (a BombMania-t) lett számukra világos, hogy az adapter valami egyéb elektronikát is tartalmazhat. (Akkoriban készítői még nem tették szabaddá, nem lehetett róla információt találni.) Ekkor határozták el, hogy készítenek egyet és hogy minél több ember kivitelezhesse is, a csatlakozókon és a néhány dróton kívül semmit nem tartalmaz.

Hogyan működik?

Ahhoz, hogy még két joystick használható legyen, szükség van még további 10 darab input vonalra a C64-en. Elsődleges szempont volt, hogy az adapter könnyen és olcsón összerakható legyen, tehát nem tartlamaz a csatlakozókon kívül csak vezetékeket. Első látásra megvan a 8 vezeték a 8 irányhoz, a CIA 2 B portjának személyében, mely elérhető a USER porton. A további 2 vezeték megtalálása már kicsit nehezebb feladat, de megoldható. Ha közelebbről megvizsgáljuk a USER portot, észrevehetjük, hogy a CIA 2 A porjának 2. bitje is ki van vezetve. Már csak egy kell. Amit az adapter használ az a soros szinkron adatregisztere a CIA2-nek, ami szintén ki van vezetve a user portra. Amennyiben ezt használni szertnénk, egyetlen feladatunk van, a CIA 1 kimenő számláló szignálját kell ide visszavezetnünk, megetetnünk vele és ha ez a számlálás elég gyors, akkor úgy kezelhetjük, mintha digitális bemenet lenne.

Összeállítás

A szükséges alkatrészek:
1 db User Port csatlakozó, 2 db DB9M csatlakozó, kevés drót

A kapcsolási séma a következőképpen néz ki:

A nyilak csak az adatáramlás irányát mutatják.

Programozása:
A mellékelt TurboAss forrásban található egy kommentált példa.

Ismert hibái az adapternek:
Az egyetlenegy ismert hibája, hogy amennyiben nincs adapter csatlakoztatva a a számítógéphez, a JOY4 tűzgombja állandóan nyomva tartottnak látszik, tehát amennyiben adapter nélkül is működő játékot szeretnénk, adjuk meg a lehetőségét annak, hogy a játékosunk kikapcsolja annak figyelését.

A Classic Games Adapter-ről

Bevezető

Az adaptert a Classic Games csapata készítette és sokáig nem volt ismert semmi információ róla, azonban 2000 decemberében a készítői publikussá tették azt. (Az adapter nem csak a 4 player funkciót látta el, hanem egyfajta kezdetleges védelmetis jelentett, mivel nélküle elveszett az öröme a 4 személyes játéknak, így nem igazán volt értelme másolni a játékot.)

Hogyan működik?

A működése egyszerű. A switch vonal magas vagy alacsony állapotától függően hol az egyik joy adatvonalait olvashatjuk ki az User portról, hol a másikat. A tűzgombok közvetlenül vannak a portra kötve. Ezt a feladatot végzi el a 74LS257 IC.

Összeállítás

A szükséges alkatrészek:
1 db User Port csatlakozó, 2 db DB9M csatlakozó, kevés drót, 74LS257 IC, kis nyomtatott áramkör és opcionálisan egy 16 lábas IC foglalat.

A kapcsolási séma a következőképpen néz ki:

A nyilak csak az adatáramlás irányát mutatják.

Programozása:
A mellékelt TurboAss forrásban található egy kommentált példa.

Ismert hibái az adapternek:
Nincs róla információ és az egyszerű felépítése és kezelése alapján nem is tartom valószínünek.

Az írást Groepaz/Hitmen munkája alapján Viktor készítette.

"A D&H adapterrel a a Digital Excess & Hitmen csapat megadta a lehetőséget multi-player játékok fejlesztésére, a mi szeretett számítógépünkre. Sok játékötlet egyszerűen SÍR egy hasonló adapterért. Most rajtad a sor... Készíts egy patch-et valamelyikhez, vagy írj egy új játékot." (Groepaz/Hitmen)


D&H forrás

;---------------------------------------
;4 player adapter sample code by gpz/hit
;---------------------------------------

joy3reg  = $02  ; example joy-regs
joy4reg  = $03

btemp    = $04  ; temp for display

;---------------------------------------
; main
;---------------------------------------

         *= $1000

         ;
         ; usual irq setup
         ;

         sei
         lda #>irq
         sta $0315
         lda # bit 2 input

         lda $dd00      ;read cia 2 p.A
         and #%00000100 ;check bit 2
         asl a
         asl a
         ora joy3reg
         sta joy3reg

         ;
         ; read button joy 4
         ;

         lda #$ff ;serial data register
         sta $dc0c;=> writing $ff causes
                  ;cia to output some
                  ;count signals at cnt1

         lda $dd0c ;read cia 2 serial in
         beq fire  ;button press if zero

         lda joy4reg
         ora #%00010000
         sta joy4reg

fire

         ;
         ; restore cia 2 registers
         ;

ciasave1 lda #$00
         sta $dd00
ciasave2 lda #$00
         sta $dd02

         rts

;---------------------------------------
setup
;---------------------------------------
;warning: do not mess around with this
;         unless you really know what
;         you are doing! wrong cia setup
;         may toast your cia's !
;---------------------------------------

         ;
         ; cia 2 setup
         ;

         lda #$00  ; port b direction
         sta $dd03 ; => input

         lda #$01
         sta $dd04 ; timer a lowbyte
         lda #$00
         sta $dd05 ; timer a highbyte

         lda #%00010001
         sta $dd0e ; control register a
                   ; timer: start
                   ;        continous
                   ;        forced load
                   ; serial port: input

         ;
         ; cia 1 setup
         ;

         lda #$01
         sta $dc04 ; timer a lowbyte
         lda #$00
         sta $dc05 ; timer a highbyte

         lda #%01010001
         sta $dc0e ; control register a
                   ; timer: start
                   ;        continous
                   ;        forced load
                   ; serial port: output

         lda #$ff ;serial data register
         sta $dc0c;=> writing $ff causes
                  ;cia to output some
                  ;count signals at cnt1
         rts

CGA forrás

;--------------------------------------- ;4 player adapter sample code by gpz/hit ;--------------------------------------- joy3reg = $02 ; example joy-regs joy4reg = $03 btemp = $04 ; temp for display ;--------------------------------------- ; main ;--------------------------------------- *= $1000 ; ; usual irq setup ; sei lda #>irq sta $0315 lda #<irq sta $0314 lda #$1b sta $d011 lda #$7f sta $dc0d lda #$ff sta $d012 lda #$01 sta $d01a ; ; print info ; ldx #$00 loop .var * lda screen,x jsr $ffd2 inx cpx #22 bne loop jsr setup ; cia setup for adapter cli jmp * ;--------------------------------------- ; interupt calls other routines ;--------------------------------------- irq inc $d020 jsr read ; read adapter inc $d020 ldx #(40*1)+4 lda $dc00 jsr displaybits ldx #(40*2)+4 lda $dc01 jsr displaybits ldx #(40*3)+4 lda joy3reg jsr displaybits ldx #(40*4)+4 lda joy4reg jsr displaybits lda #$00 sta $d020 inc $d019 jmp $febc ;--------------------------------------- ; displays 5 lowest bits of joystick-reg ;--------------------------------------- displaybits rol a rol a rol a sta btemp ldy #$00 loop .var * rol btemp bcc skip1 lda #"-" sta $0400,x jmp skip2 skip1 lda #"*" sta $0400,x skip2 inx iny cpy #$05 bne loop rts ;--------------------------------------- screen .text "{clr/home}joy brldu" .text " 1{return}" .text " 2{return}" .text " 3{return}" .text " 4{return}" ;--------------------------------------- ;--------------------------------------- read ;--------------------------------------- ; reads adapter and composes the ; additional virtual joystick-registers ;--------------------------------------- ;this code demonstrates how to read the ;additional 2 joysticks and how to com- ;pose 2 'virtual' joystick-registers ;that can be processed exactly like the ;usual ($dc00/$dc01) ones. ;--------------------------------------- lda $dd01 ; cia 2 port B read/write and #$1f ; get bit 4-0 (PB4-PB0) sta joy3reg ; joy 3 complete lda #$00 ; cia 2 port B read/write sta $dd01 ; (output zero at PB7) nop ; no idea if this delay is needed nop nop lda $dd01 ; cia 2 port B read/write and #$0f ; get bit 3-0 (PB3-PB0) sta joy4reg ; joy 4 directions lda $dd01 ; cia 2 port B read/write and #%00100000 ; get bit 5 (PB5) lsr ora joy4reg sta joy4reg ; joy 4 button rts ;--------------------------------------- setup ;--------------------------------------- ;warning: do not mess around with this ; unless you really know what ; you are doing! wrong cia setup ; may toast your cia's ! ;--------------------------------------- lda #%10000000 ; cia 2 port B Data-Direction sta $dd03 ; bit 7: out bit 6-0: in nop ; no idea if this delay is needed nop nop lda $dd01 ; cia 2 port B read/write sta $dd01 ; (output zero at PB7 ?) rts ;------------------------------------------------------------------------------