LotusText - easier text input on the NES

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
LotusText - easier text input on the NES
by on (#165995)
Inspired by the "lotus keyboard" that Valve showed off years ago, I put together a simple demo ROM showing off an alternative text input technique for the NES. The idea is that 12 leaves are displayed, different d-pad combinations select each leaf, and then B & A are used to select symbols on a selected leaf. Though I haven't spent a ton of time playing with it, I already feel like its a faster and more enjoyable way to input text than just a linear row of symbols.

Attachment:
File comment: Saying "hello" in LotusText.
lotus-hello.gif
lotus-hello.gif [ 15.64 KiB | Viewed 2119 times ]


I want this to be a library that other homebrew developers can integrate without too much work, so that text heavy projects can be easier to use. You can check out the demo ROM, and all the source is on github. Making a library for nesdev is kinda rough; though I was inspired in part by Famitone, it's much harder for code that relies on CHR and nametable data being in a certain format.

Would be interested to hear if anything thinks this is useful, or has any critiques, suggestions for improvement, for neat projects that could make use of it.

Also, I put up a blog on my personal blog talking about it for a more general audience: http://www.dustmop.io/blog/2016/03/10/lotus-text/
Re: LotusText - easier text input on the NES
by on (#165998)
That's really cool. Could you add the animated gif to that github page? The project might attract more attention that way.
Re: LotusText - easier text input on the NES
by on (#165999)
I just tested this out. Could you reorder the characters to put the most frequently used ones toward the center? E.g. vowels should never require double taps.
Re: LotusText - easier text input on the NES
by on (#166000)
Thanks! Adding the gif to github totally makes sense, gonna do that right away.

I struggled for a while about the exact order of characters to use. I want to balance keeping adjacent leaves consecutive alphabetically, with putting common letters towards the middle, just as you said. I think it makes sense having E, M, N, S, T right at the center, and the only vowel that's tricky is A. If there's a layout that better represents both of these goals, I'm interested to see it.

From a developer standpoint, changing the order is as simple modifying the *_INDEX constants in lotus_text/highlighting.asm, and updating the lotus_text/image.png file. The code assumes characters are in order and uses the formula [character = index * 3 / 8 + selected]. I've thought about adding an arbitrary mapping, but that's a future feature.
Re: LotusText - easier text input on the NES
by on (#166001)
...tryst by my crypt...

Depends on what you call "vowel" and "never".

...pwnt...

R, S, T, L, N, and E, Vanna? Our system is too cheap for HDMA.
Re: LotusText - easier text input on the NES
by on (#166004)
I like the idea but I feel like this is much more complex than the lotus keyboard. Valve's design was clear because the letters had colors that matched the buttons on the controller. At first glance, it reminded me of older phone keyboards where you had to press a button multiple times to key a letter.

The layout below makes more sense to me because you would use up/down/left/right to select the pair and B/A to select the letters. Select would switch between the two grids of letters. Obviously the layout of letters could be improved but I did this as an example.
Attachment:
keyboard.png
keyboard.png [ 7.36 KiB | Viewed 2069 times ]

Either way, it's great that you are trying to improve text input! Most of the keyboards in commercial NES games were terrible so this is a welcome improvement. :)
Re: LotusText - easier text input on the NES
by on (#166007)
Interesting. I was holding off on using select in case I wanted to add things like punctuation or special characters. Also, select is pretty far away from any other buttons; I would anticipate that needing to press it often (~every 2 characters) would be very uncomfortable.

I totally understand the critique of being less elegant than Value's 4-button version, which is why characters are only typed upon release of A/B, and why the detection of releasing them is smoothed slightly. You don't have to let go of A+B at exactly the same time, more like within 8 frames of each other. It's not quite so bad once you spend a bit of time with it, certainly better than pre-T9 input. I imagine (and I could be totally wrong here), that a game that uses this kind of input extensively would cause users to grow pretty significant muscle memory for the UX.
Re: LotusText - easier text input on the NES
by on (#166009)
You might find the fitaly keyboard interesting. (fitaly.com, wikipedia)
Re: LotusText - easier text input on the NES
by on (#166011)
Previous topics mentioning Valve's flower:
Re: LotusText - easier text input on the NES
by on (#166015)
Adding support for Famicom keyboard would be another way; if Famicom keyboard is not connected then it can display the on-screen text entry