Jump to content
vdub_bobby

Squish 'Em for the 2600 (Done!)

Recommended Posts

Squish 'Em was one of my favorite games when I was a kid and so, about a year ago, I thought it might be a fun game to port to the 2600. And now, a year later, here I am trying to get it done. My goal is to give it to my son for Christmas so I need to finish it in about 2 weeks. :o We'll see...:ponder:

 

Here's a brief description:

 

You are climbing a building, trying to reach the suitcase of cash at the top. Watch out for all the nasty critters that are trying to knock you off, and watch out for the falling bricks as well. If you can't avoid the critters, or you need to relieve a little stress, you can always Squish 'Em instead!

 

Use the joystick to move left and right and to climb and press the trigger to squish the monsters.

 

post-6060-1196698911_thumb.png

Final builds and source code:

squishem20071215NTSC.bin

squishem20071215PAL60.bin

squishem20071215.zip

 

EDIT DEC 18 2007: And that's a wrap! Thanks for all the help, everyone. :)

SquishEm20071203.bin

SquishEm20071206.bin

SquishEm20071209NTSC.bin

SquishEm20071209PAL.bin

SquishEm20071210NTSC.bin

SquishEm20071210PAL.bin

SquishEm20071211NTSC.bin

SquishEm20071211PAL.bin

squishem20071212NTSC.bin

squishem20071212PAL.bin

Edited by vdub_bobby

Share this post


Link to post
Share on other sites

Pretty good Bob!

 

I see that you have a few things different in your version.

 

1) the falling object is not always over the climber.

 

2) You have moved the beam lay out. This is interesting and seems to be a nice chnage.

 

3) The bag of money can knock you off, if you clmb up under it. In the other versions, the bag is betweem the beams, so you can't get kill by it.

 

All in all this is going to be a good one. Always like this game!

Share this post


Link to post
Share on other sites

I think what I'll do is attach the latest binary to the first post and list changes and attach the source+binary zip file to the last post.

 

So, here's the current state of things:

 

I made major, major changes to how the guy moves left and right. I thought things were fine and I was playing the Atari800 version and I thought to myself, "He sure seems to move with a jerking motion...?" So I slowed down the A8 emulator and, what do you know, he doesn't move smoothly left/right, he moves with a start-stop motion. Another weird thing: he goes from girder-to-girder in the same amount of time, no matter the distance between girders. So, yes, he moves faster when he is crossing the middle. The basic pattern is 5 frames long. In the center, the pattern is move for 4 frames, pause for 1 frame, repeat. Not in the center it's move for 3 frames, pause for 2. Weird!

 

Other changes:

-Added enemy movement patterns; these are mostly done except for speeding them up at higher levels.

-Tightened up the kernel and made a few tweaks to how the girder/enemy data is stored.

-Level transitions work. Grab a suitcase and you'll move to the next level.

-You will die if you hit a monster or a brick. And, in some cases, if you hit a suitcase or bonus item. :ponder:

-Squishing is complete, I think.

-Lots of other back-end stuff

 

Lot's still to do!

SquishEm20071202.zip

Edited by vdub_bobby

Share this post


Link to post
Share on other sites
Pretty good Bob!

 

I see that you have a few things different in your version.

 

1) the falling object is not always over the climber.

 

2) You have moved the beam lay out. This is interesting and seems to be a nice chnage.

 

3) The bag of money can knock you off, if you clmb up under it. In the other versions, the bag is betweem the beams, so you can't get kill by it.

 

All in all this is going to be a good one. Always like this game!

Thanks Tom! :)

 

Some of those things are either bugs (#3) or just not coded yet (#1). #2 has me a bit perplexed, though. What do you mean? I did notice that in the original there are always at least two beams to climb; my version sometimes will just have one. This will be changed, though, I haven't gotten to it yet. Is that what you meant or is there something more...?

 

And getting back to #3, I don't think it's true that the suitcase/bonus item is always between beams; I'm pretty sure that sometimes you can climb up into it. I'll do some testing. If you're right, that would make fixing that bug a lot easier!

 

Thanks very much for the comments!

Share this post


Link to post
Share on other sites
#2 has me a bit perplexed, though. What do you mean? I did notice that in the original there are always at least two beams to climb; my version sometimes will just have one. This will be changed, though, I haven't gotten to it yet. Is that what you meant or is there something more...?

 

 

Bob,

 

I'll use the picture you have in your first post as a example. The top 2 levels have the 2 beams on both on the left side. In the CV version the beams are mirrored. So if there is a beam on the far right, then there is a beam on the far left. Second from the left then there is also one second from the right.

 

I do like the change!

 

ALso, the CV version does have levels that have only one beam to climb and it is always in the middle(second picture, bottom level). Can't remember if the 800 version does or not. Have not play that one for some time.

 

I think the one beam on some levels should be lefted.

 

Just now noticed that your version has 6 places that up beams can be placed, the CV has 5. again, not sure about the 800.

 

 

Tom

post-7327-1196702480_thumb.jpg

post-7327-1196702506_thumb.jpg

Edited by duncantoml

Share this post


Link to post
Share on other sites
#2 has me a bit perplexed, though. What do you mean? I did notice that in the original there are always at least two beams to climb; my version sometimes will just have one. This will be changed, though, I haven't gotten to it yet. Is that what you meant or is there something more...?

 

I'll use the picture you have in your first post as a example. The top 2 levels have the 2 beams on both on the left side. In the CV version the beams are mirrored. So if there is a beam on the far right, then there is a beam on the far left. Second from the left then there is also one second from the right.

 

I do like the change!

Ah! I didn't realize that the CV version had mirrored beams!

ALso, the CV version does have levels that have only one beam to climb and it is always in the middle(second picture, bottom level). Can't remember if the 800 version does or not. Have not play that one for some time.

 

I think the one beam on some levels should be lefted.

 

Just now noticed that your version has 6 places that up beams can be placed, the CV has 5. again, not sure about the 800.

Interesting. I am going for as close to an exact port of the Atari 800 version as possible. I'll attach a pic. :)

 

The CV version looks very much like the C64 version, I wonder how close they are.

 

Atari 800 pic:

post-6060-1196703023_thumb.png

 

EDIT: Holy cow! I can't believe...I never noticed...

I'm such a moron!

 

I knew that the beams in the Atari 800 version weren't mirrored, but I just noticed that the beams in the Atari 800 are NOT asymmetrical either - they are duplicated! I can't believe I never noticed that. Wow. No wonder there is never just one beam. :ponder:

 

Well, I'll add that to my list of things to do. This is good and bad - bad because now I need to rewrite the kernel a bit :x but very good because now I can compact 4 giant tables (64 bytes each!) into 2 small tables (8 bytes each). Plus I'll gain some time in the kernel and I might be able to add the brick pattern on the far left and right walls.

 

Just, wow. I absolutely cannot believe I never saw this, especially with all the time I've spent playing the game over the last couple of weeks. :roll:

 

EDIT II: Actually...this may be more complicated than I thought. Might not get anymore free time in my kernel, though I can definitely compact those tables.

Edited by vdub_bobby

Share this post


Link to post
Share on other sites

There's a chance that a prototype for a 2600 version of Squish 'em exists. TCF was going to release it as The Fall Guy (the story being that aliens have invaded the movie set). I think one of the advertisements has a picture, but it's more than likely just a mock-up.

 

Tempest

Share this post


Link to post
Share on other sites

Sirius actually intended to release a 2600 version themselves. The original manual even has instructions for the 2600 version, just have a look at it: http://www.atarimania.com/detail_soft.php?...VERSION_ID=4967

 

I still don't know why it didn't come out, as the design was a perfect fit for the 2600. Even when my theory, that Sirius got assimilated by Activision, is true - then why didn't Activision just release it, like Turmoil and Fast Eddie?

Share this post


Link to post
Share on other sites

Latest.

 

Changes:

-fixed girders so they match original

-fixed some bugs/mistakes in how the brick fell after it whacks you on the head

 

I think that's it. I've started working on the disassembly of the A800 source, hopefully I can make some good progress and translate the sounds soon. :)

SquishEm20071203.bin

squishem20071203.zip

Share this post


Link to post
Share on other sites

I'd always assumed that the Atari computer version of Squish'Em was a straight 2600 port, like most of the Fox/Sirius releases (Fantastic Voyage, Turmoil, Worm War I, etc). I'd be stunned if there wasn't a complete, unreleased 2600 version of Squish 'Em gathering mold somewhere.

Share this post


Link to post
Share on other sites
I'd always assumed that the Atari computer version of Squish'Em was a straight 2600 port, like most of the Fox/Sirius releases (Fantastic Voyage, Turmoil, Worm War I, etc). I'd be stunned if there wasn't a complete, unreleased 2600 version of Squish 'Em gathering mold somewhere.

That would make sense; the A800 version is written like a 2600 game. Digging through the disassembly, it doesn't seem to use ANTIC much, has a 2600-style kernel. Kind of odd, actually.

Share this post


Link to post
Share on other sites

I'd love for someone to port Uncharted: Drake's Fortune from the Playstation 3 to 2600!!!

 

LOL.

 

Squish 'Em was a blast on the 800... Can't wait to see & play your final port!

What an awesome Dad you are to port that as a gift!

Share this post


Link to post
Share on other sites

Really nice, love the vibrant colours, plays very well.

Feels quite Activision dare I say

 

Good luck with getting this done

Share this post


Link to post
Share on other sites
Fantastic work! *claps* I'd love to see code :-)

As Manuel said, the code is in my blog, the current code is in the latest ZIP file in this thread. Or it should be, at least.

 

And speaking of code, I've been having so much fun disassembling the A800 Squish 'Em that I think I'll try to push through and finish it. I'll post it when I do. I've figured out how the music is played (it's pretty clever) and found the frequency table, and also found how he moves the "erratic" enemies and how long enemies stay squished. First game (on any platform) I've ever disassembled; it's pretty fun. :)

 

Some interesting things I've found...

ANTIC is used to draw the score and the building frame only. All player/missile data and color changes are directly written to the hardware, like a 2600 game. P2 and P3 (quadrupled) are used to draw two (vertical) girders each, and M2 and M3 are used to draw the other two. M0 is used to draw the falling brick and P0 is used to draw the climber. P1 is used to draw the enemies. P2 and P3 are also used to mask the sides of the screen at the top and bottom, where the score and extra lives are displayed, and the background color is changed to get the striped effect.

 

And speaking of the extra lives, from the code it looks like you can have up to 255 extra guys, though only 7 (!) are displayed on screen. Yeah, that seven has me a bit worried...a 2600 compromise might be to have a max of 6 displayed at the most. It would be a neat trick to get seven displayed, but for an effect that only the very few very best players will ever see, it probably isn't worth the time or ROM space.

Share this post


Link to post
Share on other sites
so the engine does write the PM data directly into hardware?

Yup, here's a snip of the code; only partially labelled and commented. I left my more-finished copy at home today so I wouldn't be tempted to work on this at work! :lol:

MainPlayAreaKernelStart
	ldx #4		;21DC A2 04		index into floors
MainPlayAreaKernelLoop
	lda ZP_AF,X	;21DE B5 AF
	sta P0GfxPtr	;21E0 85 80
	lda ZP_BB,X	;21E2 B5 BB
	sta MxGfxPtr	;21E4 85 84
	lda ZP_B5,X	;21E6 B5 B5

	sta WSYNC	;21E8 8D 0A D4
	sta P0ColorPtr	;21EB 85 82

	ldy #$1F	;21ED A0 1F
	bcc L_21F4	;21EF 90 03
L_21F1
	sta WSYNC	;21F1 8D 0A D4
L_21F4
	lda (P0GfxPtr),Y	;21F4 B1 80
	sta GRAFP0	;21F6 8D 0D D0		direct write to P0!  Not using ANTIC
	lda (P0ColorPtr),Y	;21F9 B1 82
	and ColorMask0	;21FB 25 8A
	sta COLPM0	;21FD 8D 12 D0
	lda (MxGfxPtr),Y	;2200 B1 84
	sta GRAFM	;2202 8D 11 D0
	dey		;2205 88
	cpy #24		;2206 C0 18
	bcs L_21F1	;2208 B0 E7		loop while Y >= 24

	lda P0PL	;220A AD 0C D0		player to player collisions
	lsr @		;220D 4A
	lsr @		;220E 4A		get P0-to-P1 collision into carry 
	ror P0P1Collisions;220F 66 ED		and roll into RAM
	lda ZP_9B,X	;2211 B5 9B
	sta GRAFP2	;2213 8D 0F D0
	sta GRAFP3	;2216 8D 10 D0
	lda ZP_A1,X	;2219 B5 A1
	sta HPOSM2	;221B 8D 06 D0
	lda ZP_A7,X	;221E B5 A7
	sta HPOSM3	;2220 8D 07 D0
	sta WSYNC	;2223 8D 0A D4

	bcc L_222B	;2226 90 03		branch always
L_2228
	sta WSYNC	;2228 8D 0A D4
L_222B
	lda (P0GfxPtr),Y;222B B1 80
	sta GRAFP0	;222D 8D 0D D0
	lda (MxGfxPtr),Y	;2230 B1 84
	sta GRAFM	;2232 8D 11 D0
	lda (P0ColorPtr),Y	;2235 B1 82
	and ColorMask0	;2237 25 8A
	sta COLPM0	;2239 8D 12 D0
	dey			;223C 88
	cpy #12		;223D C0 0C
	bcs L_2228	;223F B0 E7		loop while Y >= 12

	lda ZP_C1,X	;2241 B5 C1
	sta HOPSP1	;2243 8D 01 D0
	lda ZP_C6,X	;2246 B5 C6
	sta P1GfxPtr	;2248 85 86
	lda ZP_CB,X	;224A B5 CB
	and ColorMask0	;224C 25 8A
	sta COLPM1	;224E 8D 13 D0
L_2251
	sta WSYNC	;2251 8D 0A D4
	lda (P0GfxPtr),Y;2254 B1 80
	sta GRAFP0	;2256 8D 0D D0
	lda (P1GfxPtr),Y;2259 B1 86
	sta GRAFP1	;225B 8D 0E D0
	lda (MxGfxPtr),Y;225E B1 84
	sta GRAFM	;2260 8D 11 D0
	lda (P0ColorPtr),Y;2263 B1 82
	and ColorMask0	;2265 25 8A
	sta COLPM0	;2267 8D 12 D0
	dey		;226A 88
	bpl L_2251	;226B 10 E4		loop while Y >= 0

	dex		;226D CA
	beq L_2273	;226E F0 03		update overall index and loop while > 0
	jmp MainPlayAreaKernelLoop	;2270 4C DE 21

Share this post


Link to post
Share on other sites

Update!

 

Biggest change is the music! All four musical cues are in: beginning a game, starting a new life, reaching a new level (i.e., every 16 floors), and grabbing a suitcase. Though the new-level music comes in one floor too early. Also got the background wah-wah-wah-wah sound in as well. These sounds translated very well from the A800, I think they sound pretty good.

 

I played around with the pocka-pocka sound for when you are moving/climbing, but I couldn't get it to sound right and I can't quite figure out how they get that exact effect in the A800 game - I found the notes for that but I can't find where or how they vary the volume (or?) to get the "pocka" sound. I'll keep digging.

 

I also fixed the collision detection, now you won't die if you hit a suitcase/bonus item from underneath. :D

 

Source and binary are attached in the zip file.

 

EDIT: I almost forgot! The legs-up and dying/falling sounds are in as well. They also translated very well, especially the legs-up sound. The dying one not so well, though it's close enough that I'm cool with it.

 

Basically, I'm running into two problems with translating the sound: First, the Atari 800 pure tones are divided down from 64 KHz (is that exact?) while the 2600 pure tones are divided down from 31.44 KHz. So it's sort of close to half the frequency, so if I divide the frequencies in half then the result is pretty close. Of course, when I divide the frequencies in half I also lose a bit of precision, so it I'm losing accuracy in two ways. The other problem is that the A800 can divide it's base frequency by 1-256, while the 2600 only can divide by 1-32. This hasn't been a problem as much as I thought but, for example, the falling/dying sound is not nearly as smooth on the 2600 since if I change the frequency as fast as the A800 does I quickly run out of frequencies! I might look into some trickiness with switching to a different AUDCx value to get some lower frequencies, but I think it sounds OK right now so it isn't a priority.

SquishEm20071206.zip

Edited by vdub_bobby

Share this post


Link to post
Share on other sites

Quick update. I found what gives the pocka-pocka sound! They are updating the volume (and sound effect frequency) twice per frame: they zero it out and then later set it to the appropriate value.

 

I added that in and it sounds pretty good, though it seems likely that the timing is somewhat critical for this so I might have to experiment a bit :)

Share this post


Link to post
Share on other sites

Looking and sounding good, Bob! Just played the A800 version again, and it's amazing how close your version is getting to it. Will the building color change in yours as well?

Share this post


Link to post
Share on other sites
Just downloaded this and gave it a try - fantastic work! Can't wait to buy the finished product.

 

Same here, I will definitely buy this one!

 

When having my extreme playtesting session over the weekend, I will try to fit this in as well :)

 

Bob, you think you can do a quick PAL60 version, so I can already have an eye on the colors?

Share this post


Link to post
Share on other sites
Looking and sounding good, Bob! Just played the A800 version again, and it's amazing how close your version is getting to it. Will the building color change in yours as well?

Yes, that's on my list. That's one of the final changes that need to be made to the kernel, to un-hardcode the score/girder colors.

 

But I need to get a A800 color chart and compare to a 2600 color chart since the way A8 Squish 'Em does it is to just add $10 to the color every new level (with a few complications, of course ;)). It would be nice if I could do that too, but it will only work if the colors go in the same order...:ponder:

 

As for PAL colors, Manuel - I'll try to whip that up but I am swamped at work right now and probably won't be able to until much later tonight, if at all. I'll try, though. :)

Share this post


Link to post
Share on other sites

This is such a marvellous project. I realize this is still pretty much a tech demo, but still it made me climbing the building for almost 20 minutes, stopping somewhere near a bunch of non-moving extra-life providers. Absolutely flawless and smooth so far. This is going to be your best game so far Bob, I even dare predicting that the final result will be playing in the league of Thrust and Lady Bug - a definite must-have for the 2600! :D

Share this post


Link to post
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.

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