It is currently Thu Jan 18, 2018 4:55 am

All times are UTC - 7 hours

Post new topic Reply to topic  [ 3 posts ] 
Author Message
PostPosted: Fri Dec 29, 2017 9:10 am 

Joined: Sun Jun 12, 2011 12:06 pm
Posts: 291
Location: Poland
I become owner of quite weird but compact famiclone console:
Image Image Image Image Image Image Image Image

The mainboard contains just ordinary set of chips (UA6527+UA6538+2x74368 + 74373 + 74139).

The add-on board with pad sockets is equipped with IRDA receiver (I've never heard of any consoles with infrared pads before) and some chips (7408, 4094, UA6581). Here is schematics of that board:

If we consider standard 15-pin pinout for most famiclones (1=GND, 8=DATA, 9=CLK, 12=STROBE, 15=+5V), then:
* Socket marked as "1" is de-facto ready for PAD2 (with the exception that P2.D0 is ANDed with some signal from mysterious UA6581)
* Socket marked as "2" is non-functional

But when assuming that: 1=GND, 2=DATA, 12=STROBE, 14=CLK, 15=+5V) then this custom pinout might agree that 1=PAD1, 2=PAD2.

There are two jumper-wires (not soldered) which probably should be soldered when no irda & extra chips were soldered in.

What's the IRDA protocol & how UM6581 works is still not known. Some other famiclone's pads (IQ502) were equipped with UM6582.
Also, 4094 can reset console (and it does it quite often as sometimes this famiclone spuriously resets).

PostPosted: Mon Jan 08, 2018 12:28 pm 

Joined: Sun Jun 12, 2011 12:06 pm
Posts: 291
Location: Poland
Ok, I did some measurements and research. Here are results:

UM6581 - details of operation
1. Package & pinout: DIP14, 300mils

!RESET?  |01   14|->VCC
 delay?  |02   13|->P2 inactivity pulse?
  XTAL1->|03   12|->P1 inactivity pulse?
  XTAL2->|04   11|->P2.D0
 P1.CLK->|05   10|<-P2.CLK
  P1.D0<-|06   09|<-STROBE
    GND -|07   08|<-IRDA

There is how the chip was connected in famiclone:

2. Clock
XTAL1 & XTAL2 are ceramic oscillator inputs (455 kHz). The chip has built-in clock generator (probably with inverter). During operation, there is sine wave at XTAL1 and TTL square wave at XTAL2. This clock is used by chip to decode signal from IRDA input & measure idle time time.


|      |
+-1.2k----to XTAL2
|      |
+-XTAL-+--to XTAL1
| 455k |
|      |
330p  330p
|      |

3. Infrared receiver
Output from infrared receiver should be connected to IRDA input. Originally, 3-pin 38 kHz SONY SBX1610-52 INFRA RED SERIAL TRANSMISSION ENCODER RECEIVER is used (455 kHz / 38 kHz ~= 12)
This chip has two 8 bit registers to store states of eight buttons for each player. When it detects proper waveform on IRDA input, it updates internal register with received button states.

for player1: 00[A][B][Select][Start][Up][Down][Left][Right]11000011
for player2: 00[A][B][Select][Start][Up][Down][Left][Right]00111100

Each bit takes 500 us time:
* GND on IRDA input = blinking of LED at 38 kHz = logical 0
* VCC on IRDA input = LED turned off = logical 1
If no infrared signal is received within 25 ms for each player, internal button states for this player will be reset (set to ones).

Original infrared joypads probably send those signals only if any buttons are pressed, instead of continuous transmission, to save battery. If signals from two joypads are send at the same time, they will interfere and no valid data is received by the chip, so probably they send the data more often that once per frame (25 ms) or in diffrent intervals.


4. Output
STROBE is connected to CPU's pin 39 and P1.CLK/P1.D0/P2.CLK/P2.D0 are connected to 74368 buffers in famiclone and they behave the same as for regular joypad:
* rising edge of strobe causes driving P1.D0/P2.D0 with state of A's button for 1/2 player,
* each rising edge of P1.CLK/P2.CLK causes the P1.D0/P2.D0 to be driven with state of next button (B/Select/STart/Up/Down/Left/Right),
* after eight edges, D0 is driven with 0.


5. Miscellaneous
* Pin 1 & pin 2 have internal pull-ups to VCC and they acts as some kind of inputs, while pin 13 & pin 14 are outputs.

* Pin 1 is probably !RESET. If GND is applied, chip does not generate signals on pin 12/13, ignores IRDA input,returns 0xFF for pad1/pad2 and if there were time shift between pulses on pin 13 and pin 12, they will be in sync after releasing reset.

* There are pulses on pin 12 if no data is received for P1 within some time (and the same on pin 13 for P2). Those pulses have constant duty cycle of 12.5% and frequency, which can be set (lets call it fpoll)
If data for pads are received, there won't be any pulses. Maybe this signal can be used as some kind of notification for the pad to send signal.

* Pin 2 selects fpoll (the maximum delay between receiving two signals for one pad which will not cause reseting button states.
**Driving with GND causes pin 12/pin13 to have 564 Hz
**Driving with VCC causes pin 12/pin13 to have 23.52 Hz
It is NOT analog input. Some kind of frequency signal could be put here, but it should be in phase with pin12/pin13.

PostPosted: Mon Jan 08, 2018 1:35 pm 

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6638
Location: Seattle
krzysiobal wrote:
Originally, 3-pin 38 kHz SONY SBX1610-52 INFRA RED SERIAL TRANSMISSION ENCODER RECEIVER is used (455 kHz / 38 kHz ~= 12)
In my experience, infrared demodulator chips don't usually use a high-quality time source like the 455kHz resonator, instead just setting the demodulation frequency via an RC or LC.

Each bit takes 500 us time:
2kbit/sec is surprisingly fast for modulated IR. Most of the remotes in the LIRC database seem to use bit rates closer to 500-1000 bits/sec. They also usually encode clock and data in the same stream, rather than start bits...

Actual IrDA doesn't use 38kHz modulation, in order to support higher bandwidths.

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC - 7 hours

Who is online

Users browsing this forum: No registered users and 12 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group