That was only true for the Sept payload, which is now deprecated. The Atmosphere logo splash can be edited and I have done so myself, although it was pre-covid so it has been a while.
If I recall correctly this is the line that actually draws the logo on screen, you will have to edit the width and height of the image as well as the X Y coordinates here.
https://github.com/Atmosphere-NX/At...sphere/boot/source/boot_splash_screen.cpp#L40
The actual splash screen image is a raw RGB framebuffer stored in a unsigned 32 bit integer array. I did create a tool to automatically generate the array from a PNG but I don't think I have it anymore, if I do have it I don't know where I put it.
https://github.com/Atmosphere-NX/At...ere/boot/source/boot_splash_screen_notext.inc
You can edit this line to adjust how long the logo shows for. The default is 2 seconds, I don't know if you can make it any lower since there may be another thread doing stuff in the background that takes at least 2 seconds to complete it's task. https://github.com/Atmosphere-NX/At...sphere/boot/source/boot_splash_screen.cpp#L41
So I was able to compile AND run my own copy of Atmos. Cool stuff! Thanks for the redirect!
I see where the X*2+(image width) and Y*2+(image height) = 1280x720 screen resolution.
I see the banding pattern of an image.
What I’m unclear on is that I’ve been working with RGBA lately and I expected to see 0x00, 0x00, 0x00, 0xFF and this is exactly the reverse of that.
I understand you said it‘s a 32 bit unsigned framebuffer but I can’t find a decent example to prove my theory.
I can’t figure out how to display this image (and thus build the knowledge to substitute my own).
Is there different name for this image I should be looking for?
What tool will display it?
e: is it RGB565? It can’t be…it’s supposed to be 32 bit.
I found the following discussion about sending an image back to the framebufder and the solution was this:
convert -resize 1440x900 -background black -gravity center -extent 1440x900 01.jpg bgra:/dev/fb0
BRGA? It’s flipped, but again, not the way I would expect with a 0xFF000000 pattern for the image in Atmos. Both the Pi and Switch use Arm so I doubt it’s endianness or something basic like that.
RGBA .. red greeb blue alpha ... 32 bit mode
Code:
#pragma pack(1) // Must be packed
typedef struct tagRGBA {
union {
struct {
uint8_t rgbBlue; // The intensity of blue in the color
uint8_t rgbGreen; // The intensity of green in the color
uint8_t rgbRed; // The intensity of red in the color
uint8_t rgbAlpha; // The alpha of the color
};
RGBTRIPLE rgb; // First 3 bytes are same as RGB
uint32_t Raw32; // Raw32 bit access if needed
};
} RGBA;
#pragma pack()
RGB565 ... 16 bit mode
Code:
#pragma pack(1) // Must be packed
typedef struct RGB565 {
union {
struct {
uint16_t B : 5; // Blue 5 bits
uint16_t G : 6; // Green 6 bits
uint16_t R : 5; // Red 5 bits
};
uint16_t Raw16; // Raw 16 bit access if needed
};
} RGB565;
#pragma pack()
Code:
#pragma pack(1) // Must be packed
typedef struct tagRGBA {
union {
struct {
uint8_t rgbBlue; // The intensity of blue in the color
uint8_t rgbGreen; // The intensity of green in the color
uint8_t rgbRed; // The intensity of red in the color
uint8_t rgbAlpha; // The alpha of the color
};
RGBTRIPLE rgb; // First 3 bytes are same as RGB
uint32_t Raw32; // Raw32 bit access if needed
};
} RGBA;
#pragma pack()
RGB565 ... 16 bit mode
Code:
#pragma pack(1) // Must be packed
typedef struct RGB565 {
union {
struct {
uint16_t B : 5; // Blue 5 bits
uint16_t G : 6; // Green 6 bits
uint16_t R : 5; // Red 5 bits
};
uint16_t Raw16; // Raw 16 bit access if needed
};
} RGB565;
#pragma pack()
Any clues would be greatly appreciated.
Last edited by binkinator,