My Morse Code Keyer Homebrew Software for the Nintendo 3DS.

Please look forward to it! きれいですね?

How AI thinks my software would appear in a 1984 Japanese video game magazine!

NOTE: My homebrew software is entirely unofficial and not endorsed by any company, anyone or anything at all whatsoever. This is purely homebrew software made for the love of my personal video game and anime nostalgia, amateur radio and CW.

After working on my Casio VX-4 calulator for a while, I moved away from the world of Bulletin Board Services and got myself a bit more up to date… with a (now out of production) Nintendo 3DS console. Sure what else did you expect?

I noticed that the Nintendo 3DS is quite a capable little console, particularly with it’s glasses-free stereoscopic 3D display which, in my opinion, is still excellent and a fun novelty in 2026.

One thing the Nintendo 3DS doesn’t have, I thought to myself like any sane person would, is the ability to be used as a Morse Code (CW) key.

Of course you thought that too right?

I made a 10 second 100% AI-generated 1980’s style Japanese TV advert teaser for my software. If you’re going to do something, go big or go home!

Calling CQ!

It got me to thinking if there was a way to harness the capabilities of the console and to develop my own homebrew software for it that would be up to the task. Well, I say develop, I’m not a developer at all, far from it. I have a reasonable grasp of BASIC and a smattering of ‘this and that’ but if I was to get the job done I was going to have to vibe code it. Particularly when it comes to a niche console like the 3DS.

It would also be a good test, I thought, of how far someone might actually be able to develop a fully-rounded piece of software using AI and what the results might be.

Spoiler alert, the software is almost finished (but is far enough along that I am happy to write up about my journey with it to date). I am still ironing out problems with connectivity to the ICOM IC-705 access point due to the insufferable way that the Nintendo 3DS determines what constitutes a successful Internet connection. Once I have that sussed (and I am almost there) the rest should just slot in to place as all you are doing is connecting to an AP, nothing fancy. Both the IC-705 and 3DS are well equipped for this but again, it’s the way the 3DS likes to connect that is the problem.

The key factor here (excuse pun) is getting it to work with minimal latency. As an automatic keyer or code trainer for contesting and learning, it should be absolutely fine. The problems come when you want to go F-BKIN and send code in real time.

Currently it comes down to one of two immediate options. Find a way to ensure Luma3DS forces the 3DS to connect to the AP. It sort of does but is very hit and miss. It isn’t stable enough for me to then look to send CW data over to the IC-705 yet. The second option is to place a small AP in the middle and have the two devices talk to each other this way. Though that adds an additional hop, and with additional hops come additional latency.

So what to do?

There are other possibilities but may involve having to build circuits or try other protocols. I’ve also considered trying to use the Azahar emulator for testing my network builds (still might do this but I need to know it works on real hardware too).

Thankfully the IC-705 is fairly open when it comes to connectivity. Heck, ICOM actively encourage community spirit by releasing the STL’s of the IC-705 so customers can build their own 3D prints of accessories for the radio if they want to design something for it. I love that and wish more companies would embrace this.

So close yet, at the moment, not quite there. As a trainer software option I think it would be fantastic fun, so I could still convert my software in to a CW game of sorts.

I’m continuing to work on it and hope though that someone reading this might be able to give me a hand to get it over the line.

A full tour of every feature of my IC-705 Morse Communicator software. Apologies for the Potatovision™.

The Grand (Software) Tour.

To begin creating the software I first created a roadmap in my pocket notebook about the features I would like to see in such software and then what it might look like.

I wanted software that was easy to understand, easy to operate and appealing to look at. As the software was being developed for a games console, a Japanese one at that, and I harbour an absolutely MAHOOSIVE affection for 1980’s Japan and video games, comics, anime, magazines and technology of the era, I felt I had to give the software an anime/gaming aesthetic and try and cram in lots of nods, references and even an Easter Egg. All of which I feel I managed to do with a degree of success (YMMV).

A full tour of my ICOM IC-705 Nintendo 3DS software via an emulator. Apologies the emulator didn’t produce the audio.

For the main radio UI I settled on a design that was a mix of pixel art video game and something loosely resembling the interface of a real ICOM IC-705.

You could easily design an interface that is just a plain text screen and displays a character sent or a dit or a dah. How boring! If I was doing this I was creating the software that I wanted to see and use and had a feel of the things that I have loved all my life from 1980’s Japanese culture.

The title screen (actual 3DS resolution) of IC-705 Morse Communicator by EI3LH for Nintendo 3DS. (AI Generated Art)

Straight away at the title screen I wanted to invoke a sense of nostalgia and blend it in with the modern IC-705. The scene here is modeled on a 1980’s hobby shop in Akihabara.

The original image which contains Easter eggs, so look carefully! Tip: Right click and open the image in a new window so you can see the full scale image. (AI-Generated)

The eagle-eyed amongst you may already have noticed lots of cultural nods, references and a little nod to two fellow jamons on the log book! AI decided it doesn’t know what a Begali Traveller Lite actually looks like alas, but I still left the key in here as a little nod to Begali and their exquisite CW keys. I will aford one some day!

Before you even leave the title screen I have packed in another Easter egg and culture reference. Firstly the Capcom ident music plays as the title screen fades in to view. Hopefully folks might get that one easily enough.

The second item is a hidden and not easy to spot. Those of you of a certain vintage may be familiar with the Konami Code, a well known D-Pad and button sequence used in many Konami video games over the years that would give a multitude of cheats or tips for their games.

Well I decided to make my own implementation of the Konami Code, thus if you press UP, UP, DOWN, DOWN, LEFT, RIGHT, LEFT, RIGHT, B, A and SELECT (not START in this case as that starts the software), you will hear a familiar sound (watch the demo video above to hear it) at which point pressing START takes you in to a hidden Easter Egg screen!

Easter Egg Mode Activated! A scrolling message and a working Vic Viper ship blast you in to space!

One of my favourite video game genres of all-time is the classic Shoot ‘Em Up (or STG as they are known in Japan). I took the actual sprite sheets from Gradius III and made a very small mini demo. The Vic Viper ship fires two different weapons across a scrolling message and starfield. I couldn’t implement enemies as that was overly complex and outside of the scope of what I wanted to do here. It’s a small Easter Egg thank you nod and a little reference to something else I love dearly, the humble 1980’s STG video game.

The main ‘radio UI’ screen I tried to make as clean as possible.

Entering the software properly takes the user straight to the main ‘radio UI’ screen. For this screen I wanted to keep the screen as intuitive and clean as I could. The screen is broken down in to sections. Firstly the continuos wave graphic, which I designed to be reactive to button presses. In addition the TX (transmit) badge is reactive to button presses too.

Along the top I implemented a real-time clock, based on the time settings of your Nintendo 3DS RTC. A dummy frequency, again a cultural nod to my favourite 2 metres CW mode (and 70cm CW too!), the transmit badge and finally a battery indicator that is based on the battery life of your 3DS console and changes in real-time. As I took the screenshots in an emulator it cannot detect a battery so displays as empty, but it does work on a real console (again, check the demo tour video).

Button presses will trigger a DIT or a DAH, both of which are locked at 500 Hz sidetone. It would have been nice to make this configurable to a users liking but it was just far too complex (for me) to get working so I canned it. Maybe another day.

Entering dits and dahs is hard limited to 90 characters across 2 lines of ‘CW activity’. I felt this should be enough for ragchew exchanges and fit in nice and tidy across the interface. If you don’t want to send such a transmission in real-time, you can press the Y button to send it all automatically. Once completed press the X button to clear the text and start afresh.

IC-705 Morse Communicator Options Screen (with Easter eggs!)

So many choices!

To round out the software I implemented a range of options. Look closely at the demo tour videos too so you can spot all of the Easter Eggs I buried in the menus!

From this menu you can set your WPM (Words Per Minute) rate. The default is 20 but you can go as low as 5 and as high as 40 (hard limit). Getting this to work was a NIGHTMARE as I had to constantly tweak timings and spacings to ensure the software was producing both correctly. In addition, this could become problemantic if, when I get the AP connection issue resolved, there is latency. For now though, it works and I think I got it fairly accurate (if I haven’t please be sure to let me know!).

I also added in the ability to choose a straight key or Iambic key. This is really a bit of a misnomer option as I haven’t fully implemented a true Iambic mode yet, it’s sort of a bit of both-ish. I’m working on it though and will have it finished in a future build so for now the option is staying!

Finally there are options to configure the 3DS buttons to your liking. If you want to change them back just configure again to your liking.

IC-705 Morse Communicator 3DS Network Configuration Screen.

The finaly component is the Network Settings screen. From here you can set up the configuration details to match the AP settings on your IC-705. By default, aside from the password, these are set to the ICOM default settings and you probably shouldn’t change them.

I added in a final component to connect to the radio with a STATUS report below it. It uses a workflow of OFFLINE and ONLINE in red and green respectively, but with updates in between so you know that a CIV packet has been sent to the radio and if it was successful, or, if it has timed out (which is where I am at presently).

Once it is displaying as ONLINE you are good to go (in theory). If only it were so simple and the 3DS wasn’t such a stickler for connectivity.

Hopefully I won’t get a takedown notice. I only made this for fun and for the sheer joy that CW and Japanese culture gives me.

A final touch I wanted to add was to find a way to make the software exit gracefully. You wouldn’t have thought designing a graceful exit would have involved more than fleeting consideration. In the case of my software project it was a smidgen more involved.

I assigned the graceful exit to the START key which immediately closes the game. I will likely change this in a future build to bring up an Are You Sure? prompt, but for now it initiates a small disclaimer and thank you text message with a simple scrolling starfield.

The disclaimer text fades to black and a farewell and thanks for playing message is displayed. I hope Kimagure Orange Road fans enjoy the AI artwork as much as I do!

Kimagure Orange Road fans should be in their element here… 72!

A music track is played in the background, another Easter egg/cultural reference nod! I very much doubt anybody will know what the song is so I will reveal it here.

The song is called Misty Heart by Chicken Shack, from the one-off 1986 OVA Urban Square. One of Akemi ‘Patlabor’ Takada’s first character designs and, in my opinion, one of the greatest anime ever made (alongside Hawaiian Breeze and Patlabor 2, but I digress).

Larger original image I designed (using AI). One for Kimagure Orange Road fans, I also tried to model the beach with a vibe of the Last Wave sequence from SEGA’s Out Run arcade game.

Once the music track has completed the message POWER OFF TO EXIT is displayed. I chose this method to exit as originally I only gave consideration to a full graceful exit back to the Homebrew Launcher which was a bit unstable at random intervals. Better choice, for me, was to just leave the software awaiting a hard power off which works well in my very much humble opinion.

Goodbyeeee!

Hopefully I don’t have to scrap the project here after days upon days of work. Alongside the Casio BBS terminal, this is probably the toughest project I have challenged myself with to date.

As per the BBS software, I am not a developer, a programmer or anything of the sort. I come from a totally different IT background. I just wanted to harness the power of AI to help me make the software that I would personally like to see and use.

I hope that, although still unfinished, this software gives you a glimpse in to my mindset for building it and what I wanted to achieve. It’s not quite there yet (it will be!) but I hope you have enjoyed the small showcase of what I have been working hard to build and that, once it is published open source to my Github, you might be inspired to take a look and try the software for yourself some day!

Shoot the Core!

72.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.