Jump to content
IGNORED

Please Test: JCP 02.06.00 Windows & macOS Installers


cubanismo

Recommended Posts

I've built some installers for my updated JCP code. First, what you're here for, the files:

 

Windows XP - Windows 10:

jcp_installer-02.06.00.exe

 

macOS 10.9 - 11.1:

JCPInstaller-02.06.00.pkg

 

Now, the installer features:

 

  • Fully code signed (signed binaries in signed installers)
  • Optionally installs required driver support files, also code signed:
    • libwdi (Modified to patch WinXP support back in) is used to install libusb-win32 drivers on Windows. This is the same backend Zadig uses to install libusb drivers on Windows.
    • libusb dynamic library is installed in /usr/local/lib on macOS
  • macOS: Supports version 10.9 and newer
  • macOS: Universal binaries - Should run natively on x86_64 (Intel) and ARM (Apple Silicon) Macs
  • macOS: Installs jcp in /usr/local/bin so it will be in the default search path in your terminal
  • macOS: Notarized, so you don't have to futz with overriding macOS's draconian "security" settings to run the installer
  • Windows: Supports Windows XP and above
  • Windows: Optionally adds the JCP install directory to the PATH environment variable, so jcp will be in the search path in your terminal. No need to remember the install path when running it, just type "jcp" and windows will find it.

 

Also, for those that haven't been following, here are the new features of JCP 02.06.00 Vs. 02.05.00:

 

  • Serial EEPROM (high score/save game chip) dumping and flashing support, assuming your SkunkBoard has one (Rev. 4 boards, Rev. 5 boards, and anyone who's hacked one on to their board). Back up and restore your high scores and save games to/from your Skunkboard, or debug save game/high score support in your project!
  • 6MB cartridge dumping support
  • Serial EEPROM selection support, for SkunkBoards that have two Serial EEPROMs (Rev. 5 boards)

 

I've tested these out on Windows 10 64-bit, Windows XP 32-bit, and macOS 11.1 (Big Sur) on an Intel Macbook. Please test them on whatever computer you skunk with and report success/failure along with a short description of your configuration (Windows/macOS version, your processor type, USB1/2/3 port used, and whatever else you think might be relevant). I'm especially interested in feedback on Windows Vista, 7, and 8, as well as ARM/Apple Silicon Macs, since I don't have easy access to these configurations for testing.

 

NOTE: I've sporadically seen problems with Windows flagging the installer as a severe threat for exhibiting evasive behavior. For me, this happened when I wasn't signing the binaries. Windows doesn't like the way libwdi goes about dynamically generating a signed driver inf file at install time it seems. Signing the binaries seems to have resolved it for me, but let me know if you still see this. Be assured there's no actual threat here, it's just libwdi being somewhat clever, and Windows being extra cautious.

 

Update: One other note for Windows users: The easiest path to a working setup is to run the installer before plugging in your Skunkboard, then plug the board in after completing the install, then run JCP. You must plug the Skunkboard in (and power on your Jaguar) after installing JCP to complete the driver install process on Windows. If you run JCP prior to that, it'll throw up an error about missing libusb libraries. If you get that, no harm done, just plug the skunk in and then try again. When plugging in the Skunkboard for the first time, you might get a "found new hardware" wizard on older versions of Windows, in which case you can just go with the defaults and Windows will find the pre-installed driver automatically and complete the installation. In my Windows 10 testing, the process was seamless and it just silently added the device and completed the driver installation process on its own.

 

As noted, libwdi had to be modified to restore Windows XP support to the latest version. Since it's LGPL code, I've made my changes available here in case anyone else wants to use them:

 

https://github.com/cubanismo/libwdi

 

However, note I did the absolute minimum amount of work to get libusb-win32 drivers installing using the very basic embedded installer example project. If you're trying to build a WinXP-compatible Zadig out of this, it will fail.

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

  • 7 months later...
  • 8 months later...
On 9/1/2021 at 3:45 PM, cubanismo said:

Did you plug in the Skunkboard before running JCP?

I'm preparing my PC while waiting for my Skunkboard to arrive and get the same error on Windows 11 when running JCP (installer version 2.07.00). Do I take it that the error will go away once I've actually plugged in the Skunkboard? I'm struggling to understand how this would fix a missing DLL!

  • Like 1
Link to comment
Share on other sites

On 1/11/2021 at 6:00 PM, cubanismo said:

You must plug the Skunkboard in (and power on your Jaguar) after installing JCP to complete the driver install process on Windows. If you run JCP prior to that, it'll throw up an error about missing libusb libraries.

Needs more bold. Maybe flashing text, some midi music and a HTML marquee ;) 

  • Haha 2
Link to comment
Share on other sites

Yeah, short answer, it should work once the board is plugged in and Windows has had a minute to respond to the hot-plug. If not, come on back and we'll troubleshoot. I haven't personally tested on Windows 11, but it should behave the same as 10.

 

Long answer: I know it's not intuitive, so I understand the doubt and double-checking. Using various unofficial terms here, but the way Windows driver management works is that files get moved from some driver archive area to the actual runtime paths only when the device is first initialized. When they're not in the runtime paths, applications can't find them. Most applications don't rely on this to find DLLs they rely on to start, so it isn't usually visible to end-users, but the ancient version of libusb (and arguably JCP itself) don't exactly follow modern Windows best practices. On the other hand, we are talking a program that was probably designed for and still works fine on Windows XP, so I like to cut it a little slack and have avoided diving in and gutting + rewriting it.

 

The JCP installer just copies the files to the driver archive area and installs some keys in the registry such that the OS plug-and-play mechanisms can correlate the files with the device when Windows first sees it plugged in. Plugging in then kicks off the "real" install process. Since the libusb DLL is shipped as part of the "driver," it is included in that deferred install process.

 

Arguably, the DLL isn't really part of the driver-proper and could be installed as part of the application instead. However, that's not how the Zadig tool the driver portion of the installer is built on top of works, and (for those familiar with low-level details), I'm not sure the ABI between the libusb0 kernel drivers and the userspace DLL is versioned/stable, so messing with that could lead to other issues in theory.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...