Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
pinouts [2021/03/11 14:42] – [Cartridge port] pulkomandy | pinouts [2022/06/11 16:35] (current) – Moving controllers to a separate page admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Cartridge port ====== | ====== Cartridge port ====== | ||
- | Pinout: https://media.discordapp.net/attachments/750094909947772964/758513072087629884/vsmile-pinout.png? | + | 50 pin connector with spacing of 2.54mm. For example this works: https://www.digikey.com/product-detail/en/te-connectivity-amp-connectors/5530841-5/ |
- | Pin spacing | + | One pair of pins is missing, making a hole that prevents inserting cartridges in the wrong way. |
- | Development cartridges from V.Tech used flash memory: SST 39VF6401B | + | ===== V.Smile cartridges ===== |
+ | |||
+ | Pinout traced from development cart picture: https:// | ||
+ | |||
+ | Development cartridges from V.Tech used NOR flash memory: SST 39VF6401B | ||
Production cartridges use a " | Production cartridges use a " | ||
Line 13: | Line 17: | ||
^Back |VDD|RAM CSB|Sense|ROM CSB2|D2|D1|D0|D7 |D10|D9 |D8 |D14|A16|A2^x |A4|A6|A17|A8|A10|A12|A14|A19|A21|ROM CSB1 | | ^Back |VDD|RAM CSB|Sense|ROM CSB2|D2|D1|D0|D7 |D10|D9 |D8 |D14|A16|A2^x |A4|A6|A17|A8|A10|A12|A14|A19|A21|ROM CSB1 | | ||
- | Cartridges from the Nitro Vision/ | + | **Note: |
- | **Note: the " | + | |
+ | * Card detect is connected to VDD to indicate that a cart with ROM is inserted (?) maybe it allows booting from cartridge instead of internal ROM (tbc) | ||
+ | | ||
- | * Sense is connected to VDD to indicate that a cart is inserted | + | To be confirmed: |
- | * Card detect is connected to VDD to indicate that a cart with ROM is inserted (?) | + | |
- | * ROM CSB1, ROM CSB2 and RAM CSB allow to select which bank of the cartridge is accessed. Typically cartridges use only ROM CSB1. | + | |
- | ^Cartridge name | + | * What is RAM_CSB? It is not connected |
- | |Français et Anglais (orange) | 1 - 35-68700-017-202-707426-1 | SENSE is connected to VDD | | + | ==== Battery backup cartridge ==== |
- | |Sciences et Nature (white) | + | |
- | |Découvre le monde (blue) | + | |
- | |Maths et Logique (green) | + | |
+ | At least the " | ||
- | ====== Controller port ====== | + | {{: |
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
- | 6 pin mini DIN (like PS/2 keyboards and mouse). It is a serial port at 4800 baud, 8N1. | + | The blob is flash (as usual) and the chip on the right is RAM: BSI - [[https:// |
- | Pinout (using | + | The pin labelled RAM_CSB in the pinout above is in fact not used by this cartridge (but ROM_CSB2 is) |
- | - VCC | + | ==== Dual ROM cartridges ==== |
- | - CTS (from V.Smile) | + | |
- | - Tx (from V.Smile) | + | |
- | - GND | + | |
- | - Rx (from controller) | + | |
- | - RTS (from controller) | + | |
+ | At least the following games have two blobs on ROM_CSB1 and ROM_CSB2: | ||
- | ===== Flow control | + | * The little mermaid |
+ | * Smart keyboard | ||
+ | * Alphabet adventure | ||
+ | ===== Nitro Vision / Genius TV progress cartridges | ||
- | When the console sends a byte, first CTS goes high, then the console sends the bits on the Tx line. When done, CTS goes low again. | + | These contain no ROM, and only short some pins together. |
- | When the controller sends a byte, RTS goes low first, then it waits for CTS to be up. Then RTS goes up and sends its byte. Finally CTS goes low again. | + | Inserting these in the V.Smile results in nothing |
- | + | ||
- | If there are multiple bytes to send, RTS remains down until the start of the last byte. | + | |
- | ===== Messages from the controller ===== | + | |
- | + | ||
- | When idle (no buttons touched), the console sends a byte every 20ms, it seems to be partially random. I've seen E6, D6, or 96. | + | |
- | + | ||
- | Every second the controller sends 55 if nothing | + | |
- | + | ||
- | + | ||
- | ^ Common to joystick, dance mat and keyboard ||| | + | |
- | ^ Button | + | |
- | | OK | A1 | A0 | | + | |
- | | Quit | A2 | A0 | | + | |
- | | Help | A3 | A0 | | + | |
- | | ABC | A4 | A0 | | + | |
- | | Idle (nothing) | 55 || | + | |
- | + | ||
- | ==== Joystick ==== | + | |
- | + | ||
- | The joystick has 5 levels of precision in each direction. For example, C3 is " | + | |
- | + | ||
- | The 4 color buttons are allocated one bit each in the 9x range so it's possible to manage multiple of them being pressed at once. | + | |
- | + | ||
- | The other buttons are Ax with x just being the button number, so it's not possible to handle multiple of them being pressed at the same time. | + | |
- | + | ||
- | ^ Joystick | + | |
- | ^ Button | + | |
- | | Green | 91 | 90 | | + | |
- | | Blue | 92 | 90 | | + | |
- | | Yellow | + | |
- | | Red | 98 | 90 | | + | |
- | | Up | C0 83 to C0 87 | C0 80 | | + | |
- | | Down | C0 8B to C0 8F | C0 80 | | + | |
- | | Left | CB 80 to CF 80 | C0 80 | | + | |
- | | Right | C3 80 to C7 80 | C0 80 | | + | |
- | + | ||
- | ==== Dance mat ==== | + | |
- | + | ||
- | Every press sends at least a " | + | |
- | + | ||
- | ^ Dance mat ||| | + | |
- | ^ Button | + | |
- | | 1 / Red | C0 8B | C0 80 | | + | |
- | | 2 / Up | 92 C0 80 | 90 C0 80 | | + | |
- | | 3 / Yellow | + | |
- | | 4 / Left | C0 8D | C0 80 | | + | |
- | | 5 / Middle | + | |
- | | 6 / Right | CD 80 | C0 80 | | + | |
- | | 7 / Blue | A4 C0 80 | A0 C0 80 | | + | |
- | | 8 / Down | 94 C0 80 | 90 C0 80 | | + | |
- | | 9 / Green | 98 C0 80 | 90 C0 80 | | + | |
- | + | ||
- | ==== Smart Keyboard (Clavier Tip Tap) ==== | + | |
- | + | ||
- | (sorry, I have the French/ | + | |
- | + | ||
- | ^ Row 1 (top) ^^ Row 2 ^^ Row 3 ^^ Row 4 ^^ Row 5 ^^ | + | |
- | ^ Key ^ Code ^ Key ^ Code ^ Key ^ Code ^ Key ^ Code ^ Key ^ Code ^ | + | |
- | | Esc | A2 | Dactylo | 22 | Caps | 1A | Shift | A9/AA | Player 1 | 04 | | + | |
- | | 1 | 33 | A | 23 | | + | |
- | | 2 | 34 | Z | 24 | Q | 1B | X | 14 | Symbol | 2C | | + | |
- | | 3 | 35 | E | 25 | S | 1C | C | 15 | Space | 05 | | + | |
- | | 4 | 37 | R | 27 | D | 1D | V | 17 | Player 2 | 0E | | + | |
- | | 5 | 36 | T | 26 | F | 1F | B | 16 | Left | 06 | | + | |
- | | 6 | 30 | Y | 20 | G | 1E | N | 08 | Down | 0F | | + | |
- | | 7 | 31 | U | 21 | H | 18 | , | 11 | Right | 0D | | + | |
- | | 8 | 3E | I | 3A | J | 19 | ; | 0C | | | | + | |
- | | 9 | 3F | O | 3B | K | 0A | : | 2F | | | | + | |
- | | 0 | 38 | P | 3C | L | 0B | Up | 12 | | | | + | |
- | | º | 29 | ¨ | 2A | M | 01 | | | | | | + | |
- | | Backspace | 39 | Erase | 3D | Enter | A1 | | + | |
- | + | ||
- | + | ||
- | * Escape is mapped to Quit and works the same | + | |
- | * Help is mapped to Help and works the same | + | |
- | * Enter is mapped to OK and works the same | + | |
- | * Shift sends A9 on press and AA on release | + | |
- | * Other keys send their code on press, and code | C0 on release (so no code will be in the 90-AF range for either press or release to not conflict with the special buttons) | + | |
- | + | ||
- | The joystick at the bottom of the keyboard | + | |
- | + | ||
- | * Left: 7F 80 | + | |
- | * Right: 77 80 | + | |
- | * Down: 70 8F | + | |
- | * Up: 70 87 | + | |
- | ===== Commands from the console ===== | + | |
- | + | ||
- | 61, 62, 64 and 68 are sent in reply to color buttons presses. I suspect this controls the lights in the buttons. | + | |
- | 60 is sent to turn the light off. | + | |
- | + | ||
- | These are repeated every 20ms. After the controller sends 55 (idle), the V.Smile also returns to its idle reply (E6 for example) every 20ms. | + | |
+ | ^Cartridge name | ||
+ | |Français et Anglais (orange) | 1 - 35-68700-017-202-707426-1 | SENSE is connected to VDD | | ||
+ | |Sciences et Nature (white) | ||
+ | |Découvre le monde (blue) | ||
+ | |Maths et Logique (green) | ||
+ | So, in this case: | ||
+ | * Sense indicate that a cartridge is inserted | ||
+ | * RAM_CSB and ROM_CSB2 allow to identify which cartridge it is | ||