Jump to content

A 'DevPunk' Thread with no Restraints, no 'Ragrets' and a Means to an End

Clint Thompson

Recommended Posts

**Grab a cigar, a drink, or even some popcorn as I put myself on the line and dive into a continuous unraveling JagDev thread titled DevPunk, one that will journal my experiences over the last few years and my continued on-going efforts in creating games for the Jaguar. I decided to post this here in lieu of an actual Blog that no one will ever see, in hopes to give better exposure and community interaction to the things I am actively working on - all in a single thread.


Plus, will be nice to post some WIP binaries to share with those interested as time goes on.**


An ambitious announcement in 2019...


I announced experimenting with and working on a Cyberpunk-styled game for the Jaguar (MindthreaT) in 2019. Exactly a year later, released an interactive 6MB demo titled: A 64-Bit Interactive Multimedia System Demo which featured some limited playable aspects I had in mind as well as implementing some of the experience gained with both programming and CGI rendering and animations. Another 6-months pass and the first actual game I started on the Jaguar much earlier was tidied up and finished (Simone) then released on a pressed CD for $5.99 with some JagSwag goodies that sold out 300 copies in a few months.


While being a very simple game (the first one I had worked on and to completion), it remains to date the most professional thing I've released independently. That's not saying a lot considering what it is but at the same time, is a personal achievement for a ground-up project that I took on to not only show I was willing but capable. I'm still pleased with how it turned out as it was ultimately a fun package design and an inexpensive release, especially given the extras included to give Jaguar enthusiasts to enjoy.




A lot has happened since then.


There were still a lot of things up in the air, the JagGD was still in development and would release in slow or limited quantity batches (this is no longer an issue as it seems to have been mostly satisfied order-wise with an installed user base of over 1,000 people owning one now!) and a successor to Rb+ has been released (JagStudio), with many additional features and bug fixes. As of this writing, it is currently waiting an updated release to include the JagGD file access back-end that would make such an ambitious game like MindthreaT even possible.


Within all of that though, COVID came and somewhat went, I was forced to switch jobs multiple times as a result of the very real dystopian-like reality we currently are living in today which has been very distracting. I continue to find myself off-and-on with JagDev to some degree here and there as things slowly revert to normal. Finding time, finding motivation and all of the above in-between.


Looking back...


Realizing I made a few project announcements that should have been long but done by now (and possibly should have not been announced), things that were far out of anyone's control (COVID), there's only so much progress you can make without a.) the required software and b.) the required hardware to do what you c.) ultimately want. This is not a complaint or gripe by any means, just the nature of reality. Stuff that is far beyond my capability but is required to progress.


So, I branched off into multiple side projects that would not only keep me occupied while waiting until everything was eventually readily sorted someday to finally realize the dream of a Cyberpunk game that has resided in mind for so long, but to also gain more experience all-around with art and music creations.

Along the way...

Even if you aren't necessarily pushing the hardware in terms of FPS, textures or polygons, there are still other ways to push the boundaries.

Throughout it all, finding the limits of what I can or can't do with the Jaguar hardware was another key aspect in the learning process. Pushing the Jaguar to the breaking point without actually breaking it, using the available development tools and despite the endless modern PC tools used, has been a challenge. Even with all the storage space in the world, we are talking about hardware released in 1993 here that has some very real limitations, not to mention some serious underlying hardware issues. In some instances the Jaguar can be really forgiving and in many others, I'm simply expecting too much from it.

Someone mentioned I shouldn't try and make a PC looking game for console-based hardware but maybe it's comments like that which continue to drive me.


Ongoing process...


There were still a lot of obstacles to overcome in regards to these projects amidst the uncertainty of the world, now with real danger or threat of an active pandemic and state of the economy, not to mention fears in my own personal life. Work continued on however and I proceeded to have newly manufactured PCBs made for 4MB and 6MB cartridges for some of the upcoming projects I had been working on. Several issues with manufacturing surfaced that were finally ironed out and resolved but it was no easy ride.


Even now though, problems exist that didn't before. The EEPROM chips have doubled in price, the packaging company I was going to use for the magnetic boxes for Zilch has all but closed and everything else has skyrocketed as well.


Shown below are some of the various PCBs I had designed (since they didn't exist) and manufactured. Note: white PCBs are a bad idea!

Perhaps Someday I will go into Space PCBs are 2/4MB carts and I Like Big Chips and I Cannot Lie are the 6MB PCBs.



Mock-up of the Zilch magnetic box design with die-cut foam to snuggly hold the cart in place and instructions printed on the inlay of the box continues to be the plan:




So while a lot of progress has been made in regards to just about everything, there unfortunately remains a ton of loose ends to varying degrees with a lot of underlying work remaining to be done. Sometimes I find myself battling if it's even worth it at this point but realize I've already spent so much time in doing it and have reached the point of no return. That is, the line from Falling Down: it's further to go back or give up than it is to finish it or continue on with your destination.


Or at least that's the way I feel about Zilch specifically.


MindthreaT into the Future...


As the next major JagStudio update is released at some point, I've got some house cleaning and prioritizing to do on what exactly it is I hope to achieve. Not for just MindthreaT but for everything I've been working on. Currently working on JagPunk (a MTG:TCG styled 2-player only Cyberpunk-based card game utilizing AI art for playing cards) and Peralis Island (a short and simple graphic text adventure), and gearing up for the next release of JagStudio!



Why MindthreaT?


I think it's fair to say everyone has at some point looked at a game like Black Ice/White Noise and felt just how amazing a game like that would have been for the Jaguar. I myself remember drooling over the previews in the magazines in the 90s, anxiously anticipating the game. It's that type of game I aspire to make. Something that is adult-oriented, edgy, daring, offensive. Something out of the ordinary and raw! Doing something that goes against all odds and barriers of being possible to make on such a platform to begin with is what seems like the most fun to me.


Of course it goes without saying, MindthreaT will never be a fully 3D-rendered texture mapped world where you can freely walk around and do what you like as was originally intended with BIWN. But, I do believe with enough effort, it could hold its own and is a genre that is still severely lacking for the Jaguar. Something like a glorified Rise of the Dragon has always been where I sit with it mentally.


The intent remains: to be an atmospheric, explorative, interesting interactive experience with live dynamic scenes to get lost in while solving puzzles and figuring out your identity along the way. Created using current and upcoming software technologies but ultimately a game that utilizes the insane amount of storage available that the JagGD can offer, well into the gigabytes.



A means to an end...

Dead console or not be damned, it's all for fun in the end.

Once these projects are finished (Machine, Zilch, JagPunk) all leading up into MindthreaT, I will move on from the Jaguar as a whole from a development standpoint.


Machine is surely next in line to be finished, sooner than later. Cosmic Ark inspired clone that has DubStep music by Two Oh One / Wang.

You set out to prevent Mr. Robot Dude (Sparky) from dying due to memory leaks taking over his vulnerable body in real time.

Did I mention it's going to be a free download for your JagGD? More to come as time permits..

Edited by Clint Thompson
  • Like 16
Link to comment
Share on other sites

I was hoping to have made more progress on this (new) test environment to convert over for JagStudio GD testing purposes but ran out of time this weekend.


For those interested in the details, was originally at 320x112, bumped it to x144 and then finally settled at 320x160, with a text window below of about 320x64. That puts us at 320x224 overall for a full NTSC screen. Problems I ran into:


  • 1. Bus overload causing the screen to tear slightly at the bottom. This was done by accident because the text layer (unused) was also overlaid onto the main graphic image being pulled from ROM. Huge no no. Not at all necessary either since no text will be displayed on the main graphic image area. Cut that down to 320x64, lowered it a nudge and the Jag was purring along happily again.
  • 2. Originally wanted the side screens to activate and pan the image left or right (almost 360 panoramic-like) based on the direction you were moving but this of course proved to be overbearing as well. I went in kind of expecting that to be the case actually, but just noting that you can't expect the world or literally everything, so I compromised and just kept it simple at the single screen, for now.  It should be noted, there are alternate ways to overcome that issue. I could probably load 3-5 primary graphic images into RAM and pull all animations from ROM so it wouldn't be an issue.

Even the best Jag emulator on Earth will not show you the actual constraints you'll run into on real hardware though, which is why I constantly test everything I'm working on with a real Jag as changes are made. Music was made using the Atari Stacy4 and Atari Hotz, which is playing back using the Zerosquare's audio engine included with JagStudio. The nice thing about having unlimited storage space with the GD is that the variety of music can be massive for so many different scenes.


Scene breakdown (all variables likely to change since it seems everything will be loaded into and running from RAM in GD mode):


Primary scene graphic pulled from ROM - 320x160 16Bit

Music pulled from ROM - 16Khz Joint Stereo Audio

Small animations from ROM

Large animations from RAM

Lower text boarder from RAM


Will reverse or mix/match the order based on scene conditions or needs so the Jaguar doesn't explode.


Water animation is 320x144 (3 frames of ideally 8-12), which is a lot larger than most animation needs will ever be for these scenes but it's nice to see that it works as expected without the Jaguar throwing a hissy fit. Sign illumination animation is nothing, like 16x48. Any given scene should have about 3-5 animations though.



Do note that making a water reflection ripple/wave surface is an absolute nightmare and is where my time went to waste. This scene isn't complete but shows the idea behind what should hopefully be live environments. Once I've fully implemented some more live items and navigation/interaction, I'll include a binary for others to check out on their GD, even in its simplistic form.

  • Like 6
Link to comment
Share on other sites

  • 3 weeks later...
Bringing in the New Year with JagStudio - Another Year, Another Update
Expanding upon the demo-scene like example I created and made available here, and while waiting on some JagGD test stuff, something new was born. 
Or as I like to call it: yet another distraction!
For some reason, the backdrop inspired a bee or hornet feeling that motivated me to want to setup and create a mini arcade-like stage wave shooter. Originally coined it "Queen Killing Killer Queen" (that's a mouthful and so it was shortened), now just going by Queen Killer, it's actually going to end up being Die! Hornet Die! - though I'll still refer to it as Queen Killer while working on it...
I'm attempting a new method or different approach this year to making progress on projects., let's see if it sticks. In the past, I would end up working on something for 16-24 hours over the course of 2 or 3 days and burn out, sometimes never to look at it again for another month. This go around I'm going to tackle progress bullet points in 30-minute to an hour increments every day. So far, I've remained consistent in tackling single items off the checklist, sometimes two so as long as it doesn’t exceed an hour and a half, and progressing nicely. Progress is fun when you actually make progress!
What I've learned is, is that I'm quite rusty and after fully transitioning over from Rb+ to JS once and for all, well... again, I'm quite rusty and the amount of time I spend on my own mistakes seems to be exceeding the amount of time I'm spending on actually making progress. But that's ok (not really lol), but it is part of the game and re-learning process. At least that’s what I’m telling myself.
Die! Hornet Die! Progress...
So yeah... day by day, all 8 of them mind you *chuckle*, I've managed to tick off a single item from the list. Granted, some of these things probably wouldn't have been possible as quickly had I not already experimented with a dozen different projects over the years, so that certainly helps in aiding with the speed or turn around time of simply doing what I've already done with something else again, only arguably better and for an actual purpose this time. At the same time, I made some mistakes along the way that took a little longer than I care for.
The included examples with JagStudio have been crucial with aiding in said progress, many of which would have no doubt required some external probing for assistance surely if not available otherwise.
Checklist items marked off so far:
-Blitter powered background gradient title screen (thanks to Blitline example for reference!)
-Created background tile panels (from the demo)
-Render, implement and animate both Player and Enemy hornets (the bare bone basics, will expand later)
-Make hornets follow player (slow drone attack) (thanks to Calcangle example for reference!)
-Randomize Intro Level Text Quotes (thanks to Print example for reference!)
-Laser blast and delay implementation (extracted from an unused Rb+ project I worked on 4 years ago, sometimes old things do come in handy after all)
-Set player play field boundary (cannot exit screen) (thanks to CJ for helping me fix my own stupid mistakes and Shootbang example for setting it up proper!)
-Implement ominous background hum and laser noises (borrowed from my JagPowah Play program)
Make Stupid Mistakes, Win Stupid Results:
While I made a few more mistakes than listed, I want to point out the big no-no mistakes I made, some self corrected and others kindly pointed out. 
Had some serious title screen flicker that wasn’t there before and not sure what was going on. Long story short, turns out that I was accidentally calling get jag pad twice. To be honest, I’m surprised it even detected any input without wrecking things even more. Removing the second instance fixed the issue.. surprise!
It’s really important that you place your movement negatives and positives in the correct place, not to mention adding the function that you’re actually trying to use. This was a twofer mistake for an image I was wanting to flip. In this case, the Queen Hornet.
Lastly, instead of doing it the smart way and checking an example to reference on how to set up X,Y coordinate boundaries for the player hornet, I thought I’d wing it. Did not get it right but thankfully was guided in the right direction on how I could be doing it. Ultimately the Shootbang example saved the day and showed me what I was doing wrong or simply, a better way to do it, and so I did and it works! Wanted the Hornet to move around somewhat quickly so we're moving around at 4 pixels at a time...
IF pad1 BAND JAGPAD_DOWN and queen_pos<(166<<16) THEN  
sprite[sprQueen].y = queen_pos+(4<<16)


To Do list before a WIP release build (hopefully sometime in the next 2 weeks) will be made available:

-Enemy player hit detection
-Enemy player explosion particles (this could be tricky, expecting this to eat up several days)
-Expand quotes for randomization 
-Setup initial enemy attack waves
-Add scoring and lives system
-Add game over screen post death 
Gameplay Outline:
While I'm open to suggestions, I think I've got the gameplay idea nailed down, at least mentally. I really don't want to divert too much time on what has now become yet another distraction but it's a much needed learning exercise for other things I've not really bothered with and warming up to learning again. Did I mention being rusty? Right.. 
Main game idea is 3 waves with 5 rounds each wave of Hornet Attacks, then a main boss after each 5th round from the wave set before you ultimately beat the game. 
Example: Wave 1, Level 1: Hornet Drones will attack in x amount, you clear the screen, proceed to level 2, 3, and so on. Beat the wave 1 boss then you'll go onto Wave 2, which will increase the difficulty of not only the hornets but they'll now start shooting (Intent to Kill), then Wave 3 will be Murderous Hornets, it'll just be a nightmare and will increase in difficulty with a mixture of patterns and randomization before the final, 3rd boss.
Overall aim for the game is to beat it in possibly 30-minutes to an hour but could easily be made to loop endlessly faster and faster as an arcade mode that you'll simply just not be able to beat and where the high score will be the key take away. Best of both worlds perhaps. Just now thinking off a whim, I suppose it wouldn't be too hard to add a second player option so that two people could blast double the amount of Hornet baddies along the way, each with their own high score, but we'll see...
While I don't have any hard restrictions, it would be cool to see what can be done with just 2MB of RAM-only assets overall. After looking at my current progress, there are things I wish I could do that are simply out of reach. Like, it would be neat to have gradual shifting gouraud shaded polygons as the background(s), but that’s not going to happen. 
Until the WIP release is ready….
  • Like 8
  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...

This was the thread you were mentioning in the FB messenger. Went and searched for it. Some excellent WIPs you have man. 


I've been looking towards that cyberpunk one for years. At one point you were talking about taking renderings of people's heads and trying to put them into the game. 


Typing a comment so I can follow the thread and see updates and releases along the way!

Link to comment
Share on other sites

  • 7 months later...


I've been seriously slacking on updates for good reason but hope to change that now that this years workload has slowed down some. In short, JagPunk:CyberDeck has taken precedence over everything else at this point. I've decided to wait no more in hopes to be able to utilize the GameDrive for it's storage capacity. Instead, I will charge forward with a 6MB version of JagPunk, that is not going to be GD-specific. Tough titty said the kitty! I'll also try to keep these updates shorter and easier to digest quickly in bursts.


Attached are two earlier versions of CyberDeck tests (from the Future Ends deck I've made) that are shown in 256-Color and 16-bit. For those of you who are curious enough to bother loading and comparing the two, you'll quickly see why I ultimately wanted to remain with 16-bit cards regardless: quality. The flipside to that being, the Jaguar is being a Fussy Pussy about it and pitching a bitch about my asking too much of it.


So... I had to slim the cards down some, but that turned out to be a good thing in the end. Both design-wise and space-wise. The originals were mostly placeholder anyway and the shorthand descriptions on the bottom are redundant since they will be visible in the text field when highlighted. Also feel the cards in the CyberDeck16Bit ROM are ideal because they no longer overlay the credits/cost of each directly onto the graphic artwork but instead slightly below or above, making it easier to actually see wtf they are. Hopefully.


There is zero interaction with these ROMS outside of hearing the title screen music and graphic, pressing B to load the placeholder playing field and auto-cyclying through the few cards that were implemented at that time. 0 takes you back to the title screen and that's it. But it should give you a good idea of what's in mind and where it's going.





Currently, there are 4-decks in the game (Future Ends, CyberNaux, Synahx, and NeoNet). The first two are fully implemented, Synahx is next to add and is mostly complete with NeoNet needing an entire deck of 25 or so Primary Cards and 15ish Auxiliary cards. With that said....


Calling all Card Idea and Name Submissions!


If you're interested in coming up with a few card names and ideas, feel free to add them below and I'll consider adding them to the NeoNet deck. They must be 12 characters long in name or less, include a short description of what they do, how much damage they deal, etc. NeoNet is primarily a hacking deck and those cards should reflect such but I'll remain open-minded about adding oddballs here and there. Here's a few examples from Future Ends and CyberNaux:





Subject to change, the game is currently setup to randomly draw 5 cards each round in turn based fashion (first 3 are PRIMARY cards, last two are AUX cards). You'll roll 3 digital dice each round for data credits to use a card. 2 dice total for primary cards and 1 die for the AUX cards. Each die only up to 6 like standard dice. So if you roll a 4 and a 3 on the first two, you'll have 7 to use for a Primary card. Then the 3rd will be whatever it lands on for an AUX card. Hopefully that makes sense and in the end is supposed to be a lot easier to understand or grasp.


The pink/red data notches on the bottom of the card indicate damage dealt (or in some cases health gained), depending on the card.


The green or yellow notches on top indicate the cost to use the card with data credits. If you roll less than, you obviously can't use them. Data Credits do not rollover into the next round. The Red and Yellow claws are simply the cards turned over and help signify that they are PRIME or AUX.


Primary Card Example: DERANGED: Damage Dealt: 3 Points; Data Credit Cost: 4

Primary Card Example: ACID RAIN: Damage Dealt: 6 Points; Data Credit Cost: 6 "Desc Text: May Drops of Rain Melt You!"

Auxiliary Card Example: HEART ZAP: Health Gained: 3 Points; Aux Credit Cost: 3


So if a Player rolls a total of 7 for the first two dice and a 4, you would be able to play your choice of Acid Rain or Deranged as well as Heart Zap. That of course will not always be the case. Some rounds you might not be able to play any cards.


Here's some Deck Select screen music outtakes created using nothing other than Atari gear (Atari STe, Stacy and Hotz):




I didn't like the data notches on the sides of the playing field after all so those are gone now. I'm still working on a slicker interface to connect it all together and hope that will solve the issue of displaying cost/dmg dealt/etc. to each player left and right / player 1 and 2. Let's see how long it takes me for another update...

  • Like 7
Link to comment
Share on other sites

  • 2 weeks later...

Quick update


Think I have the overall interface mostly done.... you've got the primary playfield with boarder and

your holographic display in the center for all the text details. In lieu of wires hanging all over the

place as originally intended, PCB lines are in the back of the text display to connect it to

the CyberDeck itself just below that.


The data (playing) cards are lined up nicely with the new CyberDeck IO interface now

(where the cards you choose slide into). The cards kind of remind me of the Atari Portfolio cards.

Wasn't originally my intent but after making them, maybe it was done subconsciously.


Humorously 64kb....




And a better idea of how they flip and fit into the slots when chosen.

I'm not sure if the cards that aren't in-use should just slide away off screen or not.

Or just stay in place flipped on their backside with their card color coordinated Jag claws.


Experimenting with playing fields still as well. Made it slightly larger but reverted back since

it would limit the much needed text lines to a single row instead of the two it has now.




The amount of work remaining to get to a playable status.... oof.

  • Like 3
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.

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.

  • Recently Browsing   0 members

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