diff --git a/asm/emerald.s b/asm/emerald.s index 0e2f47f87..566158231 100644 --- a/asm/emerald.s +++ b/asm/emerald.s @@ -320114,25 +320114,25 @@ c2_title_screen_1: ; 80AA7A4 .align 2, 0 .pool @080AA8C4: - ldr r0, =gUnknown_08DDE690 + ldr r0, =gTitleScreenPokemonLogoTiles movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram ldr r0, =gUnknown_08DE0644 ldr r1, =0x06004800 bl LZ77UnCompVram - ldr r0, =gTitleScreenBgPalette + ldr r0, =gTitleScreenBgPalettes movs r2, 0xF0 lsls r2, 1 movs r1, 0 bl gpu_pal_apply - ldr r0, =gUnknown_0853F058 + ldr r0, =gTitleScreenRayquazaTiles ldr r1, =0x06008000 bl LZ77UnCompVram ldr r0, =gUnknown_0853F83C ldr r1, =0x0600d000 bl LZ77UnCompVram - ldr r0, =gUnknown_0853FC8C + ldr r0, =gTitleScreenCloudsTiles ldr r1, =0x0600c000 bl LZ77UnCompVram ldr r0, =gUnknown_08DDE458 diff --git a/data/data2.s b/data/data2.s index 0560de31c..a99d3e74f 100644 --- a/data/data2.s +++ b/data/data2.s @@ -3204,14 +3204,18 @@ gUnknown_0853EF48: ; 853EF48 gUnknown_0853EF60: ; 853EF60 .incbin "base_emerald.gba", 0x53ef60, 0xf8 -gUnknown_0853F058: ; 853F058 - .incbin "base_emerald.gba", 0x53f058, 0x7e4 +gTitleScreenRayquazaTiles: ; 853F058 + .incbin "data/graphics/title_screen/rayquaza.4bpp.lz" + + .align 2, 0 gUnknown_0853F83C: ; 853F83C .incbin "base_emerald.gba", 0x53f83c, 0x450 -gUnknown_0853FC8C: ; 853FC8C - .incbin "base_emerald.gba", 0x53fc8c, 0x2e4 +gTitleScreenCloudsTiles: ; 853FC8C + .incbin "data/graphics/title_screen/clouds.4bpp.lz" + + .align 2, 0 gUnknown_0853FF70: ; 853FF70 .incbin "base_emerald.gba", 0x53ff70, 0xa8 @@ -13251,13 +13255,20 @@ gUnknown_08DDE030: ; 8DDE030 gUnknown_08DDE12C: ; 8DDE12C .incbin "base_emerald.gba", 0xdde12c, 0xcc + .align 2, 0 + gMonIconPalettes: ; 8DDE1F8 .incbin "data/graphics/pokemon/icon_palettes/icon_palette_0.gbapal" .incbin "data/graphics/pokemon/icon_palettes/icon_palette_1.gbapal" .incbin "data/graphics/pokemon/icon_palettes/icon_palette_2.gbapal" -gTitleScreenBgPalette: ; 8DDE258 - .incbin "base_emerald.gba", 0xdde258, 0x1e0 + .align 2, 0 + +gTitleScreenBgPalettes: ; 8DDE258 + .incbin "data/graphics/title_screen/pokemon_logo.gbapal" + .incbin "data/graphics/title_screen/rayquaza_and_clouds.gbapal" + + .align 2, 0 gUnknown_08DDE438: ; 8DDE438 .incbin "base_emerald.gba", 0xdde438, 0x20 @@ -13265,8 +13276,13 @@ gUnknown_08DDE438: ; 8DDE438 gUnknown_08DDE458: ; 8DDE458 .incbin "base_emerald.gba", 0xdde458, 0x238 -gUnknown_08DDE690: ; 8DDE690 - .incbin "base_emerald.gba", 0xdde690, 0x1fb4 +gTitleScreenPokemonLogoTiles: ; 8DDE690 + .incbin "data/graphics/title_screen/pokemon_logo.8bpp.lz" + + .align 2, 0 + +; 8DDFD94 + .incbin "base_emerald.gba", 0xddfd94, 0x8b0 gUnknown_08DE0644: ; 8DE0644 .incbin "base_emerald.gba", 0xde0644, 0x184 diff --git a/data/graphics/title_screen/clouds.png b/data/graphics/title_screen/clouds.png new file mode 100644 index 000000000..361c8e145 Binary files /dev/null and b/data/graphics/title_screen/clouds.png differ diff --git a/data/graphics/title_screen/pokemon_logo.pal b/data/graphics/title_screen/pokemon_logo.pal new file mode 100644 index 000000000..f62cfac20 --- /dev/null +++ b/data/graphics/title_screen/pokemon_logo.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +0 0 0 +0 0 0 +255 238 16 +246 222 41 +246 238 246 +255 246 24 +246 246 41 +246 246 246 +246 255 255 +255 246 255 +0 0 255 +8 0 255 +24 0 238 +246 222 24 +246 222 32 +255 238 41 +255 238 49 +255 255 16 +255 255 24 +255 255 246 +255 255 255 +0 0 0 +24 41 32 +32 32 74 +32 0 230 +32 0 238 +32 0 246 +32 0 255 +246 238 32 +255 230 24 +246 230 41 +246 238 41 +246 230 49 +246 238 49 +255 246 32 +255 246 41 +255 255 32 +255 255 41 +32 24 32 +32 32 41 +197 156 41 +197 164 41 +16 0 246 +16 0 255 +24 0 246 +24 0 255 +41 0 230 +41 0 238 +57 0 238 +41 0 246 +41 0 255 +8 8 197 +246 230 24 +246 230 32 +255 238 24 +255 238 32 +32 32 32 +32 41 32 +41 32 32 +41 41 32 +49 32 32 +49 41 32 +41 32 41 +49 32 41 +24 41 41 +32 32 90 +16 24 106 +24 32 98 +41 32 82 +41 32 98 +41 41 82 +41 41 98 +0 0 115 +8 8 131 +32 24 115 +32 24 131 +32 41 115 +41 41 115 +32 41 131 +41 41 131 +57 41 41 +57 41 49 +57 49 41 +57 57 57 +65 41 41 +74 41 41 +65 57 57 +74 57 57 +57 74 74 +65 65 74 +82 74 82 +82 57 131 +82 90 82 +90 90 90 +90 98 98 +98 98 106 +115 106 106 +131 98 115 +139 98 106 +139 115 98 +180 139 57 +172 131 65 +156 115 90 +156 131 82 +115 82 139 +123 82 131 +115 98 131 +131 98 123 +115 123 123 +123 123 131 +139 131 139 +148 123 131 +205 172 24 +213 172 16 +205 164 32 +213 172 32 +222 189 24 +230 189 16 +213 189 32 +222 189 32 +230 205 24 +230 205 32 +230 213 32 +238 222 32 +180 148 57 +189 156 49 +180 148 74 +180 172 90 +156 148 123 +139 148 139 +164 148 115 +172 156 106 +197 156 49 +205 180 49 +197 172 90 +205 189 82 +222 205 49 +230 222 49 +205 205 74 +222 213 65 +49 0 230 +49 0 238 +49 0 246 +49 0 255 +57 0 246 +57 0 255 +16 8 197 +16 16 189 +32 16 164 +41 16 164 +32 16 180 +41 16 189 +8 8 205 +8 16 205 +24 8 213 +24 16 205 +41 8 213 +41 16 213 +49 8 213 +57 16 213 +16 8 230 +24 8 230 +24 16 230 +24 24 230 +8 8 246 +8 16 246 +16 8 246 +16 16 246 +32 8 230 +32 16 230 +32 8 238 +32 8 246 +41 8 230 +41 16 230 +49 16 230 +49 8 238 +32 32 156 +24 32 172 +41 41 156 +41 32 164 +74 49 180 +82 49 172 +82 65 164 +90 74 164 +24 32 189 +57 41 189 +41 32 213 +57 32 213 +74 41 189 +90 57 189 +74 49 197 +74 41 205 +106 65 156 +123 106 156 +115 82 164 +106 82 172 +148 148 156 +156 156 156 +164 164 156 +172 172 172 +180 189 180 +189 189 189 +197 189 189 +197 197 197 +205 205 213 +213 213 213 +222 230 230 +230 230 230 +32 41 41 +32 49 41 +41 41 41 +49 41 41 +41 49 41 +49 49 41 +32 41 57 +41 41 49 +32 41 65 +41 41 65 +32 49 49 +41 49 49 +32 57 57 +41 49 57 +32 41 82 +32 41 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/data/graphics/title_screen/pokemon_logo.png b/data/graphics/title_screen/pokemon_logo.png new file mode 100644 index 000000000..7d141ad67 Binary files /dev/null and b/data/graphics/title_screen/pokemon_logo.png differ diff --git a/data/graphics/title_screen/rayquaza.png b/data/graphics/title_screen/rayquaza.png new file mode 100644 index 000000000..f52f559e2 Binary files /dev/null and b/data/graphics/title_screen/rayquaza.png differ diff --git a/data/graphics/title_screen/rayquaza_and_clouds.pal b/data/graphics/title_screen/rayquaza_and_clouds.pal new file mode 100644 index 000000000..2eabafc2a --- /dev/null +++ b/data/graphics/title_screen/rayquaza_and_clouds.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 106 8 +0 139 74 +255 255 255 +16 172 98 +8 156 106 +8 139 115 +8 123 123 +0 115 131 +0 98 139 +0 82 148 +0 74 164 +0 74 98 +180 230 172 +255 255 255 +255 0 0 +0 74 98 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 2fe5b6e39..a8d607800 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -264,3 +264,6 @@ $(fontdir)/unused_frlg_male.fwjpnfont: $(fontdir)/unused_japanese_frlg_male_font $(fontdir)/unused_frlg_female.fwjpnfont: $(fontdir)/unused_japanese_frlg_female_font.png $(gfx) $< $@ + +data/graphics/title_screen/pokemon_logo.gbapal: data/graphics/title_screen/pokemon_logo.pal + $(gfx) $< $@ -num_colors 224 diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c index c09c4238e..c0f7f492c 100644 --- a/tools/gbagfx/gfx.c +++ b/tools/gbagfx/gfx.c @@ -292,10 +292,10 @@ void ReadGbaPalette(char *path, struct Palette *palette) int fileSize; unsigned char *data = ReadWholeFile(path, &fileSize); - palette->numColors = fileSize / 2; + if (fileSize % 2 != 0) + FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize); - if (palette->numColors != 16 && palette->numColors != 256) - FATAL_ERROR("\"%s\" contains %d colors, but the number of colors must be 16 or 256.\n", path, palette->numColors); + palette->numColors = fileSize / 2; for (int i = 0; i < palette->numColors; i++) { uint16_t paletteEntry = (data[i * 2 + 1] << 8) | data[i * 2]; diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c index 56a1c2c7b..cc1e8f807 100644 --- a/tools/gbagfx/main.c +++ b/tools/gbagfx/main.c @@ -129,11 +129,36 @@ void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc U WriteJascPalette(outputPath, &palette); } -void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv) { + int numColors = 0; + + for (int i = 3; i < argc; i++) { + char *option = argv[i]; + + if (strcmp(option, "-num_colors") == 0) { + if (i + 1 >= argc) + FATAL_ERROR("No number of colors following \"-num_colors\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &numColors)) + FATAL_ERROR("Failed to parse number of colors.\n"); + + if (numColors < 1) + FATAL_ERROR("Number of colors must be positive.\n"); + } else { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + struct Palette palette; ReadJascPalette(inputPath, &palette); + + if (numColors != 0) + palette.numColors = numColors; + WriteGbaPalette(outputPath, &palette); }