[Game]Squiddy

This is my attempt to port Aphrodite’s Squiddy game from the Pico 8 to the Pokitto.

To play the game, press the A button. If Squiddy’s feet touch the green area, you win. If they touch the black area (you lose).

The “magnets” (moving arrows) affect the ball.

In this version, on the map screen, you can use the left and right buttons to change the level.

The level designs and play mechanic are from the original version.

This version adds a preview (map) screen, and scrolling (because of the different screen size). Plus I animated the arrows (just because…)

The code is available at:
https://github.com/catsfolly/Squiddy-pokitto

I don’t know if it will work on real hardware - it does a lot of draw bitmap commands in a frame…

Give it a try in the simulator.

Thanks,

Catsfolly

Pokitto binary (added by Jonne)
squiddy.bin (37.7 KB)

Copy of source code on mbed (added by Jonne)

https://os.mbed.com/teams/Pokitto-Community-Team/code/Squiddy/

8 Likes

Worked first try in Hardware, runs 100% smooth.

Great game by the way.

Video coming later today.

Thanks for an interesting port @catsfolly !!

Edit: it IS a fun game. How hard was it to port it?

2 Likes
3 Likes

Jonne -
That looks great! Thanks for trying it out. I’m happy to see the game running on the real hardware.

> How hard was it to port it?

Actually, I “cheated”: I was already working on an Intellivision port of this game, so I had already had all the level data in a programmer friendly format.

So, all I had to do was to read the Pico-8 Lua code to see how the game worked, and then implement the same logic on the Pokitto using C and the Pokitto Api.

When programming the Pokitto, I just did things in the most straightforward way I could think of, and it seems to have worked out. I used draw bitmap calls to draw each grid of the background, and used floating point for the sines and cosines and subpixel movement. By changing the starting point of my background drawing routine, I automatically got scrolling!

(I initially wrote the code to draw the whole 16 square by 16 square background, and relied on bitmap clipping to handle the bitmaps that were completely off screen. I finally went back and changed the code to not try and draw bitmaps that were completely off the screen - why waste the time?)

In the original game, the grid and squiddy are 8 by 8 pixels in size.
This looked a little small on the simulator screen, so I sized them up to 10 by 10.

I drew the map using fill rectangle instead of the draw bitmap calls.
At first I wasn’t sure how big the map should be, so I passed in a parameter for the rectangle size so I could experiment with different sizes… Later I realized I could change this size and zoom the map up to full size, for a nice transition.

Problems:

  1. Bitmap rotation didn’t work, so I had to animate the arrows in 4 different directions. Maybe it’s faster this way - there must be some overhead to rotating bittmaps.
  2. Bitmap flipping has clipping bugs (in the simulator), so I couldn’t use that.
  3. One version of drawBitmap has an animation frame field to select different animation frames, but I couldn’t figure out what format the bitmap data needs to be in to make this work.
  4. The simulator seemed to support a maximum 20 fps rate, so I went with that.
  5. I haven’t tried sound yet, but some people say it doesn’t work in the simulator.

So, overall, it was a fairly easy port, and I am happy to see it running smoothly on real hardware.

I still don’t have a feeling for what a 48mhz Arm M0 processor can handle, but I look forward to finding out…

Catsfolly

2 Likes

Thanks for the excellent write-up!

Rotation not working: yes. Fixed in next release of sim soon

Clipping/flipping problems: same here

Frame rate: is fixed to 20 fps in this release of sim. will be user selectable in near future

1 Like

I tried this game on simulator ! Now waiting to play on actual device !!!

Very unique game :+1:

1 Like

Thanks for checking out the game.

Aphrodite (on the Pico 8 forum) designed the game and all the levels, I just ported it to the Pokitto. It is a unique game!

Thanks,

Catsfolly

I know, necroposting is bad etc… I just wanted to say I’m really glad someone took this game and liked it enough to make something with it. I am not very present on the Pico 8 forums (nor this one, I just registered for this post actually and didn’t knew what pokitto was one day ago, it seems interesting) but I must say you did a nice job from what I’ve seen.

4 Likes

Squiddy is a really nice puzzle game because it requires both thinking and fast reactions. If it is ok for you @Aphrodite and @catsfolly I would like to feature this game with/on the Pokitto when it ships.

1 Like

@jonne I have no problems with that, as described in the Pico 8 post, I don’t mind people using squiddy for their purpose as long as they don’t sell it standalone without modifications.

EDIT: funnily enough the “Do not move” level doesn’t works exactly the same as the original, I might chekc out why one day (perhaps the fps lock is at cause? i don’t know)

3 Likes

I intended to someday post a note on the Pico-8 forum to let you know about this port of Squiddy, but it looks like you found it first. Cool. I am glad that you don’t hate it!

The “Do Not Move” level looks a bit different, but the player doesn’t have to make a move, so I figured it was all right…

Thanks for checking out my version of your game…

Catsfolly

2 Likes

That would be great if you feature this game on the Pokitto when it ships!

Great game! Simple but addictive.

1 Like

I just tested and if I do

                        angleinc = lptr->speed * (TWOPI/30);

instead of dividing by 20 on line 385 of hello.cpp, it seems to behave properly for said level, however I think it is divided by 20 due to the 20 fps target, correct me if I am wrong, and so could possibly (I am no pokitto expert) cause the game to behave weirdly (like rotating faster or slower than intended), in any case it is really a great job, well done @catsfolly . So yeah the 20 fps lock could be the issue ^^ I may or may not investigate further on this, this version is already pretty much the same as far as I could tell, there is even the 31 level (even though it is unwinnable but that’s not a big issue due to the fact it only exists for its look ^^), again, great work.

Yes. The simulator is actually locked at 20 fps at the moment.This is to keep the behaviour of the simulator (speed) as close to the HW as possible

Pokitto binary added
Source code page on mbed online compiler added

1 Like

I discovered “Squiddy” on Pokitto and I feel it is one of the best game of this device. I am making a new game on Arduboy, inspired by a famous blue hedgehog game, and I want to add the Squiddy character in it as an “enemy” (not a bad character actually but if you touch it you lose). I hope you will enjoy it.

4 Likes

This looks awesome… also thank you for sharing under BSD license :slight_smile:

EDIT: Sorry the license apparently doesn’t apply, my bad :confused:

1 Like

Glad you enjoyed the game. Looking forward to trying your Arduboy Hedgehog game.

I think Jonne added the BSD license for me. If the source code is useful to you, please use it!

1 Like