Jump to content
IGNORED

[7800basic] Graze


Mord

Recommended Posts

Just a small update today to keep the ball rolling.

 

As mentioned in the first post, destroying power-up gears was going to give a larger reward if you could not actually benefit from the powerup due to it's bonus being saturated. That's now in effect.

 

If your graze-bonus/mob at the end of the wave is 99pts (when you die it resets to 9pts - increases by 9pts per G powerup collected) you get 500pts instead of 200pts.

If your speed is maxed from S powerups, you also get 500pts instead of 200. On the 5th+ you should get the bonus. (Also resets on death.)

If you collect a R powerup while still under the effect of the last one, you get 500pts.

 

I hooked this up to the same condition checks that play the different sound effect.

 

Most of the work I've done this week was spent on a new enemy, the Lancer. Basically a simple two-pronged ROCKET PROPELLED SPEAR (but it isn't done yet. Should be done soon, but won't make it by the end of the weekend. :))

 

(Updated roms in first post obviously!)

Edited by Mord
  • Like 2
Link to comment
Share on other sites

Lancer is mostly in. I'll update the roms this weekend, either Friday or Saturday. Going to see if I can fix the bug with the bonus points for obtaining Regen powerups (They're always giving the 500pts since the if check used doesn't really work with timed effects.)

 

Already got an idea of how I'll fix it, but no time for it today. I'll try to squeeze it in tomorrow. Pseudo-literally squeeze. I'm down to 55 free bytes in the main rom area. :D

 

So this next release will also probably be the last non-bankswitched version. Hopefully Mame will continue to be accurate to the hardware for test purposes.

  • Like 2
Link to comment
Share on other sites

Updated roms in first post.

 

Changes: (January 29, 2016)
---------------------------
* Adjusted Spawn/Despawner setup so that one happens on even frames, the other is checked on odd frames. Doesn't do a lot, but will hopefully avoid cpu spikes if something (or many things) are despawning on a frame when something is being spawned.

* Added Lancer enemy. Essentially a fast moving spear/trident that travels in a straight line, attempting to catch the player. If caught, the player is pulled along with the Lancer and potentially speared against the wall.

Lancers catching you while you're caught might cause some confusing bugs! It's on the to-do list along with a couple of extra refinements.

* Lancers have a durability/resistance that it uses to restrain the player. When the resistance is depleted to 0, the Lancer will self-destruct. Players can resist the Lancer by attempting to dash, which will drain it's resistance much faster.

* When caught by the Lancer, it will force the player in the direction it is going, but the player can attempt to move freely in the opposite axis (if pushed left, you can move up or down) until they're pinned against the screen edge/wall. Once pinned, they won't be able to move at all until the Lancer is destroyed!

* Lancer's are relatively easy to graze. The shaft is safe, only the head can trap the player. Lancers main asset is their speed - they're always moving faster than the current maximum speed for the wave.

* Fixed bug with Regen's bonus points of 500 always being given. Should only give 200pts unless already under the effects of a Regen. (Technically any Timed Power Up, but right now only Regen is timed!)

 

 

As mentioned before this will likely be the last non-bankswitched version. The next version, which will likely take more than a week to get out, will probably be mostly the same as this one - I'll just be rewiring it for different banks. But at that point I'll have extra room for more graphics, sound, etc. :)

 

The main rom section has 9 bytes free. XD

  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

Finally got the game running on a 128kb rom - plenty of interesting bugs caused by incorrect banks, etc. I'll post an updated rom, even if it won't be functionally different from the 48kb rom, probably on Sunday. I have it running but I'd like to look into reorganizing things a bit and to help verify there aren't any lingering issues. After that we should be back on track for adding and refining stuff.

  • Like 1
Link to comment
Share on other sites

New rom is in the first post - just upping it to 128kb as planned.

 

Currently banks 6 and 7 are entirely free, and all the dmholes are likewise. I've mostly reserved bank 8's 4kb for sound effects and data strings at present. Let me know if you experience unusual crashing - I certainly encountered enough of them myself by missing bank assignments on gosubs or picking the wrong bank accidentally!

 

Considering tweaks to the gameplay a bit for next version. For instance having any enemy that's been grazed successfully attempt to leave the playfield asap. - no more screen bouncing, apart from the sidewalls.

 

 

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

I'll post an updated rom Sunday evening (Later today, technically.)

 

Lancers will be more annoying. It will be possible to destroy an enemy with an extended graze. And some scoring issues fleshed out a bit more.

 

However while doing some tests I came across an extremely odd bug. Odd in that fires in particular conditions, and the things it messes with are unrelated to anything I've done recently. It does seem related to the Lancer but I'm not entirely sure how yet. I'll try fiddling with it today, but if I can't figure it out by this evening I'll post what I got. :)

  • Like 2
Link to comment
Share on other sites

Updated roms in first post.

 

 

* All enemies now have graze resistance (hp). It slowly decreases during an extended graze, and the enemy will explode (quietly for now) when it's resistance goes to 0. Points are awarded as if the enemy was graze charged.

* Resistance on enemies is dependant on difficulty level and current wave.

* Bullet types don't have resistance and can't be destroyed in this fashion!

* Graze Powerups now also increase your suit's attack power - such that it becomes easier to drop the resistance of an enemy during a graze. This is tied to the graze bonus. When you start getting bonus points from a Graze Powerup it means you're also not getting a stronger graze! On death all benefits from Graze Powerups are reset. (Like most powerups!)

* Destroying an enemy by reducing their resistance to 0 yields double points. This becomes easier to do after collecting a few G power-ups.

* Enemies destroyed by graze charge or resistance draining count towards the graze bonus at the end of the round.

 

* Bonus lives are gained in normal modes at 10k, 20k, 40k, 80k, 160k, 320k, 640k. To a maximum of 9 lives in reserve. If you have 9 lives in reserve already, you'll get 10k bonus points instead. In Survival modes you won't receive any lives or bonus points from this. There will generally be a survival mode for pretty much any game mode I add. (Right now there's only Wave Mode of course!)

* The front of the Lancer is now no-graze, which makes it much easier for it to catch a player. While it won't kill the player, the player can't graze charge it either. I might slow them down a little in the next update since this makes them nearly ungrazeable at all. ;)

 

The bug mentioned before remains. It should show itself when the Gear Event begins in the first wave. It'll continue until the next wave begins at which point it rights itself as new level data is pulled in, apparently replacing the faulty data.

 

Not sure where the problem is but I'm suspecting an out-of-range array access somewhere. The bug is just the RightWall variable being overwritten when the wave event starts. But if I go adjusting a few variables it doesn't happen at all. Things like Initial Wave Time, the time the Wave Event starts, or the frequency of offscreen spawns. So yeah, a bit difficult to pin down exactly.

 

So for next version I might just be tackling that, but I'm probably going to be dabbling in sound effects as well which might require me to put out a mostly unrelated demo between now and the next release. We'll see how it goes though.

 

 

  • Like 1
Link to comment
Share on other sites

I suck.

 

I just found the source of the bug. Updated the roms in the first post.

 

The cause was, as usual for something as weird as this, something that was staring me right in the face. It seems when I updated the Lancer Init routine last week or earlier, I apparently snipped out the "return" at the end of it. >_>

 

What was right below that init routine? Why the wave management routine which is when things go weird, but only when the event itself triggers. I'm still not sure how it messed up the right wall doing that, so I might have another bug somewhere that needs to be dug up. If you see really weird things happen while playtesting, let me know. I'll be playtesting it extensively as well.

 

Note: I know there's no sound when you destroy an enemy with an extended graze (unless it has a powerup). That's ok - I'm planning on adding a different sound effect for that soon so I didn't set it up. :)

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Updated roms in first post. Mostly tweaks again along with an attempt to be able to use all 16 enemies at once - previously it would run out of display time.and cause... slowdown along with palette corruption.

 

Changes:

* Wall changes are more accurate with respect to players/enemies. (Where the wall is displayed is where the wall interacts with enemies/players.)

* In midloop bonuses, changed "Grazed Enemies" to "Grazing Bonus". Sounds more accurate.

* At Midwave Lancers now clear the screen differently, losing power and falling out the bottom.

* At Game Over all enemies will eventually do the same as Lancers at Midwave.

* Drastically slowed graze drain speeds of Boss Bullet and Paralyser. Boss Bullet drains a bit faster however.

* Getting hit by a Lancer while held by another Lancer -should- do damage. Seems a little buggy right now. Initial hits/grabs by a Lancer do no damage.

 

* Flicker management added - when the on-screen enemies go above a "safe" limit (which I still plan on trying to increase if possible) the game will start to flicker them. It's pretty crude right now, causing all enemies to flicker unnecessarily as soon as it goes 1 over. Thinking of ways that it'll try to flicker as few as possible. This enables all 16 enemies to be on the screen at the same time (which is shown in the current first test wave), but to make sure there was enough time to do all the AI and collision detection I've split them into every second frame. AI done one frame, collisions the next. I doubled up the enemy movement to counter this, since AI moves the enemies. I'll try to cut out or simplify as much code as I can in the plotenemies routine and take more looks at the AI and collision I'm writing to make them more efficient. (I -know- my code is not nearly as efficient as it could be!)

 

Trying to iron down the Turret System boss again as well. The way boss battles will probably end up working is that you'll need to charge up your graze power then charge a boss's weak point (if any) or obtain a specialized bullet that'll conditionally spawn when your graze hits max (if it isn't currently in play). Then use that single bullet to aim at the boss. Lots of stuff I still need to iron out since the turret system will be capable of a variety of different attacks/powers to spice things up.

  • Like 2
Link to comment
Share on other sites

Very cool. I just tried to download the binaries but got an error message. :(

 

I'll try reuploading them. When I was uploading them earlier the site timed out, but when I checked they appeared to be available so I assumed they succeeded.

 

*edit* Looks like the reupload worked. I was able to download and play the a78. :)

Edited by Mord
Link to comment
Share on other sites

  • 2 weeks later...

Another update: (updated roms in the first post as usual!)

 

* Smartened up the Flicker Management a little bit. Instead of cycling through the list of enemies, it will check the list starting at 0 on even frames, and 15(max) on odd frames. Works only because we can get at least half of the enemies plotted in a frame!
* Changed boss bullet graphic to something of a pulsing skull thing.
* Fixed a bug on boss bullet draining not taking effect. Also made boss bullets effectively no-graze if you run out of graze power. (Extended grazes on the boss bullet will eventually kill the player!)
* Fixed a bug on the enemy despawner. Enemies wouldn't despawn when they left the screen, and would wrap around instead. (Caused by splitting AI and Collision detection to different frames.)

 

I've been dragging my feet partly because I've been trying to decide if I wanted to keep 2-player mode. It adds a lot of complexity and eats up rom/cycles/ram. Trying to continue the game while wondering if I wanted to keep that seemed to be a disaster waiting to happen. ;)

 

So, this is going to be the last version with 2-player options. Next update will probably mostly have that removed to free up resources - in retrospect I probably shouldn't have been attempting that for my first game attempt anyway.

Edited by Mord
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Just a quick update - the heat got to me. :ponder:

 

That and work started to get busy as well!

 

 

Both of those things are still true, but I'm trying to start in on it again. Player 2 is now, as far as I can tell, removed from the game. Going to start making Real Changes again. (Starting with updates to the Helipod to help ensure the offscreen spawner doesn't flood the screen with too many enemies, preventing it from firing as well as to make it choose it's common/uncommon/rare bullet types from tables that'll progress with difficulty level and wave during a game.)

 

Helipod updates I plan on having by Thursday at the latest. While I might not post a rom then, I'll at least post to confirm if I've completed the goal or not, and say what I plan on next. (Going to try this to keep me active on it. :) Pressure and all that. ;) )

  • Like 1
Link to comment
Share on other sites

Obviously didn't finish that small set of goals by Thursday - half of it is, but I've run up against another of those annoying seemingly nonexistent bugs. Essentially, when playing a game helipods either will fire correctly, or none of them will fire at all. Testing the debug shows that the bullet type selectors are functioning properly (hold the correct/expected values) so the bug is somewhere else and this is just a side effect. This might be related to some other odd behavior I thought I saw last week - just takes time for me to hunt it down.

 

Anyway the way the bullet selection works is that I keep 3 arrays in rom. One for Common Bullets, one for Uncommon, one for Rare. As you go up in waves, the index to the arrays increase and the new bullet types get loaded. Helipods then use those current values when they get spawned - choosing one of the three.

 

A bullet type of "0" is now valid, which disarms the helipod.

 

The difficulty level adds a starting bonus to the array index. Otherwise it'll just increment 1 at a time for now.

 

After I get the bug ironed out I'll smooth out the offscreen spawning routine so that helipods can slow down the spawning to ensure they can fire their bullet. The way it works now the spawner floods the objects which prevents most attempts at shooting a bullet to fail.

 

After that, I'll do another rom update before I do the next Big Change.

Link to comment
Share on other sites

Ok, fixed up the helipod bug - ended up being a 50/50 chance conflict between the two timers I use for various things. I use a Clock to test even and odd frames. I use a Tick counter that helps count out 1/10 of a second - for things that can be checked less often. Fun things occur when you neglect to init Clock - this lets it run as intended on the first run, but if it was odd when you soft-reset it, it prevents the ShootBullet AI from ever triggering on helipods since it counts down it's delay 1/tick - an even tick. which requires clock to be aligned with it.

 

Helipods now alter their bullets based on wave + difficulty. The tables included right now are just test data for showing me the difficulty boost is working - so the Common/Uncommon/Rare bullets for each wave are the same.

Starting on Easy - helipods won't fire. Starting on Normal - they all fire small bullets. Starting on Hard - they all fire large bullets.

 

Player 2 is gutted. Still got traces of code I can remove for space, but there's no longer a way to set 2 player mode anyway.

 

Still need to adjust the way bullets are handled so they aren't as easily flooded by the offscreen spawner. Got 2-3 different ideas for approaching it, so thinking it over some more before I commit to either one. I was noticing the bullets aren't being drowned too much right now anyway.

 

Since the 2-player options being removed make it a little bland for now, unlocked an extra mode. In the final game some things may end up locked at first, this is one of them. I did notice it's a bit glitchy since I haven't been testing it too much, but eh. This'll give me more reason to.

 

Updated roms in the first post. I should really clean up that first post too at some point in the near future... :D

Link to comment
Share on other sites

  • 9 months later...

As way of a pitiful update, I am still working on the game. It's just very slow going.

 

I added the new double buffering system to the game overall - and the splitscreen routine to reliably handle palette changes. I noticed it introduced some potential for errors however when I go dropping to assembly for some sneakly updates. For instance I had some odd bug where the right wall would init to the middle of the screen at the start of the game... sometimes! Nothing I did with the code would fix it.

 

I can only guess that on the first run of the UpdateWalls routine, it would manage to be in the middle of it's routine when the splitscreen code triggered, but any other run through the loop it would appear to be safely outside it. I finally got it to stop by putting the assembly-heavy updatewalls routine at the end of the splitscreen routine, after the required palette updates had occurred. :)

 

No rom to play with yet however as the gameplay itself really hasn't changed much. Once I have the game's overall flow rewired I'll have a something new to share. No promises when that'll be - as I said work is going slowly - but I'll see what I can do.

 

 

post-4460-0-58812600-1494849255.png

 

 

  • Like 2
Link to comment
Share on other sites

I added the new double buffering system to the game overall - and the splitscreen routine to reliably handle palette changes. I noticed it introduced some potential for errors however when I go dropping to assembly for some sneakly updates. For instance I had some odd bug where the right wall would init to the middle of the screen at the start of the game... sometimes! Nothing I did with the code would fix it.

 

I can only guess that on the first run of the UpdateWalls routine, it would manage to be in the middle of it's routine when the splitscreen code triggered, but any other run through the loop it would appear to be safely outside it. I finally got it to stop by putting the assembly-heavy updatewalls routine at the end of the splitscreen routine, after the required palette updates had occurred. :)

Since it runs in an interrupt, the topscreenroutine needs to avoid using variables that are used outside of topscreenroutine. So avoid changing temp1-temp9, and any of your own game variables that wouldn't respond well to unpredictably timed changes.

 

I've seen a similar screen mess-up when forgetting the above and using the temp# vars.

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

Rom updated in the first post. Fairly big update game-wise compared to the last version.

 

1. Title screen cleaned up.

2. Timer counts down as before but now it's displaying the remaining time on your suit before it runs out of power! Grazing enemies will slightly increase the timer to keep you going.

3. The Graze (G) powerup increases the damage you do per frame to enemies like before, but it also increases the amount of time restored.

4. Difficulty increases every 60 seconds of real time. You'll notice when it happens.

5. The game is over when you run out of lives, or the timer hits 0. Different death effects for both cases.

6. At game over, the total length of time for the game is displayed on the screen.

7. Don't mind the odd looking bar at the bottom/center of the screen. It's a place holder for now.

 

There are of course bugs in the game still, so tread with care. The biggest bug right now is probably with how the enemy speeds are set. They're certainly going a lot faster than I anticipated, and have been for a while. Math hurts my head so I've been procrastinating on it. ;)

 

I'm in the process of removing the wave structure as shown above, but it's only partially done. Mainly with the setting enemy max/min speed limits and changing the enemy colors. The color setting is also looking unusual. It doesn't seem to be reading from the sdata structure I set up which should be a mirror of the levels in the previous rom. Not sure if it's actually random or if it's pulling data somewhere different in rom. I've seen some interesting color combinations all the same.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Roms updated in the first post.

 

1. Updated the speed setting for the enemies. Still not satisfied with it, but the mobs are at least overall slower. They weren't intended to be as fast as they've been lately. I'll be changing this again.

2. Changed the way the enemy colors are set. Currently the hue is determined with rand with the lum values hardcoded to particular values. I'll end up making a table of values later based on combinations I start seeing from this. Once more things are in I think I'll write a quick color set/test routine.

 

The new enemy unfortunately isn't ready yet so leaving it out. Most of the enemy is already in the code (graphics, collision detection, etc) but it's AI still needs to be completed/tested/etc.

  • Like 1
Link to comment
Share on other sites

  • 4 years later...

  ZeroPage Homebrew is playing Graze Suit Alpha on tomorrow's (Tue Sep 21, 2021) stream LIVE on Twitch at 4PM PT | 7PM ET | 11PM GMT! Hope everyone can watch!

 

Games:

(WATCH IN 1080P60 FOR FULL QUALITY)

 

 

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

Guest
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.

Loading...
  • Recently Browsing   0 members

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