Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pinouts [2021/03/11 14:42] – [Cartridge port] pulkomandypinouts [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?width=1011&height=684+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/5530841-5-ND/2259225
  
-Pin spacing is 2.54mm. For example this works: https://www.digikey.com/product-detail/en/te-connectivity-amp-connectors/5530841-5/5530841-5-ND/2259225+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://media.discordapp.net/attachments/750094909947772964/758513072087629884/vsmile-pinout.png?width=1011&height=684 
 + 
 +Development cartridges from V.Tech used NOR flash memory: SST 39VF6401B (4Mx16 flash memory). The write pin is exposed on the cartridge port, so in theory it's possible to reflash it directly from the console?
  
 Production cartridges use a "blob" and it's unknown what exactly is under it. Probably mask ROM. Production cartridges use a "blob" and it's unknown what exactly is under it. Probably mask ROM.
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/Genius TV progress just short some pins together.+**Note: the "back" side is the one with the label. Chips inside the cartridge are on the side with no label.**
  
-**Note: the "back" side is the one with the label?**+  Sense is connected to VDD to indicate that a cart is inserted. It is connected to the RESET pin, so inserting a cartridge will power the console off. 
 +  * 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) 
 +  ROM CSB1, ROM CSB2 and RAM CSB allow to select which bank of the cartridge is accessed. Typically cartridges use only ROM CSB1, but larger cartridges (example: alphabet adventure) need two ROM banks. ROM_CSB2 may also be used for battery-backed SRAM. The two pins are controlled independently as GPIO from the CPU, so all 4 combinations are possible. However, 11 will be used when the internal ROM is accessed, so it's better to have the cartridge idle in that case.
  
-  * 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             ^Number (marked on PCB)         ^Shorted pins                                        ^ +  * What is RAM_CSB? It is not connected on the only cart known to use SRAM. The name of the pin comes from schematics of the console but it just shows that it is connected to the SPG200C without any other info. SPCE1600 datasheet shows it would be usable for external RAM, where in the address space would it be mapped in that case? 
-|Français et Anglais (orange) | 1 - 35-68700-017-202-707426-1 | SENSE is connected to VDD                        | +==== Battery backup cartridge ====
-|Sciences et Nature (white)   | 2 - 35-68700-018-202-707427-1 | SENSE and RAM_CSB are connected to VDD           | +
-|Découvre le monde (blue)     | 3 - 35-68700-019-202-707428-1 | SENSE and ROM_CSB2 are connected to VDD          | +
-|Maths et Logique (green)     | 4 - 35-68700-020-202-707429-1 | SENSE, RAM_CSB and ROM_CSB2 are connected to VDD |+
  
 +At least the "Studio de Dessin" cartridge (the one for the graphic tablet) has backup SRAM
  
-====== Controller port ======+{{:dsc_1980.jpg?direct&200|}} 
 +{{:dsc_1981.jpg?direct&200|}} 
 +{{:dsc_1986.jpg?direct&200|}} 
 +{{:dsc_1987.jpg?direct&200|}}
  
-6 pin mini DIN (like PS/2 keyboards and mouse). It is a serial port at 4800 baud, 8N1.+The blob is flash (as usualand the chip on the right is RAM: BSI - [[https://pdf1.alldatasheet.com/datasheet-pdf/view/453900/BSI/BS616LV2016ECG70.html|BS616LV2016ECG70]] - S31688EB04308B1 - E05162 - Taiwan
  
-Pinout (using the standard numbering for mini-DIN connectors:+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 bytefirst CTS goes high, then the console sends the bits on the Tx line. When done, CTS goes low again.+These contain no ROMand only short some pins together.
  
-When the controller sends a byte, RTS goes low first, then it waits for CTS to be upThen RTS goes up and sends its byte. Finally CTS goes low again. +Inserting these in the V.Smile results in nothing special (the boot animation loops as if there was no cartridge). However the SENSE pin is there, so they still power the console off if connected while it is on.
- +
-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 else is happening. +
- +
- +
-^ Common to joystick, dance mat and keyboard ||| +
-^ Button         ^ Press           ^ Release            ^ +
-| 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 "slightly up", C7 is "all the way up". +
- +
-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         ^ Press           ^ Release            ^ +
-| Green          | 91              | 90                 | +
-| Blue           | 92              | 90                 | +
-| Yellow         | 94              | 90                 | +
-| 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 "joystick position" 2-byte pair, and possibly an extra byte for the button itself (some buttons report as joystick moves, other as separate buttons). The mapping is not at all compatible with the joystick and seems a bit random. Note that for example 8B and 8D are different buttons, where on the joystick it would be different positions in the same direction. +
- +
-^ Dance mat                                           ||| +
-^ Button         ^ Press           ^ Release            ^ +
-| 1 / Red        | C0 8B           | C0 80              | +
-| 2 / Up         | 92 C0 80        | 90 C0 80           | +
-| 3 / Yellow     | CB 80           | C0 80              | +
-| 4 / Left       | C0 8D           | C0 80              | +
-| 5 / Middle     | 91 C0 80        | 90 C0 80           | +
-| 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/azerty version so key labels may not match up. The table is in row/column order) +
- +
-^ 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 |      | W | 13 | Help | A3 | +
-| 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 is similar to the normal Joystick but uses different values (to avoid clashing with the keyboard release keycode range). There does not seem to be different values possible, it's all on or all off. +
- +
-  * 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               ^Number (marked on PCB)         ^Shorted pins                                      ^
 +|Français et Anglais (orange) | 1 - 35-68700-017-202-707426-1 | SENSE is connected to VDD                        |
 +|Sciences et Nature (white)   | 2 - 35-68700-018-202-707427-1 | SENSE and RAM_CSB are connected to VDD           |
 +|Découvre le monde (blue)     | 3 - 35-68700-019-202-707428-1 | SENSE and ROM_CSB2 are connected to VDD          |
 +|Maths et Logique (green)     | 4 - 35-68700-020-202-707429-1 | SENSE, RAM_CSB and ROM_CSB2 are connected to VDD |
  
 +So, in this case:
  
 +  * Sense indicate that a cartridge is inserted
 +  * RAM_CSB and ROM_CSB2 allow to identify which cartridge it is
  
pinouts.1615470141.txt.gz · Last modified: 2021/03/11 14:42 by pulkomandy
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0