Apr 5, 2021, 07:02 AM | |
Homebrew remake of BatteryCheck for game consoles
For the last three years I have been working on a remake of the spin-off game BatteryCheck. It uses the same game engine as Jazz2 and it's game files are 99% identical! Without the descriptions off the file formats on this site my project would not have been possible! So a big thank you to everyone involved documenting it.
![]() I have been trying to post about it here...but for some reason I was not allowed to or something. Since it has been a few years I thought...let's try again! ![]() I have working prototypes on the following game systems: - GameCube - Wii - 3DS There are preview versions available to download on https://gbatemp.net under the username archerite. It's far from finished and because of various reasons I sometimes don't work on it for months...but now I want to pick it up again! So I thought let's try to post here again, but before I go into more details I want to make sure my thread is "approved" or whatever the reason was it did not show up before. Thanks. ![]() |
Apr 6, 2021, 03:00 AM | |
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 gbatemp.net (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. ![]() 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 ![]() |
Apr 6, 2021, 06:17 AM | |
This sounds pretty cool! I don't know if a lot of people around here are going to have those consoles to try this on, so I rounded up some screenshots from your project, which do in fact look like Battery Check:
a b c d e And also your fairly recent progress checklist: here You mentioned finding our JJ2 file format documentation and applying it to Battery Check, which is indeed quite similar. I wanted to be sure you had also seen Jerrythabest's work documenting all the different events in Battery Check and what their respective parameters do. Love & Thunder would be another good person for you to talk to in this regard, having been studying how Battery Check and its various objects work in a lot of detail these past few months. |
Apr 6, 2021, 06:42 AM | |
Thanks for your reply and doing some research on GBATemp on what I have done!
![]() The pictures are a resonable representation of my progress. Most of them are from my blog post I see, since they are from the PlatStation 2 version actually. Just want to make clear that picture "d" is actually showing a bug on the 3DS version. ![]() The JJ2 file format documentation was essential for my project! Couldn't have done this without it. Thanks for the extra links, I completely forgot to mention that post from Jerrythabest and a number of other posts I got some missing info from. That post was essential in it's own right in decoding the events and parameters. I made note's in my sourcecode were possible to give credit to the original source. I think you might be mentioned in there once or twice ![]() If it helps, I can supply the details on the samples in the J2A file to complete the documentation. I have figured out the sample rate and how to extract them from data4. It was based on a few JJ2 projects to dump sound effects and I was able to apply that in my project. I have access to all of BatteryCheck's sound effects! Just not sure how they are mapped to events or something. So I had just listened to them and what I recognized I now use. Especially collecting batteries, extra life, jumping falling, walking etc. The music play's to on the 3DS. But I need to port libmikmod to the GameCube and Wii before I can enable the music there to. It loads from the available .xm files. ![]() |
Jun 2, 2021, 05:20 AM | |
I have been working on improving my game engine a lot in the past few weeks. I have also released a few alpha preview versions on most platforms I have it running on, and even added two new ones! The new list of platforms my version can run on is:
- Linux (not released) - Raspberry Pi (also not released) - GameCube - Wii - Wii U - 3DS - PlayStation 2 For each of these platforms I have threads in their respective section on the GBATemp forums. Seeing how much this thread is viewed here I thought it would be good to give a little status update. While it runs on many platforms, the actual gameplay is still not complete. Collisions work but are glitchy. Batteries can be collected but the super batteries sometimes don't. Floating platforms and belts can be stand on and doors are solid. Most other objects are purely decoration at the moment ![]() To make things work more like the original I might be asking more specific questions on this forum in the future. My plans are to have the same game engine...one day...also run Jazz 2 ![]() ![]() Last edited by archer; Jun 2, 2021 at 07:10 AM. Reason: Updated list of platforms with links to GBATemp |
Jun 2, 2021, 06:29 AM | |
Sounds very cool!
![]() As a fellow Battery Check enthusiast (I'm working on implementing its features in AngelScript, to make a full port of the game into JJ2), I find it very cool to see this running on various platforms. I'll have to see if I can diig out my Wii and load this up. ![]() |
Jun 2, 2021, 07:04 AM | ||
Quote:
![]() I have been reading through your AngelScript sources for clues on how the events and objects are supposed to work. The only one that I have working is the recharge gate, hahaha. Have fun with the current glithes in the latest version on the Wii, especially near Freddy something weird is happening. ![]() Hopefully we can talk in the future about some more specific details. ![]() |
Jun 2, 2021, 08:12 PM | ||
Quote:
|
Jun 3, 2021, 08:25 AM | ||
Quote:
![]() If you want a more up-to-date version of my code to dig through, here's the latest I've got: https://www.mediafire.com/file/qmwgr...06-02.zip/file Still lacking in documentation (that's something I'll tackle a bit later), but I've got a decent bit done since November, when I shared my last public build. ![]() I'll open a proper thread for my project in a couple of weeks when I have more time to do regular work on it and thus can add to the thread on a reasonably regular basis, but until then, if you have any questions for me, I'd be happy to explain any of my awful spaghetti code. ![]() |
![]() |
«
Previous Thread
|
Next Thread
»
Thread Tools | |
|
|
All times are GMT -8. The time now is 11:10 AM.
Jazz2Online © 1999-INFINITY (Site Credits). Jazz Jackrabbit, Jazz Jackrabbit 2, Jazz Jackrabbit Advance and all related trademarks and media are ™ and © Epic Games. Lori Jackrabbit is © Dean Dodrill. J2O development powered by Loops of Fury and Chemical Beats. Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Original site design by Ovi Demetrian. DrJones is the puppet master. Eat your lima beans, Johnny.