Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
pinouts [2021/03/10 15:02] – [Dance mat] pulkomandy | pinouts [2021/08/29 21:37] – [V.Smile cartridges] pulkomandy | ||
---|---|---|---|
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 " | ||
+ | ^Pin N^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 ^11 ^12 ^13 ^14^15^16^17^18 ^19^20 ^21 ^22 ^23 ^24 ^25 ^ | ||
+ | ^Front|/ | ||
+ | ^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 | | ||
+ | |||
+ | **Note: the " | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | To be confirmed: | ||
+ | |||
+ | * 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? | ||
+ | ==== Battery backup cartridge ==== | ||
+ | |||
+ | At least the " | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | The blob is flash (as usual) and the chip on the right is RAM: BSI - [[https:// | ||
+ | |||
+ | The pin labelled RAM_CSB in the pinout above is in fact not used by this cartridge (but ROM_CSB2 is) | ||
+ | |||
+ | ==== Dual ROM cartridges ==== | ||
+ | |||
+ | At least the following games have two blobs on ROM_CSB1 and ROM_CSB2: | ||
+ | |||
+ | * The little mermaid | ||
+ | * Smart keyboard | ||
+ | * Alphabet adventure | ||
+ | ===== Nitro Vision / Genius TV progress cartridges ===== | ||
+ | |||
+ | These contain no ROM, and only short some pins together. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ^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 | ||
====== Controller port ====== | ====== Controller port ====== | ||
Line 22: | Line 75: | ||
- RTS (from controller) | - RTS (from controller) | ||
+ | {{ : | ||
+ | {{ :: | ||
===== Flow control ===== | ===== Flow control ===== | ||
Line 30: | Line 85: | ||
If there are multiple bytes to send, RTS remains down until the start of the last byte. | If there are multiple bytes to send, RTS remains down until the start of the last byte. | ||
- | ===== Messages from the joystick | + | ===== 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. | 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. | ||
Line 44: | Line 99: | ||
| ABC | A4 | A0 | | | ABC | A4 | A0 | | ||
| Idle (nothing) | 55 || | | 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 | ^ Joystick | ||
^ Button | ^ Button | ||
Line 54: | Line 118: | ||
| Left | CB 80 to CF 80 | C0 80 | | | Left | CB 80 to CF 80 | C0 80 | | ||
| Right | C3 80 to C7 80 | C0 80 | | | Right | C3 80 to C7 80 | C0 80 | | ||
+ | |||
+ | ==== Dance mat ==== | ||
+ | |||
+ | Every press sends at least a " | ||
+ | |||
^ Dance mat ||| | ^ Dance mat ||| | ||
^ Button | ^ Button | ||
Line 65: | Line 134: | ||
| 8 / Down | 94 C0 80 | 90 C0 80 | | | 8 / Down | 94 C0 80 | 90 C0 80 | | ||
| 9 / Green | 98 C0 80 | 90 C0 80 | | | 9 / Green | 98 C0 80 | 90 C0 80 | | ||
- | |||
- | ==== 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. | ||
- | |||
- | ==== Dance mat ==== | ||
- | |||
- | Every press sends at least a " | ||
==== Smart Keyboard (Clavier Tip Tap) ==== | ==== Smart Keyboard (Clavier Tip Tap) ==== | ||
Line 111: | Line 168: | ||
* Down: 70 8F | * Down: 70 8F | ||
* Up: 70 87 | * Up: 70 87 | ||
+ | |||
+ | Boot sequence: | ||
+ | |||
+ | * Keyboard sends 52 52 52 | ||
+ | * Console sends 0x02 0x02 0xE6 0xD6 0x60 | ||
+ | * Keyboard sends language code | ||
+ | * Console: 0x70 | ||
+ | * Keyboard: 0xBA | ||
+ | |||
+ | The language codes: | ||
+ | |||
+ | * 0x40: US | ||
+ | * 0x41: UK | ||
+ | * 0x42: French | ||
+ | * 0x44: German | ||
===== Commands from the console ===== | ===== Commands from the console ===== | ||