JPeMu (legacy)
Background
The JPeMu project (the so-called “JPM Emulator”) was developed in order to add both a newer and a non-Barcrest technology to the FME fold. Machines like Indiana Jones, Casino Crazy and many others were considered “classic” machines by that time, and I really felt that I wanted to see them emulated the same way as the Barcrest machines.
I had never attempted to emulate a Fruit Machine technology before, but I did already have the framework of a rendering engine (sort of!) in the form of the MERC layout creator – although at the time all of the components were written in Borland Delphi, and I knew that this would have to be created using C++Builder if I didn’t want to re-write the CPU emulation core from scratch!
With some gentle nudges from Chris W along the way, the first version was born, and indeed did the job I had set out to do. Over the next many months – years even – the emulator was updated to correct emulation issues, and add new functionality such as smooth-scrolling reels, a user-friendly game manager, horizontal belt reels and so on. This was often arduous work – a rewarding challenge, but there was always something that “cropped up” (often in the shape of new ideas or a change in approach) which made it difficult to complete the current release (shown below):
I ended up producing many standalone development harnesses for testing the components that were to go into JPeMu, a couple of which are shown below. The first is one of the (several) reel component testbed applications that I wrote in order to test the rendering of reels with overlays, both vertical and horizontal. There are a couple of bugs in the reel rendering code where the resizing doesn’t happen as smoothly as I would have liked, but it’s not a show-stopper so I never got around to fixing these issues!
The next screenshot is of the disc reel component testbed (and in fact the properties editor for the disc reel that should have made it into JPeMu). This component was about 99% complete, and at one point was even integrated into JPeMu, but I lost the source code to that build during a severe hard drive crash and just didn’t have the motivation to go back and rework it all again as it had taken quite some time. Sadly this also meant that some fixes that had been made didn’t make it in either as I’d pretty much forgotten even what they were, but it taught me the value of backing up!!
Some features were inspired by functionality in MFME, but others were in fact the inspiration for features in MFME. Of course, there was some competitive element about me that wanted to do things in a “bigger and better” way than MFME, but I also wanted to try to produce an emulator that had more of a “commercial” feel about it – that felt more polished. I’m not sure I entirely achieved that, but it was reassuring to hear feedback from users who said they felt that it was the better of the two products (although that was before MFME supported many more technologies, not least of which MPU5 and BFM Scorpion IV).
JPeMu v3
Ultimately, there were both political and technical reasons why I felt that JPeMu had “run its course”, and was no longer worth my while updating. It was some years later before the bug bit once more and I felt I ought to try to modernize the emulator and try to start again with a clean-sheet approach (of sorts). JPeMu v3 was that approach, and was to be a UI revolution. I began using a new open-source UI toolkit with the aim of making a cross-platform (i.e. Windows/Mac/Linux) emulator that would be released open-source and support many different technologies – I suppose the “modern” MFME if you will. The screenshot below shows the about box, and begins to illustrate the new UI.
A more fully-featured screenshot is shown below. It’s worth mentioning though that although this version of JPeMu contained pretty much a working engine for emulating IMPACT (and indeed MPU4), it lacked all of the visual goodness necessary to render layouts, so it’s pretty unusable as it stands! Still, one for FME history I guess:
Where does it go from here? Well that’s a tale for another time!