Fire Panic on SH1106?

Hi, I hope you can help me. I have made a handmade Arduboy with a flash card Mr brinky. I have compiled and loaded the game but when I run it it doesn’t work. What could be the problem?

Tranks

I am sorry but I have no idea.

Have you managed to get other games to work? What screen are you using??

If I have other games already running.
The fact is that the skecht compiles it well. I don’t know why when I run it, I get the loading screen that appears with the play symbol, but when loading the game, a line appears at the bottom.

regards

So the ‘Press Play On Tape’ screen works? But then you do not see the title screen after that?

Just to be sure, I have pulled the code from GitHub and recompiled it and it works properly on my Arduboy and on the ProjectABE emulator I am running locally.

I also just checked the code to see if any rogue EEPROM data could upset it but it looks like the EEPROM is not read until after the title screen so I would not expect that to be an issue. I also have a quick check to see if the EEPROM has been initialised properly and it should work itself out.

Have you flashed the game directly onto the device or are you trying to load it via the bootloader?

The reason for this is that the game uses a custom display function that doesn’t support displays other than the original SSD1306 and you’re most likely using a SH1106 display

1 Like

What function is that?

void Arduboy2Ext::paintScreenWithBackground(uint8_t image[], TimeOfDay timeOfDay)
1 Like

But it is essentially the same as the original Arduboy code - why would my very minor changes be an issue? How does your library handle the different screens? Does it swap out the original paintScreen() with a version for each screen type?

Y luego me sale esto

Yes the original code was written for SSD1306. It makes use of the memory mode where you can just write 1K of display data to the display. The SH1106 display does not support this mode (that’s why everything is displayed on a single 8 pixel row)

The homemade package supports multiple displays by using customized Arduboy and Arduboy2 libraries where the display function is customized for multiple displays. It relies on Arduboy::display() and Arduboy2::display() functions being used in the program

1 Like

Well there you go … I think I this is the only game where I used a custom display() function.

I know why you did it. But it isn’t actually (much) faster. Because the Arduboy2 libraries display function has been tweaked to run with the least possible cycles.
By using while (!(SPSR & _BV(SPIF))) a single transfer will take longer. Those lost cycles could also be used to set the background seperately in a loop

If you’re open for a display compatibilty patch. I could add the changes for you.

1 Like

I have just made the changes so that it can use the standard display().

I will post it to the repo in a few minutes.

2 Likes

BTW your repo has multiple files with the same filename but different case. You may want to remove the outdated versions

  • FirePanic_gameover.png
  • FirePanic_gameover_Mask.png

@FJNM I have posted a new version of the code in my repo and a new HEX which should run on your machine. Please give it a try and tell me how it goes.

I have deleted them, thanks.

2 Likes

Thanks for the quick change

I doubt that. Unless you installed the Homemade package and compiled for SH1106 display :wink:

Gonna download your updated repo and run this on a I2C display :smile:

Ignore my crappy attempt :joy:

Right … except for that little detail!

1 Like

Yes now it works for me. Thank you very much for your help. It is a great game.
I have installed Kong and it also works. Wonderful game.
However I have installed TurtleBridge and unfortunately it does not work. The same thing happened with Firepanic. Could it also be fixed?

Regards and thank you very much

I have just pushed a fix up to my repo for Turtle Bridge. I am so glad you are liking the games.