sy2002 / MiSTer2MEGA65

Framework to simplify porting MiSTer (and other) cores to the MEGA65
GNU General Public License v3.0
34 stars 8 forks source link

Sub-menu right before the end of main menu does not work #7

Closed sy2002 closed 1 year ago

sy2002 commented 1 year ago

Reported from @sho3string via Skype:

When you position a sub-menu at the very end of the menu, then it does not work. Explained in this video:

https://github.com/sy2002/MiSTer2MEGA65/assets/6825267/528da361-023a-4339-a76b-3ce70c35a85c

sy2002 commented 1 year ago

@sho3string I am not able to reproduce the issue. What I did: I used the attached version of config.vhd . Here is a small excerpt of OPTM_ITEMS:

   "\n"                     &
   " Back to main menu\n"   &

   "\n"                     &
   " Enter submenu\n"       &
   "\n"                     & -- this line will be the "headline" inside the submenu
   " Drive X:%s\n"          &
   " Drive Y:%s\n"          &
   " Drive Z:%s\n"          &
   "\n"                     &
   " Another Headline\n"    &
   "\n"                     &
   " HDMI: CRT emulation\n" &
   " HDMI: Zoom-in\n"       &
   " Close Submenu\n"       &
   " Close Menu\n";

And here the appropriate counterpart of OPTM_GROUPS:

                                             OPTM_G_LINE,                              -- open
                                             OPTM_G_CLOSE + OPTM_G_SUBMENU,            -- Close submenu / back to main menu
                                                                                       -- HDMI submenu block: END

                                             OPTM_G_LINE,                              -- Line
                                             OPTM_G_TEXT + OPTM_G_SUBMENU,
                                             OPTM_G_LINE,                              -- Line
                                             OPTM_G_Drive_X + OPTM_G_MOUNT_DRV,        -- Drive X
                                             OPTM_G_Drive_Y + OPTM_G_MOUNT_DRV,        -- Drive Y
                                             OPTM_G_Drive_Z + OPTM_G_MOUNT_DRV,        -- Drive Z
                                             OPTM_G_LINE,                              -- Line
                                             OPTM_G_TEXT,                              -- Headline "Another Headline"
                                             OPTM_G_LINE,                              -- Line
                                             OPTM_G_CRT     + OPTM_G_SINGLESEL,        -- On/Off toggle ("Single Select")
                                             OPTM_G_Zoom    + OPTM_G_SINGLESEL,        -- On/Off toggle ("Single Select")
                                             OPTM_G_CLOSE   + OPTM_G_SUBMENU,  
                                             OPTM_G_CLOSE                              -- Close Menu
                                           );

It works like a charme, see also this screenshot:

no-reproduction

Here is the zipped config.vhd that I am using.

Can you try to reproduce the problem again on your side an then send me your config.vhd that provokes the error?

sho3string commented 1 year ago

I think it's safe to close this off. I can no longer reproduce this, I even tried removing all submenu's except for one right at the end.

PXL_20230523_025042570

PXL_20230523_025047320

constant OPTM_GROUPS       : OPTM_GTYPE := ( OPTM_G_TEXT + OPTM_G_HEADLINE,                             -- Headline "Demo Headline A"
 OPTM_G_LINE,                                               -- Line
 OPTM_G_TEXT + OPTM_G_HEADLINE,                             -- Pause Options
 OPTM_G_LINE,                                               -- Line
 OPTM_G_OSDO + OPTM_G_SINGLESEL + OPTM_G_START + OPTM_G_STDSEL,   -- Pause when OSD is open
 OPTM_G_DIMV + OPTM_G_SINGLESEL,                            -- Dim video after 10s
 OPTM_G_LINE,                                               -- Line

 OPTM_G_TEXT +  OPTM_G_HEADLINE,                            -- Misc Settings
 OPTM_G_LINE,                                               -- Line
 OPTM_G_CRT   + OPTM_G_SINGLESEL + OPTM_G_STDSEL,           -- On/Off toggle ("Single Select")
 OPTM_G_Audio + OPTM_G_SINGLESEL + OPTM_G_STDSEL,           -- On/Off toggle ("Single Select")
 OPTM_G_LINE,                                               -- Line

 OPTM_G_SUBMENU,                           -- Enter the menu
 OPTM_G_TEXT + OPTM_G_HEADLINE,            -- Enter the menu
 OPTM_G_LINE,                              -- Line
 OPTM_G_DSWB0  + OPTM_G_SINGLESEL,         -- say hello
 OPTM_G_DSWB1  + OPTM_G_SINGLESEL,         -- say hello
 OPTM_G_LINE,                              -- Line
 OPTM_G_CLOSE + OPTM_G_SUBMENU,            -- Close submenu / back to main menu
 OPTM_G_LINE,                              -- Line

 OPTM_G_CLOSE                                               -- Close Menu
 );
constant OPTM_DX           : natural := 23;
constant OPTM_DY           : natural := 26;

constant OPTM_ITEMS        : string :=
   " Galaga\n"              &
   "\n"                     &
   " Pause Options\n"       &
   "\n"                     &
   " Pause when OSD open\n" &
   " Dim Video after 10s\n" &

   "\n"                     & 
   " Misc Settings\n"       &
   "\n"                     &
   " HDMI: CRT emulation\n" &
   " Audio improvements\n"  &
   "\n"                     &

   " Enter the menu\n"       &
   " Entered the menu\n"     &    
   "\n"                      &
   " say hello\n"            &
   " say goodbyeA\n"         &
   "\n"                      &
   " Back to main menu\n"    &
   "\n"                      & 

   " Close Menu\n";

This is what I had in my opt_items at the time when I saw the problem. It's no different to what I have now in my submenus for Galaga.

OPTM_G_LINE,                              -- Line
 OPTM_G_SUBMENU,                           -- Dipswitch B
 OPTM_G_TEXT + OPTM_G_HEADLINE,            -- Dipswitch B Title
 OPTM_G_LINE,                              -- Line
 OPTM_G_DSWB0  + OPTM_G_SINGLESEL,         -- 2 Credits Game
 OPTM_G_DSWB1  + OPTM_G_SINGLESEL,         -- Difficulty A \
 OPTM_G_DSWB2  + OPTM_G_SINGLESEL,         -- Difficulty B / 
 OPTM_G_DSWB3  + OPTM_G_SINGLESEL + OPTM_G_STDSEL,         -- Demo Sounds
 OPTM_G_LINE,                              -- Line
 OPTM_G_CLOSE + OPTM_G_SUBMENU,            -- Close submenu / back to main menu
 OPTM_G_LINE,                              -- Line
 OPTM_G_CLOSE                                               -- Close Menu
sy2002 commented 1 year ago

@sho3string Great news - thank you for your support.