HELL YEAH! - arcade platform shooter (my first Z80 game!)

People are still making stuff for the Sinclair related machines. Tell us about new games and other software that runs on the Spectrum, ZX80/ZX81, Pentagon and Next.
presh
Manic Miner
Posts: 237
Joined: Tue Feb 25, 2020 8:52 pm
Location: York, UK

HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by presh »

"You and your twin brother are part of an elite special service unit on a top secret mission. Suddenly, a hellish void opens up and entices him through... now you're under attack from strange creatures and must fight to survive in the hope of finding him!"

Image

Image

Image

This is my first 100% Z80 game, started back in March during the UK lockdown. As a kid, I got frustrated with the (mostly speed-related) limitations of BASIC and always wanted to make a Z80 game, alas I was only about 10 years old when I first got hold of a book on the subject so found it pretty daunting! Eventually YS would stick ZIP Compiler on its 1993 Christmas covertape and I'd bang out a handful of games with its help, but they were a far cry from the kind of games that the "wannabe rockstar coder" of my child self had dreamed of making. The more recent combination of boredom and literally being kept awake trying to decipher the weird layout of the ZX Spectrum's display file meant there was an itch to scratch and finally a reason to do just that!

I'm pretty happy with it for a first attempt, though I definitely had too high expectations of what the Speccy could handle and definitely threw myself in at the deep end :oops: That said, I've definitely learned a lot that I wouldn't have otherwise... so my next game is going to be much simpler and hopefully taking weeks rather than months to complete development :D

Download
Nienn Heskil
Microbot
Posts: 132
Joined: Tue Jun 09, 2020 6:14 am
Contact:

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Nienn Heskil »

Nice! This is easily game compo material. Great effort for a first game.

Is it possible to fix hero movement on horizontally moving platforms? I don't know if it's hard to add in your scheme, but ideally it should be smth like 'if hero is on a moving platform, add platform_x_speed to hero_x_speed'.

There's a seemingly-inaccessible powerup right at the beginning, but maybe there's some trick to it that I'm missing...
(Edit: Ah, I see with the trenches. Also, level design is a bit ev!l, isn't it. :lol: )
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2634
Joined: Mon Nov 13, 2017 3:16 pm

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Ast A. Moore »

Dang it, I’m usually not a fan of character-based movements in Speccy games, but this one looks great! Love the graphics and the devilishly hard gameplay. Good sound effects, too. Nice visual effects. An amazing achievement for a first game!
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
Ralf
Rick Dangerous
Posts: 2265
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Ralf »

Great game! Especially if we consider it's your first game.

Very colourful and nice looking. Rather hard but not hopeless.
I'll be certainly playing it more.
User avatar
ketmar
Manic Miner
Posts: 586
Joined: Tue Jun 16, 2020 5:25 pm
Location: Ukraine

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by ketmar »

very impressive! also looks Dynamic-inspired (this is not bad, quite the contrary! ;-). thanks for having health bars instead of instakills, btw! ;-)

and yeah, fixing platforms would be great. it's not a fatal flaw, of course, but it somewhat defies player expectation, and creates some frustration out of nowhere.

also, disk version, anyone? ;-)

i believe that in Good Old Golden Days this game would be a magazine hit, with very high scores. fake Crash/YS review, somebody? ;-)
User avatar
TMD2003
Rick Dangerous
Posts: 2017
Joined: Fri Apr 10, 2020 9:23 am
Location: Airstrip One
Contact:

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by TMD2003 »

ketmar wrote: Sun Oct 18, 2020 8:32 pm also, disk version, anyone?
Better still, do it as +3, +D and Beta for good measure!
Spectribution: Dr. Jim's Sinclair computing pages.
Features my own programs, modified type-ins, RZXs, character sets & UDGs, and QL type-ins... so far!
User avatar
Packobilly
Drutt
Posts: 35
Joined: Sun Mar 08, 2020 8:16 am

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Packobilly »

Hi!!
Your first game in asm?
Woh, man!! Its a great game!
Keep on creating!
Cheers!
JasonUK
Drutt
Posts: 14
Joined: Thu Mar 01, 2018 6:46 am

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by JasonUK »

Very good, especially for a first game! Single file format better than Side A/B, .tap would be better still :)
presh
Manic Miner
Posts: 237
Joined: Tue Feb 25, 2020 8:52 pm
Location: York, UK

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by presh »

Woah, didn't expect anywhere near the response this has got - thank you all so much for trying it & sharing your thoughts :D
Nienn Heskil wrote: Nice! This is easily game compo material. Great effort for a first game.
ketmar wrote:i believe that in Good Old Golden Days this game would be a magazine hit, with very high scores.
Thanks! :D I was aiming for "reader-submitted covertape material" level of quality (until it became apparent I was in multi-load territory) so this is all very encouraging to read!

Nienn Heskil wrote: Is it possible to fix hero movement on horizontally moving platforms?
ketmar wrote:and yeah, fixing platforms would be great. it's not a fatal flaw, of course, but it somewhat defies player expectation, and creates some frustration out of nowhere.
Ah, I should have guessed this would come up :lol:

In short, I ran out of memory. :( Speed was also an issue - it's already slightly slower than I intended it to run, without adding further collision logic. The current implementation is incredibly cheap (0 bytes added to the player movement routine, for starters!) And while testing, I've got so used to running along with them that once I'd optimised the code I never thought to revisit it.

But yeah, I definitely wanted "sticky" platforms. Maybe I'll have another look at this, certainly if it doesn't cause another frame rate drop...

Rev_Stuart_Campbell wrote:the nutty two-separate-TZX-files format makes it impossible to even load on Retropie
JasonUK wrote:Single file format better than Side A/B, .tap would be better still
Meh. Most of the "double sided" .TZXs I have were packaged up like that, so I just assumed that was the way to do it... :oops:

I've updated the download link with a single .tzx file, and added text labels for the sides instead.

Thanks for the interim fix [mention]Rev_Stuart_Campbell[/mention] :)

Rev_Stuart_Campbell wrote:shitty Rick Dangerous hidden traps
Haha, I don't even feel bad about these :lol: I've been very careful to ensure there's always a way to get power-ups without getting hurt, even though you're inevitably gonna fall for it the first time around. I was smashing the Retropie throughout development, so you can probably pin these on that sodding magician from Ghouls 'n Ghosts, and pretty much every bloody static-looking enemy in Toki which, while absolutely infuriating at first, becomes more like a finely choreographed ballet for the brown-trousered once you get it together... it's beautiful, maaaaan. So hold onto that moment of satisfaction once you figure these shamelessly-shoehorned-in-mini-puzzles out, at least until something drops you from a tree with a fireball to the face.

Nienn Heskil wrote:There's a seemingly-inaccessible powerup right at the beginning, but maybe there's some trick to it that I'm missing...
(Edit: Ah, I see with the trenches. Also, level design is a bit ev!l, isn't it. :lol: )
Oh, you can get to it. There are a few "secrets" in the game... mostly quirks within the game logic that I've exploited, to be fair! Gotta love a freebie that doesn't cost any more code... but yeah, some of those secrets are a bit evil! :P

thanks for having health bars instead of instakills, btw!
Oh my. Instakills throughout would be sadistic! That said, there are a few places where you can get knocked out of the sky mid-jump, straight into lava/spikes/etc. That's punishment enough!

Ast A. Moore wrote: Dang it, I’m usually not a fan of character-based movements in Speccy games, but this one looks great!
Well, a lot of that's down to you my friend - I'd never have known about floating bus display sync otherwise, and the scrolling looked godawful without it!

The next one's using dixel movement with pre-shifted sprites. I ❤ learning new stuff & trying it out!

Rev_Stuart_Campbell wrote:I am frankly OUTRAGED that you've stolen the name of my awesome PS3 game:
That looks immense!!! Particularly as I am somewhat obsessed with rabbits. Great presentation, also gotta love the pisstake references to other well-known platform franchises. :lol:

TMD2003 wrote: Sun Oct 18, 2020 9:48 pm
ketmar wrote: Sun Oct 18, 2020 8:32 pm also, disk version, anyone?
Better still, do it as +3, +D and Beta for good measure!
I've no idea how, but if this is requires a simple change to the LOAD_LEVEL routine and someone wants to help guide me through it if I get stuck then sure ;)
User avatar
Einar Saukas
Bugaboo
Posts: 3040
Joined: Wed Nov 15, 2017 2:48 pm

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Einar Saukas »

This is probably the most impressive "my first Z80 game" ever. Congratulations! :)
Nienn Heskil
Microbot
Posts: 132
Joined: Tue Jun 09, 2020 6:14 am
Contact:

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Nienn Heskil »

presh wrote: Mon Oct 19, 2020 3:12 pm
TMD2003 wrote: Sun Oct 18, 2020 9:48 pm Better still, do it as +3, +D and Beta for good measure!
I've no idea how, but if this is requires a simple change to the LOAD_LEVEL routine and someone wants to help guide me through it if I get stuck then sure ;)
I think it might just be possible to cram it all in a single 48K load somehow. At least, that level data seems to compress rather well (I got just under 4K using exomizer). And there's a big enough buffer to serve as a temporary unpack-space. :) Granted, I've only looked at the code briefly, and I realize it might not be possible due to other factors.

An easier option is to use the 128K extra memory. After the main code loads, test if it's a 128K, and in that case, continue to load all the level data into the 128K pages. Likewise in your level loader, call the tape routine if on a 48K, but LDIR from a page on a 128K.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2634
Joined: Mon Nov 13, 2017 3:16 pm

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Ast A. Moore »

Einar Saukas wrote: Mon Oct 19, 2020 4:11 pm This is probably the most impressive "my first Z80 game" ever. Congratulations! :)
Hear, hear!
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2634
Joined: Mon Nov 13, 2017 3:16 pm

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Ast A. Moore »

presh wrote: Mon Oct 19, 2020 3:12 pm
Ast A. Moore wrote: Dang it, I’m usually not a fan of character-based movements in Speccy games, but this one looks great!
Well, a lot of that's down to you my friend - I'd never have known about floating bus display sync otherwise, and the scrolling looked godawful without it!
Glad my little writeup came in handy!
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
Joefish
Rick Dangerous
Posts: 2020
Joined: Tue Nov 14, 2017 10:26 am

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Joefish »

This is really good. I like it a lot. I like the colourful graphics.

To be picky or other suggestions...

Again, sticking to a moving platform would be an improvement. And if you can't go down, a 'duck' / 'lie-flat' move to dodge enemy fire would be good. Though having a 'jump-down' option is a rare luxury in itself!

Personally, I'm also not keen on constantly respawning enemies, particularly during the stand-off boss fights (though those are pretty well done). I'm a big fan of Probotector on the GameBoy (though I can't get on with any of the other Contra games), and this reminds me a bit of that.

Some control in the air when jumping would help with the platforming bits, though I get that's not so easy with character movement. It's hard to apply the sort of inertia calculations that prevent you from just changing direction willy-nilly in mid-air. But it would be nice if you could jump straight up, then move just one or two characters over before you land. Or take a running jump but pull it up short if it looks like you're going to overshoot. Does it make you fall forever diagonally if you miss your landing point? Maybe making it just drop straight down after you've covered a certain distance would look more realistic.

Also, in 'keyboard' controls, you can just have the entire half-row of keys operate FIRE. That way you get M or SPACE.
presh
Manic Miner
Posts: 237
Joined: Tue Feb 25, 2020 8:52 pm
Location: York, UK

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by presh »

Nienn Heskil wrote: Mon Oct 19, 2020 4:59 pm I think it might just be possible to cram it all in a single 48K load somehow. At least, that level data seems to compress rather well (I got just under 4K using exomizer). And there's a big enough buffer to serve as a temporary unpack-space. :) Granted, I've only looked at the code briefly, and I realize it might not be possible due to other factors.

An easier option is to use the 128K extra memory. After the main code loads, test if it's a 128K, and in that case, continue to load all the level data into the 128K pages. Likewise in your level loader, call the tape routine if on a 48K, but LDIR from a page on a 128K.
I figured the levels would compress nicely, there's a lot of repeated whitespace / patterns for starters. Space on 48K is the biggest problem though, the upper area of memory is used for the various display/attribute buffers and collision map (about 10KB). There definitely isn't 4KB free, that's for sure! :(

I didn't even have room for an interrupt table, which is one reason there's no AY music - the other being that the display routine now manipulates the stack pointer, so interrupts are disabled for this reason (and also for additional speed).

I had considered a 128K version, but figured most folks would be playing on emulator where multiload wouldn't be so much of an issue. Even so, I tried to keep the load times down (less than 30 sec) for the "realists" out there. :)

If I do a "v2" then no doubt I'll have a play with 128K paging though, as that's still on my list of currently unchartered territory!
Last edited by presh on Mon Oct 19, 2020 8:12 pm, edited 1 time in total.
User avatar
cmal
Manic Miner
Posts: 614
Joined: Fri Jun 05, 2020 1:05 am
Location: California

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by cmal »

Great work, [mention]presh[/mention] ! You made some good use of the lockdown time. I'm still getting used to playing the game and not dying so quickly but I can tell it's a piece of excellence. For a "First Z-80 game" it's amazing!

Only issue I've found so far is the platforming thing as others have mentioned.
User avatar
cmal
Manic Miner
Posts: 614
Joined: Fri Jun 05, 2020 1:05 am
Location: California

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by cmal »

Ast A. Moore wrote: Mon Oct 19, 2020 6:12 pm
presh wrote: Mon Oct 19, 2020 3:12 pm Well, a lot of that's down to you my friend - I'd never have known about floating bus display sync otherwise, and the scrolling looked godawful without it!
Glad my little writeup came in handy!
That's still on my list of things to do...read through Ast's floating bus doc.
presh
Manic Miner
Posts: 237
Joined: Tue Feb 25, 2020 8:52 pm
Location: York, UK

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by presh »

Joefish wrote: Mon Oct 19, 2020 7:22 pm And if you can't go down, a 'duck' / 'lie-flat' move to dodge enemy fire would be good.
This was in my original spec, but I couldn't get the graphics to look any good... plus the whole "ran out of memory" thing happened. So yeah, I feel ya!

Some control in the air when jumping would help with the platforming bits, though I get that's not so easy with character movement [...] take a running jump but pull it up short if it looks like you're going to overshoot.
You're 100% correct about character cell movement making it difficult to pull of any kind of inertia without it looking jagged.

I settled with this: You can turn around in mid-air, which stops horizontal movement. You need to do this to get certain pickups safely, in fact. ;)

Does it make you fall forever diagonally if you miss your landing point? Maybe making it just drop straight down after you've covered a certain distance would look more realistic.
Yes. I did try building this in, but there's a few places where you can take a gigantic daring leap from the top and avoid some real hassle... and when I tested it with in these parts, the player just ended up falling short, plunging into lava/spikes/etc and it just felt really annoying, so I took it back out again :)
User avatar
Einar Saukas
Bugaboo
Posts: 3040
Joined: Wed Nov 15, 2017 2:48 pm

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Einar Saukas »

[mention]presh[/mention] I sent you a PM a while ago...
User avatar
MrClump
Microbot
Posts: 112
Joined: Sun Aug 16, 2020 7:12 pm
Location: Torbay, Devon, UK

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by MrClump »

The ZX Spectrum Next doesn't seem to like the TZX file at all, there are no loading sounds when you try to load it and then no other TZX files will load until you do a cold reboot of the computer. It's almost as if it's causing the Pi to crash. Is it possible to get a TAP version?
User avatar
ketmar
Manic Miner
Posts: 586
Joined: Tue Jun 16, 2020 5:25 pm
Location: Ukraine

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by ketmar »

presh wrote: Mon Oct 19, 2020 3:12 pm
TMD2003 wrote: Sun Oct 18, 2020 9:48 pm Better still, do it as +3, +D and Beta for good measure!
I've no idea how, but if this is requires a simple change to the LOAD_LEVEL routine and someone wants to help guide me through it if I get stuck then sure ;)
for +3 is is very easy, it has nice file i/o API. it may conflict with interrupts and 128K mapping in the future, tho. but for now it should be as easy as calling "open file, read bytes, close file". +3 manual has +3DOS API documentation.

with Beta you will need some memory for sector buffers (at least 256 bytes, and you may prolly need to write your own directory parsing code). it is much harder, because TR-DOS documentation sux, and its API sux too.

dunno about +D, it should be quite easy too.

i'd recommend to start with +3, as it is the easiest of all -- basically, being one of standard configs, and with manuals.
presh
Manic Miner
Posts: 237
Joined: Tue Feb 25, 2020 8:52 pm
Location: York, UK

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by presh »

MrClump wrote: Mon Oct 19, 2020 9:30 pm The ZX Spectrum Next doesn't seem to like the TZX file at all, there are no loading sounds when you try to load it and then no other TZX files will load until you do a cold reboot of the computer. It's almost as if it's causing the Pi to crash. Is it possible to get a TAP version?
Strange! Here's a .tap version:

HELL YEAH! v201018.tap.zip
User avatar
Manu128k
Dizzy
Posts: 82
Joined: Tue Aug 13, 2019 9:45 pm
Location: Spain
Contact:

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Manu128k »

Congrats! It's a nice shooter and a great first ASM game.
+3code

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by +3code »

Nice and colourful game. Great!
Nienn Heskil
Microbot
Posts: 132
Joined: Tue Jun 09, 2020 6:14 am
Contact:

Re: HELL YEAH! - arcade platform shooter (my first Z80 game!)

Post by Nienn Heskil »

Figured out the powerup at the beginning (hint: backtrack moar), and... yep, quite a few secrets in there it seems. I also can almost make it to the end of LV2!

Meanwhile, here's a quick TR-DOS version. Hope you don't mind. :)
Post Reply