Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : MMB4W Controller interface
Page 1 of 3 | |||||
Author | Message | ||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
LeoNicolas' Knightmare game he is developing and the recent addition of the Wii controller to the PicoMite firmware has got me thinking of a controller interface for MMB4W. Lizby has already demonstrated a serial client for MMB4W and I was thinking that sort of thing might be suitable for a controller interface. I was thinking of a small PicoMite board with joystick and NES inputs like Micks PicoGAME plus a Wii connector. A small USB to serial module mounted on it would provide comms to the PC. My thinking of the software for it is to incorporate Tom's controller library with a little extra software. The MMB4W program would tell it which controller the Pico should use. To reduce lag the Pico could poll the selected controller at a rapid rate as the CMM2 does with the Wii controllers. When the MMB4W program requests the controller input the Pico would respond with the last known state of the selected controller. Not sure if too much data will come back from the CLASSIC but if so, the request could be for only certain blocks of data as required. Problem: How does the MMB4W program which comms port to use? I know that you can find it in Device Manager > Ports (COM & LPT) and that some programs can find out which comms ports are available but I don't know how to do it. Does anyone have any thoughts on the concept? Bill Keep safe. Live long and prosper. |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
I could squirt bytes of data over a COM port rather than I2C on the controller I've been experimenting with, after all it has a PicoMite as its "brain". How you'd decode them at the PC end I've no idea. For a PC you really need USB though. Not many PCs have COM ports now and using a TTL serial to USB converter is a bit clonky. There are SNES USB controllers that work on a PC but some sort of a driver might be needed to interface one to the game. There are USB to I2C adapters on ebay. Those would be a neat way to connect I2C controllers, but using a WII Classic would need special software. Edited 2023-12-10 19:32 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2149 |
Do you need a TTL / USB converter? If your Pico based controller Prints Hex strings to its console it may be possible to get MMB4W to read and decode them. |
||||
thwill Guru Joined: 16/09/2019 Location: United KingdomPosts: 4048 |
There is probably a PowerShell command/commands that can perhaps be issued using MMB4W's SYSTEM command that will provide this information. Best wishes, Tom Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
pwillard Senior Member Joined: 07/06/2022 Location: United StatesPosts: 292 |
A simple python script can keep track of active ports... #------------------------------------------------------------------------------- # Name: # Purpose: Simple tracker for active serial ports attached to windows PC # # Author: Pete Willard # # Created: 15/08/2023 # Copyright: (c) willard 2023 # Licence: CC BY-NC-SA #------------------------------------------------------------------------------- import serial.tools.list_ports import time import PySimpleGUI as sg def main(): layout = [ [sg.Text("Available Serial Ports:")], [sg.Listbox(values=[], size=(40, 10), key="-PORTS-")], [sg.Button("Exit")] ] window = sg.Window("Port Tracker", layout) while True: event, values = window.read(timeout=1000) # Auto-update every 1000 milliseconds if event == sg.WINDOW_CLOSED or event == "Exit": break refresh_ports(window) window.close() def refresh_ports(window): ports = [port.device for port in serial.tools.list_ports.comports()] window["-PORTS-"].update(values=ports) if __name__ == "__main__": main() Could be modified to show Device ID, if you really wanted it I suppose. |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
Hmmm.... My I2C controller (PZee Control) has the USB-C port in a good position to use it with a USB-C lead to a PC. Sending hex to the console should be fine. As I said though, it is just a PCB without a case. Edited 2023-12-10 22:50 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
lizby Guru Joined: 17/05/2016 Location: United StatesPosts: 3157 |
I don't understand that. Cheap and trivial to use. I probably have dozens of them: CH340 ttl/serial usb Some have been working continuously for years. Perhaps that Waveshare RP2040-GEEK usb module pointed out by Bernie3D, with I2C and serial, would be just the ticket for attaching a controller to MMB4W. ~ Edited 2023-12-11 01:02 by lizby PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
I was just thinking about it being an external dongle of some sort. Ideally I'm aiming for something that requires little or even no assembly skills, that can be used by someone who is buying into MMBasic as a gaming platform. As such I'd prefer I2C as that's available on everything, you can have more than one controller on two pins and it's supported in MMBasic. There are several USB-I2C converters so connection to a PC should be ok. However, sending hex to the "console" via the USB port is rather nice. I might add that as an option. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
PeteCotton Guru Joined: 13/08/2020 Location: CanadaPosts: 369 |
I've been working on addressing the issue of needing a PC to transfer files onto and off of the CMM2. Basically, my solution involves hooking up an ESP-32 chip to the COM2 port on the CMM2 (which is easily accessible from the back port on all versions, and has a dedicated spot on the motherboard on Gen 2), using the onboard WiFi chip and some cloud computing. The ESP-32 is controlled via ASCII commands on the COM 2 port. Although it's being developed for the CMM2, there's very little reason that I can see that it can't also be used by the other Mites. If we have an ESP-32 attached to this port anyway - it could be used as a 4 port USB hub for keyboards/mouse/game controllers and memory sticks (see project below). https://hackaday.io/project/178213-esp32-usb-software-host I haven't done any work on the USB side (I'm concentrating on the WiFI bit for now), but it might make sense to combine the two projects into one board? I have zero experience with the PicoMite, but I am assuming it has a buffered COM port like the CMM2. Which means you could Poll the ESP-32 to provide gamepad/joystick values at the start op the game loop, and by the time you're half way through the game loop, the values would be waiting for you in the COM2 buffer. |
||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
Exactly. Then we chuck it at the software gurus and say "make it work". Of course a if a USB controller was supported that would be ideal but Peter hasn't said that it's impossible so I don't think that will happen. It seems to me that MMB4W would be a good tool for developing games and utilities for the CMM2. Coupled with MMEdit, edit the program, click on a button and it runs almost instantly. I was just looking for a game controller solution that would work without too much lag. Maybe next year I might do some experimenting. Bill Keep safe. Live long and prosper. |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
To be fair, the CMM2 isn't a bad machine to do software development on anyway. Using MMB4W to do that isn't really as useful as it is with the PicoMite. Yes, you can do it, but you don't gain quite as much IMHO. Since someone decided to drop the Centronics port from the PC it's gone downhill. ;) Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
Maybe MMB4W could use something connected as a (USB) COM port. The something could be on the non-USB end of the device (USB end in the PC). Maybe RP2040 on the non-USB (may as well be serial) device, handling Game buttons etc and changing them into chars to send over the serial-to-USB device. (RP2040 is overkill but cheap & easily programmed.) The existing games for the Game*mite would need to be changed (a little) to look for the chars arriving over the COM port. For non-Game stuff, the RP2040 could handle I2C, SPI, etc. John Edited 2023-12-12 00:19 by JohnS |
||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
Thanks John, I think you are talking about a controller with it's own buttons? The sort of thing Mixtel90 has been playing with. Something like the Game*Mite with no screen but with a serial to USB port? That's another option. Bill Edit: I do seem to recall a project where someone used a keyboard chip driven by something and used it to simulate keystrokes. I think the PC thought it was a keyboard. That sort of thing may work also. I don't remember where or when I saw that. Edited 2023-12-12 10:20 by Turbo46 Keep safe. Live long and prosper. |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2149 |
Here 'tis.https://www.thebackshed.com/forum/ViewTopic.php?TID=6617#69183 |
||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
Thanks Phil, That is not the one I was thinking about but it's food for though. I wonder what the effect of plugging a second keyboard into a PC? Easy enough to find out. I have only laptops but a few spare keyboards I can plug in. It could be the basis for a games controller using buttons to send keyboard controls to MMB4W. Bill Keep safe. Live long and prosper. |
||||
TassyJim Guru Joined: 07/08/2011 Location: AustraliaPosts: 6108 |
Multiple keyboards is usually OK I have some of these but haven't had time to play yet. https://www.electrodragon.com/product/serial-to-hid-keyboard-emulator/ Jim VK7JH MMedit MMBasic Help |
||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
Thanks Jim, Another thing for me to follow up Bill Keep safe. Live long and prosper. |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
How about an arduino? Or how about a WII Clasic for the PC? Edited 2023-12-12 18:09 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
Yes, so that you play like you're on a Game*mite but it's MMB4W with a controller which looks & feels like a Game*mite but it works with a PC. The problem being that nowadays a PC is lacking inputs other than (mainly) USB. John |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6832 |
Another pico version. Or a complete arcade game pad using a Pico. :) Edited 2023-12-12 18:27 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
Page 1 of 3 |
Print this page |