Re-add Transition Animations in C++ Firmware
Open, NormalPublic

Description

The (old) C-firmware featured a transition animation where the entire screen was moved or wiped out of the frame very quickly (4 directions could be chosen).

This was achieved by a second framebuffer (_transition_framebuffer) of the entire LCD.
At the start of such a transition - it basically captured a screenshot copy into said framebuffer and then with following frames shifted or cropped the content of this second framebuffer towards the move direction.

Reference: https://github.com/apertus-open-source-cinema/AXIOM-Remote/blob/dev/Archive/AXIOM_Remote_Prototype_V01.X/draw.c#L787

The animations start was triggered like this:
https://github.com/apertus-open-source-cinema/AXIOM-Remote/blob/dev/Archive/AXIOM_Remote_Prototype_V01.X/menu.c#L640

The animation itself was handled here:
https://github.com/apertus-open-source-cinema/AXIOM-Remote/blob/dev/Archive/AXIOM_Remote_Prototype_V01.X/main.c#L677

How could we best bring this back in the C++ Firmware?

The effect can be seen in this video:

sebastian triaged this task as Normal priority.
sebastian updated the task description. (Show Details)Apr 13 2020, 4:00 PM
sebastian added a comment.EditedApr 13 2020, 4:17 PM

The ILI9341 datasheet (https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf ) mentions support for "Vertical Scrolling" which would be great as it's a hardware feature and thus presumably would work rather fast.
The directions seem to be limited so the hardware acceleration will not work for every direction/effect.

sebastian renamed this task from Readd Transition Animations in C++ Firmware to Re-add Transition Animations in C++ Firmware.Apr 16 2020, 12:18 PM
eppisai added a subscriber: eppisai.Feb 8 2021, 7:34 PM
This comment was removed by eppisai.
eppisai claimed this task.Mar 22 2021, 11:25 PM
eppisai edited projects, added Restricted Project; removed AXIOM Remote.May 27 2021, 4:45 PM
eppisai edited projects, added AXIOM Remote; removed Restricted Project.
eppisai edited projects, added Restricted Project; removed AXIOM Remote.May 27 2021, 4:48 PM
eppisai edited projects, added AXIOM Remote; removed Restricted Project.
sebastian edited projects, added Restricted Project; removed AXIOM Remote.May 27 2021, 5:10 PM
sebastian edited projects, added AXIOM Remote, Google Summer of Code 2022; removed Restricted Project.
sebastian added a project: AXIOM Beta Software.
sebastian edited projects, added Restricted Project; removed AXIOM Beta Software, AXIOM Remote.May 27 2021, 5:13 PM
eppisai moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.May 27 2021, 5:14 PM

Next steps:
Move this to separate branch if not done already, create PR.
adjust linker script to add second framebuffer, look at first framebuffer there as reference
add second frame buffer in source code
Give us an update about the codes current state & issues

https://github.com/eppisai/AXIOM-Remote/tree/Transition-Task

I had adjusted linker script in firmware to add second framebuffer, and have added second framebuffer in source code.

Linker script adjustment - https://github.com/eppisai/AXIOM-Remote/blob/19307fe6bfd1f31feba0670d967520b50361a502/Firmware/procdefs_app.ld#L88

Transition framebuffer declaration in code - https://github.com/eppisai/AXIOM-Remote/blob/19307fe6bfd1f31feba0670d967520b50361a502/Firmware/Main.cpp#L29

Actual changes in display driver for transitions to happen- https://github.com/eppisai/AXIOM-Remote/blob/19307fe6bfd1f31feba0670d967520b50361a502/Bootloader/Periphery/ILI9341/ILI9341Device.cpp#L392

Issue I am having :(

  1. it showing black screen on remote when i tested it with the help of bertl, but same logic working well in visulizer. So, I am not able to figure out why its happening in remote only :( but working on it.