Jump to content
IGNORED

Uncle Hairy's Nosehair


atari2600land

Recommended Posts

I'm wondering whether I should change the point system so the score gets higher (to make use of all four digits if you're a really good nosehair trimmer.) I got a little over 500 points in this version, where you get 2 points for nosehair cutting and ten points for each box you get. I don't know whether I'll keep the nosehair cutting points in because you can just keep pressing fire over and over again and still get points. This is why I need feedback. I know it'd be hard to give it when I'm constantly changing everything, so I won't touch it for a few days so you can give feedback on this latest version.

nosehair23.bin

Link to comment
Share on other sites

I got 597 points in the last version (without staying under the nose and cutting).

 

Is this a bug? When you move horizontally to the right, at some point after the last digit, the scissors move up one scanline!

 

Also, if you get 2 or 10 points, why can I see odd scores for some at times? It seems that sometimes the score jitters a bit while increasing.

 

9 hours ago, atari2600land said:

I don't know whether I'll keep the nosehair cutting points in because you can just keep pressing fire over and over again and still get points. This is why I need feedback.

My ideas:

 

- The whole action happens in the left side of the playfield. I think that the box should appear in the right half of the playfield to force the player to move away of the hair and use the whole screen.

 

- In order to be tempted to go for the box, it should give more than score. I think that it could slow down the hair growth.

 

- The demon should follow the player (at a lower speed, but increasing as time passes) and move arround the hair area to protect it, but it should also run for the box (at full speed) and steal it.


- Currently, while the demon touchs you, the hair grows faster. It should happen something more dramatic, like throwing you away from the nose to a random place at the right side of the screen.

 

That's for the moment.

Link to comment
Share on other sites

Question: Why does this subtract one point?

        sed             ; turn on decimal mode
        clc
        lda Score+1     ; Score+1 holds the Tens and Ones digits
        sbc #0            ; subtract ONE, not zero.
        sta Score+1
        lda Score       ; Score holds the Thousands and Hundreds digits
        sbc #0          
        sta Score       ;
        cld             ; turn off decimal mode       

 

The whole reason I made the game subtract two points for demon touching and not one was because of this. I was angrily thinking that I had done something wrong with CXCLR, so I spent an hour trying to move it various places but without luck. How does telling the game to subtract 0 actually subtract 1 (like in line 4 of my example here.)

Link to comment
Share on other sites

29 minutes ago, atari2600land said:

Question: Why does this subtract one point?


        sed             ; turn on decimal mode
        clc
        lda Score+1     ; Score+1 holds the Tens and Ones digits
        sbc #0            ; subtract ONE, not zero.
        sta Score+1
        lda Score       ; Score holds the Thousands and Hundreds digits
        sbc #0          
        sta Score       ;
        cld             ; turn off decimal mode       

 

The whole reason I made the game subtract two points for demon touching and not one was because of this. I was angrily thinking that I had done something wrong with CXCLR, so I spent an hour trying to move it various places but without luck. How does telling the game to subtract 0 actually subtract 1 (like in line 4 of my example here.)

 

When the carry flag is clear on subtraction, then it's -1 more.

Same thing, when the carry flag is set on addition it's +1 more.

So, normally you'd go...

 

    sec
    lda Score+1
    sbc #1        ; subtract one, taking into account the carry
    sta Score+1
    lda Score
    sbc #0		  ; subtract 0 but also take into account the carry from the previous subtraction
    sta Score

Incidentally, it is convention that variables in 6502 programming are little-endian, just like the processor.

So, you should really have the ones and tens in "score", and the hundreds and thousands in "score+1"

 

 

Edited by Andrew Davie
Link to comment
Share on other sites

Just now, atari2600land said:

Thanks!

I need to use 'sed' instead of 'sec' though because the score is dependent on being base 10. I tried 'sec' and it didn't display the correct digit.

I'll change the scores around.

You need "sed" to do the addition/subtraction in decimal mode.

You need the "sec" to do the subtraction properly. You need both.

 

Link to comment
Share on other sites

But this works okay, though:


        sed
        lda Score+1
        sbc #1        ; subtract one, taking into account the carry
        sta Score+1
        lda Score
        sbc #0          ; subtract 0 but also take into account the carry from the previous subtraction
        sta Score
        cld             ; turn off decimal mode       

 

(I can't change the scores around, they'll just have to be that way. I'll remember the next time I program something.)

Link to comment
Share on other sites

You're relying on the fact that whatever code that ran previous to your score subtraction just happened to set the carry flag. If you know that the previous code will always set carry, then that's fine. If the previous code will sometimes will clear carry and sometimes set carry, then you'll have an issue; your subtraction code will sometimes remove 2 from the score instead of 1.

Link to comment
Share on other sites

So I should do this?


        sed
        sec
        lda Score+1
        sbc #1        ; subtract one, taking into account the carry
        sta Score+1
        lda Score
        sbc #0          ; subtract 0 but also take into account the carry from the previous subtraction
        sta Score
        cld             ; turn off decimal mode                
    

Link to comment
Share on other sites

Just now, atari2600land said:

So I should do this?

 


        sed
        sec
        lda Score+1
        sbc #1        ; subtract one, taking into account the carry
        sta Score+1
        lda Score
        sbc #0          ; subtract 0 but also take into account the carry from the previous subtraction
        sta Score
        cld             ; turn off decimal mode                
    

 

Yes, but only if your units/tens is in "score+1".

Otherwise, you should do "Score" first, then "score+1".

Always do the low part first, then the high part.

The code above is for your original "big-endian" storage format.

If you switch to "little-endian" then "score" first, then "score+1"

 

Link to comment
Share on other sites

Here’s a suggestion, though implementation might exceed 2K:

 

When the scissors cut the hair, the whole thing disappears rather than from the location of the cut. What’s needed is an additional tool that can be earned after achieving a certain arbitrary score. 
 

At that point, scissors would be replaced by tweezers which would indeed PLUCK the entire hair (ouch). The “demon” would need to be faster to make the game more challenging once the tweezers are acquired.

 

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