Jump to content

Photo

K.O. Cruiser - my first homebrew


391 replies to this topic

#26 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 6,241 posts
  • Location:Canada

Posted Fri Mar 7, 2008 5:34 PM

The screenshots look really good so far, Devin. Good luck with this project. :)

#27 Cafeman OFFLINE  

Cafeman

    Quadrunner

  • 6,955 posts
  • Location:PA

Posted Fri Mar 7, 2008 7:36 PM

Color me VERY IMPRESSED. Wow - and I'm just looking at the screenshots, I haven't downloaded and played the sample bin. Kudos and keep on going!

#28 Shawn OFFLINE  

Shawn

    As Above

  • 19,109 posts
  • So Below

Posted Sun Mar 9, 2008 2:00 PM

Be sure to add King Hippo! No Punch Out! is complete without the King!

#29 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Tue Mar 11, 2008 8:36 AM

Be sure to add King Hippo! No Punch Out! is complete without the King!


Bah! I created my initial set of characters before 'ole King Hippo was on the shelves. Besides, I have much cooler characters! :D

#30 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Tue Mar 11, 2008 8:51 AM

Update!

I just finished the first playable WIP version of the game. The game is far from finished, but the basic format and behavior is complete.

The computer character's script is very simple at the moment. He doesn't have any special moves or behavior. For each loop - which contains a bob, flip gloves, etc... there is a 25% chance he will throw a punch. Each punch is extremely slow and is blockable. You can then hit the computer up to 3 times. This number is specified in the script. I can add more - even make it possible to hit the computer when he's just standing there. You can't currently hit the computer until he throws a punch. Otherwise, he will block.

Please note, that I still need to program the following:
  • Knock-down logic. Currently, if your health or the computer's goes to zero - nothing happens. Basically, all the characters are still in God Mode with Unlimited Ammo.
  • Sound. It will be more obvious when the computer blocks a punch with the appropriate sound effect.
  • Round logic. The timer will stop at 3 minutes in the final version. Right now it just keeps going and wraps around. I'm only using one byte for the time. Any guesses when it go to zero again? :)
  • Bank-switching. The final version will definitely require it. I plan to put all the kernal in Bank 1 and game logic in Bank 0. I plan to have 5 or 6 different opponents in the final version.
  • The color of your character will also change when you are in range - and being hit.
  • Your player will have a "my punch was blocked" image.

Attached Thumbnails

  • KO_Cruiser___WIP___2008_03_11.bin.png

Attached Files


Edited by Devin, Tue Mar 11, 2008 2:26 PM.


#31 vdub_bobby OFFLINE  

vdub_bobby

    Quadrunner

  • 5,832 posts
  • Boom bam.
  • Location:Seattle, WA

Posted Tue Mar 11, 2008 9:00 AM

:thumbsup: This is really very cool. ;)

#32 sandmountainslim OFFLINE  

sandmountainslim

    Vicar of Fonz

  • 5,671 posts
  • Climber 5 Champion since Jan 2005
  • Location:Between Macon and Muscle Shoals

Posted Tue Mar 11, 2008 7:58 PM

Cart Release in 2008 ...maybe?

#33 MausGames OFFLINE  

MausGames

    Dragonstomper

  • 897 posts
  • Location:MO, USA

Posted Tue Mar 11, 2008 9:33 PM

I'd really like to have this on cart too when it's done. Think you'll be able to add a ref? It would be funny if it was Pitfall Harry.

#34 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Wed Mar 12, 2008 4:37 PM

I'd really like to have this on cart too when it's done. Think you'll be able to add a ref? It would be funny if it was Pitfall Harry.


Hee hee. That would actually be funny. I might make a sequel where you can box against Atari classic characters. Pitfall Harry would be the champ!

I definitely want to put this on a cartridge.

#35 Nathan Strum OFFLINE  

Nathan Strum

    Quadrunner

  • 8,450 posts
  • Enjoying a sandwich
  • Location:Newhall, CA

Posted Wed Mar 12, 2008 7:48 PM

Each punch is extremely slow and is blockable. You can then hit the computer up to 3 times. You can't currently hit the computer until he throws a punch. Otherwise, he will block.

I can't seem to hit him even then. He blocks no matter when I punch.

#36 Albert OFFLINE  

Albert

    Quadrunner

  • 35,380 posts

Posted Wed Mar 12, 2008 8:18 PM

Just fired this up in Stella, looks great! :D

..Al

#37 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Thu Mar 13, 2008 12:40 PM

I can't seem to hit him even then. He blocks no matter when I punch.


I've attached a new version where the computer will be delayed 2 seconds after each punch - rather than 1 second as before. You can either block or dodge left or right before you counter-punch. To get more than one hit, step forward after each punch. If you get him on the ropes, you can deliver your deadly combo without advancing.

I'll probably have to do some work in this area to perfect the gameplay.

I also updated the "in range" flags for both the left and right punch - the math was a little off in the last version.

Attached Files



#38 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Thu Mar 13, 2008 12:41 PM

Just fired this up in Stella, looks great! :D

..Al


Thanks! Now comes the "fun" part - bank-switching! (insert scream sound here)

#39 cd-w OFFLINE  

cd-w

    Stargunner

  • 1,617 posts
  • Juno First!
  • Location:Glasgow, UK

Posted Thu Mar 13, 2008 3:00 PM

Thanks! Now comes the "fun" part - bank-switching! (insert scream sound here)


Looks great so far. Here is a template for 8K (F8) bankswitching. It assumes that the main code is in bank 2, and bank 1 is called as a subroutine:

PROCESSOR 6502
  SEG.U VARS
  ORG $80

; Variables Here (accessible from both banks)

  SEG BANK1
  ORG $0000
  RORG $F000

Exit
  nop $FFF9
Bank1Code

; Bank 1 Code Goes Here
; jmp Exit to go back to Bank 2

  ORG	 $0FF8
  RORG	$FFF8
  DC.B	0,0
  DC.W	$FFF9, $FFF9, $FFF9

  SEG	 BANK2
  ORG	 $1000
  RORG	$F000

Switch
  nop $FFF8
  rts
Start

; Bank 2 Code Goes Here
; jsr Switch to go to Bank 1

  ORG	 $1FF8
  RORG	$FFF8   
  DC.B	0,0 
  DC.W	Start,Start,Start

Edited by cd-w, Thu Mar 13, 2008 3:05 PM.


#40 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Thu Mar 13, 2008 6:47 PM

Looks great so far. Here is a template for 8K (F8) bankswitching. It assumes that the main code is in bank 2, and bank 1 is called as a subroutine:


Thank you! This looks like an incredibly easy template to use. I have a few quick questions.

  • The NOP $FFF9 statement is a tad odd. Is this a valid 6502 command or an assembler hack. I would imagine that a no-op wouldn't have an argument.
  • Does DC.B = .byte and DC.W = .word. I would imagine so, but I'm not 100% sure.

Thanks again for the code and a "thank you" to everyone for their help!

#41 cd-w OFFLINE  

cd-w

    Stargunner

  • 1,617 posts
  • Juno First!
  • Location:Glasgow, UK

Posted Fri Mar 14, 2008 2:22 AM

Thank you! This looks like an incredibly easy template to use. I have a few quick questions.

  • The NOP $FFF9 statement is a tad odd. Is this a valid 6502 command or an assembler hack. I would imagine that a no-op wouldn't have an argument.
  • Does DC.B = .byte and DC.W = .word. I would imagine so, but I'm not 100% sure.
Thanks again for the code and a "thank you" to everyone for their help!


The NOP here uses an undocumented addressing mode. If you prefer, you can use CMP or BIT instead, but these will affect the status flags. The bankswitch howto used LDA, but this will also affect the accumulator. The important part is that the bankswitching address is accessed somehow. I prefer the NOP method as this allows the code to continue executing in the new bank as if nothing had happened.

From the DASM manual, the valid syntax is DC[.BWL], where .B is a byte (8-bit), .W is a word (16 bit), and .L is a long (32 bit). If no extension is given then the default is a byte. BYTE, WORD and LONG can also be used.

Chris

Edited by cd-w, Fri Mar 14, 2008 2:32 AM.


#42 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Sat Mar 15, 2008 6:12 AM

The NOP here uses an undocumented addressing mode. If you prefer, you can use CMP or BIT instead, but these will affect the status flags. The bankswitch howto used LDA, but this will also affect the accumulator. The important part is that the bankswitching address is accessed somehow. I prefer the NOP method as this allows the code to continue executing in the new bank as if nothing had happened.

From the DASM manual, the valid syntax is DC[.BWL], where .B is a byte (8-bit), .W is a word (16 bit), and .L is a long (32 bit). If no extension is given then the default is a byte. BYTE, WORD and LONG can also be used.

Chris


The template worked like a charm! I now have 8k of ROM. Now the biggest challenge - what to do with all this space?! :) Thanks again.

#43 cd-w OFFLINE  

cd-w

    Stargunner

  • 1,617 posts
  • Juno First!
  • Location:Glasgow, UK

Posted Sat Mar 15, 2008 8:44 AM

The template worked like a charm! I now have 8k of ROM. Now the biggest challenge - what to do with all this space?! :) Thanks again.


Excellent - I'm sure you will fill it in no time and need to move to 16K (F4 bankswitching)!
I'm looking forward to seeing this game progress as it is looking great so far.

Chris

#44 supercat OFFLINE  

supercat

    Quadrunner

  • 6,401 posts

Posted Sat Mar 15, 2008 6:37 PM

The NOP here uses an undocumented addressing mode.


To clarify, the 6502 uses certain bits of the opcode to decide what memory operand (if any) to fetch; the 6502 can make that decision before it has determined what to do with the value it receives. There are some opcodes which will result in a memory fetch being performed, but which will then not actually do anything with the value fetched. These opcodes are collectively referred to as "NOP" even though they do perform an operation (the memory fetch) which in some cases may be meaningful in and of itself.

#45 Devin OFFLINE  

Devin

    Moonsweeper

  • Topic Starter
  • 489 posts
  • Its all HCLR to me!
  • Location:Sacramento, California,

Posted Sat Mar 15, 2008 6:49 PM

To clarify, the 6502 uses certain bits of the opcode to decide what memory operand (if any) to fetch; the 6502 can make that decision before it has determined what to do with the value it receives. There are some opcodes which will result in a memory fetch being performed, but which will then not actually do anything with the value fetched. These opcodes are collectively referred to as "NOP" even though they do perform an operation (the memory fetch) which in some cases may be meaningful in and of itself.


So, is there any advantage to using

NOP  $FFF8
rather than

LDA  $1FF8
other than preserving the value of the accumulator?

#46 Zach OFFLINE  

Zach

    Stargunner

  • 1,620 posts

Posted Sat Mar 15, 2008 8:33 PM

Can't wait to see the rest of your characters, Devin.

#47 supercat OFFLINE  

supercat

    Quadrunner

  • 6,401 posts

Posted Sat Mar 15, 2008 8:49 PM

So, is there any advantage to using

NOP  $FFF8
rather than

LDA  $1FF8
other than preserving the value of the accumulator?


For people who are familiar with the NOP abs opcode, using it makes explicit that the purpose of the instruction is to cause a read, rather than to do anything else. Note that a more popular non-standard addressing of the NOP opcode is NOP zp, which is a three-cycle instruction that does nothing except read the specified operand. The SLEEP macro uses NOP 0 when delaying an odd number of cycles. With most bank-switching schemes, it can be regarded as a three-cycle NOP. Do be aware that because it does a zero-page memory fetch, bank-switch schemes that are strobed by such fetches may get triggered accidentally.

#48 batari OFFLINE  

batari

    )66]U('=I;B$*

  • 6,682 posts
  • begin 644 contest

Posted Sat Mar 15, 2008 9:03 PM

So, is there any advantage to using

NOP  $FFF8
rather than

LDA  $1FF8
other than preserving the value of the accumulator?

By using NOP, you also preserve the flags.

#49 TROGDOR OFFLINE  

TROGDOR

    Chopper Commander

  • 161 posts
  • Why Yes, I Have Played Atari Today.
  • Location:Strongbadia

Posted Sun Mar 16, 2008 12:10 AM

I just tried out the WIP demo. This is destined to be come a new Atari classic. Excellent work.

#50 sandmountainslim OFFLINE  

sandmountainslim

    Vicar of Fonz

  • 5,671 posts
  • Climber 5 Champion since Jan 2005
  • Location:Between Macon and Muscle Shoals

Posted Sun Mar 16, 2008 7:09 AM

I definitely want to put this on a cartridge.


Well when you do you got one sold right here ;)
WP




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users