Jump to content
IGNORED

Powercore [WIP]


Recommended Posts

  • 3 weeks later...

Update: Each stripe can have its own color scheme now. An the floors can move independently.

floors1-16.gif.8a6163af4683fe78778c88d571f31bac.gif

@Silvio Mogno Yes, it looks fine so far. But it's still a prototype, it's a lot of work to make a finished game out of this.

@LatchKeyKid Yes, no playfield registers are used. There're 20 independent subroutines and each of them is changing the background color at another horizontal position. To camouflage this, the ball sprite is set on top of this.

 

Any hints how moving floors could be used in the game?

  • Like 8
Link to comment
Share on other sites

50 minutes ago, Lazycow said:

Any hints how moving floors could be used in the game?

At least as a bonus game or other part of the game: the typical „get at the top of the screen but don’t fall and die“. You start a the bottom and screen moves down while you must reach the top. 

  • Like 1
Link to comment
Share on other sites

On 9/13/2024 at 12:39 PM, Lazycow said:

@LatchKeyKid Yes, no playfield registers are used. There're 20 independent subroutines and each of them is changing the background color at another horizontal position. 

Have you thought about less subroutines which are running within some cycle ranges?

On 9/13/2024 at 12:39 PM, Lazycow said:

Any hints how moving floors could be used in the game?

If they move at different speeds, they could form a changing pattern. And your goal would be to climb up without being pushed from the current platform from the platform above.

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

On 9/16/2024 at 6:37 PM, Thomas Jentzsch said:

Have you thought about less subroutines which are running within some cycle ranges?

Not until now... :) But how? I came up with this:

ldx delayValue ;(3)
lda $10FF,x    ;(4+)

...with delayValue=0, it will take 7 cycles, and with delayValue<>0, it should take 8 cycles.

But I don't have 7/8 cycles available in the kernel(s) right now. I couldn't find a way to use some existing opcode for a variable delay, to speed it up.

 

About the leveldesign with moving floors: I like the idea of repeating floor moving patterns. But including a challenge is difficult: You can be pushed down, but falling isn't harmful. A time limit would work, though, yes! Maybe not with a counter, but maybe a bouncing shot that's moving up or a robot that is following you. Cool! Anything else?

  • Like 1
Link to comment
Share on other sites

21 minutes ago, Lazycow said:

Not until now... :) But how? I came up with this:

ldx delayValue ;(3)
lda $10FF,x    ;(4+)

...with delayValue=0, it will take 7 cycles, and with delayValue<>0, it should take 8 cycles.

But I don't have 7/8 cycles available in the kernel(s) right now. I couldn't find a way to use some existing opcode for a variable delay, to speed it up.

I am using indirect jumps. These are jumping to NOP #imm ($80) sequences (with a final standard NOP). That way you can delay in multiple, single cycle steps.

 

And my kernels are not using WSYNC. So I only have to setup (using a table) and execute this jump once per block (floor).

21 minutes ago, Lazycow said:

About the leveldesign with moving floors: I like the idea of repeating floor moving patterns. But including a challenge is difficult: You can be pushed down, but falling isn't harmful. A time limit would work, though, yes! Maybe not with a counter, but maybe a bouncing shot that's moving up or a robot that is following you. Cool! Anything else?

Maybe the floor could slowly scroll down. With some water, fire, spikes... below. That would act as a timer replacement. But maybe then the game would become to hard, depending on how much you can fall down.

  • Like 1
Link to comment
Share on other sites

Yes, the prototype is written in assembler. (assembler only)

 

Yes, jmp (x) is faster and more flexible, but I cannot use it, because the preparation of the jump vector would be too much overhead.

But your jmp trick inspired me, I came up with something else:

lda delayValue ;(3)
bne .continue  ;(2+)
.continue:

A 5/6 cycle delay might fit in some of the 20 kernel subroutines.

 

And I made a test, using a bonus level like timer seems to be challenging enough. I might use a bouncing shot instead of a timer.

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