Prince Of Persia FX- is it doable?

Absolutely, that’s my plan. I have a bit more prep work to do, but I plan to share everything I have - parts lists, lesson outlines (probably pretty lean), brochure, CAD models for the cases, fritzing diagrams, etc. I’ve also taken a lot of time putting together a flash cart, putting the little fixes in as I go to get the games all working correctly with the SH1106 displays I’m using, so I’ll share that as well once it’s done.

It’ll be a mini-breadboard build, similar to Mr. Blinky’s breadboy project, but half the size, using only 2 mini breadboards per unit. Here’s a quick preview from some early CAD renders (it’s changed a bit, but this is the idea)


I’ll start up a new thread once I have it all together and ready to go.

4 Likes

Nice design. Curious about the breadboards connections. Do the display pins connect to the proper Pro Micro pins on that row or are you gonna cut the breadboard contacts on the top row?

Love the case looks almost like it was designed by Nintendo.

As for PoP I think it’s doable. All graphics and data can be stored on the FX chip and a small VM can do animations/cutscenes (I’ve been thinking on addin something like a simple VM to FX library that renders animations from a data stream).

What makes PoP so cool is it’s animations (and we need a pixel artist for them). To make it look good on Arduboy the character needs to be relatively large to make it work. Belows’s a mockup I made a while ago with 16 pixel high sprite. 20 pixels would be better but then some vertical scrolling must be introduced to keep the right ratio.

The extra black area at the right (or left) can be easily filled with part of the adjacent screen when a level is stored as a tilemap.

afbeelding

If you’re wondering about the speed of drawing graphics from FX chip. Check out my balls demo which draws 55 masked ball sprites on a tiled background made up of 16x16 pixel tiles all drawn from FX chip.

Thanks. I thought initially about cutting the breadboard contacts, but it seems like too big of a hassle. Have you done it? Is it not bad. I’m planning on soldering up some basic connectors with some wire leads ahead of time to the displays instead, so the students can still just plug ‘n’ play. It’ll just be quicker for me, plus, the screen will be held in place by the case design, floating above everything else.

I intentionally copied the Game Boy Color style for this. The buttons are GBC replacement buttons from Aliexpress, too. Thought about 3d printing them, but these are really nice. Glad I ordered them instead.

I’ll probably need this. You’ll be my hero if you make it for me (like you have for so many other things) :laughing:

Re: the aspect ratios, yeah it’s a challenge, and a balance. I like the idea of having all 3 levels at once, but I also really like the extra details afforded by going full-width, and only 2 courses high, which fits the AB display almost perfectly. Note that you only have an 8-tile width on your mock - the original is 10 tiles wide, but it’s been done with 8 for a number of systems due to varying screen ratios. I’ll go with the 10.

I was actually considering doing both – by default, having it 2 courses high, always showing the full level below where applicable, which is more important for a gameplay perspective, but also having a less detailed, scaled down full view like you’re showing, as a pause menu (likely by pressing slow step and up at the same time. I would use the side space for menu options like exit, load, save, and show the level info and time left.

I could have the game playable in both ratios, or just use the full-room display for quick reference.

Regarding animations, it’s possible to get the a number of different sprite sheets from different versions. I’ve been playing around with dithering settings while scaling down, and some of them are working pretty well, likely only needing minor clean up. I’ll try that route first, likely with Imagemagick, and see how far I can get.

For the level tiles, I’ve tried it a little, with less success (especially for the 3-level display, where you just can’t make out the spike holes and pressure pads), and have had better luck with drawing them by hand, similar to what you’ve done there. My hope was initially to leverage one of the many ‘PoP level editors’ out there, and leverage their already-perfectly-created maps, but that would involve adopting the original versions tile layout, which is a little confusing (though I get it) and would probably end up being more work than just working in 3 rows of floor-to-ceiling rectangular blocks.

Here’s a quick screen I did showing what the first room would look like showing only 2 levels, but full width. The room details look pretty good. Each ‘block’ is 12 x 28 px. I also added an elevated ‘pad’ to make sure I could easily tell it was a foot switch. I really don’t want the player to have to focus in to be able to see these, or spikes, etc.

The kid still doesn’t have a lot of details, but every pixel helps here, and I do think it’s OK. For this one, I rescaled and dithered a sprite from the old Mackintosh version (with the vest, turban, and puffy pants), as I feel those ones retain their details a bit better when shrinking (plus I like the look of them at full scale). After scaling, and dithering, it just took a couple of minutes of manually adjusting a few pixels to clean up a couple proportions. I think this could be a viable workflow for converting the character sprites.

I think with a little more attention to the scaling process and dithering algorithm, I could probably get through the entire character sets in a day or two.

Room 1

2 Likes

This is a really quick stab at the running animation sprite. I didn’t give any special attention to it – just scaled and dithered the entire sprite sheet at once and threw together the running ones in a quick loop.

The final should look at least this good, with a little attention given to optimizing the sprites.

dither_it_MacRunningSprites (2) (1)

1 Like

No I haven’t I think it would take too much trouble and the contacts may get too wobbly. I’d probably glue a female header or dupond/jumper wires at the back of the breadboard.

I just grabed a screenshot from somewhere scaled it down and made it 1-bit. Just to see if it works visually.

Looks great! I wouldn’t sacrifice the bottom row pixels for the damage icons though. They can be transparently drawn over the background. The those extra pixels could be used to show more of a layer or increase each level scale by a few pixels so a few extra pixels could be added to the kid too.

Tiles can be any size and unlike true tilebased systems they can also be drawn overlapped (something I used on Darkstar and upcomming Desolate )

Not counting the black outline pixels give you two extra :slight_smile: (the ones at his feet can be looked at as a shadow)

Looks awesome already :star_struck:

Yeah, increasing each level height by 2 or 3 probably worth doing. There are 8 extra pixel rows to play with. I’m currently using 3 rows on top for the ceiling tiles, which are needed to see if there’s an opening above to climb up to. This could be dropped to 1 or 2. Let’s say I use 2 there. If I then take the 5 below, I could have an extra 6 pixels - 3 per level. This would allow me an extra pixel, or maybe two, on the characters, which would be a noticeable win.

Thanks. Good to know. I’ll probably still keep them consistent, as it’ll be easiest to build out the levels for me that way. I was thinking of having the torches and brick background details as a separate layer, so it’s nice to know that’s an option.

Perhaps I can even do background and foreground layers where applicable. I’d assumed I’d need to employ some sort of masking to get the kid rendering behind certain elements. This is my first time doing this, so I’m not sure what the proper approach is for this sort of thing.

@Mr.Blinky Good call on using the extra vertical space. It provides a better ratio. I’ll end up using the same character height as the previous mockup, but it’s much better proportioned with the 3 extra pixels per level, and I think the details come out at this height.

Room 1

I do miss having the health there at the bottom though. It’s where I’m used to seeing it, and I don’t like the idea of covering play area with it, but I may have to. Otherwise, I have an extra 4 pixels on each side of the screen and I could use that space instead, and stack the health markers vertically. I’ll mock it up both ways and see. Getting very close to final design though :slight_smile:

1 Like

Nice! I played around a bit with your previous mockup using 30 pixel high level tiles and put the health bars at the bottom. This is how it looks like.
afbeelding

I must say the top (offscreen) tile doesn’t need much detail and having your tile height of 31 pixels the kid can have one more pixel of vertical detail :+1:

It doesn’t have to stay on screen all the time. It could be shown only when it’s usefull or your health changes and then dissapear after a (few) seconds.

another option would be using 11 pixel wide tiles and have 8 pixels for a health icon.

personally I think having the health icons drawn over the background looks more authentic.

2 Likes

Thanks. I considered that, but I think it’s good to always know your health. I do really like the way the outlined health overlay you did looks, though, now that I see it. I’ll do exactly that :+1:

1 Like

Here’s what the pause menu with the static full room view will look like. (note: the room view won’t look this good - it has some anti-aliasing from when I scaled it down, and I didn’t convert it back to monochrome)

Standard menu options, and most importantly, the game timer (you only have 60 minutes to complete all 12 levels of the game)

Room 1 Menu (scaled down)

1 Like

For the menu it’s best to use a single bitmap and draw the level, time and cursor on top of it. By using a bitmap it can be more pretied up without extra cost of program memory too.

I added a little outline to your menu to see how it looks

afbeelding

btw if you want to see what images really look like on the Arduboy FX without actually uploading it in a sketch. You can make use of the image-viewer.py python script that is part of the Arduboy Python Utilities.

Hook up your Arduboy to a computer and drag and drop the image onto the script and the image will be streamed to Arduboys display (no programming involved)

1 Like

Looks good. I was thinking it could use one as well.

Thanks. I’ll all ears for suggestions and tips for memory savings. I’m going to have to work tightly to be able to fit all the game logic in, so every bit will help.

I’ve used it once or twice out of curiosity, but had since forgotten about it. It’ll be useful for sure.

Having a blast with this. I’ve never tiled out a game, and it’s surprisingly addictive. And distracting me way too much from my work :grimacing:

I’ve gotten enough of the Tileset built to get a sense for things. I’m using the Tiled app (which is amazing), and each room is a 10 X 3 block Tilemap, and each level will be a World that stores the placement of the rooms.

Gonna focus now on setting up item layers as needed for the traps, gates, elevated tiles, torches, sword, potions, skeletons, etc.

I’ll also use a foreground layer for the various elements that fully or partially obscure the characters.

I’ll may set the background brick patterns as separate items from the background too, which would cut down on the total number of tile variations needed, but really, the effort is minimal in creating variations, and storage of a few extra tiles on the FX is nothing to worry about.

1 Like

That looks great! I understand how distracting it can be.

Tiled is a great tool and well documented. Will make it easier to write a converter tool for it.


Edit:

Using 2D tiles like you do now is better than those semi 3D tiles. those would require masking for each tile and would take up more space and time. a 2nd 2D layer with masking can be draw to for foreground tiles.

1 Like

Yes, I definitely considered using versions of the quasi-3d tiles, since I could then leverage the exact structures from the original sources, but felt this was much easier, and would allow me to keep things as small as possible.

1 Like

This is looking fantastic.

I had a go at a POP like game myself on the Pokitto but ran out of steam. I should have just made the proper game.

image

5 Likes

Nice :blush:
You definitely got a great start on it.

I’m having a lot of fun with this. Too much. It’s possibly one of my favourite games from my childhood, so I’d love to get it as true to the original as I possibly can.

2 Likes

Not much time to work on it today, but I got the animated torch and spikes done. Uploaded at 2x since they’re so small :slight_smile:

torch

spikes2Anim (1)

4 Likes

nice! I already imagine our prince resting in those spikes :dizzy_face:

It’s possible to zoom your images on this forum. After you’ve added a image. In the right pane of the preview message, click at 100% under the image and then change the 100% to 200% at the left pane by editing the text.

1 Like