Jump to content
IGNORED

K.O. Cruiser - my first homebrew


Devin

Recommended Posts

This project is finished! You can get a copy Here

 


original first post

 

Hello everyone,

 

I am announcing that I am in the process of writing my first homebrew Atari 2600 game - K.O. Cruiser.

 

This game has a bit of a history. Back in 1986, I started programming my first graphical game on the Commodore 64. I was inspired by the arcade version of the Punch-Out. While I was impressed by the graphics of that classic game, I didn't like the simple stick-and-move logic. The version I was working on would allow the players to move around the ring. At first I played around with the idea of a side-view of the boxers, but it didn't allow much flexibility on designing the faces. So, like Punch-Out, I went for a first-person view.

 

I went as far as to design a total of 15 characters. I also was able to get an early version of the game working. By this time, it was the start of 1987 - and events would discourage me from finishing the project. Later in 1987, Nintendo released "Mike Tyson's Punchout". I realized, sadly, that I couldn't make my Commodore BASIC version look better (and I didn't know how I could). As a result, I abandoned the project and concentrated on knocking out Tyson (which I never did).

 

Anyway, I was introduced to the idea of writing an Atari 2600 homebrew by Zach. So, why not finish the game I started 20+ years ago? Even though I have a third of the horizontal resolution than I did on Commodore 64 BASIC, I have far more control over the vertical resolution and colors. Not a bad tradeoff. In fact, my Atari 2600 version might have better graphics.

 

I'm attached a screenshot of the original Commodore 64 version. I've also attached a copy of the Atari 2600 version (still in progress obviously).

 

Please remember that my Commodore 64 version came before Mike Tyson's Punchout.

 

Notes:

  • To punch, hold down the button and push either left or right. The button + up/down will block.
     
  • The computer runs off a simple macro-language that I wrote for the game. It controls animation, basic timing, and conditional branching. This will allow each of the boxers to have different styles and behavior. For this early version, the computer simply walks up to the human. There is a 10% chance he will throw a punch for each cycle (flip torso, legs, bob). If he throws a punch, there is an equal chance of a left or right.
     
  • The computer currently doesn't block. I will add this functionality later.
     
  • The ring will not be green in the final version. I was testing the colors read from the background buffer and choose a rather visually-offensive pattern. This will change in the final version - as will the appearance of the ropes.
     
  • The computer moves back slowly when hit. The system will update the speed later.
     
  • I'm updating the color of the computer every two scanlines. I just haven't gotten around to creating some nice shading.

To Do:

  • Sound.
  • Knockdown logic. Right now both the computer and human are in "god mode with infinite ammo".
  • Health bars. I will probably use a combination of the playfield and missiles.

Future:

  • I don't plan to write a fancy intro screen. It will probably just be a player0+player1 bitmap.
     
  • I hope to fit 4 or 5 boxers on the final version. However, I might be forced to bank-switch. If so, I should be able to fit far more boxers. I'm not sure how hard it is to implement.
     
  • Since I have a basic "boxing platform", I can add characters by just updating graphics and the macro for each. As a result, I will create several sequels. One will be the "Homebrew Circuit" where everyone here can create their own boxers!

post-17256-1203375769_thumb.png

KO_Cruiser___b1.bin

post-17256-1203375926_thumb.png

post-17256-1203378725_thumb.png

Edited by Devin
Link to comment
Share on other sites

Excellent work! I wouldn't have guessed the 2600 could do a good version of Punch-Out, but you've really pulled it off. Looking forward to more!

 

As an aside - this would be a great candidate for AtariVox support. Announcing the boxers' names, maybe some crowd cheering/booing.

Link to comment
Share on other sites

Nice game! :thumbsup:

The enemy boxer looks funny, looking forward to see more of this!!

 

Btw., there was a Punch-Out style game on the C64 before Myke Tyson's Punchout was released, Frank Bruno's Boxing.

 

Damn, I didn't know about that. If I had that when I was kid, I probably would have lost countless hours! :)

 

Most of the boxers I will add will be a tad silly. This boxer is the first opponent and is basically nothing more than a punching bag. I think he will make Glass Joe and Gabby Jay look like pros.

Edited by Devin
Link to comment
Share on other sites

Excellent work! I wouldn't have guessed the 2600 could do a good version of Punch-Out, but you've really pulled it off. Looking forward to more!

 

As an aside - this would be a great candidate for AtariVox support. Announcing the boxers' names, maybe some crowd cheering/booing.

 

Perhaps. That would really make the game shine. What is involved in getting AtariVox to work with the game? I would imagine that would push me into the 8k or even 16k realm.

Link to comment
Share on other sites

Nice work, and clever use of the ball sprite to color the opponent! There should probably be a limit to the time you can throw a punch as you can simply hold down the buttons at the moment. I also think that AtariVox support would be nice. Bankswitching isn't too hard to implement - there is a Bankswitch HOWTO document, but is is probably easier just to look at the source code for a game that uses bankswitching, e.g. Spiceware's Medieval Mayhem (32K).

Link to comment
Share on other sites

AtariVox code is pretty compact. I don't remember offhand...oh, I'll just look it up.

 

...

 

Ok, looks like it's about 64 bytes of code to make it speak plus whatever speech data you use plus some miscellaneous setup code - to point the speech pointer at the correct speech data at the right time, etc.

 

As far as the data, maybe...well, it depends. Maybe figure 4-6 bytes for each phoneme. Took 30 bytes to get "go fish" (g-oh-f-i-sh):

AVoxSpeech_GoFish
	.byte 31					   ;reset to default
	.byte 21,100				   ;speed(0-127)
	.byte 23,3					 ;bend (0-15)
	.byte 22,200				   ;pitch
	.byte 14					   ;loud
	.byte 179					  ;g(o)
	.byte 22,199				   ;pitch
	.byte 137					  ;-o-
	.byte 22,198				   ;pitch
	.byte 164					  ;-o
	.byte 22,196				   ;pitch
	.byte 4						;30 ms delay
	.byte 23,4					 ;bend
	.byte 8						;slow
	.byte 14					   ;loud
	.byte 186,186				  ;f-			 /this needs to be louder
	.byte 22,177				   ;pitch
	.byte 129					  ;-i-
	.byte 129					  ;-i-
	.byte 189					  ;-sh
NoAVoxSpeech
	.byte $FF					  ;done

Link to comment
Share on other sites

Nice work, and clever use of the ball sprite to color the opponent! There should probably be a limit to the time you can throw a punch as you can simply hold down the buttons at the moment. I also think that AtariVox support would be nice. Bankswitching isn't too hard to implement - there is a Bankswitch HOWTO document, but is is probably easier just to look at the source code for a game that uses bankswitching, e.g. Spiceware's Medieval Mayhem (32K).

 

I'll definitely look into it. I am still optimistic I can fit everything in 4k. My optimism is most likely unfounded. Thanks for the link.

Edited by Devin
Link to comment
Share on other sites

AtariVox code is pretty compact. I don't remember offhand...oh, I'll just look it up.

 

...

 

Ok, looks like it's about 64 bytes of code to make it speak plus whatever speech data you use plus some miscellaneous setup code - to point the speech pointer at the correct speech data at the right time, etc.

 

As far as the data, maybe...well, it depends. Maybe figure 4-6 bytes for each phoneme. Took 30 bytes to get "go fish" (g-oh-f-i-sh):

 

That is incredibly compact. I will definitely look into it. Did you write Go Fish? That is one of my favorite homebrews. Is there any emulator that supports the Vox?

Link to comment
Share on other sites

AtariVox code is pretty compact. I don't remember offhand...oh, I'll just look it up.

 

...

 

Ok, looks like it's about 64 bytes of code to make it speak plus whatever speech data you use plus some miscellaneous setup code - to point the speech pointer at the correct speech data at the right time, etc.

 

As far as the data, maybe...well, it depends. Maybe figure 4-6 bytes for each phoneme. Took 30 bytes to get "go fish" (g-oh-f-i-sh):

 

That is incredibly compact. I will definitely look into it. Did you write Go Fish? That is one of my favorite homebrews. Is there any emulator that supports the Vox?

Some more info...

Richard Hutchinson's AtariVox page is here (he created the thing): http://www.vectrex.biz/

Download the driver pack for the AtariVox at the AA store page for the AVox: http://www.atariage.com/store/index.php?ma...products_id=295

Yes, I wrote Go Fish! ;)

No, as far as I know no emulator supports the speech of the AVox. Some modified versions of an emulator may be floating around which support the EEPROM memory in the AVox, but I can't remember exactly.

 

And, actually, if you are going to try to use the AVox, get in touch with Richard H, he has tools and info that are a big help. ;)

Edited by vdub_bobby
Link to comment
Share on other sites

  • 3 weeks later...

Here is a quick update on how the project is progressing. I've attached screenshot from a recent build.

 

Sorry, I can't attach a binary at the moment. I am currently doing brain-surgery on the application to prepare it for the eventual jump to 8k. The ring was set green for testing, but I am becoming convinced that this might be the final appearance. Let me know what you think.

 

Cheers.

post-17256-1204806692_thumb.png

Link to comment
Share on other sites

The ring was set green for testing, but I am becoming convinced that this might be the final appearance. Let me know what you think.

 

I like the look of the green canvas but if you keep it, the player controller boxer should change to a color that provides more contrast.

 

This is an amazing looking WIP. I loved the arcade game.

Link to comment
Share on other sites

Do you want to try to make posts for the ropes using the playfield?

 

The computer player's head and torso can cover the ropes - and both use the ball. That would make some pretty funky looking posts! :-D

 

I'm sure I can playing some timing games, but the code is already pretty tight on available time.

Link to comment
Share on other sites

The computer player's head and torso can cover the ropes - and both use the ball. That would make some pretty funky looking posts! :-D

I'm sure I can playing some timing games, but the code is already pretty tight on available time.

Right. Forgot about that. Maybe someone around here will have a clever solution.
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...