Probably for the same reason that some sounds don’t work. The emulator doesn’t fully handle all the ATmega32U4 built in timers and other peripherals.
@FManga, the developer of the ABE emulator, could confirm this.
That depends on what you would like others to be able to do with your code. You should read the each licence thoroughly before deciding, to make sure it conforms to your wishes.
For open source, MIT or one of the BSD licences are commonly used.
If you want the least restrictive “release to the public domain”, CC0 could be used.
Yes, looks like that library uses timer 4, which wasn’t implemented since it’s almost never used. Isn’t the existing time function good enough for this case?
I’m not sure what the intention is for calling millis() and arduboy.initRandomSeed() at the start of loop(). By being placed there, they will both be called rapidly while waiting for if(!arduboy.nextFrame()) to become true.
Calling millis() without using its return value just wastes a small amount of time. arduboy.initRandomSeed() should only be called once, in setup() after arduboy.begin()