├── .gitignore
├── images
└── XHE-3_protocol.png
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | *.swp
3 |
--------------------------------------------------------------------------------
/images/XHE-3_protocol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pce-devel/PCE_Controller_Info/HEAD/images/XHE-3_protocol.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PCE_Controller_Info
2 |
3 | Information about controller signalling on the PC Engine
4 |
5 | ## Electrical Characteristics
6 |
7 | The PC Engine is based on CMOS 5V logic, so the voltage supply is 5V and the logic levels are set as such.
8 |
9 | There are 6 active lines (besides power and ground) on the connector, with two being driven by
10 | the console (SEL and CLR), and 4 being return signals from the joypad/peripheral.
11 |
12 | The original purpose of SEL was as a multiplex selector for joypad inputs (which 4 inputs out of 8 to
13 | read), and the purpose of CLR was to reset a port counter for the multitap... but over time, these
14 | signal have been used for more complicated purposes on sophisticated peripherals (more on this in the
15 | "Signalling Protocols" section below).
16 |
17 | Electrically, the signals of SEL and CLR are generally pulled up by a 47K resistor on the peripheral
18 | to prevent issues on the internals of the peripherals if power is supplied but CLR/SEL are floating;
19 | this is not a likely case, but this is a protective measure.
20 |
21 | Similarly, the controller inputs also use 47K resistors as pullups, and return signals from the
22 | peripheral are generally sent back through current-limiting 300-ohm resistors in order to limit
23 | the amount of current driven by the internal chips, in the event of an unexpected short circuit
24 | on the console side of the controller.
25 |
26 | Oscilloscope traces of the CLR and SEL signals into a multitap device as a load indicate that rise
27 | time for these signals is on the order of 10ns, and fall time on the order of 20ns.
28 |
29 |
30 | ### Controller Schematics and Connector Pinout
31 |
32 | This schematic shows the wiring diagram for a basic PC Engine controller. Schematics of additional
33 | configurations can be found here:
34 | https://console5.com/wiki/NEC_PC_Engine#Controller_Schematics
35 |
36 | (Many thanks to console5.com for sourcing, preserving and improving console information like this.)
37 |
38 | As can be seen in the schematic:
39 | 1) All inputs default to high, unless they are specifically driven low
40 | 2) The 74HC163 creates a divide-by-2/4/8 counter based on the CLR signal, which is then used by the
41 | 'turbo' switches to modulate auto-repeat keying.
42 |
43 | 
44 |
45 |
46 | ### Power Consumption of Joypad Peripherals
47 |
48 | Power consumption numbers are currently being confirmed, but are almost certainly lower than one might expect.
49 |
50 | #### "Simple" power consumption:
51 |
52 | This test was conducted by connecting a current-limiting test power supply to the devices, with the CLR and SEL
53 | lines tied to ground (to prevent rapid state changes), and observing the digital readout on the power supply.
54 | This is not a comprehensive test - rather, it represents the lower limit of current/power usage:
55 |
56 | | Device | Observed Usage |
57 | |:------:|:--------------:|
58 | | 2-button joypad (NEC) | < 1 mA |
59 | | 6-button joypad (Hori) | < 1 mA |
60 | | 5-port Multitap (NEC) | < 1 mA |
61 | | 5-port Multitap (NEC) | < 1 mA |
62 | | PC Engine Mouse | 6 mA |
63 | | XHE-3/XE-1AP | 33 mA |
64 | | Memory Base 128 (NEC), fresh batteries | 0 mA |
65 | | Memory Base 128 (NEC), no batteries | 30 mA |
66 | | Save-kun (Koei), fresh batteries | 0 mA |
67 | | Save-kun (Koei), no batteries | 10 mA |
68 | | Replacement MB128 (my RP2040 design) | 25 mA |
69 | | USB Mouse (my RP2040 design), no USB device | 30 mA |
70 | | USB Mouse (my RP2040 design), Logitech Universal Receiver | 53 mA |
71 |
72 |
73 | ## Signalling Protocols - Overview
74 |
75 | The program will scan the joypad controls with code similar to the below.
76 |
77 | Notice that normally:
78 | 1) The CLR bit is set only briefly, once per scan across all joypads
79 | 2) SEL is kept HIGH for the initial read of joypad values, and toggled LOW to read the second group
80 | 3) There is normally a brief delay - although the size of this can vary - between changing the value
81 | of the SEL line, and reading back return values from the joypad. This is above and beyond the ~680ns
82 | delay (5 cycles) which would be implicit betwen the write cycle of a 'STA $1000' opcode and the read
83 | cycle of an immediately-following 'LDA $1000' opcode, for a total of roughly 1.93 microseconds.
84 |
85 | One further point which is not highlighted in the code below is that subsequent joypads are read
86 | simply by toggling SEL high again to advance to the next joypad in the multitap. Toggling CLR resets
87 | the sequence to the first port all over again.
88 |
89 | Normal reading of joypads in this way is generally carried out as part of the VSYNC interrupt, or
90 | as a direct result of its completion, so that values are always available, always 'fresh', and always
91 | based on a regular timebase.
92 |
93 | ```
94 | LDA #1 ; SEL High (Least-significant bit), CLR low (next-least significant bit)
95 | STA $1000 ; output to joypad port
96 | LDA #3 ; both SEL and CLR high
97 | STA $1000
98 | LDA #1 ; Keep SEL high; drive CLR low again
99 | STA $1000
100 | ; the following instructions are a delay to allow transition of the joypad device
101 | PHA ; 3 cycles
102 | PLA ; 4 cycles
103 | NOP ; 2 cycles total = 9 cycles, roughly 1.25 microseconds (CPU clock is normally 7.16 MHz)
104 |
105 | LDA $1000 ; read from Joypad port
106 | AND #$0F ; strip the unnecessary bits
107 |
108 | LDA #0 ; Keep SEL high; drive CLR low again
109 | STA $1000
110 | ; the following instructions are a delay to allow transition of the joypad device
111 | PHA ; 3 cycles
112 | PLA ; 4 cycles
113 | NOP ; 2 cycles total = 9 cycles, roughly 1.25 microseconds (CPU clock is normally 7.16 MHz)
114 |
115 | LDA $1000 ; read from Joypad port
116 | AND #$0F ; strip the unnecessary bits
117 | ```
118 |
119 | ### 2-button Controller Protocol
120 |
121 | A 2-button controller is keyed primarily on the SEL signal, and sends 4 key values when SEL is high,
122 | and another 4 key values when SEL is low.
123 |
124 | A 2-button controller doesn't care about the CLR line, but due to the way it is connected to the 74HC157,
125 | all 4 outputs will be LOW when CLR is HIGH.
126 |
127 | | SEL value | Bit Number | Key |
128 | |:------:|:--------------:|:--------:|
129 | | HIGH | bit 3 (ie $8) | LEFT |
130 | | HIGH | bit 2 (ie $4) | DOWN |
131 | | HIGH | bit 1 (ie $2) | RIGHT |
132 | | HIGH | bit 0 (ie $1) | UP |
133 | | LOW | bit 3 (ie $8) | RUN |
134 | | LOW | bit 2 (ie $4) | SELECT |
135 | | LOW | bit 1 (ie $2) | II |
136 | | LOW | bit 0 (ie $1) | I |
137 |
138 |
139 | ### Multitap Protocol
140 |
141 | Initially, multitap devices were built only for 2-button joypads, so subsequent devices which
142 | were designed to be used with them needed to be built to accept the multitap design.
143 |
144 | The multitap is essentially a multiplexer which takes CLR and SEL values from the console, and
145 | creates CLR and SEL values on each of the ports; likewise, it takes the output values from the
146 | active port and routes those back to the console.
147 |
148 | One interesting point is that while the console only generates a short CLR pulse at thebeginning of a
149 | joypad scan, the multitap presents it as a sustained high signal across all inputs except the active port.
150 |
151 | | CLR | SEL | Active Port | Port 1 CLR | Port 1 SEL | Port 2 CLR | Port 2 SEL | Port 3 CLR | Port 3 SEL | Port 4 CLR | Port 4 SEL | Port 5 CLR | Port 5 SEL |
152 | |-----|-----|-------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
153 | | L | H | None | H | H | H | H | H | H | H | H | H | H |
154 | | H | H | None | H | H | H | H | H | H | H | H | H | H |
155 | | L | H | 1 | L | H | H | H | H | H | H | H | H | H |
156 | | L | L | 1 | L | L | H | H | H | H | H | H | H | H |
157 | | L | H | 2 | H | H | L | H | H | H | H | H | H | H |
158 | | L | L | 2 | H | H | L | L | H | H | H | H | H | H |
159 | | L | H | 3 | H | H | H | H | L | H | H | H | H | H |
160 | | L | L | 3 | H | H | H | H | L | L | H | H | H | H |
161 | | L | H | 4 | H | H | H | H | H | H | L | H | H | H |
162 | | L | L | 4 | H | H | H | H | H | H | L | L | H | H |
163 | | L | H | 5 | H | H | H | H | H | H | H | H | L | H |
164 | | L | L | 5 | H | H | H | H | H | H | H | H | L | L |
165 |
166 | **Compatibilty:** All games are expected to be compatible with the Multitap.
167 | However, one game - Youkai Douchuuki - is known to be incompatible (it shows a black screen with no movement when multitap
168 | is plugged in). There may be a 'fix' version of this HuCard available, as there is a version of the ROM which functions properly.
169 |
170 |
171 | ### 6-button Controller Protocol
172 |
173 | When fighting games like Street Fighter II became popular at the arcades, a 6-button joypad was required
174 | to support games like it on the PC Engine.
175 |
176 | The signalling format is the same as the 2-button joypad, except that on alternating scans (inferred by
177 | counting 'CLR' pulses), the direction buttons scan (SEL = HIGH) will show either the actual direction buttons,
178 | or a value of '0000', which is effectively impossible (as it would imply that opposing directions are
179 | simultaneously pressed, which is not possible on a standard controller). The additional buttons are sent
180 | in the corresponding (SEL = LOW) scan in place of the original RUN/SELECT/II/I buttons.
181 |
182 | Any game checking for the existence of a 6-button pad should scan twice, and not make any assumptions about
183 | which scan number would yield the '0000' number.
184 |
185 | | Scan number | SEL value | Bit Number | Key |
186 | |:-----------:|:------:|:--------------:|:--------:|
187 | | 1 | HIGH | bit 3 (ie $8) | LEFT |
188 | | 1 | HIGH | bit 2 (ie $4) | DOWN |
189 | | 1 | HIGH | bit 1 (ie $2) | RIGHT |
190 | | 1 | HIGH | bit 0 (ie $1) | UP |
191 | | 1 | LOW | bit 3 (ie $8) | RUN |
192 | | 1 | LOW | bit 2 (ie $4) | SELECT |
193 | | 1 | LOW | bit 1 (ie $2) | II |
194 | | 1 | LOW | bit 0 (ie $1) | I |
195 | | 2 | HIGH | bits 3-0 | value 0000 |
196 | | 2 | LOW | bit 3 (ie $8) | VI |
197 | | 2 | LOW | bit 2 (ie $4) | V |
198 | | 2 | LOW | bit 1 (ie $2) | IV |
199 | | 2 | LOW | bit 0 (ie $1) | III |
200 |
201 | **Compatibility:** Games which are not specifically written to support 6-button controllers will not work properly.
202 | Compatible games include:
203 | - HuCard
204 | - Street Fighter II
205 | - CDROM
206 | - Advanced Variable Geo
207 | - Battlefield '94 in Tokyo Dome
208 | - Emerald Dragon
209 | - Fire Pro Jyoshi - Dome Choujyo Taisen
210 | - Flash Hiders
211 | - Garou Densetsu II - Aratanaru Tatakai
212 | - Garou Densetsu Special
213 | - Kakutou Haou Densetsu Algunos
214 | - Linda Cube
215 | - Mahjong Sword Princess Quest Gaiden
216 | - Martial Champions
217 | - Princess Maker 2
218 | - Ryuuko no Ken
219 | - Sotsugyou II - Neo Generation
220 | - Super Real Mahjong P II - P III Custom
221 | - Super Real Mahjong P V Custom
222 | - Tengai Makyo - Kabuki Itouryodan
223 | - World Heroes 2
224 | - Ys IV
225 |
226 |
227 | ## Special Controller Peripherals
228 |
229 | The devices identified up to this point are easily implemented using simple discreet logic ICs with limited
230 | statefulness. The next group of devices rely on statefulness and have more complexity to their protocols.
231 |
232 | ### Mouse Protocol
233 |
234 | Similar to the 6-button joypad, the mouse outputs different pieces of data across a series of multiple scans.
235 |
236 | Timing is important on this protocol, as it must automatically reset so that the 'Delta X' scan is the first
237 | value returned in a scan sequence; as a result, there are two timeouts:
238 | 1) If on any scan, the SEL line does not transition from HIGH to LOW within ~550 microseconds, the mouse will
239 | time out, consider the scan completed, and reset the delta values until the next scan. It can be assumed that
240 | this is also true of LOW-to-HIGH transitions.
241 | 2) If the CLR line is not retriggered within a similar timeframe (for example, 600 microseconds), the mouse will
242 | also consider the scan complete.
243 |
244 | In-between scans, any X/Y movement is accumulated and presented as a net 'Delta X/Y' value at scan time.
245 | There does not seem to be any specific requirements for scanning frequencies, other than the fact that a
246 | subsequent scan should not appear within the timeout period for a preceding scan.
247 |
248 | In order to detect a mouse, a game will generally scan a number of times, and verify that a '0000' value returns
249 | in place of the UP/DOWN/LEFT/RIGHT keys; however, this has a danger of identifying a 6-button pad as a mouse.
250 | However, within a large number of scans in a single frame, two sequential '0000' values sould be able to identify
251 | a mouse.
252 |
253 | | Scan number | SEL value | Data Returned |
254 | |:-----------:|:------:|:--------:|
255 | | 1 | HIGH | bits 7-4 of 'Delta X' |
256 | | 1 | LOW | buttons (RUN,SELECT,II,I) |
257 | | 2 | HIGH | bits 3-0 of 'Delta X' |
258 | | 2 | LOW | buttons (RUN,SELECT,II,I) |
259 | | 3 | HIGH | bits 7-4 of 'Delta Y' |
260 | | 3 | LOW | buttons (RUN,SELECT,II,I) |
261 | | 4 | HIGH | bits 3-0 of 'Delta Y' |
262 | | 4 | LOW | buttons (RUN,SELECT,II,I) |
263 |
264 | **Compatibility:** Games which are not specifically written to support the PC Engine Mouse will not work properly.
265 | Compatible games include:
266 | - HuCard : none
267 | - CDROM
268 | - 1552 Tenka Tairan
269 | - A. III - Takin' the A Train
270 | - Atlas Renaissance Voyage
271 | - Brandish
272 | - Dennou Tenshi Digital Angel
273 | - Doukyuusei
274 | - Eikan ha Kimini - Koukou Yakyuu Zenkoku Taikai
275 | - Hatsukoi Monogatari
276 | - Jantei Monogatari III - Saver Angels
277 | - Lemmings
278 | - Metal Angel
279 | - Nemurenumori no Chiisana Ohanashi
280 | - Power Golf 2 Golfer
281 | - Princess Maker 2
282 | - Tokimeki Memorial
283 | - Vasteel 2
284 |
285 |
286 | ### Pachinko Controller Protocol
287 |
288 | The pachinko controller has two sections to it - all the standard buttons of a 2-button controller, plus a
289 | spring-loaded dial control which acts like a paddle with approximately 90 degreess of rotational travel. The
290 | spring returns it to its counterclockwise limit, and the player is intended to rotate it clockwise to the
291 | appropriate amount.
292 |
293 | To the console, the pachinko controller appears like a multitap with a regular 2-button pad in port 1 (echoed
294 | on ports 3 and 5); in port 2 (and echoed on port 4), the data should be interpreted in the following manner:
295 | - Scan 'A' of the pad with SEL=HIGH will show with bits 3 and 1 as LOW (i.e. either $5, or $0 - but possibly $1 or $4).
296 | - The rest of the data on scan 'A' is not meaningful; it may show as zeroes, or it may have the same values as scan 'B'
297 | (except for those two bits).
298 | - Scan 'B' of the pad with SEL=HIGH will definitely return bit 3 as HIGH (i.e. $80 to $FF).
299 | - When taken as a whole, scan 'B' will show a digital value of the analog pachinko dial as follows:
300 | - SEL = HIGH retrieves the most-significant 4 bits, and SEL = LOW retrieves the least signifiacnt 4 bits
301 | - When taken as a byte, the value ranges between $FC (spring-returned counterclockwise limit) to $83 (at
302 | full-range of clockwise motion).
303 |
304 | **Compatibility:** Games which are not specifically written to support pachinko controllers may or may not work properly.
305 | Compatible games include:
306 | - HuCard
307 | - Pachiokun Juuban Shoubu
308 | - CDROM
309 | - Pachiokun Maboroshi no Densetsu
310 | - Pachiokun Warau Uchuu
311 | - Pachiokun III - Pachisuro & Pachinko
312 |
313 |
314 | ### Memory Base 128 Protocol
315 |
316 | Memory Base 128 is a console (host)-driven protocol which resembles SPI to a certain degree, and covers both
317 | NEC-made "Memory Base 128" units as well as KOEI-made "Save-Kun" units.
318 |
319 | For Memory Base 128 protocol, the 'CLR' line is similar to the 'CLK' line of SPI, and when CLR transitions
320 | from LOW to HIGH, the value of SEL is taken as a single bit of data. Under normal conditions, the joypad read
321 | routines always set SEL to HIGH when CLR is set HIGH, so the data stream would normally be a series of '1' bits.
322 |
323 | In order to transition from 'joypad' mode to 'MB128' mode, the Memory Base device monitors the joypad scanning bitstream
324 | for a particular sequence of bits, and transitions to MB128 mode when it sees them.
325 |
326 | Memory Base 128 Mode is initiated when it sees the sequence '00010101' arrive. This corresponds to a value of $A8,
327 | since the bitstream is least-significant-bit first (unlike SPI implementations elsewhere).
328 |
329 | After the $A8 value is triggered, the Memory Base 128 will ignore the inputs of the daisy-chained device, and instead
330 | communicate back to the console with:
331 | - Bit 3 = No meaning. Zero on Save-Kun units.
332 | - Bit 2 = Identification. Transfers data back to the console only at predefined moments in the protocol; otherwise 0.
333 | - Bit 1 = No meaning. Zero on Save-Kun units.
334 | - Bit 0 = Data to be returned to the console
335 |
336 | Note that all data is sent least-significant bit first (in both directions):
337 |
338 | | Sequence | Number of Bits | Meaning |
339 | |----------|----------------|---------|
340 | | 1 | 2 | Send identification bit - echo the incoming bit back on bit 2 |
341 | | 2 | 1 | Request type (0 = Write; 1 = Read) |
342 | | 3 | 10 | Address (minimum granularity 128-byte offset within memory) |
343 | | 4 | 20 | Transfer length in bits (can address 128KB of memory down to the exact number of bits) |
344 | | 5 | (xfer len) | Data (to or from the console) |
345 | | 6 | 0 or 2 | Trailing empty bits (**Only if a write command**). Data out is set to zero after the first bit is received |
346 | | 7 | 3 | Trailing empty bits. Data out is set to zero after the first bit is received |
347 |
348 | At the conclusion of a transfer, the Memory base 128 disengages and allows the daisy-chained controller outputs
349 | to be returned to the console until the next $A8 sequence is received from the console.
350 |
351 | **Compatibility:** Games which are not specifically written to support the Memory Base 128 should work properly.
352 | Compatible games include:
353 | - HuCard : None
354 | - CDROM
355 | - A. III - Takin' the A Train
356 | - Atlas Renaissance Voyage
357 | - Bishoujo Senshi Sailor Moon Collection
358 | - Brandish
359 | - Eikan ha Kimini - Koukou Yakyuu Zenkoku Taikai
360 | - Emerald Dragon
361 | - Fire Pro Jyoshi - Dome Choujyo Taisen
362 | - Ganchouhishi - Aoki Ookami to Shiroki Mejika
363 | - Linda Cube
364 | - Magicoal
365 | - Mahojng Sword Princess Quest Gaiden
366 | - Nobunaga no Yabou - Bushou Fuuunroku
367 | - Nobunaga no Yabou Zenkokuban
368 | - Popful Mail
369 | - Princess Maker 2
370 | - Private Eye Dol
371 | - Sankokushi III
372 | - Shin Megami Tensei
373 | - Super Mahjong Taikai
374 | - Super Real Mahjong P II - P III Custom
375 | - Super Real Mahjong P V Custom
376 | - Tadaima Yuusha Boshuuchuu
377 | - Vasteel 2
378 |
379 |
380 | ### X-HE3 Converter for XE-1AP Analog Controller
381 |
382 | The X-HE3 converter connects a XE-1AP controller (originally made for MSX and X68000 computers) to the PC Engine,
383 | in both digital and analog formats. In digital format, the controller acts like a regular 2-button joypad.
384 | In analog form, the controller has additional inputs for games which specifically support the analog pad.
385 |
386 | For other joypad peripherals, the CLR line ls LOW under normal circumstances, and a pulse HIGH indicates either:
387 | a) A reset of the sequence, followed immediately by a low signal again, or
388 | b) Other data to be transmitted on the SEL line at the time of transition, like SPI protocol (MB128)
389 |
390 | Normally, when CLR is HIGH, the return data is not expected to be valid; in most cases, CLR is tied to a 74HC157
391 | on the /OE line, which will send all '0000' data back until CLR transitions low again; this is not the case for the
392 | X-HE3/XE-1AP combination (in analog mode).
393 |
394 | In this XE-1AP's analog case, the CLR signal is held high except for a brief pulse low, which signals the joystick
395 | to gneerate a pulse train back to the PC Engine, which must be monitored closely for transitions (which are driven
396 | by an internal state machine on the joypad, not the PC Engine).
397 |
398 | During this time, SEL is held LOW as the PC Engine is expected to watch for state transitions on the buttons 'I' and 'II',
399 | which are on D0 and D1 respectively. D0 is LOW and D1 is HIGH during the waiting period. After roughly 68.4 microseconds,
400 | data is ready, which is signalled by D1 (button 'II') transitioning low.
401 |
402 | When the console sees this, its duty is to transition SEL to HIGH, in order to read the four data bits on D0-D3
403 | (which normally correspond to UP/DOWN/LEFT/RIGHT), which in this situation correspond to the first nybble of data
404 | from the joystick. Then, SEL needs to transition back to LOW in order to monitor D0 and D1 again. The window of data
405 | availability (when button 'II' stays LOW) is fairly short, roughly 12.1 microseconds, requiring a tight loop on the
406 | host console.
407 |
408 | Before the next nybble is made available, button 'II' transitions HIGH for roughly 3.8 microseconds while data lines
409 | transition. Button 'I' transitions HIGH, representing the second nybble - and button 'II' transitions LOW again (for
410 | 12.1 microseconds again), signalling data ready, and the console needs to fetch the nybble by toggling SEL and reading
411 | the lines during the availability window.
412 |
413 | When button 'II' toggles high again, this time it stays high for longer (to prepare for the next 2 nybbles), at
414 | 21.8 microseconds. The pattern repeats, with 6 bytes (12 nybbles) in all being transferred; the entire time from the
415 | initial pulse to the end of the data transfer is roughly 350 microseconds.
416 |
417 | #### Data sequence output:
418 |
419 | The sequence of data (and bit-order) is as follows (from original joystick):
420 |
421 | All values are low when pressed, high when not pressed
422 |
423 | 1. Buttons A, B, C, D - (Note: A is pressed if either A or A' is pressed; same with B or B')
424 | 2. Buttons E1, E2, Start(F), Select (G)
425 | 3. Top 4 bits of 'channel 0' (Y-axis; limit up = 0x00, limit down = 0xFF)
426 | 4. Top 4 bits of 'channel 1' (X-axis; limit left = 0x00, limit right = 0xFF)
427 | 5. Top 4 bits of 'channel 2' (Throttle; limit up = 0xFF, limit down = 0x00)
428 | 6. 0000 (unused)
429 | 7. Bottom 4 bits of 'channel 0' (Y-axis)
430 | 8. Bottom 4 bits of 'channel 1' (X-axis)
431 | 9. Bottom 4 bits of 'channel 2' (Throttle)
432 | 10. 0000 (unused)
433 | 11. Buttons A, B, A', B' (This can differentiate between the buttons, whereas scan #1 merges them)
434 | 12. 1111 (all high)
435 |
436 |
437 | #### Logic state diagram:
438 |
439 | 
440 |
441 |
442 |
443 | **Compatibility:** Games which are not specifically written to support the X-HE3/XE-1AP in analog format will not work properly,
444 | and should be used in digital format instead.
445 | Compatible games include:
446 | - AfterBurner II
447 | - Forgotten Worlds
448 | - Operation Wolf
449 | - Outrun
450 | - Thunder Blade (possibly)
451 |
452 |
453 | ## To Be Added:
454 |
455 | ### Develo Box Protocol
456 |
457 | The Develo Box is intended to interface with a PC, so there is communications software running on the PC side
458 | to handle the more complicated communications this involves.
459 |
460 | This deserves its own file, which will follow in the near future.
461 |
462 |
--------------------------------------------------------------------------------