Log In  

Cart #pico_joust_2600-6 | 2023-01-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
12

Port of Joust for the Atari 2600 (which in turn is a port of the arcade version). Reasonably faithful to the Atari 2600 version but adapted for the Pico-8 screen, colours and sprite size, with some added particle effects.

Additional enhancements (available in options):

  • Zen Mode: Play forever without game over (allows lives to be negative).
  • Turbo Flap: Pressing and holding X repeatedly flaps (like a turbo button).
  • Players: Switch between 1 or 2 players.
  • Co-op Mode: If enabled, players cannot unseat each other (they bounce instead). Pressing O will pass a life to the other player (this can be done at any time).
  • Eggs Fall: Make eggs obey gravity like they do in other Joust versions (they can also fall into the lava).
P#123573 2023-01-03 02:28 ( Edited 2023-01-06 15:56)

3

Hi @rikimbo. Does look good !

Could you please look for btn() instead of btnp() when it comes to flapping the wings on your player. Will make a big difference. Thanks !

P#123574 2023-01-03 02:30
1

Oh yeah, this is the stuff. Great job!

P#123576 2023-01-03 02:39
1

cool! i spent a whole summer playing joust growing up

P#123579 2023-01-03 02:46
1

Fun implementation of the classic, although I agree with @dw817 about reading the buttons. Gold star.

There does seem to be something odd about how the get_score() function turns the score into a string.

I saw the score gain an extra digit a few times, then played a round with "Zen Mode" on and doing nothing but dying for 50 points each time to see precisely when it first happened.

Going from 950 to 1000 (or 0.950 to 1.000 points) worked as expected.

However, going from 1950 to 2000 (or 1.950 to2.000 points) instead displayed 11000 points!

I know PICO-8 has some interesting arithmetic, but I haven't used it myself. I assume that at this point, score should be 2.0 and is instead 1.99999 or thereabouts. So ceil(score%1*1000) returns 1000, and flr(score) returns 1.

P#123587 2023-01-03 08:26

@Cowirrie I appreciate that you went to the trouble of dying over and over (~40 times) to reproduce the bug! You're right about the rounding, which happens because of the division. For some reason my brain didn't think about rounding errors happening in both directions when I used flr().

I fiddled around for a bit but in the end decided to re-implement it using only whole numbers, so I don't get those rounding errors. It should work now in v1.1 (I hope I got all the edge cases). EDIT: Bugger, I missed resetting it properly on Game Over in the new implementation. Fixed in v1.2.

@Cowirrie and @dw817 about the jumping, I didn't realize btnp() has the repeating behaviour after a few frames if you hold it down. That was unintended behaviour (you need to press for each flap, like in the original game), so I removed all usages of btnp() in the code for v1.2.

Thanks all for the positive feedback!

P#123601 2023-01-03 15:52 ( Edited 2023-01-03 16:09)

Yes that's how it works, a flap per click/press... although yes maybe an option in menu to use simple btnpress could be convenient (poor keyboard).
BTW really good port I like it, simple and effective 👌 ⭐

P#123629 2023-01-04 01:42 ( Edited 2023-01-04 01:53)

@Heracleum good idea! I added a menu option for that in v1.3 (disabled by default). I'll admit it's pretty nice -- it reminds me of the kind of input you get if you're using a turbo controller.

You're right that it's nicer to the keyboard for sure, and I'll bet it's also way better for playing on a phone.

P#123649 2023-01-04 15:58
1

Nice work! Though I was never very good at it, Joust is one of my favourite arcade games. It just feels like such a standout, a very unique game for that era, and it's awesome to see it ported to PICO-8. Brought a big smile to my face!

I think compared to the original, there's less fine control in this implementation. If you're going for accuracy, each flap should probably be less powerful and gravity should be lower. I haven't played the ATARI version though so maybe it controls differently.

I tried to find a PICO-8 Joust a few months ago and came across this old unfinished joust collab by @EatMoreCheese, @Rahrahrah, and @Skyrunner65. It's missing a lot of the features yours has, but the controls feel closer to the original to me. Maybe worth a look?

P#123655 2023-01-04 17:23 ( Edited 2023-01-04 17:24)

Thanks @ericb for your interest and kind words! I am aware of that collaboration thread, and found it when I was checking to see if someone had already done this. That implementation is great, and much more faithful to the arcade version.

The physics in this version are meant to be closer to the Atari 2600 port, which has a pretty different feel. If you look up some gameplay footage, you'll notice that you can make it from the bottom of the screen to the top in just a few flaps. I spent some time tweaking it based on feel when playing the Atari 2600 version (emulated), but it's certainly not exact by any means.

If you're curious, go ahead and play with the constants in the code. The physics constants are in the first tab at the top. I'd be curious to hear what settings feel right to you!

P#123659 2023-01-04 17:43 ( Edited 2023-01-06 02:23)

I didn't realize the Atari 2600 version was so different! The version I'm familiar with was the "Williams Arcade Classics" DOS port, which I think was faithful to the arcade version so it makes sense that this feels weird to me haha.

P#123660 2023-01-04 17:47 ( Edited 2023-01-04 17:57)
1

Thanks for tagging me @ericb ! We didnt get far in our version so it's nice to see someone else give it a try. Still one of my favourite Atari games.

P#123689 2023-01-05 01:21

@ericb that DOS version was new to me. Thanks for sharing! That one and other ports (including the Atari 7800 port) are much closer to the arcade game. The Atari 2600 port is the odd duck for sure -- flying eggs and dizzyingly fast by comparison. It's the version I'm nostalgic for though. :)

@EatMoreCheese great to see you here. Honestly your version looks pretty far along to me! The graphics look stunning, and the cart has a really polished feel for something unfinished. I guess it just needs the eggs eh?

As for mine, I just published a new revision (v1.4) to add support for 2 players, and "co-op mode" that turns off friendly fire (something I wish the Atari 2600 version had back in the day).

P#123701 2023-01-05 04:42
1

Ah, Joust brings back memories when playing this game with my sister.

I was kinda disappointed that the egg couldn't fall into lava pit but OTOH it allows me to pick the egg later on.

P#123716 2023-01-05 08:37

@Bloodbane right, the floating eggs are a peculiarity of the Atari 2600 version. But I just added an option to enable falling eggs in v1.5. Turn it on in the menu, and now they can fall into the lava! :)

Actually, when testing the "Egg Wave" (ex. Level 4), I laughed when eggs were tossed onto the screen and a few were yeeted right into the lava. I've now made it so the eggs that spawn in egg waves will still float initially.

P#123796 2023-01-06 02:28

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-04-19 00:19:29 | 0.129s | Q:47