Is there a standard way to share EEPROM? At only 1K, you need to be super efficient. But - there is complex efficient and then there is simple efficient...
Ok, this is still on topic, so...
I could see that there might be value in some items, like a Pseudo Unique Identifier, or your name. But I can also see that you could divide up EEPROM so that value like these are preserved in an available space, but can be set by an Arduboy Utility. You load the Arduboy Utility, and it can set some of these special values, and then gets out of the way when the next app overwrites it.
The simplest model I could imagine for EEPROM management is a Len-Tag model.
- LEN - byte - number of 4 byte blocks in this block (including this label)
- TAG - byte*3 - alphanumeric tag identifying block purpose/owner
- blk*LEN - 4 byte blocks repeated LEN times
Sample Contents of EEPROM
\x05ABY" - 4 blocks (16 bytes) Arduboy data
"Chris..." - 8 bytes of user identifier
"\x11\x22\x33\x44\x55\x66\x77\x88" - 8 bytes of random unique ID
\x02"ALA" - 1 block (4 bytes) Alien Attack highscore
\x00\x00\x03\xE8 - score of 1000
\x02"TKB" - 1 block (4 bytes) Tank Battle highscore
\x00\x00\x00\x23 - score of 35
\xF7"---" - reserved tag, empty space of 246 blocks after this
A three character (Upper/Lower/Numeric) tag gives you nearly a quarter million possible tags. Simple API functions that walk the blocks allow for the reading and filling of blocks. If this is standardized, then that external program associated with loading and overwriting apps can manage the EEPROM space as well. In fact, the external EEPROM manager could easily fill in Name and PUI and you would never have to load a special app for that.
This gets you the special Arduboy features (like a name or unique id) with only a minimal cost to all the other apps. Along the way, it provides a way to hand each app it's preferred size of EEPROM space, allowing - with some management, granted - persistent storage of things like high scores.
It hints at a couple of other things. A loadable Arduboy app would need the program image, a memory ownership tag value (3 characters), and the size of EEPROM blocks needed, and perhaps default EEPROM contents. This is also a good place to add an official name and an icon, so that that specialized loader app can show a screen full of nice game options for loading.
I'll stop rambling now, but I close by noting that this memory management seems to fit with the overall Arduboy philosophy -- simple, compact solutions, not wide ranging complexity.