Bi-directional digital game port driver
Abstract
The invention uses the conventional PC game port as a port for a digital game input device, employing a Digital Game Port (DGP) protocol which uses the four discrete or button lines and a single analog line (one of four) on the conventional game board to form a dual serial port. Data from a DGP control device is packetized with each packet consisting of 13 bytes of data. The packets or blocks are then grouped into frames. A frame consists of two blocks of data. A total of two frames are transmitted to the driver for each driver request. The 13-byte data block is divided between six one byte analog values and four bytes of digital data, with three bytes that identify and define the device. This device definition and identification is unique. By sending the device identification and configuration to the driver, the driver can determine not only the presence of the device but also very specific aspects of the device. The hardware configuration of the cable enables the driver to uniquely identify the first unit connected to the host computer as the master unit. The driver identifies the other units, if any, as slave units. Up to 3 additional slave units may be chained from the master digital game port input device by such cables.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method for bi-directional communication between at least one game controller, a game port mounted on a personal computer, and a driver running on the personal computer, the game port having a charging circuit responsive to a personal computer instruction, analog input terminals, and digital input terminals, the at least one game controller having an analog circuit coupled to the game port for completing the charging circuit, the method comprising the steps of:
sending the personal computer instruction from the driver to the game port; charging the charging circuit from a first level to a second level responsive to the personal computer instruction; detecting a predetermined level on the charging circuit; transmitting controller data to the driver using a predetermined number of the digital input terminals responsive to detecting the predetermined level on the charging circuit; and processing the transmitted controller data.
2 . The method for bi-directional communication of claim 1 wherein transmitting the controller data to the driver includes serially transmitting the controller data to the driver using the predetermined number of digital input terminals.
3 . The method for bi-directional communication of claim 1 wherein transmitting the controller data to the driver includes:
transmitting a controller data signal on a first digital input terminal; and
transmitting a clock signal on a second digital input terminal.
4 . The method for bi-directional communication of claim 3 wherein processing the transmitted controller data includes:
continuously monitoring the second digital input terminal for a transition of the clock signal;
detecting a transition of the clock signal; and
reading the controller data signal responsive to detecting the transition of the clock signal.
5 . The method for bi-directional communication of claim 4 including shifting the controller data signal into a block of memory after reading the controller data signal.
6 . The method for bi-directional communication of claim 4 wherein the transmitted controller data includes a plurality of data bytes, each data byte having a corresponding start and stop bit and wherein processing the transmitted controller data includes:
identifying the start and stop bit for each of the plurality of data bytes; and
decoding the each of the plurality of data bytes after identifying the corresponding start and stop bits.
7 . The method for bi-directional communication of claim 6 wherein the at least one game controller is a master game controller wherein decoding each of the plurality of data bytes includes identifying the master game controller.
8 . The method for bi-directional communication of claim 1 wherein the at least one game controller includes a master game controller and at least one slave game controller and wherein transmitting controller data to the driver includes:
transmitting a master controller data signal on a first digital input terminal;
transmitting a first clock signal on a second digital input terminal, the first clock signal corresponding to the master controller data signal;
transmitting a slave controller data signal on a third digital input terminal; and
transmitting a second clock signal on a fourth digital input terminal, the second clock signal corresponding to the slave controller data signal.;
9 . The method for bi-directional communication of claim 8 wherein processing the transmitted controller data includes:
continuously monitoring the second digital input terminal for a transition of the first clock signal;
continuously monitoring the fourth digital input terminal for a transition of the second clock signal;
detecting a transition of the first clock signal;
detecting a transition of the second clock signal;
reading the master controller data signal responsive to detecting the transition of the first clock signal; and
reading the slave controller data signal responsive to detecting the transition of the second clock signal.
10 . The method for bi-directional communication of claim 9 including shifting the master and slave controller data signal into a memory block after reading the master and slave controller data signal.
11 . The method for bi-directional communication of claim 8 wherein the master and slave controller data signal includes a corresponding plurality of data bytes, each data byte having a corresponding start and stop bit and wherein processing the transmitted controller data includes:
identifying a start and a stop bit for each of the plurality of master and slave data bytes; and
decoding each of the plurality of master and slave data bytes after identifying the corresponding start and stop bits.
12 . The method for bi-directional communication of claim 11 wherein decoding each of the plurality of master and slave data bytes includes identifying the master and slave controller.
13 . A bi-directional game/simulation system for simulating operation of a complex system having a plurality of user-controlled functions, the system comprising:
a personal computer having a digital microprocessor operable under the control of a video game/simulation program, a display for displaying images produced by the program, and an input/output bus for connecting peripheral input and output devices to the digital microprocessor; a game board coupled to the input/output bus having a finite number of digital and analog input terminals and a portion of a charging circuit responsive to a personal computer instruction, the charging circuit coupled to one of the analog input terminals; at least one game controller having an analog circuit coupled to the analog input terminal for completing the charging circuit; detecting means in the at least one game controller for detecting a predetermined charging level on the charging circuit; processing means in the at least one game controller for processing controller data responsive to the detected predetermined charge level; transmitting means coupled to the processing means in the at least one game controller for transmitting the processed controller data using a predetermined number of the game board digital input terminals; and a driver program running on the personal computer for processing the transmitted controller data received at the game board digital input terminals.
14 . A bi-directional game/simulation system according to claim 13 wherein
the transmitting means transmits a game controller data signal on a first digital input terminal and a first clock signal on a second digital input terminal.
15 . A bi-directional game/simulation system according to claim 14 wherein the driver includes monitoring means for monitoring the second digital input terminal for a transition of the first clock signal.
16 . A bi-directional game/simulation system according to claim 14 wherein the game controller data signal includes a first finite number of analog position data bytes of the at least one game controller, a second finite number of digital position data bytes of the at least one game controller, and a third finite number of identification data bytes identifying the at least one game controller.
17 . A bi-directional game/simulation system according to claim 14 wherein the driver includes:
detecting means for detecting a transition of the first clock signal;
reading means for reading the game controller data signal responsive to detecting the transition of the first clock signal;
storing means for storing the read game controller data signal into a block of memory; and
decoding means for decoding the stored game controller data signal.
18 . A bi-directional game/simulation system according to claim 13 wherein the at least one game controller includes a slave and a master controller and wherein the transmitting means transmits a master controller data signal on a first digital input terminal, a first clock signal on a second digital input terminal, a slave controller data signal on a third digital input terminal, and a second clock signal on a fourth digital input terminal, the first clock signal corresponding to the master controller and the second clock signal corresponding to the slave controller.
19 . A bi-directional game/simulation system according to claim 18 wherein the master controller data signal includes:
a first finite number of analog position data bytes of the master controller;
a second finite number of digital position data bytes of the master controller;
a third finite number of identification data bytes identifying the master controller;
a fourth finite number of analog position data bytes of the slave controller;
a fifth finite number of digital position data bytes of the slave controller; and
a sixth finite number of identification data bytes identifying the slave controller.
20 . A bi-directional game/simulation system according to claim 18 wherein the driver includes:
detecting means for detecting a transition of the first and second clock signals;
reading means for reading the master controller data signal responsive to detecting the transition of the first clock signal;
reading means for reading the slave controller data signal responsive to detecting the transition of the second clock signal;
storing means for storing the read master controller data signal into a block of memory;
storing means for storing the read slave controller data signal into a block of memory;
decoding means for decoding the stored master controller data signal; and
decoding means for decoding the stored slave controller data signal.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.