Shadow Runner - First conversion of a TEAM a.r.g. game


#1

Yep got the work all done, here is TEAM a.r.g. 's first converted game: Shadow Runner.

Here you have a video:

Manual, media, download and technical are all on our website:

http://www.team-arg.org/shrun-manual.html


Need ideas for arduboy games?😃
How do I lower the volume?
"Semi-Official" Game List for the Arduboy
Greyscale for arduboy
"Semi-Official" Game List for the Arduboy
(Josh Goebel) #2

Awesome. Where is the CPU meter? :wink:

And how do you make these videos? Is there some small tripod involved?


(Josh Goebel) #3

175 - 200% CPU usage. :slight_smile: So that means you’re running at more like 30 FPS… so that proves you don’t need 60 FPS for a fun game… but also has me wondering what the game would feel like at 60 FPS. Let me know if you want my help to try and get it lower. The advantage being potentially smoother play or battery savings.

And if it’s already smooth enough you’d save some battery by just setting the frame rate to 30 vs 60. And this is why I still don’t love everyXFrames… because you’d have to change them all to switch to a different frame rate.

How’d I get the CPU? I just altered the draw_score to instead draw cpuLoad().


(Scott) #4

If this game is running at 16Mhz, it would be a good candidate to try at 8MHz since that might be the speed that the production Arduboy runs at.

I’ll try it with my home made system, which runs at 8Mhz when I get the chance.

@Dreamer3, If you create a more efficient version, I can try that too. I can report the CPU usage if you include that capability.


#5

Let us know what happens ! @MLXXXp


(Scott) #6

On my 8MHz system, the game runs at about half the speed seen in the video (so it’s really easy to play :wink:). This seems to confirm what @Dreamer3 said; that your CPU load, even at 16MHz, is over 100%.

Note that I commented out the #if F_CPU == 8000000L sections in Arglib.cpp since my clock speed really is 8MHz, so there’s no need to adjust the clock divisor. If this code were left in, I think you could set your board type to one that runs at 8MHz, before uploading the sketch to a Dev Kit, to see for yourself.

An easy way to get a 8MHz ATmega32U4 board type would be to set it to SparkFun Pro Micro 3.3V/8MHz. To get this board type, you can install the SparkFun Arduino Addon Files.


(Kevin) #7

Yeah games like this really like the 16mhz there is something magical about that frequency :wink:


(scotty) #8

Awesome Team ARG :smiley: Looks great!


(Josh Goebel) #9

Yeah, and easy to do with custom board.txt files. I’ve published the files on my github but not actually tested the speed change yet.

This seems to confirm what @Dreamer3 said; that your CPU load, even at 16MHz, is over 100%.

It’s easy to confirm, just alter the sketch to show cpuLoad() instead of score. I think you could get this to 30FPS on 8Mhz with optimizations, but 60 FPS on 8 might be too much. Not sure.


#10

Hi!

First, thank you for the wonderful games you published (and still will publish ;-))

Now to my question:
I want to write games too, and so I look how you do some things. The problem I have are your bitmaps. To convert the bitmaps I use this tool from here. But when I put the code to the EEPROM like you do, the bitmap is scrambled at output. So please can you tell me which tool you use to convert your bitmaps to 0x… ?

Thanks a lot,
Robert


#11

Can you post a small bitmap and the code you get? My guess you also added the 2 first numbers (width and height) For arduboy lib you have to remove those from the progmem part and add them in the draw function. But is just a guess. I use “the dotfactory”


#12

Thanks for your answer!

I tried “my” program to convert your “ShadowRunner.bmp” bitmap and the result was:

PROGMEM const unsigned char bmp[] =
{
0x3D,0x7D,0x75,0xFD,0x5F,0xD5,0x5F,0xFF,0xD5,0xFF,0x5D,0x75,
0x3A,0xBA,0xFA,0xFA,0xAF,0xEA,0xAB,0xFE,0xAA,0xFE,0xBA,0xFA,
0x35,0x7D,0x75,0xF5,0x57,0xD5,0x55,0xFD,0x55,0x7F,0x5D,0x75,
0x2A,0xBA,0xFA,0xEA,0xAB,0xEA,0xAA,0xFA,0xAA,0xBE,0xBA,0xFA,
0x35,0xFD,0x75,0xF5,0xF5,0xD7,0xF5,0xFD,0x7D,0x5F,0x5D,0x75,
0x2A,0xFA,0xFA,0xEB,0xEB,0xEB,0xFA,0xFA,0xFE,0xAE,0xBA,0xFA,
0x35,0xFD,0x55,0xF5,0xF5,0xD7,0xFD,0x75,0xFF,0x5F,0x5D,0x75,
0x2A,0xFA,0xAA,0xEB,0xEB,0xEB,0xFA,0xFA,0xFF,0xAE,0xBA,0xFA,
0x35,0x7D,0x55,0xF5,0x55,0xD7,0xFD,0x75,0xFF,0x5F,0x5D,0x75,
0x3A,0xBA,0xAA,0xEA,0xAB,0xEB,0xFA,0xFA,0xFF,0xAE,0xBA,0xFA,
0x3D,0x7D,0x75,0xF5,0x55,0xD7,0xF5,0x75,0x7F,0x5F,0x5D,0x75,
0x3A,0xBA,0xFA,0xEA,0xEB,0xEA,0xAA,0xFA,0xBE,0xBE,0xBA,0xFA,
0x15,0x7D,0x75,0xF5,0xFF,0xDF,0xFD,0xFD,0x7F,0xDF,0xDF,0xF5,
0x2A,0xFA,0xFA,0xEB,0xC0,0xE8,0xC7,0x86,0xE0,0xF0,0x70,0x3A,
0x15,0xFD,0x75,0xF5,0xC0,0x78,0xC7,0x03,0xC0,0x60,0x50,0x1D,
0x2B,0xFA,0xFA,0xEB,0xC0,0x28,0xC6,0x01,0x80,0x60,0x70,0x0F,
0x3F,0xFF,0xFF,0xFF,0xC6,0x38,0xC6,0x31,0x8C,0x63,0xF1,0x8F,
0x3F,0xFF,0xFF,0xFF,0xC6,0x38,0xC6,0x31,0x8C,0x60,0x71,0x8F,
0x3F,0xFF,0xFF,0xFF,0xC4,0x38,0xC6,0x31,0x8C,0x60,0x71,0x0F,
0x3F,0xFF,0xFF,0xFF,0xC4,0x78,0xC6,0x31,0x8C,0x60,0x71,0x1F,
0x3F,0xFF,0xFF,0xFF,0xC4,0x78,0xC6,0x31,0x8C,0x63,0xF1,0x1F,
0x3F,0xFF,0xFF,0xFF,0xC4,0x38,0x06,0x31,0x8C,0x60,0x71,0x0F,
0x3F,0xFF,0xFF,0xFF,0xC6,0x3C,0x0E,0x31,0x8C,0x60,0x71,0x8F,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};

And this code works with this function:

display.clearDisplay();
display.drawSlowXYBitmap(1,1, bmp, 94,24,1);
display.display();

with kind regards,
Robert


#13

@flyingangel my guess is you have to rotate the bitmap before you load it. Maybe you should contact the maker of the program?

Like I said, I use thedotfactory and the config like this:


(Kevin) #14

Just reviewed Shadow Runner on the new youtube channel. Check it out!


(Phil Graham) #15

Sorry for opening up an old thread.

I’ve downloaded Shadow Runner and I have noticed that the score is at the bottom of the screen and it’s not very visible.


#16

We’ll fix it by monday evening ! I’ll keep you posted.