View Single Post
archer archer's Avatar

JCF Member

Joined: Jan 1970

Posts: 9

archer has disabled reputation

Apr 6, 2021, 03:00 AM
archer is offline
Reply With Quote
So let's start with a little history first....but it's really long. sorry.

As a kid I had always loved the BatteryCheck game a lot. I collected the 15 batteries required to get the free CD-ROM....and even played it through the end! Send in the card and hoped to win something....ofcourse I never did

Over the years of playing the game every now and then the idea started to pop up in my head: Wouldn't it be cool if I could create a game like batterycheck myself? And in 2010 I was kind of actively trying to figure out how to get the graphics from the game. But I failed...and moved on.

The Idea kept spinning around though and then....finally in may/june of 2018....I discovered jazz2online and the extensive documentation about the file formats!! A few test in python were succesfull in decoding it and after a few weeks I could scroll around the level in all it's glorious details! It's absolutly MASSIVE by the way, hahaha. :P

It took me a few months to make the python version into a playable demo. Then I wanted to show people at work but it was locked to a desktop system. My ultimate goal would be to port it to the GameCube but 3D graphics scared me away so I tried it first on the Nintendo DS Lite. Not the whole game but just the menu. It worked and looked "ok" but the low resolution bothered me, so I moved on to the 3DS instead.

On the 3DS there was much more space and resolution to show more of the level and I created my first actual playable demo around October 2018. This version relied on pre-converted graphics though and I did not like it. Looking into converting at boot time resulted in many many debugging nights...and it worked...sort of. The graphics were scrambled somehow and I could not fix it. The levels loaded fine though so I could replace my "demo level" with the actual one from the real game! Later I figured out that the 3DS textures are "swizzeled" to make memory access more efficient and at the end of 2018 I fixed the issue.

Because the 3DS version relied way to much on the devkit libraries it was not a portable source code in anyway. So I rewrote it entirely to work on Linux for easy debugging, but still keeping in mind that I want to port it to other consoles. This made me look at the GameCube again but I found the Wii much easier to debug on, so I stuck with that for most of the time.

Over the years I have released "preview versions" of my homebrew version that allowed others to play it and report bugs. These versions can be found on (need to figureout how to share links here)
At first I required the users to install the actual game on their PC and then copy the game files over to their console of choice. It took me around three months to reverse engineer the "setup.exe" and how the required files are stored inside of it. It's a custom format but it does use basic zlib streams for compression and some intermediate headers. With that knowledge I created my own custom "installer" that can take the "setup.exe" from the CD-ROM and extract the game files...directly on the target console. No PC required!

I had found a semi-official download source where users could download the freeware ZIP file containing the installation files. I modified my installer to accept this ZIP as an option to install from. No need to extract the setup first!

Because my main motivation and goal for the project has been learning about the hardware of the game consoles, the actual gameplay has not progressed much. As said in my previous post I have working versions that are kind of playable on the GameCube,Wii and 3DS. But I have also worked on porting it to the following systems:
- Linux (for main development)
- Raspberry Pi (works great, but never released it)
- PlayStation Portable
- PlayStation 2
- Nintendo DSi
- Nintendo DS
- Nintendo GameBoy Advance

Yep, that is a long list of systems to work on and I have been told it might be "too ambitious" a couple of times. But as I said the systems and working arround the limitations is wat intterested me the most. This time though I plan on working out some issues in the gameplay and adding more working features. The battery holders, elevators and other objects still don't actually work. They show up and I have added the "hover" to the elevator, but you can't activate it like it should in the real game.

In some ways you could look at my project the same as those open source implementations of Jazz2. I forgot their names but I think "project carrot" was one of them. But nearly all of them are targeting windows and not game consoles like I have done.

I am actually just writing a game engine that works on multiple platforms and uses BatteryCheck assets to run. Because Jazz2 has 99% identical file formats it should also be possible to modify it to load Jazz2 levels. It would require implementing ALL the events for Jazz2 ofcourse and I have not even implemented more than 1 or 2 of BatteryCheck's events!

I think that is enough history. I am just curious what the Jazz2Online community might think of my project since it is related to the Jazz2 game engine.

Thanks for reading