summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/credits.s1256
-rw-r--r--baserom.ipsbin2055522 -> 2017986 bytes
-rw-r--r--data/credits.s70
-rw-r--r--data/credits/unk_840C630.pal19
-rw-r--r--data/credits/unk_840C650.pngbin0 -> 1499 bytes
-rw-r--r--data/credits/unk_840CA54.binbin0 -> 1024 bytes
-rw-r--r--data/credits/unk_840CB8C.binbin0 -> 3200 bytes
-rw-r--r--data/credits/unk_840D228.binbin0 -> 4992 bytes
-rw-r--r--data/credits/unk_840E158.binbin0 -> 3200 bytes
-rw-r--r--data/credits/unk_840E904.binbin0 -> 3840 bytes
-rw-r--r--data/credits/unk_840F240.binbin0 -> 3200 bytes
-rw-r--r--data/credits/unk_840F944.binbin0 -> 3840 bytes
-rw-r--r--data/credits/unk_8410198.binbin0 -> 3200 bytes
-rw-r--r--data/credits/unk_84105B4.binbin0 -> 4608 bytes
-rw-r--r--data/credits/unk_8410B20.binbin0 -> 2048 bytes
-rw-r--r--data/credits/unk_8410B20.pngbin0 -> 218 bytes
-rw-r--r--data/credits/unk_8410E10.pal19
-rw-r--r--data/credits/unk_8410E30.pngbin0 -> 2105 bytes
-rw-r--r--data/credits/unk_8411BF8.pal19
-rw-r--r--data/credits/unk_8411C18.pngbin0 -> 2083 bytes
-rw-r--r--data/credits/unk_84129A0.pal19
-rw-r--r--data/credits/unk_84129C0.pngbin0 -> 1162 bytes
-rw-r--r--data/credits/unk_8413318.pal19
-rw-r--r--data/credits/unk_8413338.pngbin0 -> 624 bytes
-rw-r--r--data/credits/unk_8413854.pal19
-rw-r--r--data/credits/unk_8413874.pngbin0 -> 632 bytes
-rw-r--r--data/credits/unk_8413D98.pal19
-rw-r--r--data/credits/unk_8413DB8.pngbin0 -> 786 bytes
-rw-r--r--data/data_83FECCC.s53
-rw-r--r--data/graphics.s15
-rw-r--r--data/maps/IndigoPlateau_Exterior/scripts.inc2
-rw-r--r--data/specials.inc2
-rw-r--r--data/strings.s333
-rw-r--r--graphics/credits/blastoise.pal19
-rw-r--r--graphics/credits/charizard.pal19
-rw-r--r--graphics/credits/pikachu.pal19
-rw-r--r--graphics/credits/unk_8EAAB98.pngbin0 -> 1217 bytes
-rw-r--r--graphics/credits/unk_8EAB30C.binbin0 -> 1280 bytes
-rw-r--r--graphics/credits/unk_8EAE548.binbin0 -> 2048 bytes
-rw-r--r--graphics/credits/unk_8EAE548.pngbin0 -> 908 bytes
-rw-r--r--graphics/credits/venusaur.pal19
-rw-r--r--graphics_file_rules.mk4
-rw-r--r--include/graphics.h8
-rw-r--r--include/overworld.h9
-rw-r--r--include/strings.h88
-rw-r--r--include/trainer_pokemon_sprites.h1
-rw-r--r--ld_script.txt2
-rw-r--r--src/credits.c954
48 files changed, 1479 insertions, 1527 deletions
diff --git a/asm/credits.s b/asm/credits.s
deleted file mode 100644
index 960ea86a5..000000000
--- a/asm/credits.s
+++ /dev/null
@@ -1,1256 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F4190
-sub_80F4190: @ 80F4190
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80F4190
-
- thumb_func_start sub_80F41A4
-sub_80F41A4: @ 80F41A4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- beq _080F4200
- cmp r4, 0x1
- bgt _080F41BA
- cmp r4, 0
- beq _080F41C4
- b _080F42C2
-_080F41BA:
- cmp r4, 0x2
- beq _080F4240
- cmp r4, 0x3
- beq _080F4288
- b _080F42C2
-_080F41C4:
- ldr r0, _080F41F4 @ =gUnknown_840C5B0
- bl InitWindows
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xA
- str r0, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x6
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_810C228
- ldr r1, _080F41F8 @ =gUnknown_840CB8C
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r1, _080F41FC @ =gUnknown_840D228
- b _080F4270
- .align 2, 0
-_080F41F4: .4byte gUnknown_840C5B0
-_080F41F8: .4byte gUnknown_840CB8C
-_080F41FC: .4byte gUnknown_840D228
-_080F4200:
- ldr r0, _080F4234 @ =gUnknown_840C5D0
- bl InitWindows
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_810C228
- ldr r1, _080F4238 @ =gUnknown_840E158
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r1, _080F423C @ =gUnknown_840E904
- b _080F4270
- .align 2, 0
-_080F4234: .4byte gUnknown_840C5D0
-_080F4238: .4byte gUnknown_840E158
-_080F423C: .4byte gUnknown_840E904
-_080F4240:
- ldr r0, _080F427C @ =gUnknown_840C5F0
- bl InitWindows
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x9
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_810C228
- ldr r1, _080F4280 @ =gUnknown_840F240
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r1, _080F4284 @ =gUnknown_840F944
-_080F4270:
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- b _080F42C2
- .align 2, 0
-_080F427C: .4byte gUnknown_840C5F0
-_080F4280: .4byte gUnknown_840F240
-_080F4284: .4byte gUnknown_840F944
-_080F4288:
- ldr r0, _080F42E4 @ =gUnknown_840C610
- bl InitWindows
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x19
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_810C228
- ldr r1, _080F42E8 @ =gUnknown_8410198
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r1, _080F42EC @ =gUnknown_84105B4
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
-_080F42C2:
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F42E4: .4byte gUnknown_840C610
-_080F42E8: .4byte gUnknown_8410198
-_080F42EC: .4byte gUnknown_84105B4
- thumb_func_end sub_80F41A4
-
- thumb_func_start sub_80F42F0
-sub_80F42F0: @ 80F42F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _080F4314
- cmp r0, 0x1
- bgt _080F4306
- cmp r0, 0
- beq _080F4310
- b _080F4320
-_080F4306:
- cmp r1, 0x2
- beq _080F4318
- cmp r1, 0x3
- beq _080F431C
- b _080F4320
-_080F4310:
- movs r0, 0x6
- b _080F4322
-_080F4314:
- movs r0, 0x3
- b _080F4322
-_080F4318:
- movs r0, 0x9
- b _080F4322
-_080F431C:
- movs r0, 0x19
- b _080F4322
-_080F4320:
- movs r0, 0
-_080F4322:
- pop {r1}
- bx r1
- thumb_func_end sub_80F42F0
-
- thumb_func_start sub_80F4328
-sub_80F4328: @ 80F4328
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r1, _080F4344 @ =gUnknown_203AB40
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x9
- bls _080F433A
- b _080F4668
-_080F433A:
- lsls r0, 2
- ldr r1, _080F4348 @ =_080F434C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F4344: .4byte gUnknown_203AB40
-_080F4348: .4byte _080F434C
- .align 2, 0
-_080F434C:
- .4byte _080F4374
- .4byte _080F44CC
- .4byte _080F4504
- .4byte _080F4530
- .4byte _080F453A
- .4byte _080F4558
- .4byte _080F4582
- .4byte _080F45D6
- .4byte _080F460E
- .4byte _080F4638
-_080F4374:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r1, 0xC0
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- movs r0, 0x1
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080F44A8 @ =gUnknown_840C5A4
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- movs r0, 0x80
- lsls r0, 4
- bl Alloc
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r6, _080F44AC @ =gUnknown_203AB40
- ldr r1, [r6]
- movs r4, 0
- strh r4, [r1, 0xC]
- strh r4, [r1, 0xE]
- movs r2, 0x80
- lsls r2, 8
- movs r0, 0x50
- str r0, [sp]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- str r0, [sp, 0x4]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r0, 0x2
- adds r1, r2, 0
- movs r3, 0x78
- bl SetBgAffine
- ldr r1, _080F44B0 @ =gUnknown_8EAAB98
- movs r5, 0x80
- lsls r5, 6
- str r4, [sp]
- movs r0, 0x1
- adds r2, r5, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, _080F44B4 @ =gUnknown_840C650
- str r4, [sp]
- movs r0, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, _080F44B8 @ =gUnknown_8EAB30C
- movs r2, 0xA0
- lsls r2, 3
- movs r4, 0x1
- str r4, [sp]
- movs r0, 0x1
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, _080F44BC @ =gUnknown_840CA54
- movs r2, 0x80
- lsls r2, 3
- str r4, [sp]
- movs r0, 0x2
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, [r6]
- ldrb r0, [r0, 0x9]
- lsls r0, 5
- ldr r1, _080F44C0 @ =gUnknown_8EAAB18
- adds r0, r1
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F44C4 @ =gUnknown_840C630
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, [r6]
- ldrb r0, [r0, 0x9]
- bl sub_80F41A4
- ldr r0, _080F44C8 @ =sub_80F4190
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- ldr r1, [r6]
- b _080F4630
- .align 2, 0
-_080F44A8: .4byte gUnknown_840C5A4
-_080F44AC: .4byte gUnknown_203AB40
-_080F44B0: .4byte gUnknown_8EAAB98
-_080F44B4: .4byte gUnknown_840C650
-_080F44B8: .4byte gUnknown_8EAB30C
-_080F44BC: .4byte gUnknown_840CA54
-_080F44C0: .4byte gUnknown_8EAAB18
-_080F44C4: .4byte gUnknown_840C630
-_080F44C8: .4byte sub_80F4190
-_080F44CC:
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _080F4500 @ =gUnknown_203AB40
- ldr r1, [r0]
- b _080F4630
- .align 2, 0
-_080F4500: .4byte gUnknown_203AB40
-_080F4504:
- movs r0, 0x2
- bl ShowBg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080F452C @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x28
- strh r0, [r1, 0xC]
- b _080F4630
- .align 2, 0
-_080F452C: .4byte gUnknown_203AB40
-_080F4530:
- ldr r1, [r4]
- ldrh r0, [r1, 0xC]
- cmp r0, 0
- bne _080F45DE
- b _080F4630
-_080F453A:
- ldr r0, _080F4554 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080F4548
- b _080F4668
-_080F4548:
- ldr r1, [r4]
- movs r0, 0x8
- strh r0, [r1, 0xC]
- movs r0, 0x1
- strh r0, [r1, 0xE]
- b _080F4630
- .align 2, 0
-_080F4554: .4byte gPaletteFade
-_080F4558:
- ldr r1, [r4]
- ldrh r0, [r1, 0xC]
- cmp r0, 0
- bne _080F45DE
- ldrh r0, [r1, 0xE]
- cmp r0, 0x2
- bhi _080F4630
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- movs r0, 0x4
- strh r0, [r1, 0xC]
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- b _080F4668
-_080F4582:
- ldr r3, [r4]
- ldrh r0, [r3, 0xC]
- cmp r0, 0xFF
- bhi _080F45B2
- adds r0, 0x10
- movs r1, 0
- strh r0, [r3, 0xC]
- movs r2, 0x80
- lsls r2, 8
- movs r0, 0x50
- str r0, [sp]
- movs r4, 0xC
- ldrsh r0, [r3, r4]
- str r0, [sp, 0x4]
- movs r4, 0xC
- ldrsh r0, [r3, r4]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- movs r0, 0x2
- adds r1, r2, 0
- movs r3, 0x78
- bl SetBgAffine
- b _080F4668
-_080F45B2:
- movs r2, 0x80
- lsls r2, 8
- movs r0, 0x50
- str r0, [sp]
- adds r0, 0xB0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- movs r0, 0x2
- adds r1, r2, 0
- movs r3, 0x78
- bl SetBgAffine
- ldr r1, [r4]
- movs r0, 0x20
- strh r0, [r1, 0xC]
- b _080F4630
-_080F45D6:
- ldr r1, [r4]
- ldrh r0, [r1, 0xC]
- cmp r0, 0
- beq _080F45E4
-_080F45DE:
- subs r0, 0x1
- strh r0, [r1, 0xC]
- b _080F4668
-_080F45E4:
- movs r0, 0x2
- bl HideBg
- movs r0, 0x1
- bl ShowBg
- ldr r0, [r4]
- ldrb r0, [r0, 0x9]
- bl sub_80F42F0
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
- ldr r1, [r4]
- movs r0, 0x80
- strh r0, [r1, 0xC]
- b _080F4630
-_080F460E:
- ldr r2, [r4]
- ldrh r0, [r2, 0xC]
- adds r1, r0, 0
- cmp r1, 0
- beq _080F461E
- subs r0, 0x1
- strh r0, [r2, 0xC]
- b _080F4668
-_080F461E:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
-_080F4630:
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _080F4668
-_080F4638:
- ldr r0, _080F4660 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080F4668
- bl FreeAllWindowBuffers
- movs r0, 0
- bl GetBgTilemapBuffer
- bl Free
- ldr r0, _080F4664 @ =gUnknown_203AB40
- ldr r0, [r0]
- strb r4, [r0, 0x1]
- movs r0, 0x1
- b _080F466A
- .align 2, 0
-_080F4660: .4byte gPaletteFade
-_080F4664: .4byte gUnknown_203AB40
-_080F4668:
- movs r0, 0
-_080F466A:
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4328
-
- thumb_func_start sub_80F4674
-sub_80F4674: @ 80F4674
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _080F4690 @ =gUnknown_203AB40
- ldr r2, [r6]
- ldrb r5, [r2, 0x1]
- cmp r5, 0x1
- bne _080F4684
- b _080F4784
-_080F4684:
- cmp r5, 0x1
- bgt _080F4694
- cmp r5, 0
- beq _080F46A0
- b _080F47EC
- .align 2, 0
-_080F4690: .4byte gUnknown_203AB40
-_080F4694:
- cmp r5, 0x2
- beq _080F478E
- cmp r5, 0x3
- bne _080F469E
- b _080F47D0
-_080F469E:
- b _080F47EC
-_080F46A0:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r1, 0xC0
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- movs r0, 0x1
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080F4778 @ =gUnknown_840C5A4
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r4, _080F477C @ =gUnknown_8410CDC
- ldr r0, [r6]
- ldrb r1, [r0, 0x9]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 6
- str r5, [sp]
- movs r0, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, [r6]
- ldrb r1, [r0, 0x9]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0x4
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, [r6]
- ldrb r1, [r0, 0x9]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r4, 0x8
- adds r0, r4
- ldr r0, [r0]
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadPalette
- ldr r0, _080F4780 @ =sub_80F4190
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- ldr r1, [r6]
- b _080F47C2
- .align 2, 0
-_080F4778: .4byte gUnknown_840C5A4
-_080F477C: .4byte gUnknown_8410CDC
-_080F4780: .4byte sub_80F4190
-_080F4784:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r6]
- b _080F47C2
-_080F478E:
- movs r0, 0
- bl ShowBg
- ldr r0, [r6]
- ldrb r1, [r0, 0x9]
- cmp r1, 0
- beq _080F47AE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080F47BE
-_080F47AE:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_080F47BE:
- ldr r0, _080F47CC @ =gUnknown_203AB40
- ldr r1, [r0]
-_080F47C2:
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _080F47EC
- .align 2, 0
-_080F47CC: .4byte gUnknown_203AB40
-_080F47D0:
- ldr r0, _080F47E8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080F47EC
- strb r0, [r2, 0x1]
- movs r0, 0x1
- b _080F47EE
- .align 2, 0
-_080F47E8: .4byte gPaletteFade
-_080F47EC:
- movs r0, 0
-_080F47EE:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4674
-
- thumb_func_start sub_80F47F8
-sub_80F47F8: @ 80F47F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080F481C @ =gTasks+0x8
- adds r3, r1, r0
- ldrb r0, [r3]
- cmp r0, 0x1
- beq _080F4820
- cmp r0, 0x1
- ble _080F48C2
- cmp r0, 0x2
- beq _080F484C
- cmp r0, 0x3
- beq _080F4896
- b _080F48C2
- .align 2, 0
-_080F481C: .4byte gTasks+0x8
-_080F4820:
- ldr r4, _080F4848 @ =gSprites
- ldrb r0, [r3, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r1, 0x20]
- movs r5, 0x20
- ldrsh r0, [r1, r5]
- cmp r0, 0xD0
- beq _080F4890
- subs r0, r2, 0x1
- strh r0, [r1, 0x20]
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- b _080F48BC
- .align 2, 0
-_080F4848: .4byte gSprites
-_080F484C:
- ldr r0, _080F4888 @ =gUnknown_203AB40
- ldr r0, [r0]
- ldrb r1, [r0, 0x1D]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F48C2
- ldr r4, _080F488C @ =gSprites
- ldrb r0, [r3, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r1, 0x22]
- movs r5, 0x22
- ldrsh r0, [r1, r5]
- cmp r0, 0x50
- beq _080F4890
- subs r0, r2, 0x1
- strh r0, [r1, 0x22]
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
- b _080F48C2
- .align 2, 0
-_080F4888: .4byte gUnknown_203AB40
-_080F488C: .4byte gSprites
-_080F4890:
- movs r0, 0
- strb r0, [r3]
- b _080F48C2
-_080F4896:
- ldr r0, _080F48C8 @ =gUnknown_203AB40
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _080F48C2
- ldr r2, _080F48CC @ =gSprites
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
-_080F48BC:
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
-_080F48C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F48C8: .4byte gUnknown_203AB40
-_080F48CC: .4byte gSprites
- thumb_func_end sub_80F47F8
-
- thumb_func_start sub_80F48D0
-sub_80F48D0: @ 80F48D0
- push {r4-r6,lr}
- ldr r6, _080F4924 @ =gUnknown_203AB40
- ldr r1, [r6]
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFF
- beq _080F491E
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080F4928 @ =gTasks+0x8
- adds r4, r0
- ldrh r0, [r4, 0x2]
- bl FreeSpriteTilesByTag
- ldrb r1, [r4, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080F492C @ =gSprites
- adds r0, r5
- bl DestroySprite
- ldrh r0, [r4, 0x8]
- bl FreeSpriteTilesByTag
- ldrb r1, [r4, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- ldr r0, [r6]
- ldrb r0, [r0, 0x2]
- bl DestroyTask
- ldr r1, [r6]
- movs r0, 0xFF
- strb r0, [r1, 0x2]
-_080F491E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4924: .4byte gUnknown_203AB40
-_080F4928: .4byte gTasks+0x8
-_080F492C: .4byte gSprites
- thumb_func_end sub_80F48D0
-
- thumb_func_start sub_80F4930
-sub_80F4930: @ 80F4930
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _080F4988 @ =gUnknown_203AB40
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0xFF
- beq _080F494A
- b _080F4BDE
-_080F494A:
- ldr r0, _080F498C @ =sub_80F47F8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _080F4990 @ =gTasks+0x8
- adds r6, r1, r2
- ldr r1, [r4]
- strb r0, [r1, 0x2]
- ldr r1, _080F4994 @ =gUnknown_841431C
- lsls r2, r7, 1
- adds r0, r2, r7
- lsls r0, 1
- adds r1, 0x4
- adds r0, r1
- ldrh r0, [r0]
- mov r8, r2
- cmp r0, 0x1
- beq _080F4998
- cmp r0, 0x1
- ble _080F4980
- cmp r0, 0x2
- beq _080F49A2
-_080F4980:
- movs r4, 0xD0
- movs r0, 0x50
- mov r9, r0
- b _080F49A8
- .align 2, 0
-_080F4988: .4byte gUnknown_203AB40
-_080F498C: .4byte sub_80F47F8
-_080F4990: .4byte gTasks+0x8
-_080F4994: .4byte gUnknown_841431C
-_080F4998:
- movs r4, 0x88
- lsls r4, 1
- movs r2, 0x50
- mov r9, r2
- b _080F49A8
-_080F49A2:
- movs r4, 0xD0
- movs r3, 0xA0
- mov r9, r3
-_080F49A8:
- ldr r2, _080F49D0 @ =gUnknown_841431C
- mov r5, r8
- adds r1, r5, r7
- lsls r1, 1
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldrh r0, [r0]
- strb r0, [r6]
- movs r0, 0x80
- lsls r0, 6
- strh r0, [r6, 0x2]
- ldr r0, _080F49D4 @ =0x0000ffff
- strh r0, [r6, 0x4]
- adds r1, r2
- ldrh r0, [r1]
- cmp r0, 0
- beq _080F49D8
- cmp r0, 0x1
- beq _080F4A4C
- b _080F4A6C
- .align 2, 0
-_080F49D0: .4byte gUnknown_841431C
-_080F49D4: .4byte 0x0000ffff
-_080F49D8:
- ldr r0, _080F4A0C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080F4A20
- ldr r0, _080F4A10 @ =gUnknown_8410E30
- str r0, [sp, 0x18]
- ldr r1, _080F4A14 @ =0xffff0000
- add r0, sp, 0x18
- ldr r3, [r0, 0x4]
- ands r3, r1
- movs r1, 0xC0
- lsls r1, 6
- orrs r3, r1
- str r3, [r0, 0x4]
- ldrh r2, [r6, 0x2]
- lsls r2, 16
- ldr r1, _080F4A18 @ =0x0000ffff
- ands r1, r3
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4A1C @ =gUnknown_8410E10
- b _080F4A36
- .align 2, 0
-_080F4A0C: .4byte gSaveBlock2Ptr
-_080F4A10: .4byte gUnknown_8410E30
-_080F4A14: .4byte 0xffff0000
-_080F4A18: .4byte 0x0000ffff
-_080F4A1C: .4byte gUnknown_8410E10
-_080F4A20:
- ldr r0, _080F4A44 @ =gUnknown_8411C18
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x2]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4A48 @ =gUnknown_8411BF8
-_080F4A36:
- movs r1, 0xF8
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- b _080F4A6C
- .align 2, 0
-_080F4A44: .4byte gUnknown_8411C18
-_080F4A48: .4byte gUnknown_8411BF8
-_080F4A4C:
- ldr r0, _080F4AD8 @ =gUnknown_84129C0
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x2]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4ADC @ =gUnknown_84129A0
- movs r1, 0xF8
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
-_080F4A6C:
- mov r1, sp
- ldr r0, _080F4AE0 @ =gUnknown_8414364
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- mov r1, sp
- ldrh r0, [r6, 0x2]
- movs r5, 0
- strh r0, [r1]
- lsls r4, 16
- asrs r1, r4, 16
- mov r2, r9
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r6, 0x1]
- ldr r3, _080F4AE4 @ =gSprites
- ldrb r1, [r6, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xF0
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldrb r1, [r6, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x43
- strb r5, [r0]
- ldr r0, _080F4AE8 @ =0x00002001
- strh r0, [r6, 0x8]
- ldr r0, _080F4AEC @ =0x0000ffff
- strh r0, [r6, 0xA]
- ldr r1, _080F4AF0 @ =gUnknown_841431C
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 1
- adds r1, 0x2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080F4B20
- cmp r0, 0x1
- bgt _080F4AF4
- cmp r0, 0
- beq _080F4AFE
- b _080F4BA0
- .align 2, 0
-_080F4AD8: .4byte gUnknown_84129C0
-_080F4ADC: .4byte gUnknown_84129A0
-_080F4AE0: .4byte gUnknown_8414364
-_080F4AE4: .4byte gSprites
-_080F4AE8: .4byte 0x00002001
-_080F4AEC: .4byte 0x0000ffff
-_080F4AF0: .4byte gUnknown_841431C
-_080F4AF4:
- cmp r0, 0x2
- beq _080F4B54
- cmp r0, 0x3
- beq _080F4B74
- b _080F4BA0
-_080F4AFE:
- ldr r0, _080F4B18 @ =gUnknown_8413338
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x8]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4B1C @ =gUnknown_8413318
- b _080F4B8A
- .align 2, 0
-_080F4B18: .4byte gUnknown_8413338
-_080F4B1C: .4byte gUnknown_8413318
-_080F4B20:
- ldr r0, _080F4B48 @ =gUnknown_8413338
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x8]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4B4C @ =gUnknown_8413318
- movs r1, 0xF0
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- mov r1, sp
- ldr r0, _080F4B50 @ =gUnknown_84143D0
- b _080F4B98
- .align 2, 0
-_080F4B48: .4byte gUnknown_8413338
-_080F4B4C: .4byte gUnknown_8413318
-_080F4B50: .4byte gUnknown_84143D0
-_080F4B54:
- ldr r0, _080F4B6C @ =gUnknown_8413874
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x8]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4B70 @ =gUnknown_8413854
- b _080F4B8A
- .align 2, 0
-_080F4B6C: .4byte gUnknown_8413874
-_080F4B70: .4byte gUnknown_8413854
-_080F4B74:
- ldr r0, _080F4BEC @ =gUnknown_8413DB8
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xC0
- lsls r1, 6
- strh r1, [r0, 0x4]
- ldrh r1, [r6, 0x8]
- strh r1, [r0, 0x6]
- bl LoadCompressedSpriteSheet
- ldr r0, _080F4BF0 @ =gUnknown_8413D98
-_080F4B8A:
- movs r1, 0xF0
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- mov r1, sp
- ldr r0, _080F4BF4 @ =gUnknown_84143B8
-_080F4B98:
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_080F4BA0:
- mov r1, sp
- ldrh r0, [r6, 0x8]
- strh r0, [r1]
- asrs r1, r4, 16
- mov r2, r9
- adds r2, 0x26
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r6, 0x6]
- ldr r3, _080F4BF8 @ =gSprites
- ldrb r1, [r6, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x5]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0xE0
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldrb r1, [r6, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x43
- movs r1, 0x1
- strb r1, [r0]
-_080F4BDE:
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4BEC: .4byte gUnknown_8413DB8
-_080F4BF0: .4byte gUnknown_8413D98
-_080F4BF4: .4byte gUnknown_84143B8
-_080F4BF8: .4byte gSprites
- thumb_func_end sub_80F4930
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/baserom.ips b/baserom.ips
index c4f49efb2..645018067 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/credits.s b/data/credits.s
deleted file mode 100644
index ba4a254e5..000000000
--- a/data/credits.s
+++ /dev/null
@@ -1,70 +0,0 @@
- .section .rodata
- .align 2, 0
-
-gUnknown_8410CF4:: @ 8410CF4
- .incbin "baserom.gba", 0x410CF4, 0x10C
-
-gUnknown_8410E00:: @ 8410E00
- .incbin "baserom.gba", 0x410E00, 0x4
-
-gUnknown_8410E04:: @ 8410E04
- .incbin "baserom.gba", 0x410E04, 0x4
-
-gUnknown_8410E08:: @ 8410E08
- .incbin "baserom.gba", 0x410E08, 0x8
-
-gUnknown_8410E10:: @ 8410E10
- .incbin "baserom.gba", 0x410E10, 0x20
-
-gUnknown_8410E30:: @ 8410E30
- .incbin "baserom.gba", 0x410E30, 0xDC8
-
-gUnknown_8411BF8:: @ 8411BF8
- .incbin "baserom.gba", 0x411BF8, 0x20
-
-gUnknown_8411C18:: @ 8411C18
- .incbin "baserom.gba", 0x411C18, 0xD88
-
-gUnknown_84129A0:: @ 84129A0
- .incbin "baserom.gba", 0x4129A0, 0x20
-
-gUnknown_84129C0:: @ 84129C0
- .incbin "baserom.gba", 0x4129C0, 0x958
-
-gUnknown_8413318:: @ 8413318
- .incbin "baserom.gba", 0x413318, 0x20
-
-gUnknown_8413338:: @ 8413338
- .incbin "baserom.gba", 0x413338, 0x51C
-
-gUnknown_8413854:: @ 8413854
- .incbin "baserom.gba", 0x413854, 0x20
-
-gUnknown_8413874:: @ 8413874
- .incbin "baserom.gba", 0x413874, 0x524
-
-gUnknown_8413D98:: @ 8413D98
- .incbin "baserom.gba", 0x413D98, 0x20
-
-gUnknown_8413DB8:: @ 8413DB8
- .incbin "baserom.gba", 0x413DB8, 0x564
-
-gUnknown_841431C:: @ 841431C
- .incbin "baserom.gba", 0x41431C, 0x48
-
-gUnknown_8414364:: @ 8414364
- .incbin "baserom.gba", 0x414364, 0x54
-
-gUnknown_84143B8:: @ 84143B8
- .incbin "baserom.gba", 0x4143B8, 0x18
-
-gUnknown_84143D0:: @ 84143D0
- .incbin "baserom.gba", 0x4143D0, 0x1B8
-
-gUnknown_8414588:: @ 8414588
- .incbin "baserom.gba", 0x414588, 0x34
-
-gUnknown_84145BC:: @ 84145BC
- .incbin "baserom.gba", 0x4145BC, 0x204
-
- .align 2, 0
diff --git a/data/credits/unk_840C630.pal b/data/credits/unk_840C630.pal
new file mode 100644
index 000000000..01f113381
--- /dev/null
+++ b/data/credits/unk_840C630.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
diff --git a/data/credits/unk_840C650.png b/data/credits/unk_840C650.png
new file mode 100644
index 000000000..9afadd699
--- /dev/null
+++ b/data/credits/unk_840C650.png
Binary files differ
diff --git a/data/credits/unk_840CA54.bin b/data/credits/unk_840CA54.bin
new file mode 100644
index 000000000..a127ba9ca
--- /dev/null
+++ b/data/credits/unk_840CA54.bin
Binary files differ
diff --git a/data/credits/unk_840CB8C.bin b/data/credits/unk_840CB8C.bin
new file mode 100644
index 000000000..3dd1c74a0
--- /dev/null
+++ b/data/credits/unk_840CB8C.bin
Binary files differ
diff --git a/data/credits/unk_840D228.bin b/data/credits/unk_840D228.bin
new file mode 100644
index 000000000..f6c336c01
--- /dev/null
+++ b/data/credits/unk_840D228.bin
Binary files differ
diff --git a/data/credits/unk_840E158.bin b/data/credits/unk_840E158.bin
new file mode 100644
index 000000000..2d9128634
--- /dev/null
+++ b/data/credits/unk_840E158.bin
Binary files differ
diff --git a/data/credits/unk_840E904.bin b/data/credits/unk_840E904.bin
new file mode 100644
index 000000000..4887c1e7e
--- /dev/null
+++ b/data/credits/unk_840E904.bin
Binary files differ
diff --git a/data/credits/unk_840F240.bin b/data/credits/unk_840F240.bin
new file mode 100644
index 000000000..285a468b6
--- /dev/null
+++ b/data/credits/unk_840F240.bin
Binary files differ
diff --git a/data/credits/unk_840F944.bin b/data/credits/unk_840F944.bin
new file mode 100644
index 000000000..ba2cdab77
--- /dev/null
+++ b/data/credits/unk_840F944.bin
Binary files differ
diff --git a/data/credits/unk_8410198.bin b/data/credits/unk_8410198.bin
new file mode 100644
index 000000000..f7b3a02a5
--- /dev/null
+++ b/data/credits/unk_8410198.bin
Binary files differ
diff --git a/data/credits/unk_84105B4.bin b/data/credits/unk_84105B4.bin
new file mode 100644
index 000000000..d173e611e
--- /dev/null
+++ b/data/credits/unk_84105B4.bin
Binary files differ
diff --git a/data/credits/unk_8410B20.bin b/data/credits/unk_8410B20.bin
new file mode 100644
index 000000000..eea1940ee
--- /dev/null
+++ b/data/credits/unk_8410B20.bin
Binary files differ
diff --git a/data/credits/unk_8410B20.png b/data/credits/unk_8410B20.png
new file mode 100644
index 000000000..19ce2f796
--- /dev/null
+++ b/data/credits/unk_8410B20.png
Binary files differ
diff --git a/data/credits/unk_8410E10.pal b/data/credits/unk_8410E10.pal
new file mode 100644
index 000000000..5667181bd
--- /dev/null
+++ b/data/credits/unk_8410E10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+57 57 123
+172 123 65
+255 197 148
+222 148 115
+123 65 65
+82 106 156
+57 57 123
+115 164 197
+123 123 131
+238 238 255
+180 180 213
+255 106 74
+197 57 57
+255 222 90
+213 180 74
+0 0 0
diff --git a/data/credits/unk_8410E30.png b/data/credits/unk_8410E30.png
new file mode 100644
index 000000000..ec065cdb6
--- /dev/null
+++ b/data/credits/unk_8410E30.png
Binary files differ
diff --git a/data/credits/unk_8411BF8.pal b/data/credits/unk_8411BF8.pal
new file mode 100644
index 000000000..5667181bd
--- /dev/null
+++ b/data/credits/unk_8411BF8.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+57 57 123
+172 123 65
+255 197 148
+222 148 115
+123 65 65
+82 106 156
+57 57 123
+115 164 197
+123 123 131
+238 238 255
+180 180 213
+255 106 74
+197 57 57
+255 222 90
+213 180 74
+0 0 0
diff --git a/data/credits/unk_8411C18.png b/data/credits/unk_8411C18.png
new file mode 100644
index 000000000..341594160
--- /dev/null
+++ b/data/credits/unk_8411C18.png
Binary files differ
diff --git a/data/credits/unk_84129A0.pal b/data/credits/unk_84129A0.pal
new file mode 100644
index 000000000..ac601cddf
--- /dev/null
+++ b/data/credits/unk_84129A0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+49 49 49
+255 222 205
+238 180 148
+197 139 106
+106 74 74
+222 164 74
+197 123 8
+49 65 82
+205 139 255
+115 82 131
+156 106 172
+106 123 131
+197 205 180
+238 74 24
+255 255 255
+0 0 0
diff --git a/data/credits/unk_84129C0.png b/data/credits/unk_84129C0.png
new file mode 100644
index 000000000..ea9c61c88
--- /dev/null
+++ b/data/credits/unk_84129C0.png
Binary files differ
diff --git a/data/credits/unk_8413318.pal b/data/credits/unk_8413318.pal
new file mode 100644
index 000000000..284b70b77
--- /dev/null
+++ b/data/credits/unk_8413318.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+131 197 0
+74 139 0
+32 115 0
+0 82 0
+106 172 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/credits/unk_8413338.png b/data/credits/unk_8413338.png
new file mode 100644
index 000000000..7fa79c06a
--- /dev/null
+++ b/data/credits/unk_8413338.png
Binary files differ
diff --git a/data/credits/unk_8413854.pal b/data/credits/unk_8413854.pal
new file mode 100644
index 000000000..46d4f48dd
--- /dev/null
+++ b/data/credits/unk_8413854.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 180 98
+172 164 74
+156 148 49
+123 115 24
+222 213 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 0 255
diff --git a/data/credits/unk_8413874.png b/data/credits/unk_8413874.png
new file mode 100644
index 000000000..18e34725f
--- /dev/null
+++ b/data/credits/unk_8413874.png
Binary files differ
diff --git a/data/credits/unk_8413D98.pal b/data/credits/unk_8413D98.pal
new file mode 100644
index 000000000..a3476d0d4
--- /dev/null
+++ b/data/credits/unk_8413D98.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+131 197 0
+74 139 0
+32 115 0
+0 82 0
+106 172 0
+189 180 98
+172 164 74
+156 148 49
+123 115 24
+222 213 131
+222 222 222
+205 205 205
+189 189 189
+238 238 238
+131 131 131
diff --git a/data/credits/unk_8413DB8.png b/data/credits/unk_8413DB8.png
new file mode 100644
index 000000000..5b10bd699
--- /dev/null
+++ b/data/credits/unk_8413DB8.png
Binary files differ
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 26609158f..4406ca318 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -230,59 +230,6 @@ gUnknown_840C39C:: @ 840C39C
gUnknown_840C3BC:: @ 840C3BC
.incbin "baserom.gba", 0x40C3BC, 0x1E8
-gUnknown_840C5A4:: @ 840C5A4
- .incbin "baserom.gba", 0x40C5A4, 0xC
-
-gUnknown_840C5B0:: @ 840C5B0
- .incbin "baserom.gba", 0x40C5B0, 0x20
-
-gUnknown_840C5D0:: @ 840C5D0
- .incbin "baserom.gba", 0x40C5D0, 0x20
-
-gUnknown_840C5F0:: @ 840C5F0
- .incbin "baserom.gba", 0x40C5F0, 0x20
-
-gUnknown_840C610:: @ 840C610
- .incbin "baserom.gba", 0x40C610, 0x20
-
-gUnknown_840C630:: @ 840C630
- .incbin "baserom.gba", 0x40C630, 0x20
-
-gUnknown_840C650:: @ 840C650
- .incbin "baserom.gba", 0x40C650, 0x404
-
-gUnknown_840CA54:: @ 840CA54
- .incbin "baserom.gba", 0x40CA54, 0x138
-
-gUnknown_840CB8C:: @ 840CB8C
- .incbin "baserom.gba", 0x40CB8C, 0x69C
-
-gUnknown_840D228:: @ 840D228
- .incbin "baserom.gba", 0x40D228, 0xF30
-
-gUnknown_840E158:: @ 840E158
- .incbin "baserom.gba", 0x40E158, 0x7AC
-
-gUnknown_840E904:: @ 840E904
- .incbin "baserom.gba", 0x40E904, 0x93C
-
-gUnknown_840F240:: @ 840F240
- .incbin "baserom.gba", 0x40F240, 0x704
-
-gUnknown_840F944:: @ 840F944
- .incbin "baserom.gba", 0x40F944, 0x854
-
-gUnknown_8410198:: @ 8410198
- .incbin "baserom.gba", 0x410198, 0x41C
-
-gUnknown_84105B4:: @ 84105B4
- .incbin "baserom.gba", 0x4105B4, 0x728
-
-gUnknown_8410CDC:: @ 8410CDC
- .incbin "baserom.gba", 0x410CDC, 0x18
-
- @ strings
-
.section .rodata.841EE44
.align 2
gUnknown_841EE44:: @ 841EE44
diff --git a/data/graphics.s b/data/graphics.s
index 4b00c1c4b..02d111874 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16344,13 +16344,16 @@ gUnknown_8EAAA6C:: @ 8EAAA6C
.incbin "baserom.gba", 0xEAAA6C, 0xAC
gUnknown_8EAAB18:: @ 8EAAB18
- .incbin "baserom.gba", 0xEAAB18, 0x80 @UNKNOWN
+ .incbin "graphics/credits/charizard.gbapal"
+ .incbin "graphics/credits/venusaur.gbapal"
+ .incbin "graphics/credits/blastoise.gbapal"
+ .incbin "graphics/credits/pikachu.gbapal"
gUnknown_8EAAB98:: @ 8EAAB98
- .incbin "baserom.gba", 0xEAAB98, 0x774
+ .incbin "graphics/credits/unk_8EAAB98.4bpp.lz"
gUnknown_8EAB30C:: @ 8EAB30C
- .incbin "baserom.gba", 0xEAB30C, 0x3B8
+ .incbin "graphics/credits/unk_8EAB30C.bin.lz"
@ title_screen
gGraphics_TitleScreen_PokemonFireRedLogoPals:: @ 8EAB6C4
@@ -16387,13 +16390,13 @@ gGraphics_TitleScreen_BlankObjTiles:: @ 8EAE4A8
.incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz"
gUnknown_8EAE528:: @ 8EAE528
- .incbin "baserom.gba", 0xEAE528, 0x20 @UNKNOWN
+ .incbin "graphics/credits/unk_8EAE548.gbapal"
gUnknown_8EAE548:: @ 8EAE548
- .incbin "baserom.gba", 0xEAE548, 0x3B8
+ .incbin "graphics/credits/unk_8EAE548.4bpp.lz"
gUnknown_8EAE900:: @ 8EAE900
- .incbin "baserom.gba", 0xEAE900, 0x100
+ .incbin "graphics/credits/unk_8EAE548.bin.lz"
gUnknown_8EAEA00:: @ 8EAEA00
.incbin "baserom.gba", 0xEAEA00, 0x20 @UNKNOWN
diff --git a/data/maps/IndigoPlateau_Exterior/scripts.inc b/data/maps/IndigoPlateau_Exterior/scripts.inc
index 873224926..8e7705650 100644
--- a/data/maps/IndigoPlateau_Exterior/scripts.inc
+++ b/data/maps/IndigoPlateau_Exterior/scripts.inc
@@ -59,7 +59,7 @@ EventScript_167264:: @ 8167264
setvar VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 0
removeobject 1
removeobject 2
- special sub_80F39B4
+ special Special_Credits
waitstate
releaseall
end
diff --git a/data/specials.inc b/data/specials.inc
index cdd41f50d..2070469e7 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -430,7 +430,7 @@ gSpecials:: @ 815FD60
def_special sub_814EA7C
def_special sub_80CCB94
def_special sub_80CCCF8
- def_special sub_80F39B4
+ def_special Special_Credits
def_special sub_8153810
def_special sub_809D764
def_special sub_809D8C0
diff --git a/data/strings.s b/data/strings.s
index 4f6b40d85..7f9cede93 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -3323,260 +3323,345 @@ gUnknown_841D18D:: @ 841D18D
gUnknown_841D198:: @ 841D198
.string "Pokémon FireRed Version\nStaff$"
-gUnknown_841D1B6:: @ 0x841D1B6
- .string " Pokémon LeafGreen Version\nStaff$"
+ .align 2
+gUnknown_841D1B8:: @ 0x841D1B6
+ .string "Pokémon LeafGreen Version\nStaff$"
+ .align 2
gUnknown_841D1D8:: @ 0x841D1D8
.string "\n\nDirector\n\n\n\n$"
-gUnknown_841D1E7:: @ 0x841D1E7
- .string " \n\n\nJunichi Masuda\n\n\n$"
+ .align 2
+gUnknown_841D1E8:: @ 0x841D1E7
+ .string "\n\n\nJunichi Masuda\n\n\n$"
-gUnknown_841D1FD:: @ 0x841D1FD
- .string " \nArt Director\n\nBattle Director\n\n\n$"
+ .align 2
+gUnknown_841D200:: @ 0x841D1FD
+ .string "\nArt Director\n\nBattle Director\n\n\n$"
-gUnknown_841D222:: @ 0x841D222
- .string " \n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
+ .align 2
+gUnknown_841D224:: @ 0x841D222
+ .string "\n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
-gUnknown_841D247:: @ 0x841D247
- .string " Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$"
+ .align 2
+gUnknown_841D248:: @ 0x841D247
+ .string "Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$"
-gUnknown_841D281:: @ 0x841D281
- .string " \nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
+ .align 2
+gUnknown_841D284:: @ 0x841D281
+ .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
-gUnknown_841D2B1:: @ 0x841D2B1
- .string " Programmers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D2B4:: @ 0x841D2B1
+ .string "Programmers\n\n\n\n\n$"
-gUnknown_841D2C5:: @ 0x841D2C5
- .string " \nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
+ .align 2
+gUnknown_841D2C8:: @ 0x841D2C5
+ .string "\nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
-gUnknown_841D312:: @ 0x841D312
- .string " System Programmers\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D314:: @ 0x841D312
+ .string "System Programmers\n\n\n\n\n\n$"
-gUnknown_841D32D:: @ 0x841D32D
- .string " \nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$"
+ .align 2
+gUnknown_841D330:: @ 0x841D32D
+ .string "\nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$"
-gUnknown_841D36D:: @ 0x841D36D
- .string " Graphic Designers\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D370:: @ 0x841D36D
+ .string "Graphic Designers\n\n\n\n\n\n$"
+ .align 2
gUnknown_841D388:: @ 0x841D388
.string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$"
-gUnknown_841D3BE:: @ 0x841D3BE
- .string " \nGraphic Designers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D3C0:: @ 0x841D3BE
+ .string "\nGraphic Designers\n\n\n\n\n$"
+ .align 2
gUnknown_841D3D8:: @ 0x841D3D8
.string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$"
-gUnknown_841D3FB:: @ 0x841D3FB
- .string " \nMusic Composition\n\n\n\n\n$"
+ .align 2
+gUnknown_841D3FC:: @ 0x841D3FB
+ .string "\nMusic Composition\n\n\n\n\n$"
+ .align 2
gUnknown_841D414:: @ 0x841D414
.string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$"
+ .align 2
gUnknown_841D434:: @ 0x841D434
.string "\n\nSound Effects\n\n\n\n$"
+ .align 2
gUnknown_841D448:: @ 0x841D448
.string "\n\n\nGo Ichinose\n\n\n$"
-gUnknown_841D45A:: @ 0x841D45A
- .string " \nGame Designers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D45C:: @ 0x841D45A
+ .string "\nGame Designers\n\n\n\n\n$"
-gUnknown_841D471:: @ 0x841D471
- .string " \n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
+ .align 2
+gUnknown_841D474:: @ 0x841D471
+ .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
-gUnknown_841D4A1:: @ 0x841D4A1
- .string " \nGame Designers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D4A4:: @ 0x841D4A1
+ .string "\nGame Designers\n\n\n\n\n$"
-gUnknown_841D4B9:: @ 0x841D4B9
- .string " \n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
+ .align 2
+gUnknown_841D4BC:: @ 0x841D4B9
+ .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
-gUnknown_841D4ED:: @ 0x841D4ED
- .string " \nGame Scenario\n\n\n\n\n$"
+ .align 2
+gUnknown_841D4F0:: @ 0x841D4ED
+ .string "\nGame Scenario\n\n\n\n\n$"
+ .align 2
gUnknown_841D504:: @ 0x841D504
.string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$"
+ .align 2
gUnknown_841D524:: @ 0x841D524
.string "\nScript Designer\n\nMap Designer\n\n\n$"
-gUnknown_841D546:: @ 0x841D546
- .string " \n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
+ .align 2
+gUnknown_841D548:: @ 0x841D546
+ .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
-gUnknown_841D56B:: @ 0x841D56B
- .string " \nParametric Designers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D56C:: @ 0x841D56B
+ .string "\nParametric Designers\n\n\n\n\n$"
-gUnknown_841D587:: @ 0x841D587
- .string " \n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
+ .align 2
+gUnknown_841D588:: @ 0x841D587
+ .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
-gUnknown_841D5B7:: @ 0x841D5B7
- .string " \n\nPOKéDEX Text\n\n\n\n$"
+ .align 2
+gUnknown_841D5B8:: @ 0x841D5B7
+ .string "\n\nPOKéDEX Text\n\n\n\n$"
-gUnknown_841D5CB:: @ 0x841D5CB
- .string " \n\n\nKenji Matsushima\n\n\n$"
+ .align 2
+gUnknown_841D5CC:: @ 0x841D5CB
+ .string "\n\n\nKenji Matsushima\n\n\n$"
-gUnknown_841D5E3:: @ 0x841D5E3
- .string " POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D5E4:: @ 0x841D5E3
+ .string "POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
gUnknown_841D5FC:: @ 0x841D5FC
.string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$"
+ .align 2
gUnknown_841D640:: @ 0x841D640
.string "POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
gUnknown_841D658:: @ 0x841D658
.string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$"
-gUnknown_841D697:: @ 0x841D697
- .string " POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D698:: @ 0x841D697
+ .string "POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
gUnknown_841D6B0:: @ 0x841D6B0
.string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$"
-gUnknown_841D6E9:: @ 0x841D6E9
- .string " Supporting Programmers\n\n\n\n$"
+ .align 2
+gUnknown_841D6EC:: @ 0x841D6E9
+ .string "Supporting Programmers\n\n\n\n$"
-gUnknown_841D707:: @ 0x841D707
- .string " \nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+ .align 2
+gUnknown_841D708:: @ 0x841D707
+ .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+ .align 2
gUnknown_841D74C:: @ 0x841D74C
.string "\n\nNCL Product Testing\n\n\n\n$"
-gUnknown_841D766:: @ 0x841D766
- .string " \n\n\nNCL Super Mario Club\n\n\n$"
+ .align 2
+gUnknown_841D768:: @ 0x841D766
+ .string "\n\n\nNCL Super Mario Club\n\n\n$"
-gUnknown_841D783:: @ 0x841D783
- .string " Special Thanks\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D784:: @ 0x841D783
+ .string "Special Thanks\n\n\n\n\n\n$"
-gUnknown_841D799:: @ 0x841D799
- .string " \nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$"
+ .align 2
+gUnknown_841D79C:: @ 0x841D799
+ .string "\nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$"
-gUnknown_841D7DB:: @ 0x841D7DB
- .string " Special Thanks\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D7DC:: @ 0x841D7DB
+ .string "Special Thanks\n\n\n\n\n\n$"
-gUnknown_841D7F1:: @ 0x841D7F1
- .string " \nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$"
+ .align 2
+gUnknown_841D7F4:: @ 0x841D7F1
+ .string "\nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$"
-gUnknown_841D833:: @ 0x841D833
- .string " Special Thanks\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D834:: @ 0x841D833
+ .string "Special Thanks\n\n\n\n\n\n$"
-gUnknown_841D849:: @ 0x841D849
- .string " \nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
+ .align 2
+gUnknown_841D84C:: @ 0x841D849
+ .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
+ .align 2
gUnknown_841D894:: @ 0x841D894
.string "\n\nBraille Code Check\n\n\n\n$"
-gUnknown_841D8AD:: @ 0x841D8AD
- .string " \n\n\nJapan Braille Library\n\n\n$"
+ .align 2
+gUnknown_841D8B0:: @ 0x841D8AD
+ .string "\n\n\nJapan Braille Library\n\n\n$"
+ .align 2
gUnknown_841D8CC:: @ 0x841D8CC
.string "Information Supervisors\n\n\n\n\n\n$"
-gUnknown_841D8EA:: @ 0x841D8EA
- .string " \nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$"
+ .align 2
+gUnknown_841D8EC:: @ 0x841D8EA
+ .string "\nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$"
-gUnknown_841D935:: @ 0x841D935
- .string " Coordinators\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841D938:: @ 0x841D935
+ .string "Coordinators\n\n\n\n\n\n$"
-gUnknown_841D94B:: @ 0x841D94B
- .string " \nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
+ .align 2
+gUnknown_841D94C:: @ 0x841D94B
+ .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
-gUnknown_841D98A:: @ 0x841D98A
- .string " \nTask Managers\n\n\n\n\n$"
+ .align 2
+gUnknown_841D98C:: @ 0x841D98A
+ .string "\nTask Managers\n\n\n\n\n$"
+ .align 2
gUnknown_841D9A0:: @ 0x841D9A0
.string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$"
+ .align 2
gUnknown_841D9C4:: @ 0x841D9C4
.string "\nProducers\n\n\n\n\n$"
+ .align 2
gUnknown_841D9D4:: @ 0x841D9D4
.string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$"
-gUnknown_841DA06:: @ 0x841DA06
- .string " \n\nExecutive Director\n\n\n\n$"
+ .align 2
+gUnknown_841DA08:: @ 0x841DA06
+ .string "\n\nExecutive Director\n\n\n\n$"
-gUnknown_841DA21:: @ 0x841DA21
- .string " \n\n\nSatoshi Tajiri\n\n\n$"
+ .align 2
+gUnknown_841DA24:: @ 0x841DA21
+ .string "\n\n\nSatoshi Tajiri\n\n\n$"
-gUnknown_841DA39:: @ 0x841DA39
- .string " \n\nExecutive Producer\n\n\n\n$"
+ .align 2
+gUnknown_841DA3C:: @ 0x841DA39
+ .string "\n\nExecutive Producer\n\n\n\n$"
-gUnknown_841DA55:: @ 0x841DA55
- .string " \n\n\nSatoru Iwata\n\n\n$"
+ .align 2
+gUnknown_841DA58:: @ 0x841DA55
+ .string "\n\n\nSatoru Iwata\n\n\n$"
-gUnknown_841DA6B:: @ 0x841DA6B
- .string " \n\nExecutive Producer\n\n\n\n$"
+ .align 2
+gUnknown_841DA6C:: @ 0x841DA6B
+ .string "\n\nExecutive Producer\n\n\n\n$"
-gUnknown_841DA85:: @ 0x841DA85
- .string " \n\n\nTsunekaz Ishihara\n\n\n$"
+ .align 2
+gUnknown_841DA88:: @ 0x841DA85
+ .string "\n\n\nTsunekaz Ishihara\n\n\n$"
+ .align 2
gUnknown_841DAA0:: @ 0x841DAA0
.string "\nEnglish Version Coordinators\n\n\n\n\n$"
-gUnknown_841DAC3:: @ 0x841DAC3
- .string " \n\nHiro Nakamura\nSeth McMahill\n\n\n$"
+ .align 2
+gUnknown_841DAC4:: @ 0x841DAC3
+ .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$"
-gUnknown_841DAE5:: @ 0x841DAE5
- .string " \nTranslator\n\nText Editor\n\n\n$"
+ .align 2
+gUnknown_841DAE8:: @ 0x841DAE5
+ .string "\nTranslator\n\nText Editor\n\n\n$"
+ .align 2
gUnknown_841DB04:: @ 0x841DB04
.string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$"
+ .align 2
gUnknown_841DB28:: @ 0x841DB28
.string "Programmers\n\n\n\n\n\n$"
-gUnknown_841DB3A:: @ 0x841DB3A
- .string " \nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$"
+ .align 2
+gUnknown_841DB3C:: @ 0x841DB3A
+ .string "\nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$"
-gUnknown_841DB7B:: @ 0x841DB7B
- .string " \nEnvironment を Tool Programmers\n\n\n\n\n$"
+ .align 2
+gUnknown_841DB7C:: @ 0x841DB7B
+ .string "\nEnvironment を Tool Programmers\n\n\n\n\n$"
-gUnknown_841DBA1:: @ 0x841DBA1
- .string " \n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
+ .align 2
+gUnknown_841DBA4:: @ 0x841DBA1
+ .string "\n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
-gUnknown_841DBDA:: @ 0x841DBDA
- .string " NOA Product Testing\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841DBDC:: @ 0x841DBDA
+ .string "NOA Product Testing\n\n\n\n\n\n$"
-gUnknown_841DBF6:: @ 0x841DBF6
- .string " \nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$"
+ .align 2
+gUnknown_841DBF8:: @ 0x841DBF6
+ .string "\nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$"
-gUnknown_841DC29:: @ 0x841DC29
- .string " Braille Code Check\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841DC2C:: @ 0x841DC29
+ .string "Braille Code Check\n\n\n\n\n\n$"
-gUnknown_841DC45:: @ 0x841DC45
- .string " \nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
+ .align 2
+gUnknown_841DC48:: @ 0x841DC45
+ .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
+ .align 2
gUnknown_841DCAC:: @ 0x841DCAC
.string "\nBraille Code Check\n\n\n\n\n$"
-gUnknown_841DCC5:: @ 0x841DCC5
- .string " \n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$"
+ .align 2
+gUnknown_841DCC8:: @ 0x841DCC5
+ .string "\n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$"
-gUnknown_841DD05:: @ 0x841DD05
- .string " Special Thanks\n\n\n\n\n\n$"
+ .align 2
+gUnknown_841DD08:: @ 0x841DD05
+ .string "Special Thanks\n\n\n\n\n\n$"
-gUnknown_841DD1D:: @ 0x841DD1D
- .string " \nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
+ .align 2
+gUnknown_841DD20:: @ 0x841DD1D
+ .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
+ .align 2
gUnknown_841DD64:: @ 0x841DD64
.string "Special Thanks\n\n\n\n\n\n$"
-gUnknown_841DD79:: @ 0x841DD79
- .string " \nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$"
+ .align 2
+gUnknown_841DD7C:: @ 0x841DD79
+ .string "\nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$"
-gUnknown_841DDC6:: @ 0x841DDC6
- .string " \nBraille Code Check\n\n\n\n\n$"
+ .align 2
+gUnknown_841DDC8:: @ 0x841DDC6
+ .string "\nBraille Code Check\n\n\n\n\n$"
-gUnknown_841DDE1:: @ 0x841DDE1
- .string " \n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$"
+ .align 2
+gUnknown_841DDE4:: @ 0x841DDE1
+ .string "\n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$"
-gUnknown_841DE21:: @ 0x841DE21
- .string " \n\nGraphic Designer\n\n\n\n$"
+ .align 2
+gUnknown_841DE24:: @ 0x841DE21
+ .string "\n\nGraphic Designer\n\n\n\n$"
-gUnknown_841DE3B:: @ 0x841DE3B
- .string " \n\n\nAkira Kinashi\n\n\n$"
+ .align 2
+gUnknown_841DE3C:: @ 0x841DE3B
+ .string "\n\n\nAkira Kinashi\n\n\n$"
gJPText_MysteryGift:: @ 841DE50
.string "$"
diff --git a/graphics/credits/blastoise.pal b/graphics/credits/blastoise.pal
new file mode 100644
index 000000000..c2b4afe7c
--- /dev/null
+++ b/graphics/credits/blastoise.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+148 197 246
+131 180 246
+106 164 246
+90 148 255
+57 98 164
+24 49 82
+172 222 246
+131 172 197
+98 131 148
+65 82 98
+32 41 49
+16 98 255
+8 65 164
+0 32 82
+0 0 0
diff --git a/graphics/credits/charizard.pal b/graphics/credits/charizard.pal
new file mode 100644
index 000000000..9ad2a106e
--- /dev/null
+++ b/graphics/credits/charizard.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+230 98 90
+213 65 82
+189 32 74
+172 0 74
+115 0 49
+57 0 24
+255 131 98
+197 98 74
+148 74 57
+98 49 32
+49 24 16
+255 0 8
+164 0 0
+82 0 0
+0 0 0
diff --git a/graphics/credits/pikachu.pal b/graphics/credits/pikachu.pal
new file mode 100644
index 000000000..32aaf1904
--- /dev/null
+++ b/graphics/credits/pikachu.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 230 57
+255 213 41
+255 189 16
+255 172 0
+164 115 0
+82 57 0
+255 255 82
+213 213 65
+180 180 57
+148 148 41
+106 106 32
+255 90 0
+164 57 0
+82 24 0
+0 0 0
diff --git a/graphics/credits/unk_8EAAB98.png b/graphics/credits/unk_8EAAB98.png
new file mode 100644
index 000000000..b1389a64a
--- /dev/null
+++ b/graphics/credits/unk_8EAAB98.png
Binary files differ
diff --git a/graphics/credits/unk_8EAB30C.bin b/graphics/credits/unk_8EAB30C.bin
new file mode 100644
index 000000000..c072a9564
--- /dev/null
+++ b/graphics/credits/unk_8EAB30C.bin
Binary files differ
diff --git a/graphics/credits/unk_8EAE548.bin b/graphics/credits/unk_8EAE548.bin
new file mode 100644
index 000000000..8830b60c3
--- /dev/null
+++ b/graphics/credits/unk_8EAE548.bin
Binary files differ
diff --git a/graphics/credits/unk_8EAE548.png b/graphics/credits/unk_8EAE548.png
new file mode 100644
index 000000000..297827436
--- /dev/null
+++ b/graphics/credits/unk_8EAE548.png
Binary files differ
diff --git a/graphics/credits/venusaur.pal b/graphics/credits/venusaur.pal
new file mode 100644
index 000000000..454209dfa
--- /dev/null
+++ b/graphics/credits/venusaur.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+131 205 131
+90 164 115
+49 115 98
+16 115 123
+8 74 82
+0 32 41
+172 255 156
+131 197 123
+98 148 90
+65 98 57
+32 49 24
+16 180 0
+8 115 0
+0 57 0
+0 0 0
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 40d04abe7..c5571394e 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -24,6 +24,7 @@ TEACHYTVGFXDIR := graphics/teachy_tv
SSANNEGFXDIR := graphics/ss_anne
ITEMPCGFXDIR := graphics/item_pc
TITLESCREENGFXDIR := graphics/title_screen
+CREDITSGFXDIR := graphics/credits
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
contest_types := cool beauty cute smart tough
@@ -497,3 +498,6 @@ $(ITEMPCGFXDIR)/unk_8E85090.4bpp: %.4bpp: %.png
$(TITLESCREENGFXDIR)/unk_8ead608.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 135
+
+$(CREDITSGFXDIR)/unk_8EAE548.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 77
diff --git a/include/graphics.h b/include/graphics.h
index f6c2ddd4a..50daf7661 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -974,4 +974,12 @@ extern const u8 gGraphics_TitleScreen_CopyrightPressStartMap[];
extern const u16 gGraphics_TitleScreen_FirePals[];
extern const u8 gGraphics_TitleScreen_BlankObjTiles[];
+// credits
+extern const u32 gUnknown_8EAAB98[];
+extern const u32 gUnknown_8EAB30C[];
+extern const u16 gUnknown_8EAAB18[][16];
+extern const u16 gUnknown_8EAE528[];
+extern const u8 gUnknown_8EAE548[];
+extern const u8 gUnknown_8EAE900[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/overworld.h b/include/overworld.h
index 3d973d844..f27a4dbd3 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -23,6 +23,13 @@ struct UCoords32
u32 x, y;
};
+struct CreditsOverworldCmd
+{
+ s16 unk_0;
+ u16 unk_2;
+ u16 unk_4;
+};
+
extern struct UCoords32 gDirectionToVectors[];
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
@@ -120,6 +127,6 @@ void Overworld_ResetStateAfterDigEscRope(void);
bool32 sub_8058244(void);
void sub_80574A4(void);
-bool32 sub_805750C(u8 *, const char *, u8);
+bool32 sub_805750C(u8 *, const struct CreditsOverworldCmd *, u8);
#endif //GUARD_ROM4_H
diff --git a/include/strings.h b/include/strings.h
index 951ab264c..001f08f61 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -209,6 +209,92 @@ extern const u8 gString_QuitPlaying[];
extern const u8 gString_SlotMachineControls[];
// credits
-extern const u8 gUnknown_841D198[];
+extern const u8 gUnknown_84161CD[];
+extern const u8 gUnknown_841D198[]; // FR
+extern const u8 gUnknown_841D1B8[]; // LG
+extern const u8 gUnknown_841D1D8[];
+extern const u8 gUnknown_841D1E8[];
+extern const u8 gUnknown_841D200[];
+extern const u8 gUnknown_841D224[];
+extern const u8 gUnknown_841D248[];
+extern const u8 gUnknown_841D284[];
+extern const u8 gUnknown_841D2B4[];
+extern const u8 gUnknown_841D2C8[];
+extern const u8 gUnknown_841D314[];
+extern const u8 gUnknown_841D330[];
+extern const u8 gUnknown_841D370[];
+extern const u8 gUnknown_841D388[];
+extern const u8 gUnknown_841D3C0[];
+extern const u8 gUnknown_841D3D8[];
+extern const u8 gUnknown_841D3FC[];
+extern const u8 gUnknown_841D414[];
+extern const u8 gUnknown_841D434[];
+extern const u8 gUnknown_841D448[];
+extern const u8 gUnknown_841D45C[];
+extern const u8 gUnknown_841D474[];
+extern const u8 gUnknown_841D4A4[];
+extern const u8 gUnknown_841D4BC[];
+extern const u8 gUnknown_841D4F0[];
+extern const u8 gUnknown_841D504[];
+extern const u8 gUnknown_841D524[];
+extern const u8 gUnknown_841D548[];
+extern const u8 gUnknown_841D56C[];
+extern const u8 gUnknown_841D588[];
+extern const u8 gUnknown_841D5B8[];
+extern const u8 gUnknown_841D5CC[];
+extern const u8 gUnknown_841D5E4[];
+extern const u8 gUnknown_841D5FC[];
+extern const u8 gUnknown_841D640[];
+extern const u8 gUnknown_841D658[];
+extern const u8 gUnknown_841D698[];
+extern const u8 gUnknown_841D6B0[];
+extern const u8 gUnknown_841D6EC[];
+extern const u8 gUnknown_841D708[];
+extern const u8 gUnknown_841D74C[];
+extern const u8 gUnknown_841D768[];
+extern const u8 gUnknown_841D784[];
+extern const u8 gUnknown_841D79C[];
+extern const u8 gUnknown_841D7DC[];
+extern const u8 gUnknown_841D7F4[];
+extern const u8 gUnknown_841D834[];
+extern const u8 gUnknown_841D84C[];
+extern const u8 gUnknown_841D894[];
+extern const u8 gUnknown_841D8B0[];
+extern const u8 gUnknown_841D8CC[];
+extern const u8 gUnknown_841D8EC[];
+extern const u8 gUnknown_841D938[];
+extern const u8 gUnknown_841D94C[];
+extern const u8 gUnknown_841D98C[];
+extern const u8 gUnknown_841D9A0[];
+extern const u8 gUnknown_841D9C4[];
+extern const u8 gUnknown_841D9D4[];
+extern const u8 gUnknown_841DA08[];
+extern const u8 gUnknown_841DA24[];
+extern const u8 gUnknown_841DA3C[];
+extern const u8 gUnknown_841DA58[];
+extern const u8 gUnknown_841DA6C[];
+extern const u8 gUnknown_841DA88[];
+extern const u8 gUnknown_841DAA0[];
+extern const u8 gUnknown_841DAC4[];
+extern const u8 gUnknown_841DAE8[];
+extern const u8 gUnknown_841DB04[];
+extern const u8 gUnknown_841DB28[];
+extern const u8 gUnknown_841DB3C[];
+extern const u8 gUnknown_841DB7C[];
+extern const u8 gUnknown_841DBA4[];
+extern const u8 gUnknown_841DBDC[];
+extern const u8 gUnknown_841DBF8[];
+extern const u8 gUnknown_841DC2C[];
+extern const u8 gUnknown_841DC48[];
+extern const u8 gUnknown_841DCAC[];
+extern const u8 gUnknown_841DCC8[];
+extern const u8 gUnknown_841DD08[];
+extern const u8 gUnknown_841DD20[];
+extern const u8 gUnknown_841DD64[];
+extern const u8 gUnknown_841DD7C[];
+extern const u8 gUnknown_841DDC8[];
+extern const u8 gUnknown_841DDE4[];
+extern const u8 gUnknown_841DE24[];
+extern const u8 gUnknown_841DE3C[];
#endif //GUARD_STRINGS_H
diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h
index 2a520715f..dfd716176 100644
--- a/include/trainer_pokemon_sprites.h
+++ b/include/trainer_pokemon_sprites.h
@@ -14,5 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1);
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 FreeAndDestroyTrainerPicSprite(u16);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
+u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId);
#endif // GUARD_TRAINER_POKEMON_SPRITES_H
diff --git a/ld_script.txt b/ld_script.txt
index 17ff0d063..3b95702ed 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -213,7 +213,6 @@ SECTIONS {
asm/battle_anim_special.o(.text);
asm/hall_of_fame.o(.text);
src/credits.o(.text);
- asm/credits.o(.text);
src/diploma.o(.text);
asm/save_failed_screen.o(.text);
asm/clear_save_data_screen.o(.text);
@@ -426,7 +425,6 @@ SECTIONS {
src/intro.o(.rodata);
data/data_83FECCC.o(.rodata.battle_anim_special);
src/credits.o(.rodata);
- data/credits.o(.rodata);
src/diploma.o(.rodata);
data/strings.o(.rodata);
data/data_83FECCC.o(.rodata.841EE44);
diff --git a/src/credits.c b/src/credits.c
index 0329bf7c3..fff0a502b 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "malloc.h"
+#include "bg.h"
#include "palette.h"
#include "gpu_regs.h"
#include "task.h"
@@ -7,9 +8,13 @@
#include "event_data.h"
#include "window.h"
#include "new_menu_helpers.h"
-#include "menu.h"
+#include "decompress.h"
+#include "graphics.h"
#include "strings.h"
-#include "field_weather.h"
+#include "trainer_pokemon_sprites.h"
+#include "sound.h"
+#include "constants/species.h"
+#include "constants/maps.h"
struct CreditsResources
{
@@ -22,7 +27,9 @@ struct CreditsResources
u8 unk_09;
u8 unk_0A;
bool8 unk_0B;
- u8 filler_0C[16];
+ u16 unk_0C;
+ u16 unk_0E;
+ u8 filler_10[12];
u8 unk_1C;
u8 unk_1D;
};
@@ -41,6 +48,24 @@ struct UnkStruct_84145BC
u8 unk_8;
};
+struct CompressedGraphicsHeader
+{
+ const u8 * tiles;
+ const u8 * map;
+ const u16 * palette;
+};
+
+struct CreditsTaskData
+{
+ u8 field_00;
+ u8 field_01;
+ u16 field_02;
+ u16 field_04;
+ u8 field_06;
+ u16 field_08;
+ u16 field_0A;
+};
+
EWRAM_DATA struct CreditsResources * gUnknown_203AB40 = NULL;
void sub_80F39E8(void);
@@ -50,7 +75,246 @@ bool32 sub_80F4674(void);
void sub_80F48D0(void);
void sub_80F4930(u8 a0);
-/*
+const struct BgTemplate gUnknown_840C5A4[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = FALSE,
+ .priority = 0,
+ .baseTile = 0x0
+ }, {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 23,
+ .screenSize = 0,
+ .paletteMode = FALSE,
+ .priority = 1,
+ .baseTile = 0x0
+ }, {
+ .bg = 2,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 1,
+ .paletteMode = TRUE,
+ .priority = 2,
+ .baseTile = 0x0
+ }
+};
+
+const struct WindowTemplate gUnknown_840C5B0[] = {
+ {
+ .bg = 0x00,
+ .tilemapLeft = 0x0b,
+ .tilemapTop = 0x06,
+ .width = 0x08,
+ .height = 0x08,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0008
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x0a,
+ .tilemapTop = 0x05,
+ .width = 0x0a,
+ .height = 0x0a,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0048
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x09,
+ .tilemapTop = 0x03,
+ .width = 0x0c,
+ .height = 0x0d,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x00ac
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_840C5D0[] = {
+ {
+ .bg = 0x00,
+ .tilemapLeft = 0x0b,
+ .tilemapTop = 0x06,
+ .width = 0x08,
+ .height = 0x08,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0008
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x0a,
+ .tilemapTop = 0x05,
+ .width = 0x0a,
+ .height = 0x0a,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0048
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x09,
+ .tilemapTop = 0x05,
+ .width = 0x0c,
+ .height = 0x0a,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x00ac
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_840C5F0[] = {
+ {
+ .bg = 0x00,
+ .tilemapLeft = 0x0b,
+ .tilemapTop = 0x06,
+ .width = 0x08,
+ .height = 0x08,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0008
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x0a,
+ .tilemapTop = 0x05,
+ .width = 0x0a,
+ .height = 0x0a,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0048
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x0a,
+ .tilemapTop = 0x04,
+ .width = 0x0a,
+ .height = 0x0c,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x00ac
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_840C610[] = {
+ {
+ .bg = 0x00,
+ .tilemapLeft = 0x0b,
+ .tilemapTop = 0x06,
+ .width = 0x08,
+ .height = 0x08,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0008
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x0a,
+ .tilemapTop = 0x05,
+ .width = 0x0a,
+ .height = 0x0a,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x0048
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x09,
+ .tilemapTop = 0x04,
+ .width = 0x0c,
+ .height = 0x0c,
+ .paletteNum = 0x0a,
+ .baseBlock = 0x00ac
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const u16 gUnknown_840C630[] = INCBIN_U16("data/credits/unk_840C630.gbapal");
+const u32 gUnknown_840C650[] = INCBIN_U32("data/credits/unk_840C650.8bpp.lz");
+const u32 gUnknown_840CA54[] = INCBIN_U32("data/credits/unk_840CA54.bin.lz");
+const u32 gUnknown_840CB8C[] = INCBIN_U32("data/credits/unk_840CB8C.bin.lz");
+const u32 gUnknown_840D228[] = INCBIN_U32("data/credits/unk_840D228.bin.lz");
+const u32 gUnknown_840E158[] = INCBIN_U32("data/credits/unk_840E158.bin.lz");
+const u32 gUnknown_840E904[] = INCBIN_U32("data/credits/unk_840E904.bin.lz");
+const u32 gUnknown_840F240[] = INCBIN_U32("data/credits/unk_840F240.bin.lz");
+const u32 gUnknown_840F944[] = INCBIN_U32("data/credits/unk_840F944.bin.lz");
+const u32 gUnknown_8410198[] = INCBIN_U32("data/credits/unk_8410198.bin.lz");
+const u32 gUnknown_84105B4[] = INCBIN_U32("data/credits/unk_84105B4.bin.lz");
+
+const u32 filler_8410AFC = 0xF0;
+
+const u16 gUnknown_8410B00[] = INCBIN_U16("data/credits/unk_8410B20.gbapal");
+const u8 gUnknown_8410B20[] = INCBIN_U8("data/credits/unk_8410B20.4bpp.lz");
+const u8 gUnknown_8410B94[] = INCBIN_U8("data/credits/unk_8410B20.bin.lz");
+
+const struct CompressedGraphicsHeader gUnknown_8410CDC[] = {
+ {
+ .tiles = gUnknown_8EAE548,
+ .map = gUnknown_8EAE900,
+ .palette = gUnknown_8EAE528
+ }, {
+ .tiles = gUnknown_8410B20,
+ .map = gUnknown_8410B94,
+ .palette = gUnknown_8410B00
+ }
+};
+
+const struct UnkStruct_8410CF4 gUnknown_8410CF4[] = {
+ { 1, 0, 16 },
+ { 0, 0, 300 },
+ { 0, 1, 300 },
+ { 0, 2, 300 },
+ { 0, 42, 60 },
+ { 1, 1, 0 },
+ { 0, 3, 211 },
+ { 0, 4, 211 },
+ { 0, 5, 211 },
+ { 1, 2, 0 },
+ { 0, 6, 211 },
+ { 0, 7, 210 },
+ { 0, 8, 210 },
+ { 3, 0, 0 },
+ { 2, 3, 16 },
+ { 0, 9, 211 },
+ { 0, 10, 210 },
+ { 0, 11, 210 },
+ { 1, 4, 16 },
+ { 0, 12, 211 },
+ { 0, 13, 210 },
+ { 0, 14, 210 },
+ { 1, 5, 16 },
+ { 0, 15, 211 },
+ { 0, 16, 210 },
+ { 0, 17, 210 },
+ { 3, 1, 0 },
+ { 2, 6, 16 },
+ { 0, 18, 211 },
+ { 0, 19, 210 },
+ { 0, 20, 210 },
+ { 1, 7, 16 },
+ { 0, 21, 221 },
+ { 0, 22, 221 },
+ { 0, 23, 221 },
+ { 0, 24, 221 },
+ { 0, 42, 51 },
+ { 1, 8, 16 },
+ { 0, 25, 211 },
+ { 0, 26, 210 },
+ { 0, 27, 210 },
+ { 3, 2, 0 },
+ { 2, 9, 16 },
+ { 0, 28, 331 },
+ { 0, 29, 331 },
+ { 0, 30, 331 },
+ { 1, 10, 16 },
+ { 0, 31, 221 },
+ { 0, 32, 221 },
+ { 0, 33, 221 },
+ { 0, 34, 221 },
+ { 0, 42, 52 },
+ { 1, 11, 16 },
+ { 0, 41, 210 },
+ { 0, 35, 210 },
+ { 0, 36, 211 },
+ { 3, 3, 0 },
+ { 2, 12, 16 },
+ { 0, 37, 221 },
+ { 0, 40, 221 },
+ { 0, 38, 221 },
+ { 0, 39, 221 },
+ { 0, 42, 52 },
+ { 4, 0, 224 },
+ { 4, 1, 240 },
+ { 5, 0, 600 }
+};
+
+const ALIGNED(4) u8 gUnknown_8410FFC[3] = {0, 1, 2};
const ALIGNED(4) u8 gUnknown_8410E00[3] = {0, 5, 2};
const ALIGNED(4) u8 gUnknown_8410E04[3] = {0, 1, 2};
@@ -63,17 +327,274 @@ const struct WindowTemplate gUnknown_8410E08 = {
.paletteNum = 15,
.baseBlock = 0x008
};
- */
-extern const struct UnkStruct_8410CF4 gUnknown_8410CF4[];
-extern const u8 gUnknown_8410E00[3];
-extern const u8 gUnknown_8410E04[3];
-extern const struct WindowTemplate gUnknown_8410E08;
+const u16 gUnknown_8410E10[] = INCBIN_U16("data/credits/unk_8410E10.gbapal");
+const u32 gUnknown_8410E30[] = INCBIN_U32("data/credits/unk_8410E30.4bpp.lz");
+const u16 gUnknown_8411BF8[] = INCBIN_U16("data/credits/unk_8411BF8.gbapal");
+const u32 gUnknown_8411C18[] = INCBIN_U32("data/credits/unk_8411C18.4bpp.lz");
+const u16 gUnknown_84129A0[] = INCBIN_U16("data/credits/unk_84129A0.gbapal");
+const u32 gUnknown_84129C0[] = INCBIN_U32("data/credits/unk_84129C0.4bpp.lz");
+const u16 gUnknown_8413318[] = INCBIN_U16("data/credits/unk_8413318.gbapal");
+const u32 gUnknown_8413338[] = INCBIN_U32("data/credits/unk_8413338.4bpp.lz");
+const u16 gUnknown_8413854[] = INCBIN_U16("data/credits/unk_8413854.gbapal");
+const u32 gUnknown_8413874[] = INCBIN_U32("data/credits/unk_8413874.4bpp.lz");
+const u16 gUnknown_8413D98[] = INCBIN_U16("data/credits/unk_8413D98.gbapal");
+const u32 gUnknown_8413DB8[] = INCBIN_U32("data/credits/unk_8413DB8.4bpp.lz");
+
+const u16 gUnknown_841431C[][3] = {
+ { 0, 3, 1 },
+ { 0, 2, 0 },
+ { 0, 3, 0 },
+ { 1, 1, 2 },
+ { 0, 0, 3 }
+};
+
+const struct OamData gOamData_841433C = {
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .mosaic = FALSE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .size = ST_OAM_SIZE_3,
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 15
+};
+
+const union AnimCmd gAnimCmds_8414344[] = {
+ ANIMCMD_FRAME(0x000, 8),
+ ANIMCMD_FRAME(0x040, 8),
+ ANIMCMD_FRAME(0x080, 8),
+ ANIMCMD_FRAME(0x0C0, 8),
+ ANIMCMD_FRAME(0x100, 8),
+ ANIMCMD_FRAME(0x140, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gAnimCmdTable_8414360[] = {
+ gAnimCmds_8414344
+};
+
+const struct SpriteTemplate gUnknown_8414364 = {
+ .oam = &gOamData_841433C,
+ .anims = gAnimCmdTable_8414360,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct OamData gOamData_841437C = {
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .mosaic = FALSE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = ST_OAM_SIZE_3,
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 14
+};
+
+const union AnimCmd gAnimCmds_8414384[] = {
+ ANIMCMD_FRAME(0x00, 8),
+ ANIMCMD_FRAME(0x20, 8),
+ ANIMCMD_FRAME(0x40, 8),
+ ANIMCMD_FRAME(0x60, 8),
+ ANIMCMD_FRAME(0x80, 8),
+ ANIMCMD_FRAME(0xA0, 8),
+ ANIMCMD_FRAME(0xC0, 8),
+ ANIMCMD_FRAME(0xE0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gAnimCmds_84143A8[] = {
+ ANIMCMD_FRAME(0x00, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gAnimCmdTable_84143B0[] = {
+ gAnimCmds_8414384
+};
+
+const union AnimCmd *const gAnimCmdTable_84143B4[] = {
+ gAnimCmds_84143A8
+};
+
+const struct SpriteTemplate gUnknown_84143B8 = {
+ .oam = &gOamData_841437C,
+ .anims = gAnimCmdTable_84143B0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
-extern const char * gUnknown_8414588[];
-extern const struct UnkStruct_84145BC gUnknown_84145BC[];
+const struct SpriteTemplate gUnknown_84143D0 = {
+ .oam = &gOamData_841437C,
+ .anims = gAnimCmdTable_84143B4,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct CreditsOverworldCmd gUnknown_84143E8[] = {
+ { 0x00fe, MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23) },
+ { 0x000b, 0x006b, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414408[] = {
+ { 0x00fe, MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY) },
+ { 0x001e, 0x0022, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414428[] = {
+ { 0x00fe, MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY) },
+ { 0x0014, 0x001a, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
-void sub_80F39B4(void)
+// Charizard
+
+const struct CreditsOverworldCmd gUnknown_8414448[] = {
+ { 0x00fe, MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY) },
+ { 0x0008, 0x0006, 0x0001 },
+ { 0x0001, 0x0001, 0x0500 }, // Scroll right and down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414468[] = {
+ { 0x00fe, MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
+ { 0x0019, 0x0006, 0x0001 },
+ { 0x0001, 0x0000, 0x0500 }, // Scroll right
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414488[] = {
+ { 0x00fe, MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY) },
+ { 0x0009, 0x0007, 0x0001 },
+ { 0x0001, 0x0001, 0x0500 }, // Scroll right and down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+// Venusaur
+
+const struct CreditsOverworldCmd gUnknown_84144A8[] = {
+ { 0x00fe, MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
+ { 0x000b, 0x0044, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_84144C8[] = {
+ { 0x00fe, MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY) },
+ { 0x0030, 0x0010, 0x0001 },
+ { 0xffff, 0x0000, 0x0500 }, // Scroll left
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_84144E8[] = {
+ { 0x00fe, MAP_GROUP(SAFFRON_CITY_DUPLICATE), MAP_NUM(SAFFRON_CITY_DUPLICATE) },
+ { 0x0027, 0x0005, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+// Blastoise
+
+const struct CreditsOverworldCmd gUnknown_8414508[] = {
+ { 0x00fe, MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
+ { 0x0007, 0x002b, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414528[] = {
+ { 0x00fe, MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY) },
+ { 0x001c, 0x0005, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+const struct CreditsOverworldCmd gUnknown_8414548[] = {
+ { 0x00fe, MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND) },
+ { 0x000d, 0x0011, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+// Pikachu
+
+const struct CreditsOverworldCmd gUnknown_8414568[] = {
+ { 0x00fe, MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
+ { 0x0008, 0x0014, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd },
+};
+
+const struct CreditsOverworldCmd *const gUnknown_8414588[] = {
+ gUnknown_84143E8,
+ gUnknown_8414408,
+ gUnknown_8414428,
+ gUnknown_8414448,
+ gUnknown_8414468,
+ gUnknown_8414488,
+ gUnknown_84144A8,
+ gUnknown_84144C8,
+ gUnknown_84144E8,
+ gUnknown_8414508,
+ gUnknown_8414528,
+ gUnknown_8414548,
+ gUnknown_8414568
+};
+
+const struct UnkStruct_84145BC gUnknown_84145BC[] = {
+ { gUnknown_841D1D8, gUnknown_841D1E8, 0 },
+ { gUnknown_841D200, gUnknown_841D224, 0 },
+ { gUnknown_841D248, gUnknown_841D284, 0 },
+ { gUnknown_841D2B4, gUnknown_841D2C8, 0 },
+ { gUnknown_841D314, gUnknown_841D330, 1 },
+ { gUnknown_841D370, gUnknown_841D388, 1 },
+ { gUnknown_841D3C0, gUnknown_841D3D8, 1 },
+ { gUnknown_841D3FC, gUnknown_841D414, 1 },
+ { gUnknown_841D434, gUnknown_841D448, 0 },
+ { gUnknown_841D45C, gUnknown_841D474, 0 },
+ { gUnknown_841D4A4, gUnknown_841D4BC, 0 },
+ { gUnknown_841D4F0, gUnknown_841D504, 1 },
+ { gUnknown_841D524, gUnknown_841D548, 0 },
+ { gUnknown_841D56C, gUnknown_841D588, 0 },
+ { gUnknown_841D5B8, gUnknown_841D5CC, 0 },
+ { gUnknown_841D5E4, gUnknown_841D5FC, 1 },
+ { gUnknown_841D640, gUnknown_841D658, 0 },
+ { gUnknown_841D698, gUnknown_841D6B0, 1 },
+ { gUnknown_841D6EC, gUnknown_841D708, 0 },
+ { gUnknown_841D74C, gUnknown_841D768, 0 },
+ { gUnknown_841D784, gUnknown_841D79C, 0 },
+ { gUnknown_841D7DC, gUnknown_841D7F4, 0 },
+ { gUnknown_841D834, gUnknown_841D84C, 0 },
+ { gUnknown_841D894, gUnknown_841D8B0, 0 },
+ { gUnknown_841D8CC, gUnknown_841D8EC, 0 },
+ { gUnknown_841D938, gUnknown_841D94C, 0 },
+ { gUnknown_841D98C, gUnknown_841D9A0, 1 },
+ { gUnknown_841D9C4, gUnknown_841D9D4, 0 },
+ { gUnknown_841DA08, gUnknown_841DA24, 0 },
+ { gUnknown_841DA3C, gUnknown_841DA58, 0 },
+ { gUnknown_841DA6C, gUnknown_841DA88, 0 },
+ { gUnknown_841DAA0, gUnknown_841DAC4, 0 },
+ { gUnknown_841DAE8, gUnknown_841DB04, 0 },
+ { gUnknown_841DB28, gUnknown_841DB3C, 0 },
+ { gUnknown_841DB7C, gUnknown_841DBA4, 1 },
+ { gUnknown_841DBDC, gUnknown_841DBF8, 1 },
+ { gUnknown_841DC2C, gUnknown_841DC48, 1 },
+ { gUnknown_841DCAC, gUnknown_841DCC8, 1 },
+ { gUnknown_841DD08, gUnknown_841DD20, 0 },
+ { gUnknown_841DD64, gUnknown_841DD7C, 0 },
+ { gUnknown_841DDC8, gUnknown_841DDE4, 0 },
+ { gUnknown_841DE24, gUnknown_841DE3C, 0 },
+ { gUnknown_84161CD, gUnknown_84161CD, 0 }
+};
+
+void Special_Credits(void)
{
gUnknown_203AB40 = AllocZeroed(sizeof(*gUnknown_203AB40));
ResetTasks();
@@ -1114,3 +1635,412 @@ s32 sub_80F3BD0(void)
"_080F418C: .4byte gPaletteFade");
}
#endif //NONMATCHING
+
+void sub_80F4190(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_80F41A4(u8 a0)
+{
+ switch (a0)
+ {
+ case 0:
+ InitWindows(gUnknown_840C5B0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ sub_810C228(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)gUnknown_840CB8C, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)gUnknown_840D228, 0, 0);
+ break;
+ case 1:
+ InitWindows(gUnknown_840C5D0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ sub_810C228(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)gUnknown_840E158, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)gUnknown_840E904, 0, 0);
+ break;
+ case 2:
+ InitWindows(gUnknown_840C5F0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ sub_810C228(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)gUnknown_840F240, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)gUnknown_840F944, 0, 0);
+ break;
+ case 3:
+ InitWindows(gUnknown_840C610);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ sub_810C228(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)gUnknown_8410198, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)gUnknown_84105B4, 0, 0);
+ break;
+ }
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+ CopyWindowToVram(2, 2);
+}
+
+u16 sub_80F42F0(u8 a0)
+{
+ switch (a0)
+ {
+ case 0:
+ return SPECIES_CHARIZARD;
+ case 1:
+ return SPECIES_VENUSAUR;
+ case 2:
+ return SPECIES_BLASTOISE;
+ case 3:
+ return SPECIES_PIKACHU;
+ default:
+ return SPECIES_NONE;
+ }
+}
+
+bool32 sub_80F4328(void)
+{
+ switch (gUnknown_203AB40->unk_01)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ResetBgsAndClearDma3BusyFlags(1);
+ InitBgsFromTemplates(1, gUnknown_840C5A4, NELEMS(gUnknown_840C5A4));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ gUnknown_203AB40->unk_0C = 0;
+ gUnknown_203AB40->unk_0E = 0;
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAAB98, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840C650, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAB30C, 0x500, 0, 1);
+ DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840CA54, 0x400, 0, 1);
+ LoadPalette(gUnknown_8EAAB18[gUnknown_203AB40->unk_09], 0, 0x20);
+ LoadPalette(gUnknown_840C630, 0xF0, 0x20);
+ sub_80F41A4(gUnknown_203AB40->unk_09);
+ SetVBlankCallback(sub_80F4190);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 1:
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, PIXEL_FILL(1));
+ PutWindowTilemap(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 2:
+ ShowBg(2);
+ ShowBg(0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gUnknown_203AB40->unk_0C = 0x28;
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 3:
+ if (gUnknown_203AB40->unk_0C != 0)
+ gUnknown_203AB40->unk_0C--;
+ else
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_203AB40->unk_0C = 8;
+ gUnknown_203AB40->unk_0E = 1;
+ gUnknown_203AB40->unk_01++;
+ }
+ break;
+ case 5:
+ if (gUnknown_203AB40->unk_0C != 0)
+ gUnknown_203AB40->unk_0C--;
+ else
+ {
+ if (gUnknown_203AB40->unk_0E < 3)
+ {
+ PutWindowTilemap(gUnknown_203AB40->unk_0E);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203AB40->unk_0C = 4;
+ gUnknown_203AB40->unk_0E++;
+ }
+ else
+ gUnknown_203AB40->unk_01++;
+ }
+ break;
+ case 6:
+ if (gUnknown_203AB40->unk_0C < 256)
+ {
+ gUnknown_203AB40->unk_0C += 16;
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0);
+ }
+ else
+ {
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, 0x100, 0x100, 0);
+ gUnknown_203AB40->unk_0C = 32;
+ gUnknown_203AB40->unk_01++;
+ }
+ break;
+ case 7:
+ if (gUnknown_203AB40->unk_0C != 0)
+ gUnknown_203AB40->unk_0C--;
+ else
+ {
+ HideBg(2);
+ ShowBg(1);
+ PlayCry2(sub_80F42F0(gUnknown_203AB40->unk_09), 0, 125, 10);
+ gUnknown_203AB40->unk_0C = 128;
+ gUnknown_203AB40->unk_01++;
+ }
+ break;
+ case 8:
+ if (gUnknown_203AB40->unk_0C != 0)
+ gUnknown_203AB40->unk_0C--;
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_203AB40->unk_01++;
+ }
+ break;
+ case 9:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(0));
+ gUnknown_203AB40->unk_01 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+bool32 sub_80F4674(void)
+{
+ switch (gUnknown_203AB40->unk_01)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ResetBgsAndClearDma3BusyFlags(1);
+ InitBgsFromTemplates(0, gUnknown_840C5A4, 1);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].tiles, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].map, 0x800, 0, 1);
+ LoadPalette(gUnknown_8410CDC[gUnknown_203AB40->unk_09].palette, 0x00, 0x200);
+ SetVBlankCallback(sub_80F4190);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 1:
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 2:
+ ShowBg(0);
+ if (gUnknown_203AB40->unk_09 != 0)
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK);
+ else
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gUnknown_203AB40->unk_01++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_203AB40->unk_01 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+void sub_80F47F8(u8 taskId)
+{
+ struct CreditsTaskData * data = (void *)gTasks[taskId].data;
+ switch (data->field_00)
+ {
+ case 0:
+ break;
+ case 1:
+ if (gSprites[data->field_01].pos1.x != 0xD0)
+ {
+ gSprites[data->field_01].pos1.x--;
+ gSprites[data->field_06].pos1.x--;
+ }
+ else
+ {
+ data->field_00 = 0;
+ }
+ break;
+ case 2:
+ if (gUnknown_203AB40->unk_1D & 1)
+ {
+ if (gSprites[data->field_01].pos1.y != 0x50)
+ {
+ gSprites[data->field_01].pos1.y--;
+ gSprites[data->field_06].pos1.y--;
+ }
+ else
+ {
+ data->field_00 = 0;
+ }
+ }
+ break;
+ case 3:
+ if (gUnknown_203AB40->unk_00 == 15)
+ {
+ gSprites[data->field_01].pos1.x--;
+ gSprites[data->field_06].pos1.x--;
+ }
+ break;
+ }
+}
+
+void sub_80F48D0(void)
+{
+ if (gUnknown_203AB40->unk_02 != 0xFF)
+ {
+ struct CreditsTaskData * data = (void *)gTasks[gUnknown_203AB40->unk_02].data;
+ FreeSpriteTilesByTag(data->field_02);
+ DestroySprite(&gSprites[data->field_01]);
+ FreeSpriteTilesByTag(data->field_08);
+ DestroySprite(&gSprites[data->field_06]);
+ DestroyTask(gUnknown_203AB40->unk_02);
+ gUnknown_203AB40->unk_02 = 0xFF;
+ }
+}
+
+void sub_80F4930(u8 a0)
+{
+ u8 taskId;
+ struct CreditsTaskData * data;
+ s32 r4, r9;
+ struct SpriteTemplate sp00;
+ struct CompressedSpriteSheet sp18;
+
+ if (gUnknown_203AB40->unk_02 == 0xFF)
+ {
+ taskId = CreateTask(sub_80F47F8, 0);
+ data = (void *)gTasks[taskId].data;
+ gUnknown_203AB40->unk_02 = taskId;
+ switch (gUnknown_841431C[a0][2])
+ {
+ default:
+ case 0:
+ r4 = 0xd0;
+ r9 = 0x50;
+ break;
+ case 1:
+ r4 = 0x110;
+ r9 = 0x50;
+ break;
+ case 2:
+ r4 = 0xd0;
+ r9 = 0xa0;
+ break;
+ }
+ data->field_00 = gUnknown_841431C[a0][2];
+ data->field_02 = 0x2000;
+ data->field_04 = 0xFFFF;
+ switch (gUnknown_841431C[a0][0])
+ {
+ case 0:
+ // Player
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ sp18.data = gUnknown_8410E30;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_02;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8410E10, 0x1F0, 0x20);
+ }
+ else
+ {
+ sp18.data = gUnknown_8411C18;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_02;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8411BF8, 0x1F0, 0x20);
+ }
+ break;
+ case 1:
+ // Rival
+ sp18.data = gUnknown_84129C0;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_02;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_84129A0, 0x1F0, 0x20);
+ break;
+ }
+ sp00 = gUnknown_8414364;
+ sp00.tileTag = data->field_02;
+ data->field_01 = CreateSprite(&sp00, r4, r9, 0);
+ gSprites[data->field_01].oam.paletteNum = 0xF;
+ gSprites[data->field_01].subpriority = 0;
+
+ data->field_08 = 0x2001;
+ data->field_0A = 0xFFFF;
+ switch (gUnknown_841431C[a0][1])
+ {
+ case 0:
+ sp18.data = gUnknown_8413338;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_08;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8413318, 0x1E0, 0x20);
+ sp00 = gUnknown_84143B8;
+ break;
+ case 1:
+ sp18.data = gUnknown_8413338;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_08;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8413318, 0x1E0, 0x20);
+ sp00 = gUnknown_84143D0;
+ break;
+ case 2:
+ sp18.data = gUnknown_8413874;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_08;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8413854, 0x1E0, 0x20);
+ sp00 = gUnknown_84143B8;
+ break;
+ case 3:
+ sp18.data = gUnknown_8413DB8;
+ sp18.size = 0x3000;
+ sp18.tag = data->field_08;
+ LoadCompressedSpriteSheet(&sp18);
+ LoadPalette(gUnknown_8413D98, 0x1E0, 0x20);
+ sp00 = gUnknown_84143B8;
+ break;
+ }
+ sp00.tileTag = data->field_08;
+ data->field_06 = CreateSprite(&sp00, r4, r9 + 0x26, 0);
+ gSprites[data->field_06].oam.paletteNum = 0xE;
+ gSprites[data->field_06].subpriority = 1;
+ }
+}