Jump to content
IGNORED

Charge!


jrok

Recommended Posts

Something that struck me as rather cool was that this game somewhat reminds me of the game Repton (space ship game C=64) with the scrolling world and multi-layered events. That was one of my favorite games growing up and this brings back those memories. Good job!

 

Thanks! I've never played Repton, but what I've seen of it looks very cool. I'm a big fan of games with multiple simultaneous goals.

Link to comment
Share on other sites

Legend, on Thu Aug 11, 2011 5:13 AM, said:

Speaking of the arrow, it's kinda a pain to aim now since it curves. Especially when switching directions.

 

 

That's part of the strategy, actually. It's a tad more realistic then shooting an arrow straight up, and encourages the player to stay in motion and anticipate the dragon's movements. I suppose I could put in a variant on the difficulty switches that changes the angle of the shot, but that would require some additional RAM and cycles, so I'll table that one for the final build, if I have any leftover resources.

 

I agree that the arrows arching kinda like the stones in No Escape does add to the challenge and is welcome for the most part. The frustration comes mostly from when you are trying to hit the soldiers. Shooting them can be very frustrating since they are so much closer and the arrow arcs right away, I often find myself constantly going back and forth constantly just trying to hit one.

 

After a few more plays, I don't really think the world needs to shrink.

 

Finally encountered the Grendel. Cool. Seems like just a slight variation on the knight though.

Link to comment
Share on other sites

Legend, on Thu Aug 11, 2011 5:13 AM, said:

Speaking of the arrow, it's kinda a pain to aim now since it curves. Especially when switching directions.

 

 

That's part of the strategy, actually. It's a tad more realistic then shooting an arrow straight up, and encourages the player to stay in motion and anticipate the dragon's movements. I suppose I could put in a variant on the difficulty switches that changes the angle of the shot, but that would require some additional RAM and cycles, so I'll table that one for the final build, if I have any leftover resources.

 

I agree that the arrows arching kinda like the stones in No Escape does add to the challenge and is welcome for the most part. The frustration comes mostly from when you are trying to hit the soldiers. Shooting them can be very frustrating since they are so much closer and the arrow arcs right away, I often find myself constantly going back and forth constantly just trying to hit one.

 

Out of curiosity, are you playing with a keyboard or joystick. One thing to remember is the the arrow fires when you "release" the button, not when you press it. If it helps, think of it like pressing the button down draws the bow, and releasing the button releases the string.

 

Finally encountered the Grendel. Cool. Seems like just a slight variation on the knight though.

 

The Grendels are different from the Knights in a few ways, but I think I might differentiate them even more for the final release:

 

 

Currently they take two hits to kill instead of one, can only be hit when their mouths are open and can hide below the road where the Paladin can't hit them. I'm thinking of also giving them the ability to attack Castles (like Soldiers) and letting them sometimes hide completely beneath the road and attack with their arm as the player passes by (similar to the Lava Trolls in 'Joust', I guess).

 

Link to comment
Share on other sites

Out of curiosity, are you playing with a keyboard or joystick. One thing to remember is the the arrow fires when you "release" the button, not when you press it. If it helps, think of it like pressing the button down draws the bow, and releasing the button releases the string.

 

Playing with a joystick. Didn't realize it fired on release though. The momentum of the paladins speed when traveling also makes it challenging to shoot. So I think a possible straight shot variation wouldn't be too easy and still challenging.

 

Haven't seen a Grendel hide yet.

 

At the start of each wave, there is a short period of time where the player cannot shoot or draw his lance, but the enemies are still moving and attacking. Is this on purpose? Kind of frustrating in my opinion.

 

Also, I can never really tell if a castle has been healed at all. It never seems noticeable.

Edited by Legend
Link to comment
Share on other sites

Out of curiosity, are you playing with a keyboard or joystick. One thing to remember is the the arrow fires when you "release" the button, not when you press it. If it helps, think of it like pressing the button down draws the bow, and releasing the button releases the string.

 

Playing with a joystick. Didn't realize it fired on release though. The momentum of the paladins speed when traveling also makes it challenging to shoot. So I think a possible straight shot variation wouldn't be too easy and still challenging.

 

The problem with straight-shot is that you have to be directly beneath the dragon to hit it This is troublesome for a few reasons. For one thing, when you are moving at top speed, it's possible that the dragon will vanish off-screen to the left or right before its hit animation even gets a chance to play. Also, in later rounds the angled shot comes in handy, since the faster dragons move as fast as your horse moves at full gallop, and their columns of flame move much faster, too. So, if the shot is going directly up, you'll have to gallop directly under the path of their fire to hurt them. That seems wrong to me, and I have much more fun trying to draw a bead on those faster guys by galloping a few paces behind them, and I have a bit more reaction time to steer out of the path of their fire. So it's not just there for added challenge.

 

Haven't seen a Grendel hide yet.

 

Right now they can move downwards so that only their heads are poking up above the road. They can still hurt you if you run into them down there, but you can't hurt them because you can't line your lance up with their center.

 

At the start of each wave, there is a short period of time where the player cannot shoot or draw his lance, but the enemies are still moving and attacking. Is this on purpose? Kind of frustrating in my opinion.

 

If that's really happening, then it's a bug I haven't come across. During the Repair Phase (while the wave number is on the screen), the enemies are moving, but they aren't attacking anything. The Knights and Grendels cannot hurt you during this period of time (you'll pass right through them on the Road), the Soldiers move but do not attack the Castles, and there are no Dragons in the sky. Can you be more specific, or double-check to make sure you're really being attacked/hurt while the wave number is still on the screen?

 

Also, I can never really tell if a castle has been healed at all. It never seems noticeable.

 

Castles start with 20 hit points and can have up to 40 hit points. When their hit points are between 20 and 40, they look like this.

 

5983915362_87145bdd53_t.jpg

 

When they are reduced below 20, each attack sinks them further into the ground, until only the flag is visible.

 

5983353599_7739f1a0ed_t.jpg

 

After that, it is completely destroyed and becomes a flaming ruin.

 

5983353627_8b90630052_t.jpg

 

At the end of a wave, the flames are put out and you'll just see white smoke rising from the ruin. This means it can be rebuilt if you complete the current wave.

 

5983915430_b30f5accbe_t.jpg

 

Try sticking around on a screen with a partially sunken Castle or a smoking Castle when the wave is changing. After the tune plays, you hear rumbling sounds and see the Castle rise up by eight pixels.

Edited by jrok
Link to comment
Share on other sites

If that's really happening, then it's a bug I haven't come across. During the Repair Phase (while the wave number is on the screen), the enemies are moving, but they aren't attacking anything. The Knights and Grendels cannot hurt you during this period of time (you'll pass right through them on the Road), the Soldiers move but do not attack the Castles, and there are no Dragons in the sky. Can you be more specific, or double-check to make sure you're really being attacked/hurt while the wave number is still on the screen?

 

Double checked. Sorry, You're right. They cannot attack as far as I can tell while the number was on screen. You still cannot shoot though. I guess I wasn't paying attention before and just assumed that if they were moving, they were attacking. And not being able to shoot during that period does make sense since they cannot attack either.

 

I noticed that, as far as I can tell, attacking the castles doesn't seem to be the dragons first priority. THey often seem to just be moving along when they are on screen. Last time when I made it to wave 6 I think, the black dragon just kept moving to the right as I chased after him and passed by the castles.

Link to comment
Share on other sites

I noticed that, as far as I can tell, attacking the castles doesn't seem to be the dragons first priority. THey often seem to just be moving along when they are on screen. Last time when I made it to wave 6 I think, the black dragon just kept moving to the right as I chased after him and passed by the castles.

 

Castles are the dragon's first priority. But as I wrote in the Hints portion of the first-post, "Dragons are primarily concerned with destroying your Castles, but with a little coaxing you can lure them away with your Paladin, and get them to come after him instead."

 

Dragons search for Castles when spawned. They see one screen to the east and one screen to the west, and if either of those screens (or the screen they are on) contain a Castle, that becomes their target. However, if any of those three screens also contain you, the dragon may choose you as the target instead. If you are chasing it and it is wounded, it will sometimes try to escape and then reset its target. So from your description, it's sounds like the dragons are working fine to me.

Edited by jrok
Link to comment
Share on other sites

This looks outstanding! Very well done so far.

 

I kinda liked the outline style level numbers from the previous release better, but I like that you've put sunset levels in between day and night. That's a very nice touch. I assume the night levels are still there, but I've not made it to them in the latest binary.

 

I played it on the Harmony cart a while today and noticed that the horizontal graphics (background and/or playfield?) bounce up and down. However, the sprites are nice and steady. I thought that might be something you'd want to know about.

Link to comment
Share on other sites

New Version:

 

1. Took out the bats for now, and added in the Princess. Here's how she works:

6044250417_b95f8a75a2_m.jpg6044250469_e96f234230_m.jpg6044800760_bf167259c4_m.jpg

 

  • Each time you protect a Castle enough to raise its hit points to the 40 HP maximum during the Repair Phase, the Castle gains a Princess (her image replaces the colored Flag at the top of the Castle).
  • If a Princess is captured, the Dragon will attempt to escape to the top of the screen with her. Follow the sound of her screams to track down the dragon before it reaches the top and eats her.
  • If you can kill the dragon before it reaches the top, the Princess will begin falling down the screen towards the road.
  • Try to position your horse beneath the Princess to catch her, earning big bonus points.
  • Giant Dragons and Wizards don't capture Princesses (Ultimately, I think they will just kill them while they are still in the Castles)

2. Now, when you've defeated all the flying enemies in the current wave you will hear a little trumpet tune, indicating that it's time to hunt down and kill the last road enemy.

 

3. Fixed a minor glitch with Castle damage taking place off-screen.

 

4. Added a second possible extra man at 1000 pts.

 

To help see the Princesses sooner, I've temporarily raised each Castle's starting HP in this version to 32, so you should probably at least see one Princess by the second level if you have an undamaged Castle. The Princesses will be a key part of the game's bonus structure (including some secret bonuses for saving them in particular ways), but for now they simply earn you 90 points for each time you save one.

 

I was able to implement the Princess routine without using any of the Bat's player display bits, so theoretically I might be able to bring the Bat back in as well if I can locate another free byte of persistent RAM. Failing that, I might use the extra player (or its RAM) for something else. Ideas are welcome, as usual.

 

Cheers,

J

 

ChargeDPC_081411.bin

Edited by jrok
Link to comment
Share on other sites

I was able to implement the Princess routine without using any of the Bat's player display bits, so theoretically I might be able to bring the Bat back in as well if I can locate another free byte of persistent RAM. Failing that, I might use the extra player (or its RAM) for something else. Ideas are welcome, as usual.

 

Now that the Princess is in, and while I've still got this on my mind, I thought I'd throw out a few ideas I had on what to replace the Bat with. The RAM I have left over is the virtual player6x, player6y and the last 5 bits of NUSIZ6. The x and y vars are limited to keep the display stable (for instance, player6y pretty much has a max value of "6", to avoid overlapping with other sprites and triggering the auto-flicker routine). With that in mind, here's some ideas I had, each of which would probably use up my remaining RAM:

 

Soldier Armies:

Use player6x to create a virtual position for the Soldier. With that in place, I could make up to three close copies of the soldier sprite, each of which could be targeted independently by arrows. With a virtual x that changes depending upon which side of the screen its on, the Soldier group could more or less disappear smoothly at the screen edge, and would only flicker when one of them is killed (temporarily swapping in the player6 sprite for the death animations). I could then use the remaining bits of NUSIZ4 to give some Soldier types unique properties, like faster movement, greater strength, defensive/offensive manuevers, etc.

 

Respawn Timer:

Use player6x to create a timer object that counts down after a Soldier is killed, giving the player a bit of a reward for killing a Soldier. Basically, this timer would function as a breather during which the player doesn't have to worry about the Soldier attacking one of his Castles, and could focus his attention on hunting the dragons and navigating the road. As play progress, the breather between soldiers gets shorter. With this option, I could still probably use NUSIZ4 bits to vary the Soldier's abilities a bit.

 

Road Hazards:

Use player6 sprite and one of the enemy Knight's sprites to create obstacles on the road (for some levels) that the Paladin needs to dodge and weave around as he patrols.

 

Powerup/Bonus:

Occasionally, a sprite will float across the screen that you can shoot for bonus points, health powerups or castle repairs (functions a little bit like the saucer in Space Invaders.) Not sure what the sprite will "be", but I suppose it could be a bird, Willow'o'wisp, fairy or anything else that might reasonably fly, with different sprite shapes representing different kinds of powerups/bonuses.

 

Cheers,

J

Link to comment
Share on other sites

I love the princess addition. I've not yet been able to catch one when falling though. I could swear I was positioned underneath, but she'd still crash into the ground.

 

I'll miss the bats if they don't make their way back into the game, (simply because they looked good -- adding depth to the terrain/sky -- and didn't harm the castles too much), but your other ideas sound good too. It's a tough choice, but I think I'd vote for a Powerup/Bonus being added. Most 2600 games have enemies, but few have Powerups. I like the idea of a fairy or Willow'o'wisp. The latter always makes me think of Draconus on the Dreamcast (great game).

 

BTW, will there be any room for clouds in the game?

Link to comment
Share on other sites

My vote would either go for a power up or road hazards. I would rather see some sort of power up or giving the castles health instead of just a point bonus.

 

Road hazards also sound like a cool idea. Would make it a bit ore frantic and challenging.

 

Other than those, It would be some other enemy that can attack the castles and harm the player.

Link to comment
Share on other sites

I played it on the Harmony cart a while today and noticed that the horizontal graphics (background and/or playfield?) bounce up and down. However, the sprites are nice and steady. I thought that might be something you'd want to know about.

 

Not sure why the background would bounce. Did it bounce for you in previous versions? Do you have the latest Harmony firmware update?

Link to comment
Share on other sites

I played it on the Harmony cart a while today and noticed that the horizontal graphics (background and/or playfield?) bounce up and down. However, the sprites are nice and steady. I thought that might be something you'd want to know about.

 

Not sure why the background would bounce. Did it bounce for you in previous versions? Do you have the latest Harmony firmware update?

He's right. Background always bounces.

Link to comment
Share on other sites

I played it on the Harmony cart a while today and noticed that the horizontal graphics (background and/or playfield?) bounce up and down. However, the sprites are nice and steady. I thought that might be something you'd want to know about.

 

Not sure why the background would bounce. Did it bounce for you in previous versions? Do you have the latest Harmony firmware update?

He's right. Background always bounces.

 

In this version only, or in the last version as well?

Link to comment
Share on other sites

081011.bin bounces, so does 081411.bin, but only the background.

 

Thanks. So, only the background bounces on both of those builds? Or does the background bounce on 081411.bin and everything (including the players) bounces on 081011?

 

Players seem fine, however on 081411.bin the game crashes on the Harmony as soon as the enemy knights appear on the screen, 081011 does not crash.

 

Darn it, that's very discouraging. It seems like it's one step forward and three steps back with this program. Does it crash and reboot to the title screen?

Link to comment
Share on other sites

Crashes to black screen, my game started this as well but the older builds work fine.

I found that it dislikes pfhpixel being set in some places, need to isolate why.

 

"but only the backgorund" is literal for both, so I meant that only the background was bouncing for those two.

 

However I do have good news! I've just saved 10% on my code by switching to GEIC...I mean placing all drawscreen and return calls to subroutines per bank.

; *****************************************************
; * BANK #
; *****************************************************

 bank #
 rem *** Bug fix for now
 temp1 = temp1

 rem *** By calling these two routines instead of inlining, you save lots of rom space
DrawBank#
 rem *** Set reflect for P0, calling drawscreen without setting REFP0 defaults P0 to facing right
 rem *** This fixes that problem, however REFP1 doesnt seem to work right now
 if Reflect then REFP0 = 8 else REFP0 = 0
 drawscreen
 rem by placing these in this order you benefit from the return below

RetBank#
 rem *** instead of placing returns all over your subroutines, place a goto RetBank# instead
 rem *** the savings add up really quick
 return

Replace the hash sign with each bank number, and place this at the start of each bank.

also you might just comment out my Reflect bit usage if not needed.

 

The RAM I have left over is the virtual player6x, player6y and the last 5 bits of NUSIZ6.

Would you entertain the idea of using the stack function to gain more ram space?

If your using a var which wont change often, say a var to know which wave your in, then push that to the stack, then pull when it's time to check it.

 

 Stack 200
 push WaveNum
 rem WaveNum is now in stack 199

 rem do some stuff

 rem retrieve WaveNum
 stack 199
 pull WaveNum

Edited by ScumSoft
Link to comment
Share on other sites

However I do have good news! I've just saved 10% on my code by switching to GEIC...I mean placing all drawscreen and return calls to subroutines per bank.

For sure! And if a bank has more than 2 functions in it you can make similar savings by using a dispatcher function in that bank, and just using a common gosub to enter the dispatcher from the calling bank.

 

I've been kicking around the idea of starting a "rom saving" thread. Definitely there are a number of different approaches one can take to squeezing the bytes.

  • Like 1
Link to comment
Share on other sites

Crashes to black screen, my game started this as well but the older builds work fine.

I found that it dislikes pfhpixel being set in some places, need to isolate why.

 

"but only the backgorund" is literal for both, so I meant that only the background was bouncing for those two.

 

I wonder if the background-bounce issue is related to switching over to bb11d (those two builds were compiled in d, while previous ones were compiled in bb11c)? I think I know what the crash issue is, though. I was trying to do something a little tricky during vblank to save some time in this build, since I was running late again. :roll:

 

However I do have good news! I've just saved 10% on my code by switching to GEIC...I mean placing all drawscreen and return calls to subroutines per bank.

; *****************************************************
; * BANK #
; *****************************************************

 bank #
 rem *** Bug fix for now
 temp1 = temp1

 rem *** By calling these two routines instead of inlining, you save lots of rom space
DrawBank#
 rem *** Set reflect for P0, calling drawscreen without setting REFP0 defaults P0 to facing right
 rem *** This fixes that problem, however REFP1 doesnt seem to work right now
 if Reflect then REFP0 = 8 else REFP0 = 0
 drawscreen
 rem by placing these in this order you benefit from the return below

RetBank#
 rem *** instead of placing returns all over your subroutines, place a goto RetBank# instead
 rem *** the savings add up really quick
 return

Replace the hash sign with each bank number, and place this at the start of each bank.

also you might just comment out my Reflect bit usage if not needed.

 

 

I'm not quite sure I'm savvy to what you're saying. In my program, I only draw my screens in the second bank, after returning from subroutines in banks 3-6 with "return otherbank" commands. So if I have a subroutine in bank 4 with a bunch of returns in it, are you recommending replacing my returns with "goto RetBank4" and then put a single "return otherbank" there to get back to my main drawing loop? Seems like it might save space, but also cost additional time, no?

 

 

The RAM I have left over is the virtual player6x, player6y and the last 5 bits of NUSIZ6.

Would you entertain the idea of using the stack function to gain more ram space?

If your using a var which wont change often, say a var to know which wave your in, then push that to the stack, then pull when it's time to check it.

 

 Stack 200
 push WaveNum
 rem WaveNum is now in stack 199

 rem do some stuff

 rem retrieve WaveNum
 stack 199
 pull WaveNum

 

I've poured over my RAM looking for something that could be pushed to the stack, but there doesn't seem to be anything viable. For instance the RAM address tracking "wavenum" is used persistently in the program since it acts as a table pointer for enemy data (AI steering, speed, attack strength, color, etc) that is used in every frame. All of the temp variables are used every frame as well and to maximize the available RAM, there are a lot of variables pulling double-duty to handle both display states and object properties. I mean, I know everyone always claims that they've done their darndest with allocation, but I've really squeezed! :)

 

I think I've come to the conclusion that pulling and pushing to the stack just doesn't seem like a natural fit for the pace of this gameplay, since even offscreen entities are constantly performing the same game tasks they perform on-screen and there is no genuine "break" in the action.

Edited by jrok
Link to comment
Share on other sites

I'm not quite sure I'm savvy to what you're saying. In my program, I only draw my screens in the second bank, after returning from subroutines in banks 3-6 with "return otherbank" commands.

Then your already optimized and won't greatly benefit from what I suggested then :)

Link to comment
Share on other sites

New Version:

 

  • This is more of a debug build with nothing much new in it. I'm mainly hoping that this version fixes the bug Scumsoft mentioned that causes Harmony to crash when the knight enemy enters the screen. I don't expect that this binary will fix the "background bounce", though, since I don't know what is causing it yet.
  • Fixed the missile0 flicker, so the arrow should be a stable black now, and show up more clearly on real hardware.
  • Fixed a bug that occasionally prevented the player from charging during Repair Phases.
  • Reduced some of the occasional instability that happens when a flying enemy and a castle are both on screen, but it's not totally squashed yet.
  • Fixed a bug that let you "catch" the Princess even if you weren't positioned at the topmost part of the road.

 

ChargeDPC_081611.bin

Edited by jrok
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...