bgri/m100LE

Maybe show Right Letter, Wrong Place differently

Opened this issue · 17 comments

@bgri wrote:

I was thinking of 'reverse video' initially [for Right Letter, Right Place], but dismissed it as I couldn't be consistent with the ones that were 'right letter, wrong place'.

Rapidly display and erasing is a good option. Maybe flipping between 'normal' and 'inverse' for those, or I'm also thinking maybe switching between proper letter and 'grey' box:
image

I guess it all depends on what they look like on the hardware. Emulators are one thing...

Originally posted by @bgri in #29 (comment)

Turns out, on actual hardware, flipping between normal and inverse of the same letter actually shows a filled square at half-brightness. That makes sense since each pixel is on for only half of the time.

Flipping between the letter in reverse video and a normal space works pretty well. Almost all the pixels are dim, the ones defining the letter are clear. (At least on my Tandy 200.)

I have no idea how it looks on an emulator, though.

By the way, it was a good idea with the checkerboard "grey box", but it turned out illegible.

I tried to figure out why. I believe the reason is that only half of the pixels in the letter are shown at full brightness (where the checkerboard has an on-pixel) and half are shown dim (where the checkerboard is off). To add to the confusion, the background (where the letter has off-pixels) also shows up as dim pixels whenever the checkerboard has an on-pixel.

Character number 88     Character number 255    Superposition
@   @                   @ @ @                   @ . @
@   @                    @ @ @                  .. ...
 @ @                    @ @ @                   .....
  @                      @ @ @                   ... .
 @ @                    @ @ @                   .....
@   @                    @ @ @                  .. ...
@   @                   @ @ @                   @ . @
                         @ @ @                   . . .

Blinking may be tricky and counter to the goal of shrinking the program.

What if Right Letter, Wrong Place was shown as lowercase? That's probably not enough, but it could be a start.

What if the lines above and below the alphabet had some sort of marker pointing to the character indicating its special status? Or if the letters were moved up a line (or down for letters N-Z)?

There is as lot of space where the CONGRATULATIONS! message goes, so it should be possible to come up with a good solution.

bgri commented

I was looking at using symbols at one point, but modified the design and didn't get back to them.
image

We can probably move the messaging area (CONGRATULATIONS!) up a line or two, then go with symbols above and below the letter block? I'm guessing that we might have to keep the bottom line clear as 'weird things' happen when some characters are written there... or at least that's what happened early on in this project. Who knows, maybe it's not an issue with VT52 addressing.

image

As for the symbols, NEC doesn't have the graphic set that Tandy units do. Anything after CHR$(130) is user defined (NEC PC-8201a Basic Reference APX A4-3). Haven't looked to see if the KY-85 or M10 have this or not.

So we could include symbol definitions for these, or be creative with existing characters (lower case V, and the Caret character).

Moving the board up sounds good to me. We may have to change which character number is used for UP ARROW and DOWN ARROW. You can see what characters are available for the different machines by looking at the kyotronic-85.yaff file in Rob Hageman's Hoard of Bitfonts.

Printing to the Function Key area shouldn't be a problem as I've now disabled it on the NEC 8021A using SCREEN 0,0. Just be sure to suffix any print with a semicolon (;) or else it will scroll the whole page up.

Let's circle back to this after revision 0.m is released.

Mainly a note for future-self: The undocumented EscS escape sequence does not appear to work in the Virtual T emulator for the Tandy 102. I had been thinking of using it for taking a snapshot of the alphabet line in two different states and then restoring it rapidly to cause some letters to flash. Do those codes only work on the Tandy 200?

Sample program that works on Tandy 200
10 BS$=CHR$(8)
20 ES$=CHR$(27)
30 RV$=ES$+"p"
40 NV$=ES$+"q"
50 CR$=CHR$(13)
60 FOR T=ASC("A") TO ASC("Z") STEP 2
70 PRINTRV$;CHR$(T);NV$;CHR$(T+1);
80 NEXT T
85 PRINT ES$;"S";
86 PRINT CR$;
90 FOR T=ASC("A") TO ASC("Z") STEP 2
100 PRINT CHR$(T);RV$;CHR$(T+1);NV$;
110 NEXT T
130 PRINT ES$;"s";
140 PRINT
200 REM
210 CLS
215 FOR T=1 TO 50
220 PRINTES$;"R";
230 PRINTES$;"r";
240 NEXT T
250 PRINT
bgri commented

Ok, that seems to work... moving the board to make space, that is.
image

If I recall, there's a way to create custom character/bitmaps (at least on the NEC). Maybe we can create our own?

bgri commented

Made the alphabet move changes. Also repositioned the Congrats! line. Still want to make that a bit more glitzy. Next to figure out what to use above/below characters.

Only to the .DO and +comments.DO.

I tried saving as tokenized .BA on my NEC, then copying that to the Backpack and loading it with the VirtualT emulator but it couldn't understand the .BA file. Have to refine the workflow a bit but bouncing between work and this right now so not able to focus for too long :)

Still want to test writing the file directly to Serial and seeing what happens there.

Looking good. Did you want this change to be included in the 0.m release?

Here's an idea. It may not be a good one, but let's roll it around and see.

How about, instead of having arrows pointing — which is tricky to do with the different fonts — the letters themselves could move.

There could be a dedicated line on the screen for Right Letter, Wrong Place (and perhaps another for Right Letter, Right Place).

*: 🅼🅾
?: it

 BCD FGH JK  
N PQ S UVWXYZ

Or, the letters could "step" out from the alphabet.

        i    
 BCD FGH JK 🅼
N🅾PQ S UVWXYZ
      t      

Or they could step out, leaving behind the markers we already have set:

        i   🅼
 BCD FGH?JK *
N*PQ S?UVWXYZ
 🅾    t      

bgri commented

Oooh, I like that last idea. I'll give it a shot and see how it looks. And yeah, I'm good with this also being in 0.m if you are :)

bgri commented

image

I think it works quite well! Thanks for that suggestion.

Your implementation works great! I often don't notice when a new letter has matched since it is covered up with a question mark, but I just played three games where having the letter step out helped me to see it.

If you're up for doing more on Right Letter, Wrong Place, (RLWP) here are some thoughts:

  • Now that plain text means RL-Wrong-P and reverse video means RL-Right-P in the alphabet, it makes sense to me to do the same in the hints.
  • The update speed after a guess is noticeably slower. I think it could be made faster by getting rid of the GOSUB 4200 to position the cursor after every letter.
    • Only reposition the cursor after printing an * or a ?.
    • Instead of specifying an absolute position, use a relative step. For example
      PRINT  "*";LT$;UP$;RV$;CHR$(T+64);NV$;
      (Of course, you'd use DN$ for the lower half of the alphabet).
  • Moving the alphabet up made it bump into the "SORRY!!" message if the player loses.
bgri commented

I often don't notice when a new letter has matched since it is covered up with a question mark, but I just played three games where having the letter step out helped me to see it.

Agreed. It does help quickly identify the clues.

Points 1 & 3, for sure. I'll look at them.

Point 2

The update speed after a guess is noticeably slower.

Actually, I kinda liked the speed it worked on the hardware. Looked like a visual effect as they were revealed, like in the TV show Jeopardy when Vanna turns the letters :)

But I'll look at speeding it up anyway to see if the effect is still noticeable.

If you like the speed, then by all means keep it. What would Jeopardy be without Vanna White? And, you're right, it does add some "sparkle" to playing.

Next step: maybe the hint box should match the alphabet box. Earlier, I had suggested reverse video letters should always mean "right place", so instead of,

PRIUS    ....?
STEAM    S....
SNOOD    S.O?.
SCOWL    SCO..

the hint box would show:

PRIUS    ....S
STEAM    🆂....
SNOOD    🆂.🅾O.
SCOWL    🆂🅲🅾..

However, yesterday I had a friend who plays Wordle religiously try playing M100LE. They suggested that since the inverse letters are hard to read on the M100 they actually look deemphasized and perhaps it'd be better to use reverse video to replace the question marks (right letter, wrong place). That would look like,

PRIUS    ....🆂
STEAM    S....
SNOOD    S.O🅾.
SCOWL    SCO..

I admit that may be better. I have gotten used to the M100 font and had forgotten that the letters are incomplete on the left side, making many of them a puzzle of negative space. (For example, U could easily be J and E could be seen as a sideways π).

My friend also suggested that there is no need to use reverse video on the alphabet board. Having the letters next to the * or ? is sufficient and normal video makes it easier to see at a glance what letters are available. That would look something like,

        I   M
.BCD.FGH?JK.*
N*PQ.S?UVWXYZ
 O    T      

That seems reasonable to me and would actually be simpler code. What do you think?