Ralim / IronOS-Meta

Storing meta information about devices that dont need to be in the main repo
54 stars 10 forks source link

New logo format preview #1

Closed Ralim closed 2 years ago

Ralim commented 2 years ago

None of the files this branch makes will work in IronOS yet None of the files this branch makes will work in IronOS yet None of the files this branch makes will work in IronOS yet

Please do not expect any files to be usable on a device yet

This is doing a few things:

  1. Pulling logos out to their own repo so they can update async to IronOS
  2. Working on figuring out a format for animated bootup logo's
  3. Putting Github actions to use to build logo's for both Pinecil and Miniware devices automagically

Todo:

Ralim commented 2 years ago

@discip Informing you this exists now.

Note: This wont make images you can test yet. But you can test making animations now that the format is figured out.

Going to note; the current IronOS gif looks siick but doesnt encode well :( (Movement isnt great for delta encoding) so we only get first ~6 frames. Wondering if we could try a cutdown one that just does the sort of shine + smoke effect or something?

Anyway... opening door to you asking me a lot of questions now :)

discip commented 2 years ago

@Ralim

That's good news indeed. 😃

But you can test making animations now that the format is figured out.

  1. How / what exactly am I supposed to test?
  2. Is IronOS capable of using the generated animations without being modified? (How else should I test them?)
  3. Do you plan to add an entry in the User interface to 3.1. switch bootup logo on/off and 3.2. set duration for the logo?

I really hope this does meet your expectations (6 sprites).

IronOS.gif



Sorry if I got this wrong, but I tried to flash the generated updated IronOS.gif to the Pinecil but without any effect. The miniware.zip only contains the erase files. Is this by design?

Ralim commented 2 years ago

@discip

How / what exactly am I supposed to test?

For now I was sorta thinking you might run the python script, as it will output things like Truncating animation after 7 frames as we are out of space to let you know how much of the logo fitted :)

Is IronOS capable of using the generated animations without being modified? (How else should I test them?)

Not yet, please note the text at the top of this PR. Its next on my todo list, but wanted to figure out this side first

Do you plan to add an entry in the User interface to...

Not currently, if those dont exist as an Issue at IronOS, could you add one?

That gif is what I was thinking :D

Since it has a lower frame to frame change, it can encode nicely, if you look at the action https://github.com/Ralim/IronOS-Meta/runs/5194049535?check_suite_focus=true in the first build logo's run you can see that all the frames fitted (no truncation warning).

So you can add more frames until it starts truncating. The less that changes frame to frame, the more of them you can have (if that makes sense); since they are delta encoded (we only store the difference frame to frame) unless you change the entire frame (then its smaller to store the whole thing).

The miniware.zip only contains the erase files. Is this by design?

Nope, that is a bug still to be fixed

discip commented 2 years ago

@Ralim

For now I was sorta thinking you might run the python script,

Run it on my machine, or let it run here using actions?

please note the text at the top of this PR.

😅 Was aware of this, but the other phrase confused me a bit:

But you can test making animations ...


Not currently, if those dont exist as an Issue at IronOS, could you add one?

Yes will do. 😊 Are you thinking of any additional options regarding this topic, so I could put them there as well?

So you can add more frames until it starts truncating. The less that changes frame to frame, the more of them you can have (if that makes sense); since they are delta encoded (we only store the difference frame to frame) unless you change the entire frame (then its smaller to store the whole thing).

I am not sure if I got that right, since you are talking about 6 frames and above even 7 max.

Truncating animation after 7 frames as we are out of space

Is Frames the equivalent for sprites (individual pictures)? Does it check the size of the result not exceeding 1024 byte and removes accordingly the files making it to big, or are simply the pictures 7,8,9 ... are ignored?

Ralim commented 2 years ago

Run it on my machine, or let it run here using actions?

Either, dont care which :)

Are you thinking of any additional options regarding this topic, so I could put them there as well?

Not that I'm aware of at least

Is Frames the equivalent for sprites (individual pictures)?

Ah, as in frame of the gif, since the give IronOS.gif (for example) was ~20 frames of animation; at 10fps.

The code will measure the fps based off the first frame. Then it looks frame by frame in the animation to calculate what needs to be shown. I think we both are thinking of the same thing, might be language slang for them 😓

Yep, it will pack frames until either the end of the gif or adding the next frame would exceed 1024 bytes.

discip commented 2 years ago

I think we both are thinking of the same thing, might be language slang for them 😓

😃

Yep, it will pack frames until either the end of the gif or adding the next frame would exceed 1024 bytes.

👍

Than I will definitively test a bit more to get the most out of the IronOS.gif!

discip commented 2 years ago

@Ralim Should this

Truncating animation after 7 frames as we are out of space

not read

Truncating animation after 6 frames as we are out of space

Would it be hard to print the sum of all the bytes used at the end of the corresponding build?

Found 18 frames, interval 100ms
Frame 1 encoded to 59 bytes
Frame 2 encoded to 155 bytes
Frame 3 encoded to 119 bytes
Frame 4 encoded to 69 bytes
Frame 5 encoded to 57 bytes
Frame 6 encoded to 5 bytes
Frame 7 encoded to 9 bytes
Frame 8 encoded to 9 bytes
Frame 9 encoded to 11 bytes
Frame 10 encoded to 5 bytes
Frame 11 encoded to 9 bytes
Frame 12 encoded to 3 bytes
Frame 13 encoded to 5 bytes
Frame 14 encoded to 5 bytes
Frame 15 encoded to 9 bytes
Frame 16 encoded to 9 bytes
Frame 17 encoded to 11 bytes

here ==> required space xxx bytes
Ralim commented 2 years ago

Ah yeah can definitely do that for you