Index: bootloader/main-pp.c =================================================================== --- bootloader/main-pp.c (revision 15109) +++ bootloader/main-pp.c (working copy) @@ -470,16 +470,18 @@ system_init(); kernel_init(); lcd_init(); + + lcd_set_foreground(LCD_WHITE); + lcd_set_background(LCD_BLACK); + lcd_clear_display(); + font_init(); + show_logo(); button_init(); #if defined(SANSA_E200) i2c_init(); __backlight_on(); #endif - - lcd_set_foreground(LCD_WHITE); - lcd_set_background(LCD_BLACK); - lcd_clear_display(); btn = button_read_device(); #if defined(SANSA_E200) || defined(SANSA_C200) @@ -494,8 +496,10 @@ btn |= BOOTLOADER_BOOT_OF; #endif /* Enable bootloader messages if any button is pressed */ - if (btn) + if (btn) { + lcd_clear_display(); verbose = true; + } lcd_setfont(FONT_SYSFIXED); Index: bootloader/gigabeat.c =================================================================== --- bootloader/gigabeat.c (revision 15109) +++ bootloader/gigabeat.c (working copy) @@ -60,6 +60,7 @@ lcd_init(); backlight_init(); font_init(); + show_logo(); lcd_setfont(FONT_SYSFIXED); @@ -92,8 +93,10 @@ button_init(); /* Show debug messages if button is pressed */ - if(button_read_device()) + if(button_read_device()) { + lcd_clear_display(); verbose = true; + } printf("Rockbox boot loader"); printf("Version %s", version); Index: bootloader/main.c =================================================================== --- bootloader/main.c (revision 15109) +++ bootloader/main.c (working copy) @@ -453,6 +453,7 @@ lcd_remote_init(); #endif font_init(); + show_logo(); lcd_setfont(FONT_SYSFIXED); Index: bootloader/iaudio_x5.c =================================================================== --- bootloader/iaudio_x5.c (revision 15109) +++ bootloader/iaudio_x5.c (working copy) @@ -150,6 +150,8 @@ #endif backlight_init(); font_init(); + show_logo(); + adc_init(); button_init(); Index: bootloader/common.c =================================================================== --- bootloader/common.c (revision 15109) +++ bootloader/common.c (working copy) @@ -27,6 +27,7 @@ #include "common.h" #include "power.h" #include "kernel.h" +#include "rockboxlogo.h" /* TODO: Other bootloaders need to be adjusted to set this variable to true on a button press - currently only the ipod, H10 and Sansa versions do. */ @@ -223,6 +224,24 @@ return len; } +int show_logo( void ) +{ + char boot_version[32]; + + snprintf(boot_version, sizeof(boot_version), "Boot Ver. %s", APPSVERSION); + + lcd_clear_display(); + lcd_bitmap(rockboxlogo, 0, 10, BMPWIDTH_rockboxlogo, BMPHEIGHT_rockboxlogo); + lcd_setfont(FONT_SYSFIXED); + lcd_putsxy((LCD_WIDTH/2) - ((strlen(boot_version)*SYSFONT_WIDTH)/2), + LCD_HEIGHT-SYSFONT_HEIGHT, (unsigned char *)boot_version); + + lcd_update(); + + return 0; +} + + /* These functions are present in the firmware library, but we reimplement them here because the originals do a lot more than we want */ void reset_poweroff_timer(void) Index: bootloader/iriver_h300.c =================================================================== --- bootloader/iriver_h300.c (revision 15109) +++ bootloader/iriver_h300.c (working copy) @@ -200,6 +200,7 @@ lcd_init(); lcd_remote_init(); font_init(); + show_logo(); lcd_setfont(FONT_SYSFIXED); Index: bootloader/ipod.c =================================================================== --- bootloader/ipod.c (revision 15109) +++ bootloader/ipod.c (working copy) @@ -253,6 +253,8 @@ lcd_clear_display(); #endif + show_logo(); + #if 0 /* ADC and button drivers are not yet implemented */ adc_init(); @@ -262,8 +264,10 @@ btn=key_pressed(); /* Enable bootloader messages */ - if (btn==BUTTON_RIGHT) + if (btn==BUTTON_RIGHT) { + lcd_clear_display(); verbose = true; + } lcd_setfont(FONT_SYSFIXED); Index: bootloader/Makefile =================================================================== --- bootloader/Makefile (revision 15109) +++ bootloader/Makefile (working copy) @@ -8,11 +8,31 @@ # INCLUDES= $(TARGET_INC) -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(OBJDIR) \ - -I$(BUILDDIR) + -I$(BUILDDIR) -I$(BUILDDIR)/bitmaps DEPFILE = $(OBJDIR)/dep-bootloader LDS := $(FIRMDIR)/boot.lds +# Set up the bitmap libraries +BITMAPLIBS = +LINKBITMAPS = +ifneq ($(strip $(BMP2RB_MONO)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsmono.a + LINKBITMAPS += -lbitmapsmono +endif +ifneq ($(strip $(BMP2RB_NATIVE)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsnative.a + LINKBITMAPS += -lbitmapsnative +endif +ifneq ($(strip $(BMP2RB_REMOTEMONO)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsremotemono.a + LINKBITMAPS += -lbitmapsremotemono +endif +ifneq ($(strip $(BMP2RB_REMOTENATIVE)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsremotenative.a + LINKBITMAPS += -lbitmapsremotenative +endif + ifdef DEBUG DEFINES := -DDEBUG CFLAGS += -g @@ -47,6 +67,8 @@ all: $(BUILDDIR)/$(BINARY) $(FLASHFILE) endif +$(DEPFILE): $(BITMAPLIBS) + dep: $(DEPFILE) $(LINKFILE): $(LDS) @@ -58,9 +80,23 @@ $(SILENT)cat $(MAXINFILE) | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - > $(MAXOUTFILE) $(SILENT)rm $(MAXINFILE) -$(OBJDIR)/bootloader.elf : $(OBJS) $(LINKFILE) $(DEPFILE) $(LIBROCKBOX) - $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Wl,--gc-sections -Os -nostdlib -o $@ $(OBJS) -L$(BUILDDIR) -L$(BUILDDIR)/firmware -lrockbox -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/bootloader.map +build-bitmapsmono: + $(call PRINTS,MAKE in bitmaps/mono)$(MAKE) -C bitmaps/mono OBJDIR=$(OBJDIR)/bitmaps/mono +build-bitmapsnative: + $(call PRINTS,MAKE in bitmaps/native)$(MAKE) -C bitmaps/native OBJDIR=$(OBJDIR)/bitmaps/native + +build-bitmapsremotemono: + $(call PRINTS,MAKE in bitmaps/remote_mono)$(MAKE) -C bitmaps/remote_mono OBJDIR=$(OBJDIR)/bitmaps/remote_mono + +build-bitmapsremotenative: + $(call PRINTS,MAKE in bitmaps/remote_native)$(MAKE) -C bitmaps/remote_native OBJDIR=$(OBJDIR)/bitmaps/remote_native + +$(BITMAPLIBS): $(BUILDDIR)/lib%.a: build-% + +$(OBJDIR)/bootloader.elf : $(OBJS) $(LINKFILE) $(DEPFILE) $(LIBROCKBOX) $(BITMAPLIBS) + $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Wl,--gc-sections -Os -nostdlib -o $@ $(OBJS) -L$(BUILDDIR) -L$(BUILDDIR)/firmware -lrockbox $(LINKBITMAPS) -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/bootloader.map + $(OBJDIR)/bootloader.bin : $(OBJDIR)/bootloader.elf $(call PRINTS,OBJCOPY $(@F))$(OC) -O binary $< $@ @@ -76,5 +112,9 @@ $(call PRINTS,cleaning bootloader)-rm -f $(OBJS) $(BUILDDIR)/$(BINARY) $(OBJDIR)/bootloader.asm \ $(OBJDIR)/bootloader.bin $(OBJDIR)/bootloader.elf $(OBJDIR)/*.map \ $(LINKFILE) $(MAXOUTFILE) $(DEPFILE) + $(SILENT)$(MAKE) -C bitmaps/mono clean OBJDIR=$(OBJDIR)/bitmaps/mono + $(SILENT)$(MAKE) -C bitmaps/native clean OBJDIR=$(OBJDIR)/bitmaps/native + $(SILENT)$(MAKE) -C bitmaps/remote_mono clean OBJDIR=$(OBJDIR)/bitmaps/remote_mono + $(SILENT)$(MAKE) -C bitmaps/remote_native clean OBJDIR=$(OBJDIR)/bitmaps/remote_native -include $(DEPFILE)