Jump to content

Photo

Ninja Wall Jump game - WIP

homebrew ninja

219 replies to this topic

#126 iesposta OFFLINE  

iesposta

    River Patroller

  • 3,831 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Sun Jan 4, 2015 4:07 PM

Ice level? (Black, White & Gray)!

As it is now you have Fire colors, Earth colors, Easter colors...
[Psst. Elementals left would be Water = blues & greens, and Air. What color is air??]

#127 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Sun Jan 4, 2015 8:22 PM

An Ice section sounds cool, I'll try to add that!  I'm continuing to find bytes here and there to save, so attract mode + VOX saving are looking promising!

 

In the meantime, here is the instruction sheet I'm planning, any feedback? 

 

FRONT COVER

wall_jump_ninja_instructions.jpg

 

INSIDE

wall_jump_ninja_instructions2.jpg  wall_jump_ninja_instructions3.jpg

 

BACK COVER

wall_jump_ninja_instructions4.jpg

 



#128 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 6,215 posts
  • Location:Canada

Posted Sun Jan 4, 2015 11:38 PM

I like it. Simple and to the point. I'm the type of person who doesn't like to read a lot of instructions. I really liked how you laid out the 'hold' and 'tap' in the illustration. My eye caught that right away. I find it pleasing to pick out the information like that rather then read a few sentences. I like the Ninja on the back cover too.

 

 

All in all excellent job. The action is really well suited for the 2600, and one of the funniest games I've played in a while. Even though I like programming and collecting for the 2600 I rarely play the games much. So, great job. :)



#129 iesposta OFFLINE  

iesposta

    River Patroller

  • 3,831 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Sun Jan 4, 2015 11:58 PM

For clarity under: How to win.
If you have an AtariVox, AtariVox+ or Savekey, your...

All three have the chip to save, no batteries required.

#130 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 5, 2015 1:20 AM

For clarity under: How to win.
If you have an AtariVox, AtariVox+ or Savekey, your...

All three have the chip to save, no batteries required.

Thanks, I'll adjust that text.

 

OK so here's RC5, this is the result of a TON of continued optimization and work on the game, hopefully I didn't break anything.

New in this version: 

  1. Attract mode!  wait ~15 seconds on the title screen and the game will go into attract mode with a white ninja (and walls), who plays the game on his own.  he won't overwrite your high score tho ;)
  2. Background colors change every 30 rooms!  I might adjust this number for the final release, but the logic is in and working.
  3. Tons of code optimization in order to include the VOX save routines (not actually being called yet), and the above features.

 

Please let me know if you find any crazy bugs, on my to-do list to finish the game is:

  1. adjust movement tables for PAL50 version to match NTSC speed
  2. add VOX save/load logic and test it
  3. finish the instruction manual
  4. make a cartridge :)

 

:arrow: All-in-1 ZIP Attached File  wall_jump_ninja_20150104_RC5.zip   8.91KB   146 downloads

:arrow: NTSC: Attached File  wall_jump_ninja_20150104_RC5_NTSC.bin   4KB   187 downloads

:arrow: PAL60: Attached File  wall_jump_ninja_20150104_RC5_PAL60.bin   4KB   78 downloads

:arrow: PAL50: Attached File  wall_jump_ninja_20150104_RC5_PAL.bin   4KB   80 downloads

 

 

Some kinda interesting stats on the latest build:

RAM Free: 26 bytes

Code size: 3,519 bytes(PAL), 3,514(NTSC)

Data size: 545 bytes

ROM Free: 28 bytes (PAL), 33 bytes (NTSC)


Edited by walaber, Mon Jan 5, 2015 1:23 AM.


#131 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 6,215 posts
  • Location:Canada

Posted Mon Jan 5, 2015 1:34 AM

I find the pulsating background really hard on the eyes and distracting. Can you keep it stationary as before and change it every few rooms?



#132 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 5, 2015 2:09 AM

It's pulsating? That shouldn't be happening!

#133 mzeroxx69 OFFLINE  

mzeroxx69

    Space Invader

  • 24 posts

Posted Mon Jan 5, 2015 6:48 AM

It's pulsating? That shouldn't be happening!



#134 mzeroxx69 OFFLINE  

mzeroxx69

    Space Invader

  • 24 posts

Posted Mon Jan 5, 2015 6:54 AM

yes with stella both atract mode and game play is pulsateing ... also sounds are messed up .. also i fall off bottom of the screen and apear at the top again.

#135 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 5, 2015 9:24 AM

yikes!  Looping vertically on the screen is intended when LAVA is turned off (which is the default unless you flip a difficulty switch to Advanced), in previous builds LAVA was defaulting to ON.

 

OK, the pulsating and audio issues should be fixed in this build:

:arrow: All-in-1 ZIP: Attached File  wall_jump_ninja_20150105_RC6.zip   8.93KB   133 downloads

:arrow: NTSC: Attached File  wall_jump_ninja_20150105_RC6_NTSC.bin   4KB   146 downloads

:arrow: PAL60: Attached File  wall_jump_ninja_20150105_RC6_PAL60.bin   4KB   71 downloads

:arrow: PAL: Attached File  wall_jump_ninja_20150105_RC6_PAL.bin   4KB   64 downloads

 

 



#136 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 5, 2015 1:56 PM

For reference, the root of my "pulsating" bug came from my misunderstanding of how the CMP operator works...
 

Compare Instruction Results
 
Compare Result       N  Z  C
A, X, or Y < Memory  *  0  0
A, X, or Y = Memory  0  1  1
A, X, or Y > Memory  *  0  1
 
* The N flag will be bit 7 of A, X, or Y - Memory
 

 
Basically I didn't know about the "*" there, and I was using BMI to branch based on the comparison, which works for some numbers but not others.  This makes me realize I probably have some other fragile areas in my code that are relying on the N flag when they really shouldn't be.
 
in other news I implemented updated movement tables for PAL, so it plays at a comparable speed to NTSC now.  It's a bit choppier, but pretty much plays the same.


Edited by walaber, Mon Jan 5, 2015 1:58 PM.


#137 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Wed Jan 7, 2015 1:12 AM

I squeezed in code to animate closed the wall openings after you pass through them, which I think is a nice little bit of polish that was well worth it.  I may also have squeaked in a tiny easter egg as well, but that shall remain a secret :)

 

:arrow: Progress video

 

 

Today I also put in the actual code to call the VOX routines, and of course I ran out of ROM space and had to optimize yet again.  So I bit the bullet and optimized my movement tables to use much less data.  I was worried that the additional code I'd need to unpack the data would offset the savings, but it was actually a new gain both on the data side and also on the code side.  

 

For those curious, I basically have a little counter variable that counts up and repeats every 4 frames (0,1,2,3,0,1,2,3,0,1,2,3,etc).  I use this variable as a lookup into data tables to decide how much to move each frame for anything that animates, etc.  Every few times the variable loops I increment another offset that moves me deeper into the table.  

 

Anyway, this means that I had movement tables that looked something like this:

        .byte #1, #0, #0, #0
        .byte #1, #0, #1, #0
	.byte #2, #1, #1, #1
	.byte #2, #1, #1, #1
	.byte #3, #1, #2, #1

As you can see I arranged it in 4-byte sections in order to understand visually how things will move.  But looking at the data I realized I never move something more than 3 pixels in a given frame.  This means I could combine all 4 values for a single row into just 1 byte, by using 2 bits per value:

        .byte #%01000000 	;#1, #0, #0, #0
	.byte #%01000100	;#1, #0, #1, #0
	.byte #%10010101	;#2, #1, #1, #1
	.byte #%10010101	;#2, #1, #1, #1
	.byte #%11011001	;#3, #1, #2, #1

In the above example this saves 15 bytes!  Also the code to unpack this is actually pretty simple.  In several places I have code that looks like this:

        LDY PlayerVelSection
	LDA (PlayerVelPtr),Y
	JSR GetMaskedMovementValue

The first two lines load the specific byte from my table, and then I call my "GetMaskedMovementValue" subroutine, which will take the value in A, and based on the current frame counter, mask off the unnecessary data and shift it down into a regular integer that you can use in a math operation:

;-------------------------------------------------------
; INPUTS: A = unmasked movement value.
; OUTPUTS: A + TempVar = properly unmasked value.
;-------------------------------------------------------
GetMaskedMovementValue	SUBROUTINE

	LDX PlayerVelFrame
	AND FrameMask,X

CalcLoop
	DEX
	BMI CalcDone
	LSR
	LSR
	JMP CalcLoop
CalcDone
	STA TempVar

	RTS

"PlayerVelFrame" is the 0-3 looping counter, and "FrameMask" is a sequence of 4 bytes:

FrameMask
	.byte #%00000011, #%00001100, #%00110000, #%11000000

That loop at the end shifts the masked bits down to the right so they can be interpreted as a regular old number.  Anyway I thought people might find that interesting.  In total this saved me ~50 bytes, which was enough for the above improvements + VOX save/load code.

 

Currently I have 2 bytes of ROM free, and 24 bytes of RAM free :)



#138 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 6,215 posts
  • Location:Canada

Posted Wed Jan 7, 2015 1:24 AM

It's good you got everything in now! I'm sure you could still save several bytes of ram, but the question is what would you do with it?



#139 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,630 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Wed Jan 7, 2015 7:41 AM

RAM can usually be used to reduce ROM requirements. 



#140 Brian O ONLINE  

Brian O

    Stargunner

  • 1,642 posts
  • [THIS SPACE FOR RENT]

Posted Wed Jan 7, 2015 11:20 AM

Looking good!

#141 Jinroh OFFLINE  

Jinroh

    Dragonstomper

  • 671 posts
  • Catgirl Maid Lover

Posted Wed Jan 7, 2015 11:45 AM

Oh very nice video, the closing effect does add a nice polished touch. :) Very cool, thanks for the code snippet too.



#142 roryjr OFFLINE  

roryjr

    Chopper Commander

  • 236 posts

Posted Wed Jan 7, 2015 3:22 PM

The manual mentions difficulty switches but does not mention what they do.



#143 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Wed Jan 7, 2015 6:36 PM

The manual mentions difficulty switches but does not mention what they do.

Thanks, I'll definitely add in a description there.  Hopefully it's pretty apparent on the title screen, but I think adding that to the manual is a good call.



#144 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 6,215 posts
  • Location:Canada

Posted Wed Jan 7, 2015 8:45 PM

RAM can usually be used to reduce ROM requirements. 

I wrote ram but meant rom. I was typing while watching TV. :)



#145 Mef OFFLINE  

Mef

    Chopper Commander

  • 163 posts
  • Location:Kraków, Poland

Posted Sun Jan 11, 2015 3:22 PM

Nice game!

Still lacks some kind of a proper end sequence (perhaps fade to red and return to menu screen?), but other thank that it's a very solid effort.

One thing that bugs me tho, is that the titular Ninja looks too much like a plain stickfigure.

 

You've set up some pretty harsh limitations with 8x8 monochrome, but here's 2 of my attempts to remake the 3 sprite frames ( top row - jump, middle row - freefall, bottom row - clinging to the wall).

 

Ninja small.gif

Ninja.gif

 

If you like these, then by all means, feel free to use them.

The one on the left would look particularily good if you could have the topmost pixels' row in red, to simulate a bandana!



#146 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 12, 2015 1:49 AM

Mef- thanks for the feedback and the time to draw some nice looking sprites!  I'm not sure I want to change the sprites, although I do agree that yours look less "stick-figure-like".  I've made a final build tonight, and already made the instruction manual as well, so I think I'll stick with my own art.

 

Here is what I hope is the final release candidate: RC7.

New Stuff:

* AtariVox+ / SaveKey save and load is working!  Hold FIRE on left controller when launching the game to reset the high scores (actually it just skips loading them).

* A little bit of background music for the title screen.  Please excuse this, but I think it sounds better than nothing. Since I have no ROM space left, I re-interpreted my background color table as music frequencies, and did a little fiddling with adjusting pace and volume, and it didn't seem too terrible so I put it in!

 

Fixes:

* sound no longer plays in attract mode

* fixed a few scanline count errors

 

 

:arrow: All-in-1 ZIP: Attached File  wall_jump_ninja_20150111_RC7.zip   9.26KB   106 downloads

:arrow: NTSC: Attached File  wall_jump_ninja_20150111_RC7_NTSC.bin   4KB   174 downloads

:arrow: PAL60: Attached File  wall_jump_ninja_20150111_RC7_PAL60.bin   4KB   112 downloads

:arrow: PAL50: Attached File  wall_jump_ninja_20150111_RC7_PAL.bin   4KB   120 downloads

 



#147 PFL OFFLINE  

PFL

    Dragonstomper

  • 831 posts
  • Location:Advanced Tech and Research Institute

Posted Mon Jan 12, 2015 4:56 AM

I wonder, is it possible to make the PAL background colours more closely match the NTSC colours?  I know the PAL palette is more limited so I'm not sure if you can.  Just thought I'd ask. :)

 

PS:  Fun game. :)



#148 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Mon Jan 12, 2015 10:45 PM

I wonder, is it possible to make the PAL background colours more closely match the NTSC colours?  I know the PAL palette is more limited so I'm not sure if you can.  Just thought I'd ask. :)
 
PS:  Fun game. :)


I've matched them according to the conventions others have come up with... But maybe a little hand-adjusting wouldn't hurt. Also after playing on a TV I think I need to brighten up some of the backgrounds anyway, it's hard to see the ninja and the walls in front of some of the darker hues on the bottom of the screen.

#149 walaber OFFLINE  

walaber

    Chopper Commander

  • Topic Starter
  • 159 posts

Posted Fri Jan 16, 2015 12:00 AM

Alright, I think I'm happy to call this version 1.0 of Wall Jump Ninja!  Please let me know if you find any bugs, otherwise consider this game complete.

 

Here's a video of the final version:

 

And a few screenshots for good measure (I adjusted the BG colors a bit in this final version, and improved the PAL color conversions in several places)

wall_jump_ninja_5.png  wall_jump_ninja_1.png  wall_jump_ninja_9.png  wall_jump_ninja_11.png

wall_jump_ninja_LABEL_B_previs_small.jpg  wall_jump_ninja_instructions_reformatted_0.jpg  wall_jump_ninja_instructions_reformatted_1.jpg

 

...and of course, the binaries:

:arrow: All-in-1 ZIP: Attached File  wall_jump_ninja_20150115_v1_0.zip   9.27KB   242 downloads

:arrow: NTSC: Attached File  wall_jump_ninja_20150115_v1_0_NTSC.bin   4KB   282 downloads

:arrow: PAL60: Attached File  wall_jump_ninja_20150115_v1_0_PAL60.bin   4KB   95 downloads

:arrow: PAL: Attached File  wall_jump_ninja_20150115_v1_0_PAL.bin   4KB   84 downloads

 

If all goes according to plan, the game will be available on cartridge in the AA store in the near-ish future :)



#150 ZackAttack OFFLINE  

ZackAttack

    Dragonstomper

  • 754 posts
  • Location:Orlando, FL US

Posted Fri Jan 16, 2015 12:29 AM

Well done. This game is a lot of fun. I suck at it though. Am I the only one who thinks the ninja looks like he is pooping when he is sliding down the wall? Maybe it's just the lack of sleep...







Also tagged with one or more of these keywords: homebrew, ninja

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users