* Amiga 4-button joystick code... * * Stick discovery by Ed Bamber * Code created by Anthony Ball * * (C)1992 Anthony Ball & Edmund Bamber * * We must be credited if this routine is to be used in any code * * Requires a megadrive joystick with wires 5 & 7 swapped * * Returns: d0 register "Stick Bits" 76543210 * ABCDUDLR * ABCD... Different buttons U=Up D=Down L=Left R=Right * * chip equ $dff000 * chips joy1dat equ $00c * joystick 1 data potinp equ $016 * pot port data read potgo equ $034 * pot port data write and start piaa equ $bfe001 * 8520 port A pra equ $000 * reg 0 peripheral data register a Getstick lea chip,a6 moveq #0,d2 btst.b #7,piaa+pra * button A pressed? bne.s .Not1 * No! or #$80,d2 .Not1 btst.b #6,potinp(a6) * button B pressed? bne.s .Not2 * No! or #$40,d2 .Not2 move #$e000,potgo(a6) * Set 5 volt port on move joy1dat(a6),d0 * Get stick for player and #$0303,d0 * Keep only the bits needed move d0,d1 lsr #6,d0 * Make Table Smaller! or.b d1,d0 move.b .Table(pc,d0),d0 * Get converted byte or d2,d0 btst.b #7,piaa+pra * button C pressed? bne.s .Not3 * No! or #$20,d0 .Not3 btst.b #6,potinp(a6) * button D pressed? bne.s .Not4 * No! or #$10,d0 .Not4 move #$f000,potgo(a6) * Ready for next read rts .Table dc.l $00040501,$08000109,$0a020008,$02060400