LZVN packed Apple Logo’s

I blogged about finding new EFI images in Yosemite on June 13, right after I updated Sam’s Perl script (efires-xtract) to extract the images. Thing is. I also found some other interested images in Apple binaries. Stuff that I didn’t share with you at that time, but just look at this screenshot:


Right. The problem was that back then we had no functional LZVN decompression, but now we do. And today I used it for an update of my fork of macosxbootloader.

Now all I have to do is wait for folks over at macrumors.com to confirm that the latest experimental built works. Or not of course, but then it should be a simply matter of fixing the broken bits.

Nevertheless. The old MacPro’s are now by far the oldest Mac hardware to “officially” support iCloud, iMessage, Handoff and Continuity. That is pretty amazing for such an old piece of Apple machinery. Anyway. Have fun now guys and don’t forget the feedback!


Great. The new shiny white Apple logo on the black background is working, but there are still a couple of kinks to iron out. For example. The first thing that I noticed was that the background colour is changed pretty late in the game. Let me try to explain how it works:

1.) AppleLogoBlackPacked (912 bytes) is LZVN decompressed.
2.) The resulting 8652 bytes are Clut converted.
3.) CsClearScreen() is called (changed background colour).

That was the old situation, but this is how it should work now:

1.) First we call CsClearScreen().
2.) Then we decompress AppleLogoBlackPacked.
3.) After this the data is Clut converted.

In other words. The time that it takes to decompress the LZVN packed Apple logo, plus the time it takes to convert the Apple logo data, will now be done after the background colour is changed! Let me know if you notice the difference. TIA !

67 thoughts on “LZVN packed Apple Logo’s

  1. Pike, there are missing semicolons at the end of two declarations in AppleLogo.h. I can’t specify right now where (one of them might be STATIC UINT8 AppleLogo2XClut[ 368 ] {…}) , because I quickly added them in my local copy, saved them and compiled. I’ll be posting the build result in MacRumors in a few minutes. Cheers!

      • The only comment posted at macrumors.com so far is, “Boots just fine though aesthetically, it is no different then the “silly”/previous build”.

      • I had added the missing ‘ ; ‘ in lines 104 & 131 of the AppleLogo.h by myself. Compiling was ok then and the Boot.efi works on my MBP2,2. Seems to be at the first glance no difference to the previous ‘silly’ version.

      • Pike, I have to leave my computer for a couple of hours. In case you revise the code, I hope someone else is able to compile and share it. Cheers.

  2. Feedback: The non-verbose version works on my MBP2,2. It shows a white Apple logo & white progress bar on a black background (GPU is ATI X1600). Works with the Installer as well as the installed Yosemite.

    • Right. That indeed looks odd. No idea where the grey is coming from.

      Do you have a a key named “Background Color” in com.apple.Boot.plist? You could add it to see if it picks that value (as a test).

      • Nope. I don’t have it. Didn’t try to edit anything in Boot.plist, except lzss compression in early stage of bootloader. Now it’s back to lzvn since you made it work. I’ll try to add Background Color then.

      • Found the issue. I used “build” or “build boot” instead of “build solution”. Please don’t approve last comment, it will only make a mess.

  3. Congratulations, Pike. Several forum members have reported fast boots in Mavericks GM. Some people are reporting they can’t see the black background and white Apple logo and progress bar. Maybe they don’t have EFI-capable graphics cards?

      • I may be mistaken, but one of the forum members seems to have compiled just the boot project as such, excluding the rijndael project. Admittedly, I have no idea what this does, but perhaps therein is the problem.

      • Please, ignore my previous comment, as I see it had already been confirmed by blacksheep. Many thanks.

      • You should do a diff with your/his files and see what the difference is. Also. Are you just using “Build Solution” or are you doing something (clean) before this step?

      • It turned out that it’s not the end…
        I compiled using “build solution” and:
        – in Debug no change (gray screen, white bar, no logo), boots OK
        – in Release black mode OK (bar, logo, background), but about a half way to end of progress bar it stops and screen turns completely black. In verbose mode it hangs on “still waiting for root device”
        That was with files from few minutes before you updated “Call CsClearScreen() earlier”.
        I noticed that modification dates of boot (VS file) and props were 08:39.

        Now I DL’d whole package with “Call CsClearScreen() earlier” added.
        Modification dates of boot (VS file) and props are 13:45.

        Again compiled using “build solution” and:
        – in Debug no change (gray screen, white bar, no logo), boots OK
        – in Release gray screen, white bar and white logo in a black square. Again hangs in about a half way of progress like before

        Last thing – I don’t know if important – when I ran “code analysis on solution” in VS, there was a couple of errors. http://i60.tinypic.com/2n8bxpw.png

        Why I tried in Release mode? Because Hennessie’s compilation was done this way, and it’s the only one that works for me with black bkgrnd, white logo and bar. I don’t know what sources he was using, though.

        I hope this will help.

      • Yes, I used only “Build solution”, no extra steps before. Good news is that “waiting for root device” is related to my Yosemite install. It got borked somehow. With Apple boot.efi now I’m getting this too. Weird is that with Debug compiled it loads fine. Anyway, white logo in a black square is confirmed by other users here: http://forums.macrumors.com/showthread.php?t=1740775&page=32
        P.S. version with commented out unused images loads much faster than previous one.

  4. Feedback: I’ve tried the C6297-version from Oct, 10 and there’s a bug in the Boot.efi. After selecting the Boot-Partition from Apple’s Startup-Manager, therein appears immediately a small white Apple logo within a black box, the progress bar too and it switches some seconds later then to the normal Apple Boot-Screen with the bigger white logo / progress bar on a black background. Never had this effect on my MBP2,2.

  5. Hello Pike, two “dumb” off-topic questions:

    – would it be possible to include a USB3 driver (e.g. for a PCIe card) into the Boot.efi so that we’re able to boot the older Macs via this faster interface?

    – do you know or can write a command line tool to extract the Kernel file from the Essentials.pkg (obviously also compressed via LZVN)?

    • There are many features that could be added. Your EFI driver loader is just one example. ACPI and SMBIOS patchers are two others. The problem is that I don’t have an old MacPro to work with, and that makes writing code harder and more time consuming. I can however not justify the expense of buying old hardware.

      About the kernel extraction procedure. Yes. I can do that. In fact I already did, but for a client and thus I need to ask them about what I can and cannot do.

  6. OK guys, figured it out.
    It took me a half of a day: clean install of DP1 on SSD and all updates, one by one (serious PITA). But I’m almost proud of myself 😀

    It wasn’t the latest fix (C6297), it was ClrScreen addition. It caused black box logo. Removed // and ClrScreen line, replaced Hibernate.cpp and .h files with C6297 ones and all is OK. 🙂
    Compiled in Release mode with clean before build.
    Debug mode still boots to grey screen without logo and with white bar, but who cares now 🙂

    Here is the video:

    Impressive ~20 seconds from chime to the desktop.
    There is a small graphics glitch at the end, but it was always there, since first version. I couldn’t care less about it 🙂

    KUDOS to YOU Pike!!!

    • Perfect. Fixed Console.cpp thanks to you.

      There is something else I noticed. Here is what happens now:

      1.) black screen.
      2.) white Apple logo.
      3.) progress bar (longer without kerncache).
      4.) black screen (for seconds).
      5.) flash of white Apple logo and progress bar.
      6.) desktop.

      We may be able to fix this. First. Open IORegistryExplorer and look for a framebuffer with AAPL,boot-display and check the (boolean) value of IOFBNeedsRefresh. Is that true or false? It should be false for the boot-display.

      If AAPL,boot-display is missing, put on the wrong frame buffer, or IOFBNeedsRefresh is true, then something can be done about it.

  7. Many thanks, Pike. The project has been incredible and you’ve displayed marvellous expertise and incredible kindness in making this wonderful tool available for the community. Thanks again.

  8. I’m getting this error with latest legacy grey version.

    error C1083: Cannot open include file: ‘PanicDialogData.h’: No such file or directory
    file: PictData.h line 9 column 1

    File is present in scr folder, and it seems that there’s no typo.

    BTW, black mode is cool, especially that not all Macs can have it without tweaks 🙂

  9. hi pike! I’m back from my short holiday… I just tried to build your latest commit (5604750683; Reinstating legacy grey (testing required)) and it didn’t work out. I got error C1083: Cannot open include file: ‘PanicDialogData.h’: No such file or directory (Console.cpp). then File: PicData.h Line 9 Column 1.

      • With version from 14 mins ago I got more errors:
        error C2144: syntax error : ‘int’ should be preceded by ‘;’ PanicDialogData.h line 1030
        warning C4091: ‘static ‘ : ignored on left of ‘int’ when no variable is declared PanicDialogData.h line 1030
        error C2144: syntax error : ‘UINT8’ should be preceded by ‘;’ PanicDialogData.h 1030
        error C2065: ‘CspPanicDialog2x’ : undeclared identifier Console.cpp line 986
        error C2065: ‘CspPanicDialog’ : undeclared identifier Console.cpp line 986
        error C2070: ‘unknown-type’: illegal sizeof operand Console.cpp line 986
        error C2065: ‘CspPanicDialogLookupTable2x’ : undeclared identifier Console.cpp line 992
        error C2065: ‘CspPanicDialogLookupTable’ : undeclared identifier Console.cpp line 992
        error C2660: ‘CspConvertImage’ : function does not take 5 arguments Console.cpp line 992

      • OK, now it compiles fine. Boots exactly the same like on a vid I posted yesterday:
        – grey screen (before bootloader loads)
        – black mode with white Apple and progress bar
        – black screen for a second or two
        – flash of white logo on black background with finished progress bar
        – desktop

      • Thank you for this confirmation. Can you please also check if legacy grey mode works after making this change in StdAfx.h

        -#define LEGACY_GREY_SUPPORT 0
        +#define LEGACY_GREY_SUPPORT 1


      • It still boots to black mode.
        Changed the value to 1 (checked twice), saved StdAfx.h and ran Rebuild solution. It replaced former file with new one (recent modification date).

      • Rebuild solution wasn’t the best idea…
        It uses previous temp files as it turned out.

        Deleted temp and bin, did clean and built again.

        Sequence is now:
        – grey screen
        – black with square and no progress bar
        – grey screen for a second or two
        – flash of “regular” grey screen with grey logo and bar
        – desktop
        There is some noise in this white square. Due to vid compression it isn’t visible.

        Here is the vid:

      • Thanks. The background should no longer be black now, and I also hope to have fixed the progress bar, but I forgot the exact value that I used so it may still be wrong.

      • One error occures (only when I compile with LEGACY set to 1) with “fix progressbar” version
        error C2065: ‘ff80’ : undeclared identifier BootArgs.cpp line 312

      • Now compiles fine.
        Present sequence is:
        – grey screen (initial)
        – grey screen with borked logo (square with noise) and white progress bar
        – grey screen (1-2 sec)
        – flash of “regular” grey screen with grey logo and bar
        – desktop

      • Logo is good now. White progress bar remains. I’ll put this version on macrumors to get more feedback about it.

      • Almost perfect. Let me figure out what the value should have been.

        BTW. There’s a boot argument (meter=0) that should change the progress bar into the good old throbber. Does that still work?

      • Hey Pike, my testing rig is still too busy to test the latest version, but as I can see from other users reports, all is working perfectly.
        Congrats on success and thank you for your hard work. There isn’t many persons like you all over the world. It was a great pleasure to be a tester of this project. It brought me a lot of fun and excitement, and made me doing things which I wouldn’t even imagine before (like compiling thing in VS).

        Great KUDOS to you!

  10. I understand this is a little off topic.

    How do I compress custom apple icons with LZVN to replace the default appleLogo.efires files.

    Will this change my boot logo?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s