The problem is that *ctx->fb_base is type grub_uint32_t, but base64 is type grub_uint64_t. So grub is storing a
64-bit framebuffer pointer into a 32-bit field, truncating off the
high bits, and leaving zeros.
This size mismatch goes all the way back up the call chain:
find_line_len()->find_card()->find_framebuf()->check_protocol().