Menu

#422 Bug/Fix: `x64` removes `KernalName from the configuration (real-world bug)

v3.x
open
nobody
None
bugfix
2026-03-09
2026-03-06
S M
No

When KernalName includes the full path of the file, x64 removes it from the configuration (!), even if it's valid. This is mighty annoying, as it breaks the configuratin on any invocation. The issue is 100% reproducible.

Patch attached.

1 Attachments

Discussion

  • gpz

    gpz - 2026-03-06

    Please elaborate, how to reproduce this exactly?

     
    • S M

      S M - 2026-03-06

      Hi!

      Remove the Kernal ROM file from the standard path, and it in an arbitrary path, then add this entry to the configuration (replace /path/to with the actual path):

      [C64]
      KernalName="/path/to/c64/kernal-901227-03.bin"
      

      And run x64. It will run successfully, but if you exit and observe the configuration file, you'll find that the KernalName entry has been removed (therefore, a subsequent run will fail).

       

      Last edit: S M 2026-03-06
      • gpz

        gpz - 2026-03-06

        Well, only options that are different to the default are saved into the config file - and an install that removes files from the installation directory is simply broken :)

        I smell an xy problem here, what are you actually trying to achieve?

         
        • S M

          S M - 2026-03-06

          The Ubuntu VICE package doesn't include the Kernal ROM, I presume because it's copyrighted (and I presume that most of packages don't include it for this reason)

          • Install the Ubuntu package (or whatever package doesn't include the Kernal ROM).
          • Place the Kernal ROM file somewhere
          • Follow the workflow above
           
  • gpz

    gpz - 2026-03-06

    The Debian packages are simply broken, indeed

    You'll have to copy the ROMs to the install location, or create a matching directory tree elsewhere and point VICE to it using -directory

     
    • gpz

      gpz - 2026-03-06
       
  • gpz

    gpz - 2026-03-06

    That said, what you describe might still be a bug - please start x64sc with -debug, configure, save, start again with -debug - and post the resulting log files

    (Your fix cant be applied as is, it is not portable)

     
    • S M

      S M - 2026-03-06

      Ok, thanks! Will run over the weekend :)

       
      • gpz

        gpz - 2026-03-09

        so did you? :)

         
        • S M

          S M - 2026-03-09

          Hi! Thanks for checking. Just came back from a trip - you'll have everything this evening :)

           
        • S M

          S M - 2026-03-09

          Hi!

          So, I've reproduced the bug and produced the log. First, a description of the use case:

          • install vice from standard Ubuntu packages
          • download the roms, and store them in an arbitrary path
          • configure the paths to the roms in the config file (ChargenName/BasicName/DosName1541ii/KernalName)
          • run x64, and ensure that the configuration is saved (either because of save on exit, or because manually saved)
          • the KernalName is now gone from the configuration file

          KernalName is configurable from the GUI, so it implies it's legitimate to store the rom in an arbitrary location - if the program intends to allow setting only the file basename, then it shouldn't allow setting the full path.

          Log attached, and config file before and after.

          Thanks for looking! I've worked around the issue using a script, so it's not a blocking one, but it's certainly been puzzling 😅

           
  • gpz

    gpz - 2026-03-06

    Oh, if you can compile VICE - before you do this, uncomment #define DEBUG_C64ROM at the top of c64rom.c, that will show more interesting info (all this stuff is a bit messy legacy code...)

     

Log in to post a comment.

MongoDB Logo MongoDB