Jump to content
IGNORED

K.O. Cruiser - my first homebrew


Devin

Recommended Posts

I have been quite productive - mostly thanks to the help I got in the Programming Forum.

 

Anyway, this version is still "nerfed" for testing, but is pretty much complete.

  • Added a title screen. The background music was the old knockdown music, but slowed down. I will make something a tad more interesting. The difficulty feature is not yet implemented.
  • New knockdown music
  • Added a You Win screen
  • Added a sad Game Over screen
  • New background for Major Concussion
  • Major Concussion's cannon punch cannot be blocked or dodged (and will eventually will be a guaranteed knockdown). However, before he throws it, he starts laughing (yes, that's a laugh sound :) ). You can punch him and stop the super.

I will now work on the last two boxers for the game. Afterward, I can work on the final difficulty settings and, then, well, I guess I am finally done!

 

EDIT: I just uploaded a fixed binary. Before, I made a last-minute mistake and I forgot to set a variable to check if the button was released. As a result, it zipped through the Game Over screen before you can see it.

post-17256-1231939221_thumb.png

post-17256-1231939225_thumb.png

post-17256-1231939246_thumb.png

post-17256-1231939251_thumb.png

post-17256-1231939254_thumb.png

KO_Cruiser_WIP_2009_01_14_fix.bin

Edited by Devin
Link to comment
Share on other sites

Just got to try this. Impressive!

 

I have a few questions.

1) If you get knocked down, is there a way to get back up? I tried a few combos of buttons and the stick, and didn't get anywhere

2) Would you consider adding music to the Game Over screen? That might be a good "small addition".

3) Do you have any consideration to add the name of the boxer to the screen (i.e. Round 1: Dip Stick)? This isn't anything I'm really pushing for, but I thought I'd throw it out there to see your thoughts.

 

Overall, very impressive, and handles well.

 

-John

Link to comment
Share on other sites

This just keeps getting more and more impressive. :thumbsup: There's nothing quite as satisfying as pulling off a multi-punch combo!

 

A few notes:

  • For testing purposes, is there a way to select any boxer?
  • Reset and Select don't seem to do anything during the game. I can't cancel out and get back to the title screen.
  • It'd be nice to be able to use the joystick to select a skill level at the title screen and start the game.
  • I agree about having some sort of text announcing the opponent's name - that would be a nice addition.
  • I also agree about having a way to get back up/help you recover. Just maybe hitting the fire button really fast to rebuild your health.
  • Pushing straight up (forward) while holding fire doesn't appear to do anything. Perhaps it could be used to "tie up" the other boxer.
  • Ring girls? :D
  • After defeating an opponent, it'd be great to see the player stick his hands in the air and jump around (á la Rocky).
  • Any chance of AtariVox support? How cool would a ring announcer's voice be! High score/progress saving would also be nice. (If you don't have an AtariVox and USB Interface, I'd be glad to loan you mine for the duration of development.)

Keep up the great work!

Link to comment
Share on other sites

For testing purposes, is there a way to select any boxer?

I just reassemble it! :P ... but I see your point. The next version will be hackable again.

 

Reset and Select don't seem to do anything during the game. I can't cancel out and get back to the title screen.

I haven't hooked them in yet. :(

 

It'd be nice to be able to use the joystick to select a skill level at the title screen and start the game.

But what about that poor Select Switch.... doesn't it need love too?

 

I agree about having some sort of text announcing the opponent's name - that would be a nice addition.

That would be cool. The bank I use for the title's and main loops has about $350 left. I got the 48-pixel trick to work. Is there a way to use indirect addressing for the 48 pixel and still keep in the time constaints?

 

I also agree about having a way to get back up/help you recover. Just maybe hitting the fire button really fast to rebuild your health.

The button is used to recover, but i don't give any visual indication as of yet.

 

Pushing straight up (forward) while holding fire doesn't appear to do anything. Perhaps it could be used to "tie up" the other boxer.

In the Commodore 64 version, that would "bump" the opponent. However, I don't know if it is really needed. I can tie up+button to block.

 

After defeating an opponent, it'd be great to see the player stick his hands in the air and jump around (á la Rocky).

That is very doable - actually quite easy. I have the room in the player buffer for a victory image - and the "You Win" macro can be changed.

 

Any chance of AtariVox support? How cool would a ring announcer's voice be! High score/progress saving would also be nice. (If you don't have an AtariVox and USB Interface, I'd be glad to loan you mine for the duration of development.)

The banks are getting a tad full. I have some space in the sound bank. I might be able to after everything else is done, but, I am not too optimistic. I am using the four banks as follows: bank 0 is for the title/win/lose screens and main program loops. Bank 1 is for the macro engine and the various computer scripts. Everything is controlled by the macros - and it gives some nice flexilibity. Bank 3 is the fight screen and main graphics. Bank 4 is sound. I call it during overscan. It has some room left - the sounds don't take much room. The jazzy fight music is about 22 bytes.

Link to comment
Share on other sites

1) If you get knocked down, is there a way to get back up? I tried a few combos of buttons and the stick, and didn't get anywhere

Mashing the button will do the trick, but I don't have a nice visual indication. I will make the player's color flash and him twitch a bit

 

2) Would you consider adding music to the Game Over screen? That might be a good "small addition".

I need to think of a sad tune... and I am not musically gifted! I'm sure when I try to come up with a better title song, I will create a melody, that when played at a lower octave, will be quite depressing.... :)

 

3) Do you have any consideration to add the name of the boxer to the screen (i.e. Round 1: Dip Stick)? This isn't anything I'm really pushing for, but I thought I'd throw it out there to see your thoughts.

I'm not to optimistic I can make that fit. I need to check into a 48-pixel trick using indirect addressing.

Link to comment
Share on other sites

I agree about having some sort of text announcing the opponent's name - that would be a nice addition.

That would be cool. The bank I use for the title's and main loops has about $350 left. I got the 48-pixel trick to work. Is there a way to use indirect addressing for the 48 pixel and still keep in the time constaints?

 

It is possible to draw a 48-pixel sprite using indirect indexed addressing. Here is some code that I used in Juno First for displaying the score. It assumes there are six pointers (SCORE+0, SCORE+2, ...) that point to the score sprite data.

 

; Set Sprite Positions For 48-pixel Score
ScorePosition
 sta WSYNC; [0]
; Set Line Counter (assume score is 6 pixels high)
 lda #5		  ; [0] + 2
 sta LINE		  ; [2] + 3
; Set Delay and Three Sprite Copies
 lda #3		  ; [5] + 2
 sta VDELP0	  ; [7] + 3
 sta VDELP1	  ; [10] + 3
 sta NUSIZ0	  ; [13] + 3
 sta NUSIZ1	  ; [16] + 3
; Set Score Colour
 lda #WHITE	 ; [19] + 2
 sta COLUP0	 ; [21] + 3
 sta COLUP1	 ; [24] + 3
; Clear Any Sprite Reflections
 lda #%00010000; [27] + 2
 sta REFP0		 ; [29] + 3
 sta REFP1		 ; [32] + 3
; Position Sprites
 sta HMP1			 ; [35] + 3
 sta RESP0		 ; [38] + 3 = 41
 sta RESP1		 ; [41] + 3 = 44
; Fine Tune Position of P1
 sta WSYNC	   ; [0] 
 sta HMOVE		; [0] + 3

; Preload First Score Digit
ScoreKernel
 ldy LINE
 lda (SCORE+0),Y
 sta GRP0
 sta WSYNC		 ; [0]
; Begin Displaying Score
 jmp StartScore	 ; [0] + 3

; Main Score Loop
ScoreLoop
; Fetch Current Line
 ldy LINE				; [62] + 3
 SLEEP 6				  ; [65] + 6
; Display First 3 Digits
 lda (SCORE+0),Y   ; [71] + 5
 sta GRP0			   ; [0] + 3	> 54
StartScore	
 lda (SCORE+2),Y   ; [3] + 5
 sta GRP1			   ; [8] + 3	< 42
 lda (SCORE+4),Y   ; [11] + 5
 sta GRP0			   ; [16] + 3	< 44	
; Pre-fetch Remaining 3 Digits
 lax (SCORE+6),Y   ; [19] + 5
 lda (SCORE+8),Y   ; [24] + 5
 sta TEMP			   ; [29] + 3
 lda (SCORE+10),Y ; [32] + 5
 tay					  ; [37] + 2
 lda TEMP			   ; [39] + 3
; Display Remaining 3 Digits
 stx GRP1			   ; [42] + 3	> 44 < 47
 sta GRP0			   ; [45] + 3	> 46 < 50
 sty GRP1			   ; [48] + 3	> 49 < 52
 sta GRP0			   ; [51] + 3	> 52 < 55
; Update Counter
 dec LINE			   ; [54] + 5
 bpl ScoreLoop	   ; [59] + 2/3

; Clear Sprite Data
 lda #0				   ; [61] + 2
 sta GRP1		; [63] + 3
 sta GRP0		; [66] + 3
 sta GRP1		; [69] + 3

Edited by cd-w
Link to comment
Share on other sites

Just tried this out on Stella emulator. Very cool! The only thing I'd like more would be if it had music similar to the NES Tyson's Punchout, specifically the training music. Not sure how do-able that would be on the 2600, but that music just was so fun and catchy. Can't wait to get this on a cart!

Link to comment
Share on other sites

Okay, I'm responding as both a boxing nerd and an Atari nerd.

 

  • First of all, I think that from both a technical and creative standpoint, the game is outstanding. The use of color and shape is top notch, and the presentation in general is polished and professional. Besides that, the overall rhythm of the game is near perfect, with a real tension that I think could be enhanced by more use of sound.
  • The A.I. and automata jibes pretty good, although I think the "expectation" of certain behaviors might need to be counter-balanced. There's a bit of a top-down space invaders feel to things right now, where the opponent acts as a moving boundary. As others have suggested, a shove function might help to make the game feel more physical. Ring generalship and imposing your will is part of boxing, and it would be nice to have a feature that simulates moving your opponent into a place you want him to be in (of course, the opponent should be able to do this as well).
  • It may be a little late in the game to experiment wih something like this, but what if punches were activated when you "released" the fire button, rather than when you rocked the joystick left or right with the button. The notion of having to lock in place when you punch seems counter intuitive to me... it's sort of like the old boxing axom "letting your hands go." More fluid movement might equal more nerf-free fun. You could even "store up" a punch this way, differentiating between jabs and power punches by the length of time the button was held. If you hold too long, the power meter could reverse or recycle to zero, to reinforce the timing factor.
  • Whether you implement the above or not, it seems like there are a great deal of "empty" inputs. Atari can manage at least 17 (8 directions + 8 button directions + button w/no directions). For instance, how about body punching when you hold down-right or down-left, head punching when you hold up-right or up-left and blocking high with button+up or blocking-low with button-down? Could really diversfy the challenge
  • Keep the final opponent a secret! Also, if possible, it would be nice to see a "randomly generated" opponent after the second or third loop... random color palette, random behavior nodes but increasing speed/power.

 

Anyway these arent' really criticisms, because I think your game is great! I'll play it either way.

 

Cheers,

Jarod.

Edited by jrok
Link to comment
Share on other sites

I think could be enhanced by more use of sound.

I need to create more "time is running out" type effects. Perhaps I can create a different song for the last minute of a round or the final round.

 

The A.I. and automata jibes pretty good, although I think the "expectation" of certain behaviors might need to be counter-balanced. There's a bit of a top-down space invaders feel to things right now, where the opponent acts as a moving boundary. As others have suggested, a shove function might help to make the game feel more physical. Ring generalship and imposing your will is part of boxing, and it would be nice to have a feature that simulates moving your opponent into a place you want him to be in (of course, the opponent should be able to do this as well).

Right now, I have the pixel-per-second speed of most of the computer opponents set pretty high. I think I can get rid of the barrier feel by slowing down the computers and having the player be able to advance with the punches. I have this implemented with with Tomato Ken. I could also modify each character's script code to have them move back every now and then.

 

You could even "store up" a punch this way, differentiating between jabs and power punches by the length of time the button was held. If you hold too long, the power meter could reverse or recycle to zero, to reinforce the timing factor.

That's an interesting idea. That could be added in a sequel.

Link to comment
Share on other sites

devin great work. Instead of a cup when you win, how about a championship belt screen. maybe have it say on the belt

 

K.O.

cruiser

 

champion

 

if its all possible!!!!!

 

I would like to be on the waiting list for this one

thanks

 

corby

Edited by corbysatarigame
Link to comment
Share on other sites

I think could be enhanced by more use of sound.

I need to create more "time is running out" type effects. Perhaps I can create a different song for the last minute of a round or the final round.

 

A simple non-space-heavy solution is to play the music faster, like Tetris does.

 

-John

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Hey all, I'm getting pretty close to finishing this project. In this release, I refined a bit of the gameplay and added the final two boxers. The only things left are some music and sound effect tweaks. I also plan to add rematch logic (which takes a few secs).

 

This version contains a special screen where you can select your opponent. This will be removed in the final version. I need some very critical feedback on the opponents.

  • Added the last two boxers. The first is an egomaniac from Madrid, Spain named K.C. Nova (yes, bad pun). He thinks he is "god's gift to women". His specials include "Disco!" where he dances and hits you with each pass and "I am so great!" where he can recover life. The second is a farmer from Topeka, Kansas named Russ Tick. He has a special called "Smackdown".
  • I made the final changes to the internal macro engine. I won't have to update it ever again!
  • Modified the block logic (well, the macros). Now when you block a punch, your block is "broken" and you have to re-block. This is the behavior in the Punch-Out series.
  • When you are knocked down, your char flashes when you mash the button. When you get close to recovering, your character begins to shake.
  • The title screen now supports joystick input
  • .... and the reset button works on the rest of the game.
  • I added some special behavior to the game. Knockdown Tomato Ken (first char) during his "Backup and Ketchup" for some fun.
  • I implemented the difficulty logic. The game currently starts at level 2. Level 1 slows the computer down by half and doubles your punch power. Don't ask about Level 3... :)
  • I modified the block graphic so your character crouches.

The final line-up is as follows:

  • Tomato Ken - Sacramento, California
  • K.C. Nova - Madrid, Spain
  • Wally B. - Canberra, Australia
  • Rod Ickle - London, Britain
  • Russ Tick - Topeka, Kansas
  • Major Concussion - Annapolis, Maryland

The to-do list:

  • New title music
  • New music for K.C. Nova's disco dance
  • Start music for Russ Tick, and K.C. Nova
  • Rematch logic
  • Some more customized sound effects

KO_Cruiser_WIP_2009_02_17.bin

post-17256-1234864412_thumb.png

post-17256-1234864415_thumb.png

post-17256-1234864418_thumb.png

post-17256-1234864421_thumb.png

Edited by Devin
Link to comment
Share on other sites

I have some feedbacks:

 

The block is infinite, it's broken if the opponent hit you. I think coud be good "blocking by time"...

You press the block and keep blocking by one second or half of second, then return to stand pose even if you keep holding the button.

This force you to block at right time, giving a better game flow as the player do not stuck blocking.

 

Also, I think on dodge movement, like nes punch out, pressing down, for avoid unblockable opponent movements. Like blocking by time, this have a limited time.

 

And for unblockable opponent's punches, shoud be good the boxing gloves bright in a distintive colors, so you will know if the opponent will do a super move. Something like Yellow fade-out.

 

I have some graphics suggestion for the main player, but don't know if you want to do a dramatic change in this time of final fixes.

 

I have no comments about AI, for me is great as that.

Edited by LS_Dracon
Link to comment
Share on other sites

The game is looks and plays great. You are probably keen to get it finished, but I feel some AtariVox speech (e.g. announcing the rounds, doing countdowns, etc.) would be a great addition.

 

Chris

 

You are right. I am keen on getting this done! :) I'll definitely do this in a sequel!

 

... it took me forever to write this game mainly because the macro engine is general purpose. It can be reused for future "circuits". For instance "K.O. Cruiser: Time Circuit" where you fight different characters through time.

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