Skip to content

WonderSwan EXT port <-> USB adapter for homebrew development.

License

Notifications You must be signed in to change notification settings

asiekierka/ws-extfriend

Repository files navigation

ExtFriend

ExtFriend is a USB adapter for the WonderSwan's EXT port based on the RP2040 chip and the Raspberry Pi Pico board, providing the following features at a low cost:

  • A USB serial port communicating with the WonderSwan at 9600, 38400 and 192000 baud,
  • A USB audio device allowing digital stereo audio capture from the WonderSwan.

Both features can be active simultaneously - for example, this could allow one to control a WonderSwan as an audio synthesizer.

Special thanks to BluRaf for providing support and advice through my first journey into TinyUSB lands.

Tips

  • If you mute the USB audio device, the WonderSwan will consider the headphones as disconnected, re-enabling the internal speaker.
  • The ExtFriend automatically rounds down your selected baud rate to the closest frequency supported by the console; for example, 19200 baud is treated as 9600 baud, 57600 baud is treated as 38400 baud, and 230400 baud is treated as 19200 baud.

Using TransMagic with ExtFriend

Windows

You need to set your USB device's serial port to COM1-COM7 for compatibility with TransMagic. See this article for more information.

Linux

# Install Source Han Sans font, alias it to Microsoft Japanese fonts
$ winetricks sourcehansans fakejapanese

# Connect USB ExtFriend device to Wine virtual COM1 port
$ ln -s /dev/ttyACM0 ~/.wine/dosdevices/com1

# Run TransMagic
$ LANG=ja_JP.UTF-8 wine TransMagic.exe

Firmware build instructions

  • Copy pico_sdk_import.cmake from your Pico-SDK installation to the repository's root.
    • For example, cp /usr/share/pico-sdk/external/pico_sdk_import.cmake .
  • Run mkdir build, cd build, cmake .., make.
  • To flash onto an RP2040, picotool load extfriend.uf2.

Hardware build instructions (Raspberry Pi Pico)

ExtFriend plugged into a SwanCrystal using a soldered header.

  • Flash the program to the Pico: for example, picotool load -v -x extfriend.uf2
  • Connect the Raspberry Pi Pico to the WonderSwan's EXT port. The default build of ExtFriend uses seven consecutive Pi Pico pins, as follows:
    • EXT GND - Pico GND (for example pin 3)
    • EXT SER_MOSI - Pico pin 2 (GP1)
    • EXT SER_MISO - Pico pin 1 (GP0)
    • If you want to use digital audio capture:
      • EXT HDPN_BCLK - Pico pin 7 (GP5)
      • EXT HDPN_LRCK - Pico pin 6 (GP4)
      • EXT HDPN_SDAT - Pico pin 5 (GP3)
      • EXT /HDPN_DETECT - Pico pin 4 (GP2)

If you don't have an EXT port plug or cable handy, you can use an HDMI breakout board. An example instruction guide is provided here (in Japanese), for a $2 AliExpress board.

License

GPLv3+.