Jump to content
IGNORED

Pac-Line 2600: Atari 2600 Homebrew


Recommended Posts

Pac-Line 2600

image.thumb.png.e6e97cdc1796313cbf0e69a12121026e.png

This is my first homebrew game and what better system to make it for than my favourite, the Atari 2600! My game is a port of Pac-Line for the Pico-8 by Sizescape, which in turn is a port of Paku Paku by Kenta Cho. When I ran across the game on my Pico-8 handheld I knew that this was the perfect game to game for my first homebrew, it's both fun and perfectly suited for the system.

 

Please let me know what you think and if you encounter any bugs that aren't listed below! 🙂 For more detailed information on how the game is progressing you can check out my development thread in the ZPH club section of the forums.

 

- James


Download Newest Version (WIP):

20240410-Pac-Line 2600.bin


OLDER VERSIONS:

 

Top 5 Scores (20240408/20240410 Build):

 

Objective:

  • Get the high score by eating dots, power ups, fruit (PENDING) and scared ghosts!

Points:

  • Dot & Power Pellet - 1 Point x Level
  • Ghost - 10 Points x Level
  • Fruit - 20 Points x Level (PENDING)

Gameplay:

  • You can wrap around the edges of the maze, but the ghosts can't
  • Collect the power up so you can eat the ghost
  • Get to the next level by eating all the dots.
  • Every level increases the ghosts speed and decreases the length of time they're scared
  • Every eight levels you'll progress through the ghosts (Blinky, Pinky, Inky, Clyde)

Tips:

  • As the levels gets higher be sure to eat the middle dots as soon as you can
  • Sometimes it's quicker to eat the scared ghost by wrapping around the level

 

Known Bugs To Fix:

  • NONE!

To Do:

  • High Score (with AtariVox and PlusCart support)
  • Flicker Code for the Fruit
  • Fruit Bonus Items (Possibly Multicoloured)
  • Two-Player Mode
  • Implement attract screen, possibly with AI player
  • Flash "Fire To Start" message
  • Update sounds, and possibly music, closer to arcade
  • Level Number On Screen
  • PAL Version

Credits:

  • James Earl O'Brien: Code, Graphics, Sound

Thank You To:

Reviews of Pac-Line 2600:

Paku Paku / Pac-Line Versions:

 

image.thumb.png.eb8569df7bd13cc2759436a2057fd911.png

 

Pac-Line2600v3.thumb.png.70fc461d53ccd7c72f2c34dc174903ae.png

  • Like 36
  • Thanks 3
Link to comment
Share on other sites

9 minutes ago, ZeroPage Homebrew said:

Pac-Line 2600

 

Atari 2600 port of Pac-Line for the Pico-8 which is a port of Paku Paku. Please let me know what you think and if you encounter any bugs that aren't listed below! 🙂  You can follow along with the detailed development thread of the game here.

 

- James

 

Download:

Pac-Line 2600-20240328.bin 4 kB · 1 download

 

Status: Work In Progress

 

Known Bugs To Fix:

  • Score currently only goes to 9999
  • If left most dot is left last, you automatically advances to next level
  • If power pellet left last, you automatically goes to the next level

 

To Do:

  • Implement software collision for power pellet to fix bug above
  • Fruit (Possibly multicolored)
  • Display high score (with AtariVox and PlusCart support)
  • Implement attract screen, possibly with AI player
  • "Fire To Start" message
  • Level Number On Screen

 

Credits:

  • James Earl O'Brien: Code, Graphics, Sound

 

image.thumb.png.e37c6af069ff89a314c00a486dbe6818.png

 

 

Pac-Line2600.thumb.png.594ab6e490908dae9a98094c9125d0ba.png

So fun! Great job James! Thanks for sharing! I did not encounter any issues so far, though I'm only initially trying it out in Stella on an iMac using keyboard controls. I think the speed is just right for a challenge too!

Edited by Vexorx
  • Thanks 1
Link to comment
Share on other sites

100% couch compliant! :) How you found the game idea, totally reminds me at how I found Pong Wars.

 

Regarding eating the power pellet, I think you can stick to hardware collision. You just have to remember which to it actually the power pellet. Following your plans, I suppose 20% of the work is almost done. ;) 

 

I wonder if this could be extended into a full fledged game. E.g.:

  • by adding more lines of pellets, where Pac-Man wraps around to the line above or below.
  • the power pellet could move in intervals, e.g. either to the next nearby or to a random pellet (if there are any left), or to an empty spot. 
  • the ghost(s) could have different or changing behavior (and color), like in the original Pac-Man.
  • there could be negative power pellets which stop the power mode or make pellets reappear when you keep moving (certain ghost types could do that too)
  • multiple lives, extra lives, bonus rounds, bonus points, score multipliers... 
  • two player variations (line by line, cooperative, one controlling/influencing the ghosts...)
  • ... (I am sure people can come up with way more and better ideas.)
Edited by Thomas Jentzsch
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

35 minutes ago, m.o.terra kaesi said:

A perfect game for James first one!

Motivates me to follow his example some day in the future.

Yeah, Pac-Line is pretty close to a one button game. The simplicity of the input and fewer cases you have to handle makes it a great first choice  I like LazyDev's Pico-8 tutorials, and he runs a class to help inspiring first time  programers, and he has a couple videos dedicated to the mistakes and successes he has seen just based upon the chosen genre.

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Great game and a very good work for your first ASM project (in years)!

 

 

21 hours ago, ZeroPage Homebrew said:

To Do:

  • Display high score (with AtariVox and PlusCart support)

The code for sending the scores to the PlusROM HSC is only ~45 bytes and adding is very easy. PM me for a HSC ID when you want to start PlusROM HSC support. Do you want to display the HSC table in your game too?

 

 

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

On 3/29/2024 at 2:25 PM, Vexorx said:

So fun! Great job James! Thanks for sharing! I did not encounter any issues so far, though I'm only initially trying it out in Stella on an iMac using keyboard controls. I think the speed is just right for a challenge too!

 

Thank you so much, I'm amazed to hear that there weren't any more bugs found! I had Tanya testing the game for initial speed vs. how fast the game gets as the levels increase so she was a big help!

 

On 3/29/2024 at 2:42 PM, rbairos said:

That was great!

 

Thank you so much, hopefully people enjoy playing the game as much as I do!

 

19 hours ago, m.o.terra kaesi said:

A perfect game for James first one!

Motivates me to follow his example some day in the future.

I was not aware that new games are taken over to all sorts of plattforms that quick, within days!

 

I knew it was the perfect game for me to make as my first one as soon as I started playing the Pico-8 version, it was almost tailor made for the 2600! Hope to see you create your own game in the future!

 

19 hours ago, Thomas Jentzsch said:

The more important it is, that James is closing the Atari 2600 void. :) 

 

Exactly! Why not bring this fun game over to our neck of the woods. I figured it would only be a matter of time before it landed on the Atari 2600, might as well be me doing it!

 

19 hours ago, CapitanClassic said:

Yeah, Pac-Line is pretty close to a one button game. The simplicity of the input and fewer cases you have to handle makes it a great first choice

 

Funny enough, every port of the original game the Pico-8 one was based off of IS a one button game. One button to start, one button to turn. I enjoyed the left and right controls of the Pico-8 version so I stuck to those controls.

 

11 hours ago, sramirez2008 said:

It’s PAC-tastic! No new bugs discovered, but I'll play more. Looking forward to the PK, XM and YAMAHA versions.😉

IMG_4520.jpeg

 

It sure is! Glad to hear no more bugs were found!

 

I pretty much expected you to destroy my score, it was only a matter of time. 🙂 When I add in the fruit to the game, there will be even more opportunities for higher scores!

 

9 hours ago, cjherr said:

Slick! Thank you!

 

You're very welcome, enjoy the game!

 

8 hours ago, Al_Nafuur said:

Great game and a very good work for your first ASM project (in years)!

 

The code for sending the scores to the PlusROM HSC is only ~45 bytes and adding is very easy. PM me for a HSC ID when you want to start PlusROM HSC support. Do you want to display the HSC table in your game too?

 

Thank you so much! I really wanted to program in ASM to understand what makes the 2600 tick, plus I was comfortable enough with the language to give it a go.

 

I'll definitely be in touch when I'm ready to add the PlusROM HSC code in. It should be in the next couple of weeks as I'll probably be adding the local highscore code in very soon. I don't think I'll be displaying the HSC table in the game as I want to try to keep the whole thing under 4K but if the code isn't too big, I might give it a go. 🙂

 

1 hour ago, rra said:

Congratulations on coding a working 2600 game!   Todd Frye should be proud of you!

 

Thank you so much! I'm very happy to add another Pac-Man game to the 2600 library in addition to Todd Frye's game!

 

- James

 

  • Like 5
Link to comment
Share on other sites

On 3/29/2024 at 2:52 PM, Thomas Jentzsch said:

100% couch compliant! :) How you found the game idea, totally reminds me at how I found Pong Wars.

 

I'd be ashamed if I wasn't able to get the certification on my own game! 🙂 Some games you run across and instantly recognize how well they'd work on the 2600.

 

On 3/29/2024 at 2:52 PM, Thomas Jentzsch said:

Regarding eating the power pellet, I think you can stick to hardware collision. You just have to remember which to it actually the power pellet. Following your plans, I suppose 20% of the work is almost done. ;)

 

Luckily It shouldn't be too hard to implement better power pellet management. A complete rearrangement and streamlining of the code is next on the list alongside fixing the couple of bugs I have.

 

On 3/29/2024 at 2:52 PM, Thomas Jentzsch said:

I wonder if this could be extended into a full fledged game. E.g.:

  • by adding more lines of pellets, where Pac-Man wraps around to the line above or below.
  • the power pellet could move in intervals, e.g. either to the next nearby or to a random pellet (if there are any left), or to an empty spot. 
  • the ghost(s) could have different or changing behavior (and color), like in the original Pac-Man.
  • there could be negative power pellets which stop the power mode or make pellets reappear when you keep moving (certain ghost types could do that too)
  • multiple lives, extra lives, bonus rounds, bonus points, score multipliers... 
  • two player variations (line by line, cooperative, one controlling/influencing the ghosts...)
  • ... (I am sure people can come up with way more and better ideas.)

 

Thank you for all the suggestions! After reading them I was thinking about what things could be added to the game, while at the same time keeping it under the 4K size.

 

I definitely like the ghosts changing colours and had that thought as well, it's such an easy thing to implement and takes very little extra space. I was also mulling over the two player version of the game and I think I found a great way to do it. I'll think some more about how it will work but I will be adding it to the to-do list. There will be fruit added to the game, like in the Pico-8 version, which will be quite a few bonus points and also teach me about learning flicker code.

 

Looking forward to working on the game some more soon!

 

- James

 

 

  • Like 5
Link to comment
Share on other sites

8 hours ago, r_chase said:

Funny, I thought this was going to be April Fools related since you announced something about this near the end of March. I'll give this a play later when I have time.

 

There were a couple of people who thought that as well! Luckily I released it on Mar 29th so in fact the game is real! 🙂

 

6 hours ago, Bomberman94 said:

Congrats James - what a nice surprise and very well made!

 

Would be great to see a PAL release sometime in the future ☺️

 

Thank you so much Bomberman! I'll be sure to make a PAL version, I'll add it to my to-do list!

 

6 hours ago, swlovinist said:

What a well done game.   Nice work!

 

Thank you so much John, glad you enjoy it! Can't wait to add all the extra to it that I have planned.

 

4 hours ago, KevKelley said:

Oh cool. I tried the Pico 8 version and it was a very neat little game that definitely looks like it belongs in the Atari library. 

 

The Pico-8 game is really well made, glad I ran across it!

 

4 hours ago, Martin72 said:

Very nice game! We play the game with the family today and everybody loves it! Is it possible to add some code to store the high score (as long the Atari is powered)

 

Thank you for sharing the game with your family, I'm so happy to hear they all enjoyed it! I'll definitely be adding a high score feature that can also be saved on the AtariVox/SaveKey/PlusCart!

 

- James

  • Like 4
Link to comment
Share on other sites

@ZeroPage Homebrew, since it came up during the show, the ghost behavior in Pico-8 upon being eaten is to take the shortest route back. You can see this in the source code (the website is currently having issues displaying it in the browser, but you can download the cart, and then load it in the https://pico-8-edu.com Educational Edition, and hit ESC to read the code. In Tab2, the Collision Check section it says the ghost face_left (moves) if the ghost X value is <64 (Ie the left side of the screen)


If you want to get the speed “right” you will just need to do some math to approximate it for the width of the Pico-8 screen (128 pixels) and Atari 2600 (160), and then keep the ratio of the speed  the same for Pico-8 Pac-Man and Ghost to screen width.

 

it appears as if the PacLine (Pico-8) game doesn’t change the speed as the levels progress (adding that in as a game variation might be worth it for 2600). Pico-8 updates at 30 times (ticks) / sec, while the 2600 can do this 60 times / sec.

Pac.X speed is 1.5 pixels per tick.

Ghost.Speed is 1.65 pixels per tick.

 

So in Pico-8, pac would take (128/1.5)=85.33 ticks to move across the screen (or 2.84 seconds), the Ghost would take 77.57 ticks (or 2.58 seconds).

on the 2600, pac would need to move at 0.9375 pixels/tick (or with sub-pixel movement speed of 240/256 sub-pixels/tick) to move across the 160 pixels screen in 2.84 seconds.

 

Subpixel movement for the ghost would be 1.03125 (or 1 + 8/256 sub-pixels). BTW, the fruit moves at 1.1 pixels in Pico-8, so in 2600 sub-pixels it would be 0.6875 (176/256)

 

-- Collision Check
  SP=Pac.x EP=Pac.x+8  -- Pacman sprite start/end
  SG=Ghost.x EG=Ghost.x+8 -- Ghost sprite start/end
 If EP>SG and SP<EG then 
  -- collision, sprites overlap
  If ghost.state==0 then
    -- Ghost states are 0 strong
    -- 1 weak (power pill) 2 flashing
    -- 3 just eyes, respawning
    Pac.Alive = false
    Ghost.Speed=0
  elseif ghost.state==1 or ghost.state==2 then
    ghost.state=3 -- turn to eyes
    -- *** Here *******************
    ghost.face_left=ghost.x<64
    score+=Level*10
  end
 end

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

As far as colors go, I don't know if I would use the Pico-8 colors. Those were likely chosen because they were forced to use the 16 colors available (and may not have known about the Alt-color palette, 32 total colors).

 

If you try to match the Arcade colors, you have better choices.

Pac-Man Arcade colors

RGB values, Game Element

252, 234, 63 - Pacman or ( 252,252,0 )

252, 0, 0 - Blinky (red)

252, 180, 255 - Pinky (pink)

0, 252, 255 - Inky (cyan)

252, 180, 85 - Clyde (orange)

36, 36, 255 - Walls (indigo)

252, 180, 170 - Dots (salmon)

252, 252, 255 - Flashing ghost, score (white)

 

Atari 2600 Colors (NTSC)

FE (252,224,140) Pacman

34 (172, 80, 48) Blinky

 or 32 (Alt Darker) or 36 (Alt lighter)

5F (236,176,224) Pinky

 or 4F (Alt) or 6F (Alt lighter)

9C (144,180,236) Inky

 or 8C (Alt darker) or AF (Alt lighter)

2C (220,180,104) Clyde

 or FC (Alt) or 2A (Alt darker)

82 ( 28, 32,156) Wall, Flash Ghost

 or 80 (Alt darker) or 84 (Alt lighter)

3E (252,188,148) Dot

0F (236,236,236) Flash Ghost, Score

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

9 hours ago, CapitanClassic said:

In Tab2, the Collision Check section it says the ghost face_left (moves) if the ghost X value is <64 (Ie the left side of the screen)

 

During testing of the Pico-8 game I got some unusual behavior, so I might be wrong about this. There must be some additional code regarding which way the eyes face (move) after being eaten that might override the initial direction. 

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