Jump to content
IGNORED

Anyone thirsty for some PoP?


salstadt

Recommended Posts

You have a point. It might be nice to free up a little more headroom than the original title anyway, to give it somewhat of a feel like the recent console PoP games (that Ico-like nailbiting of making massive, flailing leaps and barely making it) but we'll do some tests and see how everyone feels about it.

I have to admit that I have never played any modern incarnations of PoP (I just read a quite negative about the PS2 version at my favourite reviewing website).

 

And probably I am just very conservative, but IMO the original version feels almost 100% realistic. "Flailing(sp?) leaps" sounds a bit like those comic like martial arts movies.

 

But since I am only providing the kernel, it's not solely my decission anyway. We should discuss in which direction we want to go.

Link to comment
Share on other sites

I'd suggest making everything background anyway.

Agreed.

 

BTW: The screen is only 30 pixel wide now (+2 pixel from the adjacent screens)

 

You guys might want to start with 12b - it's only 10 screens, and it has every type of player action required in the game at large.  

But some elements like gates, switches and both deadly traps (I don't know how they are called in English) seem to be missing.

 

On that note, what sort of screen limit do you think we'll be facing total?

Every screen should require much less than 100 bytes, so maybe we can do ~100. Probably much more with some compression and map reusage (I am always optimistic ;)). If an average level has 20 screens, there are no more than 280 of them.

 

Has anybody counted the total number?

 

What do you guys think about 2-player? Unless I'm mistaken, we can have two sprites and a ball, right? It would be pretty incredible if there was a co-op game. Or maybe sort of a race between players - start each screen, and the first person to reach the 'checkpoint' gets a point when the screen scrolls to the next one. Or maybe the players race to grab a sword. First person to get it can then go slash his/her opponent. I don't think we could have the most obvious 2-player game (fencing battles) because of the sprite limitations, but a co-op addition of the game, sans enemies would be really incredible.

Never thought about that, I'll leave that decision up to those who have to implement that mode.

Link to comment
Share on other sites

Good, I am waiting to see that mockup.

 

BTW: This is the missing 2.5D variation:

Here ya go, then :)

 

Still using ball for sword, so would require flicker for battles and a little trickery to get it to be the right color. Wouldn't be hard, I don't think.

 

I'll post something about memory restrictions with my kernel in a minute or two.

post-6060-1109015521_thumb.jpg

Link to comment
Share on other sites

I'll post something about memory restrictions with my kernel in a minute or two.

My setup is a lot more ROM-intensive than Thomas'. However, it is a lot less RAM-intensive (I think).

 

Basically, every unique screen would take about a page of data.

 

Figure a page for the kernel code plus 2+ pages for image data for objects ...leaves, conservatively, 10 'screens' per 4k bank.

 

By my rough count, level 1 has about 20 'screens' of which at least two are the same. So you could probably get all of level one in 8K.

 

However, I am using only 40 bytes of RAM, including variables for X and Y coordinates for players 1&2, the ball, and pointers for everything.

 

I am curious to know how much RAM you're using, Thomas :) And if you still are having issues with players crossing PF bands?

Link to comment
Share on other sites

However, I am using only 40 bytes of RAM, including variables for X and Y coordinates for players 1&2, the ball, and pointers for everything.

 

I am curious to know how much RAM you're using, Thomas :)  

Currently way too much.

 

But I will redesign (and unroll) the kernel. E.g. I currently the kernel consists out of 13 vertical separted areas, which all have their own color. But the colors are repeating every 4 areas, so I could save 9 bytes there (I could save all bytes here, if all levels get the same color).

 

Then I need 4 bytes for each area plus 8 pointers and 2 variables for the vertical position of the two players.

 

With 13 areas this would result into 13*4+3+8+2 = 65 bytes. Finally I can reduce the number of areas/floor by one and save 13 bytes: -> 52 bytes.

 

BTW: How will you handle collapsing platforms and switches?

 

And if you still are having issues with players crossing PF bands?

Currently not, but I am still wondering about using some of those valuable cyclec for other stuff, e.g. repostioning between the three floors. That might be used for some nice eye candy. :)

 

That would require some additional RAM for the pointers and the positions (4 bytes each).

Link to comment
Share on other sites

But the colors are repeating every 4 areas, so I could save 9 bytes there (I could save all bytes here, if all levels get the same color).

 

Then I need 4 bytes for each area plus 8 pointers and 2 variables for the vertical position of the two players.

 

With 13 areas this would result into 13*4+3+8+2 = 65 bytes. Finally I can reduce the number of areas/floor by one and save 13 bytes: -> 52 bytes.  

 

BTW: How will you handle collapsing platforms and switches?

 

And if you still are having issues with players crossing PF bands?

Currently not, but I am still wondering about using some of those valuable cyclec for other stuff, e.g. repostioning between the three floors. That might be used for some nice eye candy. :)

 

That would require some additional RAM for the pointers and the positions (4 bytes each).

I think what you came up with will probably work best. But who knows. :) I'm having fun, anyway ;)

 

I don't have a real great familiarity with PoP, so maybe someone else who does can clarify things for me (or maybe I should put in some time playing it :) - but based on my memory of the game, you take your sword out and put it away (and when you take it out, you can't run or jump...I think).

 

So I figured, taking into consideration the limitations of the 2600 joystick as well, that you could have the sword come out automatically when you enter a room with an (alive) enemy and have it be put away automatically when you enter a room with no enemies.

 

If that would work, then you could use the ball for whatever you wanted in rooms with no enemies. So I figured falling platforms/switches would be perfect for the ball, since they are the same color as the floor (i.e., the PF).

 

But maybe that wouldn't work.

 

You could just use the other player, of course, depending on how many objects are on the screen at a time.

 

Speaking of eye candy (repositioning inside the kernel would be REAL pretty :) here is another screen I mocked up just for fun :D

post-6060-1109021866_thumb.jpg

Link to comment
Share on other sites

I think what you came up with will probably work best.  But who knows. :)  

Exactly. It's still a bit early to decide.

 

I'm having fun, anyway ;)

Me too. :)

 

I don't have a real great familiarity with PoP, so maybe someone else who does can clarify things for me (or maybe I should put in some time playing it :) - but based on my memory of the game, you take your sword out and put it away (and when you take it out, you can't run or jump...I think).

I think that is right.

 

So I figured, taking into consideration the limitations of the 2600 joystick as well, that you could have the sword come out automatically when you enter a room with an (alive) enemy and have it be put away automatically when you enter a room with no enemies.  

That's also happening in the original.

 

If that would work, then you could use the ball for whatever you wanted in rooms with no enemies.  So I figured falling platforms/switches would be perfect for the ball, since they are the same color as the floor (i.e., the PF).

Yes, but you only have on ball, and there are often multiple falling platforms.

 

Speaking of eye candy (repositioning inside the kernel would be REAL pretty :) here is another screen I mocked up just for fun :D

Looking great. That's something my kernel couldn't do. :thumbsup:

 

I suppose we have to wait until we know how much ROM the animations would require and then decide how much ROM we can "waste" for the dungeon.

Link to comment
Share on other sites

If that would work, then you could use the ball for whatever you wanted in rooms with no enemies.  So I figured falling platforms/switches would be perfect for the ball, since they are the same color as the floor (i.e., the PF).

Yes, but you only have on ball, and there are often multiple falling platforms.

But the rooms with enemies are generally (always?) devoid of other objects, right? So you could use a ball for one falling platform and the second player for the other. Limits you to two per screen. How many rooms have more than two objects? A handful could probably be worked around (flicker or minor level redesign), more than that and another solution would probably be better.

Speaking of eye candy (repositioning inside the kernel would be REAL pretty :) here is another screen I mocked up just for fun :D

Looking great. That's something my kernel couldn't do. :thumbsup:

Hmmmm...I figured that room would be something your kernel could handle easily - now I'm curious!
I suppose we have to wait until we know how much ROM the animations would require and then decide how much ROM we can "waste" for the dungeon.

In my code I am writing the current frame of the prince image to RAM and then using a 'lda (),Y' read to grab it during the kernel - it doesn't really affect the kernel too much, but it means that no matter how many banks of ROM I need for the screen data, the Prince's data only needs to be in one place :)

Of course, that eats up 12 (currently, didn't Adam say the sprites were going to be 16 pixels tall?) bytes of RAM. Without doing that, my kernel is down to about 30 bytes of RAM.

 

What about that room can't your kernel handle? The curves?

Link to comment
Share on other sites

"You can also put your sword away by yourself, useful if you want to chicken out (if you're too slow, you'll get stabbed in the back then:)."

 

I think that might be difficult if a player approaches an enemy and tilts the stick too far down as they move right, only to disarm themselves in front of an enemy. I'd favor jut having the sword get drawn automatically when an enemy is approached (set either to specific screens, or pproximity to enemy) and then have the prince put it away again when he goes offscreen or kills the guy. You will never need to use the sword when there's no enemy, an you'll never need to put it away when you're in front of one, so why give the player that option at the expense of the controls. I'm all for having the fire button be an 'action button' that jumps, attacks, grabs items, etc. depending on where you are. Cntext sensitivity is what's going to make this game as fluid as possible.

 

- Adam

Link to comment
Share on other sites

But the rooms with enemies are generally (always?) devoid of other objects, right?

More or less. A bit of level redeign might be necessary.

 

Hmmmm...I figured that room would be something your kernel could handle easily - now I'm curious!

No, my kernel works exactly opposite to yours. It loads the PF data from RAM, not for every line, but for larger vertical areas.

 

In my code I am writing the current frame of the prince image to RAM and then using a 'lda (),Y' read to grab it during the kernel - it doesn't really affect the kernel too much, but it means that no matter how many banks of ROM I need for the screen data, the Prince's data only needs to be in one place :)

Clever, but the taller the prince get's, the more RAM you need. Plus the RAM for the enemy. Might become a real problem.

 

What about that room can't your kernel handle?  The curves?

Yup. Maybe I could use ROM pointers instead of RAM for some areas . But then I had to use (ind),y access and need one extra cycle for each load. And each pointer requires two bytes. And it would eat ROM space from the kernel bank.

Link to comment
Share on other sites

No, my kernel works exactly opposite to yours. It loads the PF data from RAM, not for every line, but for larger vertical areas.

How small a vertical area can it handle? Two lines? Three?

 

In my code I am writing the current frame of the prince image to RAM and then using a 'lda (),Y' read to grab it during the kernel - it doesn't really affect the kernel too much, but it means that no matter how many banks of ROM I need for the screen data, the Prince's data only needs to be in one place :)

Clever, but the taller the prince get's, the more RAM you need. Plus the RAM for the enemy. Might become a real problem.

Well, I'm not doing that for the enemy, since I figure that there will be fewer enemy animation frames (he doesn't put his sword away and run/jump/crouch, does he?)

And I thought Adam said that he was going to fit all the sprite animation frames into 8x16, so the most I would need is 16 bytes.

Yup. Maybe I could use ROM pointers instead of RAM for some areas . But then I had to use (ind),y access and need one extra cycle for each load. And each pointer requires two bytes. And it would eat  ROM space from the kernel bank.
Yeah, my kernel currently has zero free cycles in it! Those (ind),Y loads are tough to fit in.

 

Speaking of cycles and stuff, is there a faster way to display a variable-height missile/ball than this?

  lda BallHeight

 dcp BallY

 sbc BallHeight

 sta ENABL     ;+14

I've been racking my brains for the last two weeks trying to figure something out :)

Link to comment
Share on other sites

Speaking of cycles and stuff, is there a faster way to display a variable-height missile/ball than this?
  lda BallHeight

 dcp BallY

 sbc BallHeight

 sta ENABL     ;+14

I've been racking my brains for the last two weeks trying to figure something out :)

I think I'll post this in the programming forum.

Link to comment
Share on other sites

How small a vertical area can it handle?  Two lines?  Three?

Two lines.

 

Well, I'm not doing that for the enemy, since I figure that there will be fewer enemy animation frames (he doesn't put his sword away and run/jump/crouch, does he?)

Nope.

 

Speaking of cycles and stuff, is there a faster way to display a variable-height missile/ball than this?
  lda BallHeight

 dcp BallY

 sbc BallHeight

 sta ENABL     ;+14

I've been racking my brains for the last two weeks trying to figure something out :)

I suppose you need that for the sword, right?

 

So how about using the unused bit of the player colors?

  lda (ptrC0),y

 sta COLUP0

 asl

 sta ENAM0  ;+5!

That might (if the sword is not directly linked 1:1 to an animation) require some extra color tables, but saves a lot of cycles. And if you use adc #$fc instead of asl you can keep the carry set of you need that.

Link to comment
Share on other sites

I'll help out any way that I can...but kernal stuff is mostly over my head.

That's what I meant. vdub_bobby and/or I do the kernel and some basics and then other people (e.g. salstadt or Nathan for the graphics, you and others for coding etc.) can join the project and help finishing it.

 

Didn't you look for such a project? Interested?

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