[WIP] isojourn

I’m working on a new adventure game that uses isometric tiles stored on the FX flash chip. I also plan to store map data and dialog on the flash chip.

I started out by making a simple isometric sprite and map editor in python to figure out the tiles.

Here are some examples:

Forest:

Swamp:

Inside:

I then compiled the tiles and put them on the flash chip. They are about 64kb right now, which is fun since it is way more than could fit on the regular Arduboy. I could have compressed them to take up less space, but with the flash chip, who cares!

I don’t know how to tell the emulator about the flash data, so I took a video of a tile animation running on the ArduboyFX.

I have a lot more to do, but thought there might be some interest in FX programming.

11 Likes

Yes! This is so awesome!

Hey @FManga @Mr.Blinky Didn’t something get added to the emulator to support bin files? I think they are stuck inside an Arduboy file maybe?

Yup. Use the arduboy file in this post as a template.

1 Like

Nice to see an FX game in development :+1:

I tried making an arduboy file, but it didn’t work for me. Maybe I messed up the json file?

I have the following in my code:

#define FX_DATA_PAGE 0xFF09

FX::begin(FX_DATA_PAGE);

Perhaps the emulator is coming up with a different value?

isojourn.arduboy (18.6 KB)

The experts will know better but I think it’s expecting it at the beginning of the bin file, I don’t know. Wild guess.

UPDATE: I asked @mr.blinky for the source to his chompies example that might help.

It works fine on the hardware.

I put the minimal code up on github:

Hahah yeah that is a common critique of the emulator, but one man’s javascript can only be so amazing.

I do think it has something to do with requiring a certain way to configure the memory address, but a smarter person than myself is needed.

Its not you @pmwasson. The issue is that the flash support in pABE uses Rx as flash chip select (was chosen in early development but changed later to SDA for FX hardware). Since the sketch is compiled for FX using SDA as flash chips select. the emulator doesn’t see any flash access.

@FManga could you add support for SDA? It would be nice if both Rx and SDA could be supported.

Suggestion:

Add option option “flashselect”: “rx” and “flashselect”: “sda” under the binaries section in the json file. so the emulator can check this option to determinse if rx or sda is should be used as flash chips select (When the option isn’t present it should default to rx so the early development examples don’t break).

I’ve recompiled from source using RX as flash chips select so the demo can be enjoyed here with the current emulator version.

isojourn.arduboy (18.1 KB)

Ah, is that what happened? I think I missed the change to SDA. I’ll see what I can do.

1 Like

Woops, yeah we switched the flash select to SDA on the production versions of the mod-chip and factory FX to be the default.

Update: something still seems wrong, it appears the emulator is somehow grabbing the wrong frames? It doesn’t look the same as the video @pmwasson uploaded especially when you can see a clone in swamp and also some text?

And when you press down, he turns into a glyph on the floor…
ArduboyCapture (1)

Oh and the trees are frogs. Looks like there is some offset problem? Any thoughts on that @mr.blinky?

I recompiled for both Rx and SDA and It looks the same on my hardware as this demo. The recompiled version looks different then the original one though. Maybe it’s a side effect of the minimal code on github or the different data file?. I had to use 0xFF06 instead of 0xFF09 for FX_DATA_PAGE

How come? That might be it, an offset of 3 bytes?

Or is that a page address?

SDA support added, no need to change anything in existing arduboy files. I just connected the CS pin to both Rx and SDA.

2 Likes

Thanks for the quick response!

I’ve been changing stuff frequently, so the data file and hex may be out of sync. I’ll try to see if I can get the emulator to work now.

Hopefully I can have a new demo where you can run around soonish.

Meanwhile, I’ve been playing around with adding height to the map:

4 Likes

Thanks for the emulator fix!

Fixed simple demo (8-way turning):
isojourn.arduboy (19.5 KB)
The version on github should now be consistent.

Hopefully the next version will be more interesting.

2 Likes

I can’t stress how excited I am for this.

Are you already planning on the internal flash and ram space you’ll need to have the gameplay?

I think having dialog could be a great use of the external flash too.

For objects or events, the other characters can all have their data stored on the external flash, so you’ve got some kind of data structure available within the RAM and you swap out when you go into battle or whatever.

Do you have it planned what kind of game this will be?

Also, the ability to save back to external memory is there, obviously you don’t want to do it all the time but using it as save game type storage should be totally fine. So you could save the state of the world map, or like in an RPG when you trigger certain events.

Did I mention I’m excited for this!

1 Like

Yes, I have it mostly planned out, but I’m sure things will change during implementation.

It will be a simple story driven exploration game with some easy puzzles. I like to make games that are suitable for all ages.

I plan to store the graphics, map and interactions on the flash chip, where an interaction is a series of dialogs plus state updates using a simple byte-code. This means some of the game logic will live on the flash chip. Ideally, the “story” will be on the flash chip and the interpreter will be in program memory, but I’m sure I will have to cheat to get everything to work and some of the logic will end up in program memory. But the nice thing is that since the big data stuff isn’t in program memory, there should be lots of room left.

2 Likes

@pmwasson uploading FX development data is made easier now using the latest updated Uploader GUI python script.

1 Like