Navigation is cumbersome, no indication of where you at currently in the list
LED is too bright and fleshy, there is no way to change brightness or completely turn it off
No screen saver to protect CRT from burn-in
Solution
"Raster" based font replaced by vector font. It's drawn using optimized routines borrowed from Malban's source codes. Whole range of ASCII chars supported. Currently lower and upper case letters are the same, but the table made in such way that this can be changed easily in the future. Filename is cropped to 8 chars if not highlighted(can be adjusted in settings) to meet 30k cycles constrain.
Page based list was replaced by continuous, however, you can still turn pages with left-right joystick. Scrollbar added to indicate position in the list.
Added settings screen where you can adjust LED brightness and color.
Added "Stars" screen saver, delay can be adjusted in settings.
The settings screen implemented in such way, that its structure is not "hardcoded", for example you can add another mode for LED or add another submenu simply by adding another text line in settings.i file, no need to change implementation.
Steps to Test
You'll need to compile and flash both STM32 firmware and menu.bin.
References
Fixes #72
Fixes #57
Fixes #42
Fixes #39
Thanks to Malban for tutorials and fast drawing routines.
Thanks to C.Malcolm for "FAKE 3D STARFIELD" which was adapted as screen saver.
Note
These PR contains a lot of changes and affect lines of code that is not directly related to the PR problem and solution.
All code was reformatted to follow next rules(I believe it's easier to navigate in code with consistent formatting):
Label starts at column 0
Instruction starts at column 2
Instruction arguments starts at column 24
Comment starts at column 45
A lot of literals(especially memory addresses) in STM firmware and cart was replaced by constants and offsets.
Contributor License Agreement
I, Vasily Kiniv, agree to license my contributions to this project under the terms of the GPL 3.0 or any later version.
Problem
Solution
The settings screen implemented in such way, that its structure is not "hardcoded", for example you can add another mode for LED or add another submenu simply by adding another text line in
settings.i
file, no need to change implementation.Steps to Test
You'll need to compile and flash both STM32 firmware and menu.bin.
References
Note
These PR contains a lot of changes and affect lines of code that is not directly related to the PR problem and solution.
All code was reformatted to follow next rules(I believe it's easier to navigate in code with consistent formatting):
A lot of literals(especially memory addresses) in STM firmware and cart was replaced by constants and offsets.
Contributor License Agreement
I, Vasily Kiniv, agree to license my contributions to this project under the terms of the GPL 3.0 or any later version.