summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-09-25 13:49:16 -0400
committerGitHub <noreply@github.com>2019-09-25 13:49:16 -0400
commit0e217e22d8fa3e075416cb332435c3756548357e (patch)
tree59ef21892a02c9d266f5cac36872458bdbe0de61
parent2599dac8ac8c12268fca902910bfe1aab40a68ca (diff)
parent6539884c8850aca6c2057017dba9c3d78ca15784 (diff)
Merge branch 'master' into battle
-rw-r--r--asm/battle_setup.s4
-rw-r--r--asm/credits.s2222
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/hall_of_fame.s10
-rw-r--r--asm/overworld.s26
-rw-r--r--asm/pokedex_screen.s2
-rw-r--r--asm/pokemon_summary_screen.s6
-rw-r--r--asm/post_battle_event_funcs.s6
-rw-r--r--baserom.ipsbin2055522 -> 2017986 bytes
-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_840DC0C.binbin0 -> 2048 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.s119
-rw-r--r--data/graphics.s27
-rw-r--r--data/maps/IndigoPlateau_Exterior/scripts.inc2
-rw-r--r--data/maps/PokemonLeague_HallOfFame/scripts.inc2
-rw-r--r--data/specials.inc4
-rw-r--r--data/strings.s383
-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/field_weather.h1
-rw-r--r--include/gba/defines.h5
-rw-r--r--include/graphics.h8
-rw-r--r--include/overworld.h23
-rw-r--r--include/strings.h89
-rw-r--r--include/text.h48
-rw-r--r--include/trainer_pokemon_sprites.h1
-rw-r--r--ld_script.txt3
-rw-r--r--src/braille_text.c86
-rw-r--r--src/credits.c2167
-rw-r--r--src/menu2.c323
-rw-r--r--src/quest_log.c4
-rw-r--r--src/sound.c4
-rw-r--r--src/text.c1184
-rw-r--r--src/text_printer.c62
-rw-r--r--src/trainer_pokemon_sprites.c2
-rw-r--r--sym_ewram.txt5
67 files changed, 3314 insertions, 3733 deletions
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index 787b0fb8e..c5b4510b7 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -2107,12 +2107,12 @@ sub_80806C8: @ 80806C8
push {lr}
cmp r0, 0
bne _080806D0
- ldr r0, _080806D4 @ =gUnknown_84161CD
+ ldr r0, _080806D4 @ =gString_Dummy
_080806D0:
pop {r1}
bx r1
.align 2, 0
-_080806D4: .4byte gUnknown_84161CD
+_080806D4: .4byte gString_Dummy
thumb_func_end sub_80806C8
thumb_func_start sub_80806D8
diff --git a/asm/credits.s b/asm/credits.s
deleted file mode 100644
index e52275e77..000000000
--- a/asm/credits.s
+++ /dev/null
@@ -1,2222 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F39B4
-sub_80F39B4: @ 80F39B4
- push {r4,lr}
- ldr r4, _080F39E0 @ =gUnknown_203AB40
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r4]
- bl ResetTasks
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1, 0x2]
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x1D]
- bl ResetSpriteData
- ldr r0, _080F39E4 @ =sub_80F39E8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F39E0: .4byte gUnknown_203AB40
-_080F39E4: .4byte sub_80F39E8
- thumb_func_end sub_80F39B4
-
- thumb_func_start sub_80F39E8
-sub_80F39E8: @ 80F39E8
- push {lr}
- bl sub_80F3BD0
- adds r1, r0, 0
- cmp r1, 0x1
- beq _080F3A16
- cmp r1, 0x1
- bgt _080F39FE
- cmp r1, 0
- beq _080F3A04
- b _080F3A68
-_080F39FE:
- cmp r1, 0x2
- beq _080F3A4C
- b _080F3A68
-_080F3A04:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- b _080F3A68
-_080F3A16:
- ldr r0, _080F3A28 @ =gUnknown_203AB40
- ldr r0, [r0]
- ldrb r0, [r0, 0x1D]
- ands r1, r0
- cmp r1, 0
- beq _080F3A2C
- bl sub_80574A4
- b _080F3A3C
- .align 2, 0
-_080F3A28: .4byte gUnknown_203AB40
-_080F3A2C:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
-_080F3A3C:
- ldr r0, _080F3A48 @ =gUnknown_203AB40
- ldr r1, [r0]
- ldrb r0, [r1, 0x1D]
- adds r0, 0x1
- strb r0, [r1, 0x1D]
- b _080F3A68
- .align 2, 0
-_080F3A48: .4byte gUnknown_203AB40
-_080F3A4C:
- movs r0, 0x80
- lsls r0, 7
- bl FlagClear
- ldr r1, _080F3A6C @ =gUnknown_2031DD8
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F3A70 @ =gUnknown_203AB40
- ldr r0, [r0]
- bl Free
- movs r0, 0xFF
- bl SoftReset
-_080F3A68:
- pop {r0}
- bx r0
- .align 2, 0
-_080F3A6C: .4byte gUnknown_2031DD8
-_080F3A70: .4byte gUnknown_203AB40
- thumb_func_end sub_80F39E8
-
- thumb_func_start sub_80F3A74
-sub_80F3A74: @ 80F3A74
- push {lr}
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080F3AA0 @ =0x00001f3f
- movs r0, 0x48
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0xE
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_080F3AA0: .4byte 0x00001f3f
- thumb_func_end sub_80F3A74
-
- thumb_func_start sub_80F3AA4
-sub_80F3AA4: @ 80F3AA4
- push {lr}
- movs r0, 0x50
- movs r1, 0xCE
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 3
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0xA
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80F3AA4
-
- thumb_func_start sub_80F3AC4
-sub_80F3AC4: @ 80F3AC4
- push {r4,lr}
- ldr r0, _080F3AFC @ =gUnknown_8410E08
- bl AddWindow
- ldr r4, _080F3B00 @ =gUnknown_203AB40
- ldr r1, [r4]
- strb r0, [r1, 0xA]
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0xB]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3AFC: .4byte gUnknown_8410E08
-_080F3B00: .4byte gUnknown_203AB40
- thumb_func_end sub_80F3AC4
-
- thumb_func_start sub_80F3B04
-sub_80F3B04: @ 80F3B04
- push {r4,lr}
- ldr r4, _080F3B28 @ =gUnknown_203AB40
- ldr r1, [r4]
- ldrb r0, [r1, 0xB]
- cmp r0, 0
- beq _080F3B20
- ldrb r0, [r1, 0xA]
- bl RemoveWindow
- bl CleanupOverworldWindowsAndTilemaps
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0xB]
-_080F3B20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3B28: .4byte gUnknown_203AB40
- thumb_func_end sub_80F3B04
-
- thumb_func_start sub_80F3B2C
-sub_80F3B2C: @ 80F3B2C
- push {r4,r5,lr}
- ldr r5, _080F3B40 @ =gUnknown_203AB40
- ldr r0, [r5]
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- beq _080F3B44
- cmp r4, 0x1
- beq _080F3B5E
-_080F3B3C:
- movs r0, 0
- b _080F3BB0
- .align 2, 0
-_080F3B40: .4byte gUnknown_203AB40
-_080F3B44:
- movs r0, 0x80
- lsls r0, 7
- bl FlagSet
- ldr r1, _080F3BB8 @ =gUnknown_2031DD8
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, [r5]
- strb r4, [r0, 0x1C]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_080F3B5E:
- ldr r0, _080F3BBC @ =gUnknown_203AB40
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x1C
- ldr r2, _080F3BC0 @ =gUnknown_8414588
- ldrb r1, [r1, 0x9]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0
- bl sub_805750C
- cmp r0, 0
- beq _080F3B3C
- bl sub_80F3AC4
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r1, _080F3BC4 @ =0x0000247c
- movs r0, 0x44
- bl SetGpuReg
- bl sub_80F3A74
- bl sub_80F3AA4
- movs r0, 0xF0
- bl Menu_LoadStdPalAt
- ldr r0, _080F3BC8 @ =gPlttBufferUnfaded
- movs r2, 0xFF
- lsls r2, 1
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080F3BCC @ =gPlttBufferFaded
- adds r0, r2
- strh r1, [r0]
- movs r0, 0x1
-_080F3BB0:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080F3BB8: .4byte gUnknown_2031DD8
-_080F3BBC: .4byte gUnknown_203AB40
-_080F3BC0: .4byte gUnknown_8414588
-_080F3BC4: .4byte 0x0000247c
-_080F3BC8: .4byte gPlttBufferUnfaded
-_080F3BCC: .4byte gPlttBufferFaded
- thumb_func_end sub_80F3B2C
-
- thumb_func_start sub_80F3BD0
-sub_80F3BD0: @ 80F3BD0
- push {r4-r7,lr}
- sub sp, 0x24
- ldr r1, _080F3BEC @ =gUnknown_203AB40
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x12
- bls _080F3BE2
- b _080F4180
-_080F3BE2:
- lsls r0, 2
- ldr r1, _080F3BF0 @ =_080F3BF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F3BEC: .4byte gUnknown_203AB40
-_080F3BF0: .4byte _080F3BF4
- .align 2, 0
-_080F3BF4:
- .4byte _080F3C40
- .4byte _080F3C64
- .4byte _080F3C98
- .4byte _080F3CEE
- .4byte _080F3D0A
- .4byte _080F3D48
- .4byte _080F3D6A
- .4byte _080F3EB4
- .4byte _080F3F24
- .4byte _080F3F84
- .4byte _080F3FC4
- .4byte _080F3FF0
- .4byte _080F400A
- .4byte _080F4084
- .4byte _080F40B8
- .4byte _080F40D0
- .4byte _080F4100
- .4byte _080F4118
- .4byte _080F4170
-_080F3C40:
- bl sub_80F3A74
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r1, _080F3C5C @ =0x00004f51
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, _080F3C60 @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x1
- b _080F413C
- .align 2, 0
-_080F3C5C: .4byte 0x00004f51
-_080F3C60: .4byte gUnknown_203AB40
-_080F3C64:
- bl sub_80F3AA4
- bl sub_80F3AC4
- movs r0, 0xF0
- bl Menu_LoadStdPalAt
- ldr r0, _080F3C8C @ =gPlttBufferUnfaded
- movs r2, 0xFF
- lsls r2, 1
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080F3C90 @ =gPlttBufferFaded
- adds r0, r2
- strh r1, [r0]
- ldr r0, _080F3C94 @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x2
- b _080F413C
- .align 2, 0
-_080F3C8C: .4byte gPlttBufferUnfaded
-_080F3C90: .4byte gPlttBufferFaded
-_080F3C94: .4byte gUnknown_203AB40
-_080F3C98:
- movs r0, 0x44
- bl GetGpuReg
- add r1, sp, 0x14
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r1]
- movs r0, 0x44
- bl GetGpuReg
- add r2, sp, 0x14
- movs r1, 0xFF
- ands r1, r0
- strh r1, [r2, 0x2]
- adds r0, r2, 0
- ldrh r0, [r0]
- cmp r0, 0x24
- bne _080F3CCC
- ldr r0, _080F3CC8 @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x4]
- movs r0, 0x3
- b _080F413C
- .align 2, 0
-_080F3CC8: .4byte gUnknown_203AB40
-_080F3CCC:
- add r1, sp, 0x14
- subs r0, 0x1
- strh r0, [r1]
- adds r2, r1, 0
- adds r0, r1, 0
- ldrh r1, [r0, 0x2]
- adds r1, 0x1
- strh r1, [r2, 0x2]
- ldrh r0, [r0]
- lsls r0, 8
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- b _080F3D06
-_080F3CEE:
- ldr r1, [r7]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- bne _080F3D52
- movs r0, 0
- bl sub_80F4930
- ldr r0, [r7]
- movs r1, 0x64
- strh r1, [r0, 0x4]
- movs r1, 0x4
- strb r1, [r0]
-_080F3D06:
- movs r0, 0
- b _080F4182
-_080F3D0A:
- ldr r1, [r7]
- ldrh r0, [r1, 0x4]
- adds r2, r0, 0
- cmp r2, 0
- bne _080F3D52
- movs r0, 0xB4
- lsls r0, 1
- strh r0, [r1, 0x4]
- ldrb r0, [r1, 0xA]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x2
- str r1, [sp, 0x4]
- ldr r1, _080F3D40 @ =gUnknown_8410E00
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r1, _080F3D44 @ =gUnknown_841D198
- str r1, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x8
- movs r3, 0x29
- bl AddTextPrinterParameterized4
- ldr r1, [r7]
- movs r0, 0x5
- b _080F413C
- .align 2, 0
-_080F3D40: .4byte gUnknown_8410E00
-_080F3D44: .4byte gUnknown_841D198
-_080F3D48:
- ldr r1, [r7]
- ldrh r0, [r1, 0x4]
- adds r4, r0, 0
- cmp r4, 0
- beq _080F3D58
-_080F3D52:
- subs r0, 0x1
- strh r0, [r1, 0x4]
- b _080F3D06
-_080F3D58:
- bl sub_80F3B04
- ldr r0, [r7]
- movs r1, 0x6
- strb r1, [r0]
- ldr r0, [r7]
- strh r4, [r0, 0x4]
- strh r4, [r0, 0x6]
- b _080F3D06
-_080F3D6A:
- ldr r2, [r7]
- ldrh r0, [r2, 0x4]
- cmp r0, 0
- beq _080F3D7A
- subs r0, 0x1
- strh r0, [r2, 0x4]
- ldrb r0, [r2, 0x8]
- b _080F4182
-_080F3D7A:
- ldr r1, _080F3D94 @ =gUnknown_8410CF4
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bls _080F3D8A
- b _080F3E94
-_080F3D8A:
- lsls r0, 2
- ldr r1, _080F3D98 @ =_080F3D9C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F3D94: .4byte gUnknown_8410CF4
-_080F3D98: .4byte _080F3D9C
- .align 2, 0
-_080F3D9C:
- .4byte _080F3DB4
- .4byte _080F3DE0
- .4byte _080F3E10
- .4byte _080F3E30
- .4byte _080F3E58
- .4byte _080F3E8C
-_080F3DB4:
- movs r0, 0x80
- lsls r0, 8
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r4, _080F3DDC @ =gUnknown_203AB40
- ldr r1, [r4]
- movs r0, 0x7
- strb r0, [r1]
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- b _080F4182
- .align 2, 0
-_080F3DDC: .4byte gUnknown_203AB40
-_080F3DE0:
- ldr r2, _080F3E04 @ =gUnknown_203AB40
- ldr r1, [r2]
- movs r0, 0xA
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, _080F3E08 @ =gUnknown_8410CF4
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- strb r0, [r2, 0x9]
- ldr r2, _080F3E0C @ =0x3fffffff
- movs r0, 0x1
- movs r1, 0
- bl sub_807A944
- b _080F3E94
- .align 2, 0
-_080F3E04: .4byte gUnknown_203AB40
-_080F3E08: .4byte gUnknown_8410CF4
-_080F3E0C: .4byte 0x3fffffff
-_080F3E10:
- ldr r2, _080F3E28 @ =gUnknown_203AB40
- ldr r1, [r2]
- movs r0, 0xC
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, _080F3E2C @ =gUnknown_8410CF4
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- strb r0, [r2, 0x9]
- b _080F3E94
- .align 2, 0
-_080F3E28: .4byte gUnknown_203AB40
-_080F3E2C: .4byte gUnknown_8410CF4
-_080F3E30:
- ldr r2, _080F3E50 @ =gUnknown_203AB40
- ldr r1, [r2]
- movs r0, 0xD
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, _080F3E54 @ =gUnknown_8410CF4
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- strb r0, [r2, 0x9]
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- b _080F3E94
- .align 2, 0
-_080F3E50: .4byte gUnknown_203AB40
-_080F3E54: .4byte gUnknown_8410CF4
-_080F3E58:
- ldr r2, _080F3E84 @ =gUnknown_203AB40
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0xF
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, _080F3E88 @ =gUnknown_8410CF4
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- strb r0, [r2, 0x9]
- movs r0, 0x1
- negs r0, r0
- str r3, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080F3E94
- .align 2, 0
-_080F3E84: .4byte gUnknown_203AB40
-_080F3E88: .4byte gUnknown_8410CF4
-_080F3E8C:
- ldr r0, _080F3EAC @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x11
- strb r0, [r1]
-_080F3E94:
- ldr r0, _080F3EAC @ =gUnknown_203AB40
- ldr r1, [r0]
- ldr r2, _080F3EB0 @ =gUnknown_8410CF4
- ldrh r0, [r1, 0x6]
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x2]
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _080F3D06
- .align 2, 0
-_080F3EAC: .4byte gUnknown_203AB40
-_080F3EB0: .4byte gUnknown_8410CF4
-_080F3EB4:
- ldr r0, _080F3F14 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080F3FBA
- add r3, sp, 0x14
- ldr r5, _080F3F18 @ =gUnknown_84145BC
- ldr r4, _080F3F1C @ =gUnknown_8410CF4
- ldr r2, [r7]
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x8]
- strh r0, [r3]
- ldrb r0, [r2, 0xA]
- str r6, [sp]
- str r6, [sp, 0x4]
- ldr r1, _080F3F20 @ =gUnknown_8410E00
- str r1, [sp, 0x8]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0xC]
- ldrh r1, [r2, 0x6]
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x6
- bl AddTextPrinterParameterized4
- ldr r1, [r7]
- movs r0, 0x8
- b _080F3FB8
- .align 2, 0
-_080F3F14: .4byte gPaletteFade
-_080F3F18: .4byte gUnknown_84145BC
-_080F3F1C: .4byte gUnknown_8410CF4
-_080F3F20: .4byte gUnknown_8410E00
-_080F3F24:
- add r4, sp, 0x14
- ldr r3, _080F3F78 @ =gUnknown_84145BC
- ldr r5, _080F3F7C @ =gUnknown_8410CF4
- ldr r2, [r7]
- ldrh r0, [r2, 0x6]
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x8]
- movs r1, 0
- strh r0, [r4]
- ldrb r0, [r2, 0xA]
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r1, _080F3F80 @ =gUnknown_8410E04
- str r1, [sp, 0x8]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0xC]
- ldrh r1, [r2, 0x6]
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r3, 0x4
- adds r1, r3
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x8
- movs r3, 0x6
- bl AddTextPrinterParameterized4
- ldr r1, [r7]
- movs r0, 0x9
- b _080F3FB8
- .align 2, 0
-_080F3F78: .4byte gUnknown_84145BC
-_080F3F7C: .4byte gUnknown_8410CF4
-_080F3F80: .4byte gUnknown_8410E04
-_080F3F84:
- ldr r0, [r7]
- ldrb r0, [r0, 0xA]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r7]
- ldr r2, _080F3FC0 @ =gUnknown_8410CF4
- ldrh r0, [r1, 0x6]
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x2]
- movs r2, 0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- movs r0, 0x80
- lsls r0, 8
- str r2, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r7]
- movs r0, 0x6
-_080F3FB8:
- strb r0, [r1]
-_080F3FBA:
- ldr r0, [r7]
- ldrb r0, [r0, 0x8]
- b _080F4182
- .align 2, 0
-_080F3FC0: .4byte gUnknown_8410CF4
-_080F3FC4:
- ldr r0, _080F3FE8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080F3FD6
- b _080F3D06
-_080F3FD6:
- bl sub_80F3B04
- ldr r1, _080F3FEC @ =gUnknown_203AB40
- ldr r0, [r1]
- strb r4, [r0, 0x1]
- ldr r1, [r1]
- movs r0, 0xB
- b _080F413C
- .align 2, 0
-_080F3FE8: .4byte gPaletteFade
-_080F3FEC: .4byte gUnknown_203AB40
-_080F3FF0:
- ldr r0, [r7]
- ldrb r0, [r0, 0x9]
- bl sub_80F3B2C
- cmp r0, 0
- bne _080F3FFE
- b _080F3D06
-_080F3FFE:
- ldr r1, [r7]
- movs r0, 0x1
- strb r0, [r1, 0x8]
- ldr r1, [r7]
- movs r0, 0x6
- b _080F413C
-_080F400A:
- ldr r0, _080F4050 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080F401C
- b _080F3D06
-_080F401C:
- bl sub_80F3B04
- ldr r1, _080F4054 @ =gUnknown_203AB40
- ldr r0, [r1]
- strb r4, [r0, 0x1]
- adds r4, r1, 0
-_080F4028:
- ldr r0, [r4]
- ldrb r0, [r0, 0x9]
- bl sub_80F3B2C
- cmp r0, 0
- beq _080F4028
- ldr r0, _080F4054 @ =gUnknown_203AB40
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0x6
- beq _080F4058
- cmp r0, 0x6
- ble _080F404A
- cmp r0, 0x9
- beq _080F405E
- cmp r0, 0xC
- beq _080F4064
-_080F404A:
- add r1, sp, 0x14
- movs r0, 0x1
- b _080F4068
- .align 2, 0
-_080F4050: .4byte gPaletteFade
-_080F4054: .4byte gUnknown_203AB40
-_080F4058:
- add r1, sp, 0x14
- movs r0, 0x2
- b _080F4068
-_080F405E:
- add r1, sp, 0x14
- movs r0, 0x3
- b _080F4068
-_080F4064:
- add r1, sp, 0x14
- movs r0, 0x4
-_080F4068:
- strh r0, [r1]
- add r0, sp, 0x14
- ldrb r0, [r0]
- bl sub_80F4930
- ldr r2, _080F4080 @ =gUnknown_203AB40
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x8]
- ldr r1, [r2]
- movs r0, 0x6
- b _080F413C
- .align 2, 0
-_080F4080: .4byte gUnknown_203AB40
-_080F4084:
- ldr r0, _080F40B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080F4096
- b _080F3D06
-_080F4096:
- bl sub_80F48D0
- bl sub_80F3B04
- ldr r1, _080F40B4 @ =gUnknown_203AB40
- ldr r0, [r1]
- strb r4, [r0, 0x1]
- ldr r0, [r1]
- strb r4, [r0, 0x8]
- ldr r1, [r1]
- movs r0, 0xE
- b _080F413C
- .align 2, 0
-_080F40B0: .4byte gPaletteFade
-_080F40B4: .4byte gUnknown_203AB40
-_080F40B8:
- bl sub_80F4328
- cmp r0, 0
- bne _080F40C2
- b _080F3D06
-_080F40C2:
- ldr r0, _080F40CC @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x6
- b _080F413C
- .align 2, 0
-_080F40CC: .4byte gUnknown_203AB40
-_080F40D0:
- ldr r0, _080F40F8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080F40E2
- b _080F3D06
-_080F40E2:
- bl sub_80F3B04
- ldr r1, _080F40FC @ =gUnknown_203AB40
- ldr r0, [r1]
- strb r4, [r0, 0x1]
- ldr r0, [r1]
- strb r4, [r0, 0x8]
- ldr r1, [r1]
- movs r0, 0x10
- b _080F413C
- .align 2, 0
-_080F40F8: .4byte gPaletteFade
-_080F40FC: .4byte gUnknown_203AB40
-_080F4100:
- bl sub_80F4674
- cmp r0, 0
- bne _080F410A
- b _080F3D06
-_080F410A:
- ldr r0, _080F4114 @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x6
- b _080F413C
- .align 2, 0
-_080F4114: .4byte gUnknown_203AB40
-_080F4118:
- ldr r0, _080F4140 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F414C
- movs r0, 0x1
- negs r0, r0
- ldr r1, _080F4144 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080F4148 @ =gUnknown_203AB40
- ldr r1, [r0]
- movs r0, 0x12
-_080F413C:
- strb r0, [r1]
- b _080F3D06
- .align 2, 0
-_080F4140: .4byte gMain
-_080F4144: .4byte 0x00007fff
-_080F4148: .4byte gUnknown_203AB40
-_080F414C:
- ldr r1, [r7]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- beq _080F4156
- b _080F3D52
-_080F4156:
- movs r0, 0x12
- strb r0, [r1]
- subs r0, 0x13
- ldr r1, _080F416C @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080F3D06
- .align 2, 0
-_080F416C: .4byte 0x00007fff
-_080F4170:
- ldr r0, _080F418C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F4180
- bl sub_80F3B04
-_080F4180:
- movs r0, 0x2
-_080F4182:
- add sp, 0x24
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F418C: .4byte gPaletteFade
- thumb_func_end sub_80F3BD0
-
- 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/asm/field_weather.s b/asm/field_weather.s
index c165212d4..403a365be 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -1737,8 +1737,8 @@ _0807A93C: .4byte 0x000006ca
_0807A940: .4byte 0x000006cb
thumb_func_end fade_screen
- thumb_func_start sub_807A944
-sub_807A944: @ 807A944
+ thumb_func_start FieldWeather_StartFadingOutCreditsMap
+FieldWeather_StartFadingOutCreditsMap: @ 807A944
push {r4-r6,lr}
sub sp, 0x4
adds r6, r2, 0
@@ -1887,7 +1887,7 @@ _0807AA60: .4byte gUnknown_2037F34
_0807AA64: .4byte 0x000006c6
_0807AA68: .4byte 0x000006ca
_0807AA6C: .4byte 0x000006cb
- thumb_func_end sub_807A944
+ thumb_func_end FieldWeather_StartFadingOutCreditsMap
thumb_func_start sub_807AA70
sub_807AA70: @ 807AA70
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 19ff62664..5b28e21d5 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -138,7 +138,7 @@ _080F1EC4:
bne _080F1EF0
ldr r0, _080F1EEC @ =sub_80F1DC0
bl SetMainCallback2
- movs r0, 0x8F
+ movs r0, 0x8F @ BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME >> 1
lsls r0, 1
bl PlayBGM
movs r0, 0
@@ -1448,15 +1448,15 @@ sub_80F2934: @ 80F2934
movs r0, 0x80
lsls r0, 7
bl FlagSet
- ldr r1, _080F2974 @ =gUnknown_2031DD8
+ ldr r1, _080F2974 @ =gDisableMapMusicChangeOnMapLoad
movs r0, 0x2
strb r0, [r1]
movs r2, 0x1
negs r2, r2
movs r0, 0x6
str r0, [sp]
- movs r0, 0x3
- movs r1, 0x9
+ movs r0, 0x3 @ MAP_GROUP(INDIGO_PLATEAU_EXTERIOR)
+ movs r1, 0x9 @ MAP_NUM(INDIGO_PLATEAU_EXTERIOR)
movs r3, 0xB
bl Overworld_SetWarpDestination
bl DoWarp
@@ -1466,7 +1466,7 @@ sub_80F2934: @ 80F2934
bx r0
.align 2, 0
_080F2970: .4byte 0x00004085
-_080F2974: .4byte gUnknown_2031DD8
+_080F2974: .4byte gDisableMapMusicChangeOnMapLoad
thumb_func_end sub_80F2934
thumb_func_start sub_80F2978
diff --git a/asm/overworld.s b/asm/overworld.s
index eb3832ff5..5cc051c8a 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -2382,14 +2382,14 @@ sub_8055DB8: @ 8055DB8
Overworld_PlaySpecialMapMusic: @ 8055DC4
push {r4,r5,lr}
sub sp, 0x4
- ldr r0, _08055DD8 @ =gUnknown_2031DD8
+ ldr r0, _08055DD8 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08055DDC
bl StopMapMusic
b _08055E6C
.align 2, 0
-_08055DD8: .4byte gUnknown_2031DD8
+_08055DD8: .4byte gDisableMapMusicChangeOnMapLoad
_08055DDC:
cmp r0, 0x2
beq _08055E6C
@@ -2488,14 +2488,14 @@ _08055E90: .4byte gSaveBlock1Ptr
thumb_func_start sub_8055E94
sub_8055E94: @ 8055E94
push {r4-r6,lr}
- ldr r0, _08055EA4 @ =gUnknown_2031DD8
+ ldr r0, _08055EA4 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08055EA8
bl StopMapMusic
b _08055F14
.align 2, 0
-_08055EA4: .4byte gUnknown_2031DD8
+_08055EA4: .4byte gDisableMapMusicChangeOnMapLoad
_08055EA8:
cmp r0, 0x2
beq _08055F14
@@ -2701,7 +2701,7 @@ _08056014:
adds r0, 0x32
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, _08056050 @ =gUnknown_2031DD8
+ ldr r0, _08056050 @ =gDisableMapMusicChangeOnMapLoad
ldrb r0, [r0]
cmp r0, 0x1
bne _08056054
@@ -2709,7 +2709,7 @@ _08056014:
b _0805606A
.align 2, 0
_0805604C: .4byte gUnknown_2031DDC
-_08056050: .4byte gUnknown_2031DD8
+_08056050: .4byte gDisableMapMusicChangeOnMapLoad
_08056054:
cmp r0, 0x2
beq _0805606A
@@ -5158,8 +5158,8 @@ _0805749A:
_080574A0: .4byte sub_8056534
thumb_func_end sub_8057430
- thumb_func_start sub_80574A4
-sub_80574A4: @ 80574A4
+ thumb_func_start Overworld_CreditsMainCB
+Overworld_CreditsMainCB: @ 80574A4
push {r4,lr}
ldr r0, _080574E8 @ =gPaletteFade
ldrb r0, [r0, 0x7]
@@ -5187,7 +5187,7 @@ _080574E0:
bx r0
.align 2, 0
_080574E8: .4byte gPaletteFade
- thumb_func_end sub_80574A4
+ thumb_func_end Overworld_CreditsMainCB
thumb_func_start sub_80574EC
sub_80574EC: @ 80574EC
@@ -5209,8 +5209,8 @@ _08057506:
bx r1
thumb_func_end sub_80574EC
- thumb_func_start sub_805750C
-sub_805750C: @ 805750C
+ thumb_func_start Overworld_DoScrollSceneForCredits
+Overworld_DoScrollSceneForCredits: @ 805750C
push {lr}
ldr r3, _08057520 @ =gUnknown_2031DE4
str r1, [r3]
@@ -5223,7 +5223,7 @@ sub_805750C: @ 805750C
.align 2, 0
_08057520: .4byte gUnknown_2031DE4
_08057524: .4byte gUnknown_2036E28
- thumb_func_end sub_805750C
+ thumb_func_end Overworld_DoScrollSceneForCredits
thumb_func_start sub_8057528
sub_8057528: @ 8057528
@@ -5451,7 +5451,7 @@ _08057712:
ldr r2, _08057738 @ =0x3fffffff
movs r0, 0
movs r1, 0
- bl sub_807A944
+ bl FieldWeather_StartFadingOutCreditsMap
_0805772A:
ldrb r0, [r4]
adds r0, 0x1
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index b9c18d201..9394675c6 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -4491,7 +4491,7 @@ sub_81049FC: @ 81049FC
adds r0, r5, 0
movs r1, 0x8
movs r3, 0x1
- bl sub_810C228
+ bl LoadMonPicForCredits
add sp, 0x8
pop {r4-r6}
pop {r0}
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 14577269c..71e5cbfaf 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -3476,7 +3476,7 @@ _0813622C:
ldr r0, [r6]
ldr r2, _08136308 @ =0x00003084
adds r0, r2
- ldr r1, _0813630C @ =gUnknown_84161CD
+ ldr r1, _0813630C @ =gString_Dummy
bl StringCopy
_08136238:
cmp r4, 0x20
@@ -3498,7 +3498,7 @@ _08136240:
ldr r0, [r5]
ldr r1, _08136308 @ =0x00003084
adds r0, r1
- ldr r1, _0813630C @ =gUnknown_84161CD
+ ldr r1, _0813630C @ =gString_Dummy
bl StringCopy
_08136264:
ldr r6, _08136310 @ =gUnknown_203B140
@@ -3572,7 +3572,7 @@ _08136264:
b _08136342
.align 2, 0
_08136308: .4byte 0x00003084
-_0813630C: .4byte gUnknown_84161CD
+_0813630C: .4byte gString_Dummy
_08136310: .4byte gUnknown_203B140
_08136314: .4byte 0x00003034
_08136318: .4byte gSpeciesNames
diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s
index 264ca380d..20455093a 100644
--- a/asm/post_battle_event_funcs.s
+++ b/asm/post_battle_event_funcs.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_80CA2E4
-sub_80CA2E4: @ 80CA2E4
+ thumb_func_start Special_HallOfFame
+Special_HallOfFame: @ 80CA2E4
push {r4-r7,lr}
sub sp, 0x4
bl sp000_heal_pokemon
@@ -104,7 +104,7 @@ _080CA3B4: .4byte gSaveBlock2Ptr
_080CA3B8: .4byte gPlayerParty
_080CA3BC: .4byte 0x0000083b
_080CA3C0: .4byte CB2_DoHallOfFameScreen
- thumb_func_end sub_80CA2E4
+ thumb_func_end Special_HallOfFame
thumb_func_start sub_80CA3C4
sub_80CA3C4: @ 80CA3C4
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/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_840DC0C.bin b/data/credits/unk_840DC0C.bin
new file mode 100644
index 000000000..a52ea8056
--- /dev/null
+++ b/data/credits/unk_840DC0C.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 c8dcbfb6b..8f16958e6 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -232,125 +232,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
-
-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
-
- @ strings
-
.section .rodata.841EE44
.align 2
gUnknown_841EE44:: @ 841EE44
diff --git a/data/graphics.s b/data/graphics.s
index fee86e011..96ef720e9 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16346,14 +16346,17 @@ gUnknown_8EAAA10:: @ 8EAAA10
gUnknown_8EAAA6C:: @ 8EAAA6C
.incbin "baserom.gba", 0xEAAA6C, 0xAC
-gUnknown_8EAAB18:: @ 8EAAB18
- .incbin "baserom.gba", 0xEAAB18, 0x80 @UNKNOWN
+gCreditsMonBackdropPals:: @ 8EAAB18
+ .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
+gCreditsPokeballBgGfxTiles:: @ 8EAAB98
+ .incbin "graphics/credits/unk_8EAAB98.4bpp.lz"
-gUnknown_8EAB30C:: @ 8EAB30C
- .incbin "baserom.gba", 0xEAB30C, 0x3B8
+gCreditsPokeballBgGfxMap:: @ 8EAB30C
+ .incbin "graphics/credits/unk_8EAB30C.bin.lz"
@ title_screen
gGraphics_TitleScreen_PokemonFireRedLogoPals:: @ 8EAB6C4
@@ -16389,14 +16392,14 @@ gGraphics_TitleScreen_FirePals:: @ 8EAE488
gGraphics_TitleScreen_BlankObjTiles:: @ 8EAE4A8
.incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz"
-gUnknown_8EAE528:: @ 8EAE528
- .incbin "baserom.gba", 0xEAE528, 0x20 @UNKNOWN
+gCreditsAllRightsReservedGfxPal:: @ 8EAE528
+ .incbin "graphics/credits/unk_8EAE548.gbapal"
-gUnknown_8EAE548:: @ 8EAE548
- .incbin "baserom.gba", 0xEAE548, 0x3B8
+gCreditsAllRightsReservedGfxTiles:: @ 8EAE548
+ .incbin "graphics/credits/unk_8EAE548.4bpp.lz"
-gUnknown_8EAE900:: @ 8EAE900
- .incbin "baserom.gba", 0xEAE900, 0x100
+gCreditsAllRightsReservedGfxMap:: @ 8EAE900
+ .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/maps/PokemonLeague_HallOfFame/scripts.inc b/data/maps/PokemonLeague_HallOfFame/scripts.inc
index faadadcda..11df46047 100644
--- a/data/maps/PokemonLeague_HallOfFame/scripts.inc
+++ b/data/maps/PokemonLeague_HallOfFame/scripts.inc
@@ -37,7 +37,7 @@ EventScript_162D70:: @ 8162D70
call EventScript_1A651A
setrespawn SPAWN_PALLET_TOWN
fadescreenspeed 1, 24
- special sub_80CA2E4
+ special Special_HallOfFame
waitstate
releaseall
end
diff --git a/data/specials.inc b/data/specials.inc
index cdd41f50d..5905d825f 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -281,7 +281,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_61
def_special DoSoftReset
- def_special sub_80CA2E4
+ def_special Special_HallOfFame
def_special sub_80CB498
def_special nullsub_75
def_special SpawnScriptFieldObject
@@ -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..603bce34f 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -393,7 +393,7 @@ gFameCheckerText_Cancel:: @ 84161C1
gOtherText_Exit:: @ 84161C8
.string "EXIT$"
-gUnknown_84161CD:: @ 84161CD
+gString_Dummy:: @ 84161CD
.string "$"
gUnknown_84161CE::
@@ -3320,263 +3320,348 @@ gUnknown_841D18D:: @ 841D18D
.string "ROOFTOP$"
.align 2
-gUnknown_841D198:: @ 841D198
+gString_PokemonFireRed_Staff:: @ 841D198
.string "Pokémon FireRed Version\nStaff$"
-gUnknown_841D1B6:: @ 0x841D1B6
- .string " Pokémon LeafGreen Version\nStaff$"
+ .align 2
+gString_PokemonLeafGreen_Staff:: @ 0x841D1B8
+ .string "Pokémon LeafGreen Version\nStaff$"
-gUnknown_841D1D8:: @ 0x841D1D8
+ .align 2
+gCreditsString_Director:: @ 0x841D1D8
.string "\n\nDirector\n\n\n\n$"
-gUnknown_841D1E7:: @ 0x841D1E7
- .string " \n\n\nJunichi Masuda\n\n\n$"
+ .align 2
+gCreditsString_Junichi_Masuda:: @ 0x841D1E8
+ .string "\n\n\nJunichi Masuda\n\n\n$"
-gUnknown_841D1FD:: @ 0x841D1FD
- .string " \nArt Director\n\nBattle Director\n\n\n$"
+ .align 2
+gCreditsString_Art_Director_Battle_Director:: @ 0x841D200
+ .string "\nArt Director\n\nBattle Director\n\n\n$"
-gUnknown_841D222:: @ 0x841D222
- .string " \n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
+ .align 2
+gCreditsString_Ken_Sugimori_Shigeki_Morimoto:: @ 0x841D224
+ .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
+gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader:: @ 0x841D248
+ .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
+gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno:: @ 0x841D284
+ .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
-gUnknown_841D2B1:: @ 0x841D2B1
- .string " Programmers\n\n\n\n\n$"
+ .align 2
+gCreditsString_Programmers:: @ 0x841D2B4
+ .string "Programmers\n\n\n\n\n$"
-gUnknown_841D2C5:: @ 0x841D2C5
- .string " \nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
+ .align 2
+gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto:: @ 0x841D2C8
+ .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
+gCreditsString_System_Programmers:: @ 0x841D314
+ .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
+gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada:: @ 0x841D330
+ .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
+gCreditsString_Graphic_Designers:: @ 0x841D370
+ .string "Graphic Designers\n\n\n\n\n\n$"
-gUnknown_841D388:: @ 0x841D388
+ .align 2
+gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino:: @ 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
+gCreditsString_Graphic_Designers_2:: @ 0x841D3C0
+ .string "\nGraphic Designers\n\n\n\n\n$"
-gUnknown_841D3D8:: @ 0x841D3D8
+ .align 2
+gCreditsString_Ken_Sugimori_Hironobu_Yoshida:: @ 0x841D3D8
.string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$"
-gUnknown_841D3FB:: @ 0x841D3FB
- .string " \nMusic Composition\n\n\n\n\n$"
+ .align 2
+gCreditsString_Music_Composition:: @ 0x841D3FC
+ .string "\nMusic Composition\n\n\n\n\n$"
-gUnknown_841D414:: @ 0x841D414
+ .align 2
+gCreditsString_Go_Ichinose_Junichi_Masuda:: @ 0x841D414
.string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$"
-gUnknown_841D434:: @ 0x841D434
+ .align 2
+gCreditsString_Sound_Effects:: @ 0x841D434
.string "\n\nSound Effects\n\n\n\n$"
-gUnknown_841D448:: @ 0x841D448
+ .align 2
+gCreditsString_Go_Ichinose:: @ 0x841D448
.string "\n\n\nGo Ichinose\n\n\n$"
-gUnknown_841D45A:: @ 0x841D45A
- .string " \nGame Designers\n\n\n\n\n$"
+ .align 2
+gCreditsString_Game_Designers:: @ 0x841D45C
+ .string "\nGame Designers\n\n\n\n\n$"
-gUnknown_841D471:: @ 0x841D471
- .string " \n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
+ .align 2
+gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta:: @ 0x841D474
+ .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
-gUnknown_841D4A1:: @ 0x841D4A1
- .string " \nGame Designers\n\n\n\n\n$"
+ .align 2
+gCreditsString_Game_Designers_2:: @ 0x841D4A4
+ .string "\nGame Designers\n\n\n\n\n$"
-gUnknown_841D4B9:: @ 0x841D4B9
- .string " \n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
+ .align 2
+gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi:: @ 0x841D4BC
+ .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
-gUnknown_841D4ED:: @ 0x841D4ED
- .string " \nGame Scenario\n\n\n\n\n$"
+ .align 2
+gCreditsString_Game_Scenario:: @ 0x841D4F0
+ .string "\nGame Scenario\n\n\n\n\n$"
-gUnknown_841D504:: @ 0x841D504
+ .align 2
+gCreditsString_Hitomi_Sato_Satoshi_Tajiri:: @ 0x841D504
.string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$"
-gUnknown_841D524:: @ 0x841D524
+ .align 2
+gCreditsString_Script_Designer_Map_Designer:: @ 0x841D524
.string "\nScript Designer\n\nMap Designer\n\n\n$"
-gUnknown_841D546:: @ 0x841D546
- .string " \n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
+ .align 2
+gCreditsString_Satoshi_Nohara_Shigeru_Ohmori:: @ 0x841D548
+ .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
-gUnknown_841D56B:: @ 0x841D56B
- .string " \nParametric Designers\n\n\n\n\n$"
+ .align 2
+gCreditsString_Parametric_Designers:: @ 0x841D56C
+ .string "\nParametric Designers\n\n\n\n\n$"
-gUnknown_841D587:: @ 0x841D587
- .string " \n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
+ .align 2
+gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto:: @ 0x841D588
+ .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
-gUnknown_841D5B7:: @ 0x841D5B7
- .string " \n\nPOKéDEX Text\n\n\n\n$"
+ .align 2
+gCreditsString_POKeDEX_Text:: @ 0x841D5B8
+ .string "\n\nPOKéDEX Text\n\n\n\n$"
-gUnknown_841D5CB:: @ 0x841D5CB
- .string " \n\n\nKenji Matsushima\n\n\n$"
+ .align 2
+gCreditsString_Kenji_Matsushima:: @ 0x841D5CC
+ .string "\n\n\nKenji Matsushima\n\n\n$"
-gUnknown_841D5E3:: @ 0x841D5E3
- .string " POKéMON Designers\n\n\n\n\n\n$"
+ .align 2
+gCreditsString_POKeMON_Designers:: @ 0x841D5E4
+ .string "POKéMON Designers\n\n\n\n\n\n$"
-gUnknown_841D5FC:: @ 0x841D5FC
+ .align 2
+gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida:: @ 0x841D5FC
.string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$"
-gUnknown_841D640:: @ 0x841D640
+ .align 2
+gCreditsString_POKeMON_Designers_2:: @ 0x841D640
.string "POKéMON Designers\n\n\n\n\n\n$"
-gUnknown_841D658:: @ 0x841D658
+ .align 2
+gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita:: @ 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
+gCreditsString_POKeMON_Designers_3:: @ 0x841D698
+ .string "POKéMON Designers\n\n\n\n\n\n$"
-gUnknown_841D6B0:: @ 0x841D6B0
+ .align 2
+gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani:: @ 0x841D6B0
.string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$"
-gUnknown_841D6E9:: @ 0x841D6E9
- .string " Supporting Programmers\n\n\n\n$"
+ .align 2
+gCreditsString_Supporting_Programmers:: @ 0x841D6EC
+ .string "Supporting Programmers\n\n\n\n$"
-gUnknown_841D707:: @ 0x841D707
- .string " \nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+ .align 2
+gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino:: @ 0x841D708
+ .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
-gUnknown_841D74C:: @ 0x841D74C
+ .align 2
+gCreditsString_NCL_Product_Testing:: @ 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
+gCreditsString_NCL_Super_Mario_Club:: @ 0x841D768
+ .string "\n\n\nNCL Super Mario Club\n\n\n$"
-gUnknown_841D783:: @ 0x841D783
- .string " Special Thanks\n\n\n\n\n\n$"
+ .align 2
+gCreditsString_Special_Thanks:: @ 0x841D784
+ .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
+gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama:: @ 0x841D79C
+ .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
+gCreditsString_Special_Thanks_2:: @ 0x841D7DC
+ .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
+gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa:: @ 0x841D7F4
+ .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
+gCreditsString_Special_Thanks_3:: @ 0x841D834
+ .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
+gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi:: @ 0x841D84C
+ .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
-gUnknown_841D894:: @ 0x841D894
+ .align 2
+gCreditsString_Braille_Code_Check:: @ 0x841D894
.string "\n\nBraille Code Check\n\n\n\n$"
-gUnknown_841D8AD:: @ 0x841D8AD
- .string " \n\n\nJapan Braille Library\n\n\n$"
+ .align 2
+gCreditsString_Japan_Braille_Library:: @ 0x841D8B0
+ .string "\n\n\nJapan Braille Library\n\n\n$"
-gUnknown_841D8CC:: @ 0x841D8CC
+ .align 2
+gCreditsString_Information_Supervisors:: @ 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
+gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase:: @ 0x841D8EC
+ .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
+gCreditsString_Coordinators:: @ 0x841D938
+ .string "Coordinators\n\n\n\n\n\n$"
-gUnknown_841D94B:: @ 0x841D94B
- .string " \nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
+ .align 2
+gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto:: @ 0x841D94C
+ .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
-gUnknown_841D98A:: @ 0x841D98A
- .string " \nTask Managers\n\n\n\n\n$"
+ .align 2
+gCreditsString_Task_Managers:: @ 0x841D98C
+ .string "\nTask Managers\n\n\n\n\n$"
-gUnknown_841D9A0:: @ 0x841D9A0
+ .align 2
+gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto:: @ 0x841D9A0
.string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$"
-gUnknown_841D9C4:: @ 0x841D9C4
+ .align 2
+gCreditsString_Producers:: @ 0x841D9C4
.string "\nProducers\n\n\n\n\n$"
-gUnknown_841D9D4:: @ 0x841D9D4
+ .align 2
+gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru:: @ 0x841D9D4
.string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$"
-gUnknown_841DA06:: @ 0x841DA06
- .string " \n\nExecutive Director\n\n\n\n$"
+ .align 2
+gCreditsString_Executive_Director:: @ 0x841DA08
+ .string "\n\nExecutive Director\n\n\n\n$"
-gUnknown_841DA21:: @ 0x841DA21
- .string " \n\n\nSatoshi Tajiri\n\n\n$"
+ .align 2
+gCreditsString_Satoshi_Tajiri:: @ 0x841DA24
+ .string "\n\n\nSatoshi Tajiri\n\n\n$"
-gUnknown_841DA39:: @ 0x841DA39
- .string " \n\nExecutive Producer\n\n\n\n$"
+ .align 2
+gCreditsString_Executive_Producer:: @ 0x841DA3C
+ .string "\n\nExecutive Producer\n\n\n\n$"
-gUnknown_841DA55:: @ 0x841DA55
- .string " \n\n\nSatoru Iwata\n\n\n$"
+ .align 2
+gCreditsString_Satoru_Iwata:: @ 0x841DA58
+ .string "\n\n\nSatoru Iwata\n\n\n$"
-gUnknown_841DA6B:: @ 0x841DA6B
- .string " \n\nExecutive Producer\n\n\n\n$"
+ .align 2
+gCreditsString_Executive_Producer_2:: @ 0x841DA6C
+ .string "\n\nExecutive Producer\n\n\n\n$"
-gUnknown_841DA85:: @ 0x841DA85
- .string " \n\n\nTsunekaz Ishihara\n\n\n$"
+ .align 2
+gCreditsString_Tsunekaz_Ishihara:: @ 0x841DA88
+ .string "\n\n\nTsunekaz Ishihara\n\n\n$"
-gUnknown_841DAA0:: @ 0x841DAA0
+ .align 2
+gCreditsString_English_Version_Coordinators:: @ 0x841DAA0
.string "\nEnglish Version Coordinators\n\n\n\n\n$"
-gUnknown_841DAC3:: @ 0x841DAC3
- .string " \n\nHiro Nakamura\nSeth McMahill\n\n\n$"
+ .align 2
+gCreditsString_Hiro_Nakamura_Seth_McMahill:: @ 0x841DAC4
+ .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$"
-gUnknown_841DAE5:: @ 0x841DAE5
- .string " \nTranslator\n\nText Editor\n\n\n$"
+ .align 2
+gCreditsString_Translator_Text_Editor:: @ 0x841DAE8
+ .string "\nTranslator\n\nText Editor\n\n\n$"
-gUnknown_841DB04:: @ 0x841DB04
+ .align 2
+gCreditsString_Nob_Ogasawara_Teresa_Lillygren:: @ 0x841DB04
.string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$"
-gUnknown_841DB28:: @ 0x841DB28
+ .align 2
+gCreditsString_Programmers_2:: @ 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
+gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi:: @ 0x841DB3C
+ .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
+gCreditsString_Environment_Tool_Programmers:: @ 0x841DB7C
+ .string "\nEnvironment を Tool Programmers\n\n\n\n\n$"
-gUnknown_841DBA1:: @ 0x841DBA1
- .string " \n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
+ .align 2
+gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi:: @ 0x841DBA4
+ .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
+gCreditsString_NOA_Product_Testing:: @ 0x841DBDC
+ .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
+gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa:: @ 0x841DBF8
+ .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
+gCreditsString_Braille_Code_Check_2:: @ 0x841DC2C
+ .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
+gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union:: @ 0x841DC48
+ .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
-gUnknown_841DCAC:: @ 0x841DCAC
+ .align 2
+gCreditsString_Braille_Code_Check_3:: @ 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
+gCreditsString_National_Information_Library_Service_Margaret_Campion:: @ 0x841DCC8
+ .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
+gCreditsString_Special_Thanks_4:: @ 0x841DD08
+ .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
+gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi:: @ 0x841DD20
+ .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
-gUnknown_841DD64:: @ 0x841DD64
+ .align 2
+gCreditsString_Special_Thanks_5:: @ 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
+gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi:: @ 0x841DD7C
+ .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
+gCreditsString_Braille_Code_Check_4:: @ 0x841DDC8
+ .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
+gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran:: @ 0x841DDE4
+ .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
+gCreditsString_Graphic_Designer:: @ 0x841DE24
+ .string "\n\nGraphic Designer\n\n\n\n$"
-gUnknown_841DE3B:: @ 0x841DE3B
- .string " \n\n\nAkira Kinashi\n\n\n$"
+ .align 2
+gCreditsString_Akira_Kinashi:: @ 0x841DE3C
+ .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/field_weather.h b/include/field_weather.h
index 477ca0e76..78d2f2412 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -17,5 +17,6 @@ bool8 sub_807AA70(void);
void SetWeatherScreenFadeOut(void);
void sub_807B070(void);
u8 GetCurrentWeather(void);
+void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
#endif // GUARD_WEATHER_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 3932a8542..c0eec12b1 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -6,8 +6,13 @@
#define TRUE 1
#define FALSE 0
+#if defined(__APPLE__)
+#define IWRAM_DATA __attribute__((section("__DATA,iwram_data")))
+#define EWRAM_DATA __attribute__((section("__DATA,ewram_data")))
+#else
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
+#endif
#define ALIGNED(n) __attribute__((aligned(n)))
diff --git a/include/graphics.h b/include/graphics.h
index d8dd5065c..d8858b36f 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -990,4 +990,12 @@ extern const u32 gSubstituteDollGfx[];
extern const u32 gSubstituteDollTilemap[];
extern const u32 gSubstituteDollPal[];
+// credits
+extern const u32 gCreditsPokeballBgGfxTiles[];
+extern const u32 gCreditsPokeballBgGfxMap[];
+extern const u16 gCreditsMonBackdropPals[][16];
+extern const u16 gCreditsAllRightsReservedGfxPal[];
+extern const u8 gCreditsAllRightsReservedGfxTiles[];
+extern const u8 gCreditsAllRightsReservedGfxMap[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/overworld.h b/include/overworld.h
index 8f15f5a85..8c5dde2b0 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_ROM4_H
-#define GUARD_ROM4_H
+#ifndef GUARD_OVERWORLD_H
+#define GUARD_OVERWORLD_H
#include "global.h"
#include "main.h"
@@ -23,6 +23,18 @@ struct UCoords32
u32 x, y;
};
+struct CreditsOverworldCmd
+{
+ s16 unk_0;
+ u16 unk_2;
+ u16 unk_4;
+};
+
+/* gDisableMapMusicChangeOnMapLoad */
+#define MUSIC_DISABLE_OFF 0
+#define MUSIC_DISABLE_STOP 1
+#define MUSIC_DISABLE_KEEP 2
+
extern struct UCoords32 gDirectionToVectors[];
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
@@ -98,7 +110,7 @@ void sub_8055D40(u16 mapDataId);
void CleanupOverworldWindowsAndTilemaps(void);
u32 sub_8054C04(void);
-extern u8 gUnknown_2031DD8;
+extern u8 gDisableMapMusicChangeOnMapLoad;
extern u8 gUnknown_2036E28;
extern void (*gFieldCallback)(void);
@@ -121,4 +133,7 @@ void Overworld_ResetStateAfterDigEscRope(void);
bool32 sub_8058244(void);
u8 GetCurrentMapType(void);
-#endif //GUARD_ROM4_H
+void Overworld_CreditsMainCB(void);
+bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8);
+
+#endif //GUARD_OVERWORLD_H
diff --git a/include/strings.h b/include/strings.h
index 2da65d3e0..dfedb4afa 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -226,4 +226,93 @@ extern const u8 gText_WhatWillPkmnDo[];
// battle_script_commands
extern const u8 gText_BattleYesNoChoice[];
+// credits
+extern const u8 gString_Dummy[];
+extern const u8 gString_PokemonFireRed_Staff[]; // FR
+extern const u8 gString_PokemonLeafGreen_Staff[]; // LG
+extern const u8 gCreditsString_Director[];
+extern const u8 gCreditsString_Junichi_Masuda[];
+extern const u8 gCreditsString_Art_Director_Battle_Director[];
+extern const u8 gCreditsString_Ken_Sugimori_Shigeki_Morimoto[];
+extern const u8 gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader[];
+extern const u8 gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno[];
+extern const u8 gCreditsString_Programmers[];
+extern const u8 gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto[];
+extern const u8 gCreditsString_System_Programmers[];
+extern const u8 gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada[];
+extern const u8 gCreditsString_Graphic_Designers[];
+extern const u8 gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino[];
+extern const u8 gCreditsString_Graphic_Designers_2[];
+extern const u8 gCreditsString_Ken_Sugimori_Hironobu_Yoshida[];
+extern const u8 gCreditsString_Music_Composition[];
+extern const u8 gCreditsString_Go_Ichinose_Junichi_Masuda[];
+extern const u8 gCreditsString_Sound_Effects[];
+extern const u8 gCreditsString_Go_Ichinose[];
+extern const u8 gCreditsString_Game_Designers[];
+extern const u8 gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta[];
+extern const u8 gCreditsString_Game_Designers_2[];
+extern const u8 gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi[];
+extern const u8 gCreditsString_Game_Scenario[];
+extern const u8 gCreditsString_Hitomi_Sato_Satoshi_Tajiri[];
+extern const u8 gCreditsString_Script_Designer_Map_Designer[];
+extern const u8 gCreditsString_Satoshi_Nohara_Shigeru_Ohmori[];
+extern const u8 gCreditsString_Parametric_Designers[];
+extern const u8 gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto[];
+extern const u8 gCreditsString_POKeDEX_Text[];
+extern const u8 gCreditsString_Kenji_Matsushima[];
+extern const u8 gCreditsString_POKeMON_Designers[];
+extern const u8 gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida[];
+extern const u8 gCreditsString_POKeMON_Designers_2[];
+extern const u8 gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita[];
+extern const u8 gCreditsString_POKeMON_Designers_3[];
+extern const u8 gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani[];
+extern const u8 gCreditsString_Supporting_Programmers[];
+extern const u8 gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino[];
+extern const u8 gCreditsString_NCL_Product_Testing[];
+extern const u8 gCreditsString_NCL_Super_Mario_Club[];
+extern const u8 gCreditsString_Special_Thanks[];
+extern const u8 gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama[];
+extern const u8 gCreditsString_Special_Thanks_2[];
+extern const u8 gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa[];
+extern const u8 gCreditsString_Special_Thanks_3[];
+extern const u8 gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi[];
+extern const u8 gCreditsString_Braille_Code_Check[];
+extern const u8 gCreditsString_Japan_Braille_Library[];
+extern const u8 gCreditsString_Information_Supervisors[];
+extern const u8 gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase[];
+extern const u8 gCreditsString_Coordinators[];
+extern const u8 gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto[];
+extern const u8 gCreditsString_Task_Managers[];
+extern const u8 gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto[];
+extern const u8 gCreditsString_Producers[];
+extern const u8 gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru[];
+extern const u8 gCreditsString_Executive_Director[];
+extern const u8 gCreditsString_Satoshi_Tajiri[];
+extern const u8 gCreditsString_Executive_Producer[];
+extern const u8 gCreditsString_Satoru_Iwata[];
+extern const u8 gCreditsString_Executive_Producer_2[];
+extern const u8 gCreditsString_Tsunekaz_Ishihara[];
+extern const u8 gCreditsString_English_Version_Coordinators[];
+extern const u8 gCreditsString_Hiro_Nakamura_Seth_McMahill[];
+extern const u8 gCreditsString_Translator_Text_Editor[];
+extern const u8 gCreditsString_Nob_Ogasawara_Teresa_Lillygren[];
+extern const u8 gCreditsString_Programmers_2[];
+extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi[];
+extern const u8 gCreditsString_Environment_Tool_Programmers[];
+extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi[];
+extern const u8 gCreditsString_NOA_Product_Testing[];
+extern const u8 gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa[];
+extern const u8 gCreditsString_Braille_Code_Check_2[];
+extern const u8 gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union[];
+extern const u8 gCreditsString_Braille_Code_Check_3[];
+extern const u8 gCreditsString_National_Information_Library_Service_Margaret_Campion[];
+extern const u8 gCreditsString_Special_Thanks_4[];
+extern const u8 gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi[];
+extern const u8 gCreditsString_Special_Thanks_5[];
+extern const u8 gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi[];
+extern const u8 gCreditsString_Braille_Code_Check_4[];
+extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran[];
+extern const u8 gCreditsString_Graphic_Designer[];
+extern const u8 gCreditsString_Akira_Kinashi[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index 0fd586ddd..c4199190f 100644
--- a/include/text.h
+++ b/include/text.h
@@ -83,7 +83,16 @@
#define TEXT_COLOR_DARK_GREY 0x2
// battle placeholders are located in battle_message.h
-
+#define EXT_CTRL_CODE_COLOR 0x1
+#define EXT_CTRL_CODE_HIGHLIGHT 0x2
+#define EXT_CTRL_CODE_SHADOW 0x3
+//
+#define EXT_CTRL_CODE_UNKNOWN_7 0x7
+//
+#define EXT_CTRL_CODE_CLEAR 0x11
+//
+#define EXT_CTRL_CODE_CLEAR_TO 0x13
+#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
#define EXT_CTRL_CODE_JPN 0x15
#define EXT_CTRL_CODE_ENG 0x16
@@ -105,18 +114,13 @@ enum
struct TextPrinterSubStruct
{
- u8 font_type:4; // 0x14
- u8 font_type_upper:1;
+ u8 glyphId:4; // 0x14
+ bool8 hasPrintBeenSpedUp:1;
u8 font_type_5:3;
- u8 field_1:5;
- u8 field_1_upmid:2;
- u8 field_1_top:1;
- u8 frames_visible_counter;
- u8 field_3;
- u8 field_4; // 0x18
- u8 field_5;
- u8 field_6;
- u8 active;
+ u8 downArrowDelay:5;
+ u8 downArrowYPosIdx:2;
+ u8 hasGlyphIdBeenSet:1;
+ u8 autoScrollDelay;
};
struct TextPrinterTemplate // TODO: Better name
@@ -138,18 +142,15 @@ struct TextPrinterTemplate // TODO: Better name
struct TextPrinter
{
- struct TextPrinterTemplate subPrinter;
-
+ struct TextPrinterTemplate printerTemplate;
void (*callback)(struct TextPrinterTemplate *, u16); // 0x10
-
- union {
+ union __attribute__((packed)) {
struct TextPrinterSubStruct sub;
-
- u8 sub_fields[8];
- } sub_union;
-
+ u8 fields[7];
+ } subUnion;
+ u8 active;
u8 state; // 0x1C
- u8 text_speed;
+ u8 textSpeed;
u8 delayCounter;
u8 scrollDistance;
u8 minLetterSpacing; // 0x20
@@ -173,13 +174,13 @@ extern const struct FontInfo *gFonts;
struct GlyphWidthFunc
{
- u32 font_id;
+ u32 fontId;
s32 (*func)(u16 glyphId, bool32 isJapanese);
};
struct KeypadIcon
{
- u16 tile_offset;
+ u16 tileOffset;
u8 width;
u8 height;
};
@@ -262,5 +263,6 @@ s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
void sub_8006398(u8 spriteId);
+s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese);
#endif // GUARD_TEXT_H
diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h
index 833268d48..a7ad603b4 100644
--- a/include/trainer_pokemon_sprites.h
+++ b/include/trainer_pokemon_sprites.h
@@ -15,5 +15,6 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet
u16 FreeAndDestroyTrainerPicSprite(u16);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
+u16 LoadMonPicForCredits(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 ca862eb17..7952b2cd8 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -212,7 +212,7 @@ SECTIONS {
src/intro.o(.text);
asm/battle_anim_special.o(.text);
asm/hall_of_fame.o(.text);
- asm/credits.o(.text);
+ src/credits.o(.text);
src/diploma.o(.text);
asm/save_failed_screen.o(.text);
asm/clear_save_data_screen.o(.text);
@@ -434,6 +434,7 @@ SECTIONS {
data/data_83FECCC.o(.rodata.83FEDE4);
src/intro.o(.rodata);
data/data_83FECCC.o(.rodata.battle_anim_special);
+ src/credits.o(.rodata);
src/diploma.o(.rodata);
data/strings.o(.rodata);
data/data_83FECCC.o(.rodata.841EE44);
diff --git a/src/braille_text.c b/src/braille_text.c
index 047fcab08..c95cf64b2 100644
--- a/src/braille_text.c
+++ b/src/braille_text.c
@@ -17,20 +17,20 @@ u16 Font6Func(struct TextPrinter *textPrinter)
u16 char_;
struct TextPrinterSubStruct *sub;
- sub = &textPrinter->sub_union.sub;
+ sub = &textPrinter->subUnion.sub;
switch (textPrinter->state)
{
case 0:
- if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper)
+ if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->hasPrintBeenSpedUp)
{
textPrinter->delayCounter = 0;
}
- if (textPrinter->delayCounter && textPrinter->text_speed)
+ if (textPrinter->delayCounter && textPrinter->textSpeed)
{
textPrinter->delayCounter --;
if (gTextFlags.canABSpeedUpPrint && gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub->font_type_upper = TRUE;
+ sub->hasPrintBeenSpedUp = TRUE;
textPrinter->delayCounter = 0;
}
return 3;
@@ -41,62 +41,62 @@ u16 Font6Func(struct TextPrinter *textPrinter)
}
else
{
- textPrinter->delayCounter = textPrinter->text_speed;
+ textPrinter->delayCounter = textPrinter->textSpeed;
}
- char_ = *textPrinter->subPrinter.currentChar++;
+ char_ = *textPrinter->printerTemplate.currentChar++;
switch (char_)
{
case EOS:
return 1;
case CHAR_NEWLINE:
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY += gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
return 2;
case PLACEHOLDER_BEGIN:
- textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case EXT_CTRL_CODE_BEGIN:
- char_ = *textPrinter->subPrinter.currentChar++;
+ char_ = *textPrinter->printerTemplate.currentChar++;
switch (char_)
{
case 1:
- textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 2:
- textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.currentChar++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 3:
- textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.currentChar++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 4:
- textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar;
- textPrinter->subPrinter.bgColor = *++textPrinter->subPrinter.currentChar;
- textPrinter->subPrinter.shadowColor = *++textPrinter->subPrinter.currentChar;
- textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.bgColor = *++textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.shadowColor = *++textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 5:
- textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case 6:
- sub->font_type = *textPrinter->subPrinter.currentChar;
- textPrinter->subPrinter.currentChar++;
+ sub->glyphId = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case 7:
return 2;
case 8:
- textPrinter->delayCounter = *textPrinter->subPrinter.currentChar++;
+ textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar++;
textPrinter->state = 6;
return 2;
case 9:
textPrinter->state = 1;
if (gTextFlags.autoScroll)
{
- sub->frames_visible_counter = 0;
+ sub->autoScrollDelay = 0;
}
return 3;
case 10:
@@ -104,19 +104,19 @@ u16 Font6Func(struct TextPrinter *textPrinter)
return 3;
case 11:
case 16:
- textPrinter->subPrinter.currentChar += 2;
+ textPrinter->printerTemplate.currentChar += 2;
return 2;
case 12:
- char_ = *++textPrinter->subPrinter.currentChar;
+ char_ = *++textPrinter->printerTemplate.currentChar;
break;
case 13:
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar++;
return 2;
case 14:
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
return 2;
}
break;
@@ -129,15 +129,15 @@ u16 Font6Func(struct TextPrinter *textPrinter)
TextPrinterInitDownArrowCounters(textPrinter);
return 3;
case 0xF9:
- char_ = *textPrinter->subPrinter.currentChar++| 0x100;
+ char_ = *textPrinter->printerTemplate.currentChar++| 0x100;
break;
case 0xF8:
- textPrinter->subPrinter.currentChar++;
+ textPrinter->printerTemplate.currentChar++;
return 0;
}
DecompressGlyphFont6(char_);
CopyGlyphToWindow(textPrinter);
- textPrinter->subPrinter.currentX += gGlyphInfo[0x80] + textPrinter->subPrinter.letterSpacing;
+ textPrinter->printerTemplate.currentX += gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing;
return 0;
case 1:
if (TextPrinterWait(textPrinter))
@@ -148,9 +148,9 @@ u16 Font6Func(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor));
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
}
return 3;
@@ -158,8 +158,8 @@ u16 Font6Func(struct TextPrinter *textPrinter)
if (TextPrinterWaitWithDownArrow(textPrinter))
{
TextPrinterClearDownArrow(textPrinter);
- textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->state = 4;
}
return 3;
@@ -168,15 +168,15 @@ u16 Font6Func(struct TextPrinter *textPrinter)
{
if (textPrinter->scrollDistance < gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed])
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->subPrinter.bgColor));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->subPrinter.bgColor));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance -= gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed];
}
- CopyWindowToVram(textPrinter->subPrinter.windowId, 2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
}
else
{
@@ -216,7 +216,7 @@ static void DecompressGlyphFont6(u16 glyph)
gGlyphInfo[0x81] = 0x10;
}
-u32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese)
+s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese)
{
return 0x10;
}
diff --git a/src/credits.c b/src/credits.c
new file mode 100644
index 000000000..997c1ea16
--- /dev/null
+++ b/src/credits.c
@@ -0,0 +1,2167 @@
+#include "global.h"
+#include "malloc.h"
+#include "bg.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "task.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "window.h"
+#include "new_menu_helpers.h"
+#include "decompress.h"
+#include "graphics.h"
+#include "strings.h"
+#include "menu.h"
+#include "field_weather.h"
+#include "trainer_pokemon_sprites.h"
+#include "sound.h"
+#include "constants/species.h"
+#include "constants/maps.h"
+
+#if defined(FIRERED)
+#define TITLE_TEXT gString_PokemonFireRed_Staff
+asm(".set TITLE_TEXT, gString_PokemonFireRed_Staff");
+#elif defined(LEAFGREEN)
+#define TITLE_TEXT gString_PokemonLeafGreen_Staff
+asm(".set TITLE_TEXT, gString_PokemonLeafGreen_Staff");
+#endif
+
+enum CreditsSceneIdx
+{
+ CREDITSSCENE_INIT_WIN0 = 0,
+ CREDITSSCENE_SETUP_DARKEN_EFFECT,
+ CREDITSSCENE_OPEN_WIN0,
+ CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO,
+ CREDITSSCENE_PRINT_TITLE_STAFF,
+ CREDITSSCENE_WAIT_TITLE_STAFF,
+ CREDITSSCENE_EXEC_CMD,
+ CREDITSSCENE_PRINT_ADDPRINTER1,
+ CREDITSSCENE_PRINT_ADDPRINTER2,
+ CREDITSSCENE_PRINT_DELAY,
+ CREDITSSCENE_MAPNEXT_DESTROYWINDOW,
+ CREDITSSCENE_MAPNEXT_LOADMAP,
+ CREDITSSCENE_MAP_LOADMAP_CREATESPRITES,
+ CREDITSSCENE_MON_DESTROY_ASSETS,
+ CREDITSSCENE_MON_SHOW,
+ CREDITSSCENE_THEEND_DESTROY_ASSETS,
+ CREDITSSCENE_THEEND_SHOW,
+ CREDITSSCENE_WAITBUTTON,
+ CREDITSSCENE_TERMINATE,
+};
+
+enum CreditsScrCmd
+{
+ CREDITSSCRCMD_PRINT = 0,
+ CREDITSSCRCMD_MAPNEXT,
+ CREDITSSCRCMD_MAP,
+ CREDITSSCRCMD_MON,
+ CREDITSSCRCMD_THEENDGFX,
+ CREDITSSCRCMD_WAITBUTTON
+};
+
+enum CreditsMon
+{
+ CREDITSMON_CHARIZARD = 0,
+ CREDITSMON_VENUSAUR,
+ CREDITSMON_BLASTOISE,
+ CREDITSMON_PIKACHU
+};
+
+enum CreditsClosingText
+{
+ CREDITSCLOSING_ALLRIGHTSRESERVED = 0,
+ CREDITSCLOSING_THEEND
+};
+
+enum CreditsString
+{
+ CREDITS_STRING_DIRECTOR = 0,
+ CREDITS_STRING_ART_DIRECTOR_BATTLE_DIRECTOR,
+ CREDITS_STRING_PROGRAM_LEADER_PLANNING_LEADER_GRAPHIC_DESIGN_LEADER,
+ CREDITS_STRING_PROGRAMMERS,
+ CREDITS_STRING_SYSTEM_PROGRAMMERS,
+ CREDITS_STRING_GRAPHIC_DESIGNERS,
+ CREDITS_STRING_GRAPHIC_DESIGNERS_2,
+ CREDITS_STRING_MUSIC_COMPOSITION,
+ CREDITS_STRING_SOUND_EFFECTS,
+ CREDITS_STRING_GAME_DESIGNERS,
+ CREDITS_STRING_GAME_DESIGNERS_2,
+ CREDITS_STRING_GAME_SCENARIO,
+ CREDITS_STRING_SCRIPT_DESIGNER_MAP_DESIGNER,
+ CREDITS_STRING_PARAMETRIC_DESIGNERS,
+ CREDITS_STRING_POKEDEX_TEXT,
+ CREDITS_STRING_POKEMON_DESIGNERS,
+ CREDITS_STRING_POKEMON_DESIGNERS_2,
+ CREDITS_STRING_POKEMON_DESIGNERS_3,
+ CREDITS_STRING_SUPPORTING_PROGRAMMERS,
+ CREDITS_STRING_NCL_PRODUCT_TESTING,
+ CREDITS_STRING_SPECIAL_THANKS,
+ CREDITS_STRING_SPECIAL_THANKS_2,
+ CREDITS_STRING_SPECIAL_THANKS_3,
+ CREDITS_STRING_BRAILLE_CODE_CHECK,
+ CREDITS_STRING_INFORMATION_SUPERVISORS,
+ CREDITS_STRING_COORDINATORS,
+ CREDITS_STRING_TASK_MANAGERS,
+ CREDITS_STRING_PRODUCERS,
+ CREDITS_STRING_EXECUTIVE_DIRECTOR,
+ CREDITS_STRING_EXECUTIVE_PRODUCER,
+ CREDITS_STRING_EXECUTIVE_PRODUCER_2,
+ CREDITS_STRING_ENGLISH_VERSION_COORDINATORS,
+ CREDITS_STRING_TRANSLATOR_TEXT_EDITOR,
+ CREDITS_STRING_PROGRAMMERS_2,
+ CREDITS_STRING_ENVIRONMENT_TOOL_PROGRAMMERS,
+ CREDITS_STRING_NOA_PRODUCT_TESTING,
+ CREDITS_STRING_BRAILLE_CODE_CHECK_2,
+ CREDITS_STRING_BRAILLE_CODE_CHECK_3,
+ CREDITS_STRING_SPECIAL_THANKS_4,
+ CREDITS_STRING_SPECIAL_THANKS_5,
+ CREDITS_STRING_BRAILLE_CODE_CHECK_4,
+ CREDITS_STRING_GRAPHIC_DESIGNER,
+ CREDITS_STRING_DUMMY
+};
+
+enum CreditsMap
+{
+ CREDITS_MAP_ROUTE23 = 0,
+ CREDITS_MAP_VIRIDIAN_CITY,
+ CREDITS_MAP_PEWTER_CITY,
+ CREDITS_MAP_CERULEAN_CITY,
+ CREDITS_MAP_ROUTE25,
+ CREDITS_MAP_VERMILION_CITY,
+ CREDITS_MAP_ROUTE10,
+ CREDITS_MAP_CELADON_CITY,
+ CREDITS_MAP_SAFFRON_CITY_DUPLICATE,
+ CREDITS_MAP_ROUTE17,
+ CREDITS_MAP_FUCHSIA_CITY,
+ CREDITS_MAP_CINNABAR_ISLAND,
+ CREDITS_MAP_ROUTE21_NORTH
+};
+
+struct CreditsResources
+{
+ u8 mainseqno;
+ u8 subseqno;
+ u8 taskId;
+ u16 timer;
+ u16 scrcmdidx;
+ u8 canSpeedThrough;
+ u8 whichMon;
+ u8 windowId;
+ bool8 windowIsActive;
+ u16 creditsMonTimer;
+ u16 unk_0E;
+ u8 filler_10[12];
+ u8 ovwldseqno;
+ u8 unk_1D;
+};
+
+struct CreditsScrcmd
+{
+ u8 cmd;
+ u8 param;
+ u16 duration;
+};
+
+struct CreditsTextHeader
+{
+ const u8 * unk_0;
+ const u8 * unk_4;
+ bool8 unk_8;
+};
+
+struct CompressedGraphicsHeader
+{
+ const u8 * tiles;
+ const u8 * map;
+ const u16 * palette;
+};
+
+struct CreditsTaskData
+{
+ u8 spriteMoveCmd;
+ u8 playerSpriteId;
+ u16 playerTilesTag;
+ u16 field_04;
+ u8 groundSpriteId;
+ u16 groundTilesTag;
+ u16 field_0A;
+};
+
+static EWRAM_DATA struct CreditsResources * sCreditsMgr = NULL;
+
+static void CB2_Credits(void);
+static s32 RollCredits(void);
+static bool32 DoCreditsMonScene(void);
+static bool32 DoCopyrightOrTheEndGfxScene(void);
+static void DestroyPlayerOrRivalSprite(void);
+static void LoadPlayerOrRivalSprite(u8 a0);
+
+static const struct BgTemplate sBgTemplates_MonSceneOrTheEnd[] = {
+ {
+ .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
+ }
+};
+
+static const struct WindowTemplate sWindowTemplates_Charizard[] = {
+ {
+ .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
+};
+
+static const struct WindowTemplate sWindowTemplates_Venusaur[] = {
+ {
+ .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
+};
+
+static const struct WindowTemplate sWindowTemplates_Blastoise[] = {
+ {
+ .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
+};
+
+static const struct WindowTemplate sWindowTemplates_Pikachu[] = {
+ {
+ .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
+};
+
+static const u16 sPalette_OneBlackThenAllWhite[] = INCBIN_U16("data/credits/unk_840C630.gbapal");
+static const u32 sAffineCircleGfx[] = INCBIN_U32("data/credits/unk_840C650.8bpp.lz");
+static const u32 sAffineCircleMap[] = INCBIN_U32("data/credits/unk_840CA54.bin.lz");
+static const u32 sWindow1Map_Charizard[] = INCBIN_U32("data/credits/unk_840CB8C.bin.lz");
+static const u32 sWindow2Map_Charizard[] = INCBIN_U32("data/credits/unk_840D228.bin.lz");
+static const u32 sUnusedTilemap[] = INCBIN_U32("data/credits/unk_840DC0C.bin.lz");
+static const u32 sWindow1Map_Venusaur[] = INCBIN_U32("data/credits/unk_840E158.bin.lz");
+static const u32 sWindow2Map_Venusaur[] = INCBIN_U32("data/credits/unk_840E904.bin.lz");
+static const u32 sWindow1Map_Blastoise[] = INCBIN_U32("data/credits/unk_840F240.bin.lz");
+static const u32 sWindow2Map_Blastoise[] = INCBIN_U32("data/credits/unk_840F944.bin.lz");
+static const u32 sWindow1Map_Pikachu[] = INCBIN_U32("data/credits/unk_8410198.bin.lz");
+static const u32 sWindow2Map_Pikachu[] = INCBIN_U32("data/credits/unk_84105B4.bin.lz");
+
+static const u32 filler_8410AFC = 0xF0;
+
+static const u16 sTheEndGfxPal[] = INCBIN_U16("data/credits/unk_8410B20.gbapal");
+static const u8 sTheEndGfxTiles[] = INCBIN_U8("data/credits/unk_8410B20.4bpp.lz");
+static const u8 sTheEndGfxMap[] = INCBIN_U8("data/credits/unk_8410B20.bin.lz");
+
+static const struct CompressedGraphicsHeader sCopyrightOrTheEndGfxHeaders[] = {
+ {
+ .tiles = gCreditsAllRightsReservedGfxTiles,
+ .map = gCreditsAllRightsReservedGfxMap,
+ .palette = gCreditsAllRightsReservedGfxPal
+ }, {
+ .tiles = sTheEndGfxTiles,
+ .map = sTheEndGfxMap,
+ .palette = sTheEndGfxPal
+ }
+};
+
+#define CREDITS_PRINT(text, duration) { CREDITSSCRCMD_PRINT, CREDITS_STRING_##text, duration }
+#define CREDITS_MAPNEXT(map, duration) { CREDITSSCRCMD_MAPNEXT, CREDITS_MAP_##map, duration }
+#define CREDITS_MAP(map, duration) { CREDITSSCRCMD_MAP, CREDITS_MAP_##map, duration }
+#define CREDITS_MON(mon) { CREDITSSCRCMD_MON, CREDITSMON_##mon }
+#define CREDITS_THEENDGFX(idx, duration) { CREDITSSCRCMD_THEENDGFX, CREDITSCLOSING_##idx, duration }
+#define CREDITS_WAITBUTTON(time) { CREDITSSCRCMD_WAITBUTTON, .duration = time }
+
+static const struct CreditsScrcmd sCreditsScript[] = {
+ CREDITS_MAPNEXT(ROUTE23, 16),
+ CREDITS_PRINT(DIRECTOR, 300),
+ CREDITS_PRINT(ART_DIRECTOR_BATTLE_DIRECTOR, 300),
+ CREDITS_PRINT(PROGRAM_LEADER_PLANNING_LEADER_GRAPHIC_DESIGN_LEADER, 300),
+ CREDITS_PRINT(DUMMY, 60),
+ CREDITS_MAPNEXT(VIRIDIAN_CITY, 0),
+ CREDITS_PRINT(PROGRAMMERS, 211),
+ CREDITS_PRINT(SYSTEM_PROGRAMMERS, 211),
+ CREDITS_PRINT(GRAPHIC_DESIGNERS, 211),
+ CREDITS_MAPNEXT(PEWTER_CITY, 0),
+ CREDITS_PRINT(GRAPHIC_DESIGNERS_2, 211),
+ CREDITS_PRINT(MUSIC_COMPOSITION, 210),
+ CREDITS_PRINT(SOUND_EFFECTS, 210),
+ CREDITS_MON(CHARIZARD),
+ CREDITS_MAP(CERULEAN_CITY, 16),
+ CREDITS_PRINT(GAME_DESIGNERS, 211),
+ CREDITS_PRINT(GAME_DESIGNERS_2, 210),
+ CREDITS_PRINT(GAME_SCENARIO, 210),
+ CREDITS_MAPNEXT(ROUTE25, 16),
+ CREDITS_PRINT(SCRIPT_DESIGNER_MAP_DESIGNER, 211),
+ CREDITS_PRINT(PARAMETRIC_DESIGNERS, 210),
+ CREDITS_PRINT(POKEDEX_TEXT, 210),
+ CREDITS_MAPNEXT(VERMILION_CITY, 16),
+ CREDITS_PRINT(POKEMON_DESIGNERS, 211),
+ CREDITS_PRINT(POKEMON_DESIGNERS_2, 210),
+ CREDITS_PRINT(POKEMON_DESIGNERS_3, 210),
+ CREDITS_MON(VENUSAUR),
+ CREDITS_MAP(ROUTE10, 16),
+ CREDITS_PRINT(SUPPORTING_PROGRAMMERS, 211),
+ CREDITS_PRINT(NCL_PRODUCT_TESTING, 210),
+ CREDITS_PRINT(SPECIAL_THANKS, 210),
+ CREDITS_MAPNEXT(CELADON_CITY, 16),
+ CREDITS_PRINT(SPECIAL_THANKS_2, 221),
+ CREDITS_PRINT(SPECIAL_THANKS_3, 221),
+ CREDITS_PRINT(BRAILLE_CODE_CHECK, 221),
+ CREDITS_PRINT(INFORMATION_SUPERVISORS, 221),
+ CREDITS_PRINT(DUMMY, 51),
+ CREDITS_MAPNEXT(SAFFRON_CITY_DUPLICATE, 16),
+ CREDITS_PRINT(COORDINATORS, 211),
+ CREDITS_PRINT(TASK_MANAGERS, 210),
+ CREDITS_PRINT(PRODUCERS, 210),
+ CREDITS_MON(BLASTOISE),
+ CREDITS_MAP(ROUTE17, 16),
+ CREDITS_PRINT(EXECUTIVE_DIRECTOR, 331),
+ CREDITS_PRINT(EXECUTIVE_PRODUCER, 331),
+ CREDITS_PRINT(EXECUTIVE_PRODUCER_2, 331),
+ CREDITS_MAPNEXT(FUCHSIA_CITY, 16),
+ CREDITS_PRINT(ENGLISH_VERSION_COORDINATORS, 221),
+ CREDITS_PRINT(TRANSLATOR_TEXT_EDITOR, 221),
+ CREDITS_PRINT(PROGRAMMERS_2, 221),
+ CREDITS_PRINT(ENVIRONMENT_TOOL_PROGRAMMERS, 221),
+ CREDITS_PRINT(DUMMY, 52),
+ CREDITS_MAPNEXT(CINNABAR_ISLAND, 16),
+ CREDITS_PRINT(GRAPHIC_DESIGNER, 210),
+ CREDITS_PRINT(NOA_PRODUCT_TESTING, 210),
+ CREDITS_PRINT(BRAILLE_CODE_CHECK_2, 211),
+ CREDITS_MON(PIKACHU),
+ CREDITS_MAP(ROUTE21_NORTH, 16),
+ CREDITS_PRINT(BRAILLE_CODE_CHECK_3, 221),
+ CREDITS_PRINT(BRAILLE_CODE_CHECK_4, 221),
+ CREDITS_PRINT(SPECIAL_THANKS_4, 221),
+ CREDITS_PRINT(SPECIAL_THANKS_5, 221),
+ CREDITS_PRINT(DUMMY, 52),
+ CREDITS_THEENDGFX(ALLRIGHTSRESERVED, 224),
+ CREDITS_THEENDGFX(THEEND, 240),
+ CREDITS_WAITBUTTON(600)
+};
+
+static const ALIGNED(4) u8 sTextColor_Unused[3] = {0, 1, 2};
+static const ALIGNED(4) u8 sTextColor_Header[3] = {0, 5, 2};
+static const ALIGNED(4) u8 sTextColor_Regular[3] = {0, 1, 2};
+
+static const struct WindowTemplate sCreditsWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 4,
+ .width = 30,
+ .height = 12,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+};
+
+static const u16 sMalePlayerSpritePal[] = INCBIN_U16("data/credits/unk_8410E10.gbapal");
+static const u32 sMalePlayerSpriteGfx[] = INCBIN_U32("data/credits/unk_8410E30.4bpp.lz");
+static const u16 sFemalePlayerSpritePal[] = INCBIN_U16("data/credits/unk_8411BF8.gbapal");
+static const u32 sFemalePlayerSpriteGfx[] = INCBIN_U32("data/credits/unk_8411C18.4bpp.lz");
+static const u16 sRivalSpritePal[] = INCBIN_U16("data/credits/unk_84129A0.gbapal");
+static const u32 sRivalSpriteGfx[] = INCBIN_U32("data/credits/unk_84129C0.4bpp.lz");
+static const u16 sGroundSpritePal_Grass[] = INCBIN_U16("data/credits/unk_8413318.gbapal");
+static const u32 sGroundSpriteGfx_Grass[] = INCBIN_U32("data/credits/unk_8413338.4bpp.lz");
+static const u16 sGroundSpritePal_Dirt[] = INCBIN_U16("data/credits/unk_8413854.gbapal");
+static const u32 sGroundSpriteGfx_Dirt[] = INCBIN_U32("data/credits/unk_8413874.4bpp.lz");
+static const u16 sGroundSpritePal_City[] = INCBIN_U16("data/credits/unk_8413D98.gbapal");
+static const u32 sGroundSpriteGfx_City[] = INCBIN_U32("data/credits/unk_8413DB8.4bpp.lz");
+
+static const u16 sPlayerRivalSpriteParams[][3] = {
+ { 0, 3, 1 },
+ { 0, 2, 0 },
+ { 0, 3, 0 },
+ { 1, 1, 2 },
+ { 0, 0, 3 }
+};
+
+static const struct OamData sOamData_PlayerOrRival = {
+ .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 sAnimCmds_PlayerOrRival[] = {
+ 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 sAnimCmdTable_PlayerOrRival[] = {
+ sAnimCmds_PlayerOrRival
+};
+
+static const struct SpriteTemplate sPlayerOrRivalSpriteTemplate = {
+ .oam = &sOamData_PlayerOrRival,
+ .anims = sAnimCmdTable_PlayerOrRival,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct OamData sOamData_Ground = {
+ .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 sAnimCmds_GroundRunning[] = {
+ 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 sAnimCmds_GroundStatic[] = {
+ ANIMCMD_FRAME(0x00, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const sAnimCmdTable_GroundRunning[] = {
+ sAnimCmds_GroundRunning
+};
+
+const union AnimCmd *const sAnimCmdTable_GroundStatic[] = {
+ sAnimCmds_GroundStatic
+};
+
+static const struct SpriteTemplate sGroundSpriteTemplate_Running = {
+ .oam = &sOamData_Ground,
+ .anims = sAnimCmdTable_GroundRunning,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sGroundSpriteTemplate_Static = {
+ .oam = &sOamData_Ground,
+ .anims = sAnimCmdTable_GroundStatic,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_Route23[] = {
+ { 0x00fe, MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23) },
+ { 0x000b, 0x006b, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_ViridianCity[] = {
+ { 0x00fe, MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY) },
+ { 0x001e, 0x0022, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_PewterCity[] = {
+ { 0x00fe, MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY) },
+ { 0x0014, 0x001a, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_CeruleanCity[] = {
+ { 0x00fe, MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY) },
+ { 0x0008, 0x0006, 0x0001 },
+ { 0x0001, 0x0001, 0x0500 }, // Scroll right and down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_Route25[] = {
+ { 0x00fe, MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
+ { 0x0019, 0x0006, 0x0001 },
+ { 0x0001, 0x0000, 0x0500 }, // Scroll right
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_VermilionCity[] = {
+ { 0x00fe, MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY) },
+ { 0x0009, 0x0007, 0x0001 },
+ { 0x0001, 0x0001, 0x0500 }, // Scroll right and down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_Route10[] = {
+ { 0x00fe, MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
+ { 0x000b, 0x0044, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_CeladonCity[] = {
+ { 0x00fe, MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY) },
+ { 0x0030, 0x0010, 0x0001 },
+ { 0xffff, 0x0000, 0x0500 }, // Scroll left
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_SaffronCity[] = {
+ { 0x00fe, MAP_GROUP(SAFFRON_CITY_DUPLICATE), MAP_NUM(SAFFRON_CITY_DUPLICATE) },
+ { 0x0027, 0x0005, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_Route17[] = {
+ { 0x00fe, MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
+ { 0x0007, 0x002b, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_FuchsiaCity[] = {
+ { 0x00fe, MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY) },
+ { 0x001c, 0x0005, 0x0001 },
+ { 0x0000, 0x0001, 0x0500 }, // Scroll down
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_CinnabarIsland[] = {
+ { 0x00fe, MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND) },
+ { 0x000d, 0x0011, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd }
+};
+
+static const struct CreditsOverworldCmd sOverworldCmd_Route21[] = {
+ { 0x00fe, MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
+ { 0x0008, 0x0014, 0x0001 },
+ { 0x0000, 0xffff, 0x0500 }, // Scroll up
+ { 0x00fd, 0x00fd, 0x00fd },
+};
+
+static const struct CreditsOverworldCmd *const sOverworldMapScenes[] = {
+ sOverworldCmd_Route23,
+ sOverworldCmd_ViridianCity,
+ sOverworldCmd_PewterCity,
+ sOverworldCmd_CeruleanCity,
+ sOverworldCmd_Route25,
+ sOverworldCmd_VermilionCity,
+ sOverworldCmd_Route10,
+ sOverworldCmd_CeladonCity,
+ sOverworldCmd_SaffronCity,
+ sOverworldCmd_Route17,
+ sOverworldCmd_FuchsiaCity,
+ sOverworldCmd_CinnabarIsland,
+ sOverworldCmd_Route21
+};
+
+static const struct CreditsTextHeader sCreditsTexts[] = {
+ { gCreditsString_Director, gCreditsString_Junichi_Masuda, FALSE },
+ { gCreditsString_Art_Director_Battle_Director, gCreditsString_Ken_Sugimori_Shigeki_Morimoto, FALSE },
+ { gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader, gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno, FALSE },
+ { gCreditsString_Programmers, gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto, FALSE },
+ { gCreditsString_System_Programmers, gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada, TRUE },
+ { gCreditsString_Graphic_Designers, gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino, TRUE },
+ { gCreditsString_Graphic_Designers_2, gCreditsString_Ken_Sugimori_Hironobu_Yoshida, TRUE },
+ { gCreditsString_Music_Composition, gCreditsString_Go_Ichinose_Junichi_Masuda, TRUE },
+ { gCreditsString_Sound_Effects, gCreditsString_Go_Ichinose, FALSE },
+ { gCreditsString_Game_Designers, gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta, FALSE },
+ { gCreditsString_Game_Designers_2, gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi, FALSE },
+ { gCreditsString_Game_Scenario, gCreditsString_Hitomi_Sato_Satoshi_Tajiri, TRUE },
+ { gCreditsString_Script_Designer_Map_Designer, gCreditsString_Satoshi_Nohara_Shigeru_Ohmori, FALSE },
+ { gCreditsString_Parametric_Designers, gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto, FALSE },
+ { gCreditsString_POKeDEX_Text, gCreditsString_Kenji_Matsushima, FALSE },
+ { gCreditsString_POKeMON_Designers, gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida, TRUE },
+ { gCreditsString_POKeMON_Designers_2, gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita, FALSE },
+ { gCreditsString_POKeMON_Designers_3, gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani, TRUE },
+ { gCreditsString_Supporting_Programmers, gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino, FALSE },
+ { gCreditsString_NCL_Product_Testing, gCreditsString_NCL_Super_Mario_Club, FALSE },
+ { gCreditsString_Special_Thanks, gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama, FALSE },
+ { gCreditsString_Special_Thanks_2, gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa, FALSE },
+ { gCreditsString_Special_Thanks_3, gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi, FALSE },
+ { gCreditsString_Braille_Code_Check, gCreditsString_Japan_Braille_Library, FALSE },
+ { gCreditsString_Information_Supervisors, gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase, FALSE },
+ { gCreditsString_Coordinators, gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto, FALSE },
+ { gCreditsString_Task_Managers, gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto, TRUE },
+ { gCreditsString_Producers, gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru, FALSE },
+ { gCreditsString_Executive_Director, gCreditsString_Satoshi_Tajiri, FALSE },
+ { gCreditsString_Executive_Producer, gCreditsString_Satoru_Iwata, FALSE },
+ { gCreditsString_Executive_Producer_2, gCreditsString_Tsunekaz_Ishihara, FALSE },
+ { gCreditsString_English_Version_Coordinators, gCreditsString_Hiro_Nakamura_Seth_McMahill, FALSE },
+ { gCreditsString_Translator_Text_Editor, gCreditsString_Nob_Ogasawara_Teresa_Lillygren, FALSE },
+ { gCreditsString_Programmers_2, gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi, FALSE },
+ { gCreditsString_Environment_Tool_Programmers, gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi, TRUE },
+ { gCreditsString_NOA_Product_Testing, gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa, TRUE },
+ { gCreditsString_Braille_Code_Check_2, gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union, TRUE },
+ { gCreditsString_Braille_Code_Check_3, gCreditsString_National_Information_Library_Service_Margaret_Campion, TRUE },
+ { gCreditsString_Special_Thanks_4, gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi, FALSE },
+ { gCreditsString_Special_Thanks_5, gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi, FALSE },
+ { gCreditsString_Braille_Code_Check_4, gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran, FALSE },
+ { gCreditsString_Graphic_Designer, gCreditsString_Akira_Kinashi, FALSE },
+ { gString_Dummy, gString_Dummy, FALSE }
+};
+
+void Special_Credits(void)
+{
+ sCreditsMgr = AllocZeroed(sizeof(*sCreditsMgr));
+ ResetTasks();
+ sCreditsMgr->taskId = 0xFF;
+ sCreditsMgr->unk_1D = 0;
+ ResetSpriteData();
+ SetMainCallback2(CB2_Credits);
+}
+
+static void CB2_Credits(void)
+{
+ switch (RollCredits())
+ {
+ case 0:
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ break;
+ case 1:
+ if (sCreditsMgr->unk_1D & 1)
+ {
+ Overworld_CreditsMainCB();
+ }
+ else
+ {
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ }
+ sCreditsMgr->unk_1D++;
+ break;
+ case 2:
+ FlagClear(0x4000);
+ gDisableMapMusicChangeOnMapLoad = MUSIC_DISABLE_OFF;
+ Free(sCreditsMgr);
+ SoftReset(RESET_ALL);
+ // noreturn
+ }
+}
+
+static void SwitchWin1OffWin0On(void)
+{
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x000E);
+}
+
+static void InitBgDarkenEffect(void)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4));
+ SetGpuReg(REG_OFFSET_BLDY, 10);
+}
+
+static void CreateCreditsWindow(void)
+{
+ sCreditsMgr->windowId = AddWindow(&sCreditsWindowTemplate);
+ FillWindowPixelBuffer(sCreditsMgr->windowId, PIXEL_FILL(0));
+ PutWindowTilemap(sCreditsMgr->windowId);
+ CopyWindowToVram(sCreditsMgr->windowId, 3);
+ sCreditsMgr->windowIsActive = TRUE;
+}
+
+static void DestroyCreditsWindow(void)
+{
+ if (sCreditsMgr->windowIsActive)
+ {
+ RemoveWindow(sCreditsMgr->windowId);
+ CleanupOverworldWindowsAndTilemaps();
+ sCreditsMgr->windowIsActive = FALSE;
+ }
+}
+
+static bool32 DoOverworldMapScrollScene(UNUSED u8 unused)
+{
+ switch (sCreditsMgr->subseqno)
+ {
+ case 0:
+ FlagSet(0x4000);
+ gDisableMapMusicChangeOnMapLoad = MUSIC_DISABLE_KEEP;
+ sCreditsMgr->ovwldseqno = 0;
+ sCreditsMgr->subseqno++;
+ // fallthrough
+ case 1:
+ if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], 0))
+ return FALSE;
+ CreateCreditsWindow();
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x247C);
+ SwitchWin1OffWin0On();
+ InitBgDarkenEffect();
+ Menu_LoadStdPalAt(0xF0);
+ gPlttBufferUnfaded[0xFF] = RGB_BLACK;
+ gPlttBufferFaded[0xFF] = RGB_BLACK;
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+#ifdef NONMATCHING
+static s32 RollCredits(void)
+{
+ u16 win0v[8];
+
+ switch (sCreditsMgr->mainseqno)
+ {
+ case CREDITSSCENE_INIT_WIN0:
+ SwitchWin1OffWin0On();
+ SetGpuReg(REG_OFFSET_WIN0H, 0x40);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x4F51);
+ sCreditsMgr->mainseqno = CREDITSSCENE_SETUP_DARKEN_EFFECT;
+ return 0;
+ case CREDITSSCENE_SETUP_DARKEN_EFFECT:
+ InitBgDarkenEffect();
+ CreateCreditsWindow();
+ Menu_LoadStdPalAt(0xF0);
+ gPlttBufferUnfaded[0xFF] = RGB_BLACK;
+ gPlttBufferFaded[0xFF] = RGB_BLACK;
+ sCreditsMgr->mainseqno = CREDITSSCENE_OPEN_WIN0;
+ return 0;
+ case CREDITSSCENE_OPEN_WIN0:
+ win0v[0] = GetGpuReg(REG_OFFSET_WIN0V) >> 8;
+ win0v[1] = GetGpuReg(REG_OFFSET_WIN0V) & 0xFF;
+ if (win0v[0] == 0x24)
+ {
+ sCreditsMgr->timer = 0;
+ sCreditsMgr->mainseqno = CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO;
+ }
+ else
+ {
+ win0v[0]--;
+ win0v[1]++;
+ SetGpuReg(REG_OFFSET_WIN0V, win0v[1] + (win0v[0] << 8));
+ }
+ return 0;
+ case CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO:
+ if (sCreditsMgr->timer != 0)
+ {
+ LoadPlayerOrRivalSprite(0);
+ sCreditsMgr->timer = 100;
+ sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_TITLE_STAFF;
+ }
+ else
+ {
+ sCreditsMgr->timer--;
+ }
+ return 0;
+ case CREDITSSCENE_PRINT_TITLE_STAFF:
+ if (sCreditsMgr->timer == 0)
+ {
+ sCreditsMgr->timer = 360;
+ AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 0x08, 0x29, 1, 2, sTextColor_Header, 0, TITLE_TEXT);
+ sCreditsMgr->mainseqno = CREDITSSCENE_WAIT_TITLE_STAFF;
+ }
+ else
+ {
+ sCreditsMgr->timer--;
+ }
+ return 0;
+ case CREDITSSCENE_WAIT_TITLE_STAFF:
+ if (sCreditsMgr->timer != 0)
+ {
+ sCreditsMgr->timer--;
+ }
+ else
+ {
+ DestroyCreditsWindow();
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ sCreditsMgr->timer = 0;
+ sCreditsMgr->scrcmdidx = 0;
+ }
+ return 0;
+ case CREDITSSCENE_EXEC_CMD:
+ if (sCreditsMgr->timer != 0)
+ {
+ sCreditsMgr->timer--;
+ return sCreditsMgr->canSpeedThrough;
+ }
+ else
+ {
+ switch (sCreditsScript[sCreditsMgr->scrcmdidx].cmd)
+ {
+ case CREDITSSCRCMD_PRINT:
+ BeginNormalPaletteFade(0x00008000, 0, 0, 16, RGB_BLACK);
+ sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_ADDPRINTER1;
+ FillWindowPixelBuffer(sCreditsMgr->windowId, PIXEL_FILL(0));
+ return sCreditsMgr->canSpeedThrough;
+ case CREDITSSCRCMD_MAPNEXT:
+ sCreditsMgr->mainseqno = CREDITSSCENE_MAPNEXT_DESTROYWINDOW;
+ sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
+ FieldWeather_StartFadingOutCreditsMap(1, 0, 0x3FFFFFFF);
+ break;
+ case CREDITSSCRCMD_MAP:
+ sCreditsMgr->mainseqno = CREDITSSCENE_MAP_LOADMAP_CREATESPRITES;
+ sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
+ break;
+ case CREDITSSCRCMD_MON:
+ sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS;
+ sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
+ fade_screen(1, 0);
+ break;
+ case CREDITSSCRCMD_THEENDGFX:
+ sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS;
+ sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, RGB_BLACK);
+ break;
+ case CREDITSSCRCMD_WAITBUTTON:
+ sCreditsMgr->mainseqno = CREDITSSCENE_WAITBUTTON;
+ break;
+ }
+ sCreditsMgr->timer = sCreditsScript[sCreditsMgr->scrcmdidx].duration;
+ sCreditsMgr->scrcmdidx++;
+ return 0;
+ }
+ case CREDITSSCENE_PRINT_ADDPRINTER1:
+ if (!gPaletteFade.active)
+ {
+ win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8; // unused
+ AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_0);
+ sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_ADDPRINTER2;
+ }
+ return sCreditsMgr->canSpeedThrough;
+ case CREDITSSCENE_PRINT_ADDPRINTER2:
+ win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8;
+ AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_4);
+ sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_DELAY;
+ return sCreditsMgr->canSpeedThrough;
+ case CREDITSSCENE_PRINT_DELAY:
+ CopyWindowToVram(sCreditsMgr->windowId, 2);
+ sCreditsMgr->timer = sCreditsScript[sCreditsMgr->scrcmdidx].duration;
+ sCreditsMgr->scrcmdidx++;
+ BeginNormalPaletteFade(0x00008000, 0, 16, 0, RGB_BLACK);
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ return sCreditsMgr->canSpeedThrough;
+ case CREDITSSCENE_MAPNEXT_DESTROYWINDOW:
+ if (!gPaletteFade.active)
+ {
+ DestroyCreditsWindow();
+ sCreditsMgr->subseqno = 0;
+ sCreditsMgr->mainseqno = CREDITSSCENE_MAPNEXT_LOADMAP;
+ }
+ return 0;
+ case CREDITSSCENE_MAPNEXT_LOADMAP:
+ if (DoOverworldMapScrollScene(sCreditsMgr->whichMon))
+ {
+ sCreditsMgr->canSpeedThrough = 1;
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ }
+ return 0;
+ case CREDITSSCENE_MAP_LOADMAP_CREATESPRITES:
+ if (!gPaletteFade.active)
+ {
+ DestroyCreditsWindow();
+ sCreditsMgr->subseqno = 0;
+ while (DoOverworldMapScrollScene(sCreditsMgr->whichMon))
+ {}
+ switch (sCreditsMgr->whichMon)
+ {
+ default:
+ win0v[0] = 1;
+ break;
+ case 6:
+ win0v[0] = 2;
+ break;
+ case 9:
+ win0v[0] = 3;
+ break;
+ case 12:
+ win0v[0] = 4;
+ break;
+ }
+ LoadPlayerOrRivalSprite(win0v[0]);
+ sCreditsMgr->canSpeedThrough = 1;
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ }
+ return 0;
+ case CREDITSSCENE_MON_DESTROY_ASSETS:
+ if (!gPaletteFade.active)
+ {
+ DestroyPlayerOrRivalSprite();
+ DestroyCreditsWindow();
+ sCreditsMgr->subseqno = 0;
+ sCreditsMgr->canSpeedThrough = 0;
+ sCreditsMgr->mainseqno = CREDITSSCENE_MON_SHOW;
+ }
+ return 0;
+ case CREDITSSCENE_MON_SHOW:
+ if (DoCreditsMonScene())
+ {
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ }
+ return 0;
+ case CREDITSSCENE_THEEND_DESTROY_ASSETS:
+ if (!gPaletteFade.active)
+ {
+ DestroyCreditsWindow();
+ sCreditsMgr->subseqno = 0;
+ sCreditsMgr->canSpeedThrough = 0;
+ sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_SHOW;
+ }
+ return 0;
+ case CREDITSSCENE_THEEND_SHOW:
+ if (DoCopyrightOrTheEndGfxScene())
+ {
+ sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD;
+ }
+ return 0;
+ case CREDITSSCENE_WAITBUTTON:
+ if (JOY_NEW(A_BUTTON))
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE);
+ sCreditsMgr->mainseqno = CREDITSSCENE_TERMINATE;
+ }
+ else if (sCreditsMgr->timer == 0)
+ {
+ sCreditsMgr->mainseqno = CREDITSSCENE_TERMINATE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE);
+ }
+ else
+ sCreditsMgr->timer--;
+ return 0;
+ case CREDITSSCENE_TERMINATE:
+ if (!gPaletteFade.active)
+ DestroyCreditsWindow();
+ break;
+ }
+ return 2;
+}
+#else
+NAKED
+static s32 RollCredits(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x24\n"
+ "\tldr r1, _080F3BEC @ =sCreditsMgr\n"
+ "\tldr r0, [r1]\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r7, r1, 0\n"
+ "\tcmp r0, 0x12\n"
+ "\tbls _080F3BE2\n"
+ "\tb _080F4180_default_return2\n"
+ "_080F3BE2:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _080F3BF0 @ =_080F3BF4\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_080F3BEC: .4byte sCreditsMgr\n"
+ "_080F3BF0: .4byte _080F3BF4\n"
+ "\t.align 2, 0\n"
+ "_080F3BF4:\n"
+ "\t.4byte _080F3C40_case00\n"
+ "\t.4byte _080F3C64_case01\n"
+ "\t.4byte _080F3C98_case02\n"
+ "\t.4byte _080F3CEE_case03\n"
+ "\t.4byte _080F3D0A_case04\n"
+ "\t.4byte _080F3D48_case05\n"
+ "\t.4byte _080F3D6A_case06\n"
+ "\t.4byte _080F3EB4_case07\n"
+ "\t.4byte _080F3F24_case08\n"
+ "\t.4byte _080F3F84_case09\n"
+ "\t.4byte _080F3FC4_case0A\n"
+ "\t.4byte _080F3FF0_case0B\n"
+ "\t.4byte _080F400A_case0C\n"
+ "\t.4byte _080F4084_case0D\n"
+ "\t.4byte _080F40B8_case0E\n"
+ "\t.4byte _080F40D0_case0F\n"
+ "\t.4byte _080F4100_case10\n"
+ "\t.4byte _080F4118_case11\n"
+ "\t.4byte _080F4170_case12\n"
+ "_080F3C40_case00:\n"
+ "\tbl SwitchWin1OffWin0On\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0xF0\n"
+ "\tbl SetGpuReg\n"
+ "\tldr r1, _080F3C5C @ =0x00004f51\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl SetGpuReg\n"
+ "\tldr r0, _080F3C60 @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3C5C: .4byte 0x00004f51\n"
+ "_080F3C60: .4byte sCreditsMgr\n"
+ "_080F3C64_case01:\n"
+ "\tbl InitBgDarkenEffect\n"
+ "\tbl CreateCreditsWindow\n"
+ "\tmovs r0, 0xF0\n"
+ "\tbl Menu_LoadStdPalAt\n"
+ "\tldr r0, _080F3C8C @ =gPlttBufferUnfaded\n"
+ "\tmovs r2, 0xFF\n"
+ "\tlsls r2, 1\n"
+ "\tadds r0, r2\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r1, [r0]\n"
+ "\tldr r0, _080F3C90 @ =gPlttBufferFaded\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tldr r0, _080F3C94 @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x2\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3C8C: .4byte gPlttBufferUnfaded\n"
+ "_080F3C90: .4byte gPlttBufferFaded\n"
+ "_080F3C94: .4byte sCreditsMgr\n"
+ "_080F3C98_case02:\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl GetGpuReg\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 24\n"
+ "\tstrh r0, [r1]\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl GetGpuReg\n"
+ "\tadd r2, sp, 0x14\n"
+ "\tmovs r1, 0xFF\n"
+ "\tands r1, r0\n"
+ "\tstrh r1, [r2, 0x2]\n"
+ "\tadds r0, r2, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0x24\n"
+ "\tbne _080F3CCC\n"
+ "\tldr r0, _080F3CC8 @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3CC8: .4byte sCreditsMgr\n"
+ "_080F3CCC:\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r2, r1, 0\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r1, [r0, 0x2]\n"
+ "\tadds r1, 0x1\n"
+ "\tstrh r1, [r2, 0x2]\n"
+ "\tldrh r0, [r0]\n"
+ "\tlsls r0, 8\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl SetGpuReg\n"
+ "\tb _080F3D06_return0\n"
+ "_080F3CEE_case03:\n"
+ "\tldr r1, [r7]\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F3D52_decfield4_return0\n"
+ "\tmovs r0, 0\n"
+ "\tbl LoadPlayerOrRivalSprite\n"
+ "\tldr r0, [r7]\n"
+ "\tmovs r1, 0x64\n"
+ "\tstrh r1, [r0, 0x4]\n"
+ "\tmovs r1, 0x4\n"
+ "\tstrb r1, [r0]\n"
+ "_080F3D06_return0:\n"
+ "\tmovs r0, 0\n"
+ "\tb _080F4182_return\n"
+ "_080F3D0A_case04:\n"
+ "\tldr r1, [r7]\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tadds r2, r0, 0\n"
+ "\tcmp r2, 0\n"
+ "\tbne _080F3D52_decfield4_return0\n"
+ "\tmovs r0, 0xB4\n"
+ "\tlsls r0, 1\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tldrb r0, [r1, 0xA]\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r1, 0x2\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tldr r1, _080F3D40 @ =sTextColor_Header\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tldr r1, _080F3D44 @ =TITLE_TEXT\n"
+ "\tstr r1, [sp, 0x10]\n"
+ "\tmovs r1, 0x1\n"
+ "\tmovs r2, 0x8\n"
+ "\tmovs r3, 0x29\n"
+ "\tbl AddTextPrinterParameterized4\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x5\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3D40: .4byte sTextColor_Header\n"
+ "_080F3D44: .4byte TITLE_TEXT\n"
+ "_080F3D48_case05:\n"
+ "\tldr r1, [r7]\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tadds r4, r0, 0\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080F3D58\n"
+ "_080F3D52_decfield4_return0:\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tb _080F3D06_return0\n"
+ "_080F3D58:\n"
+ "\tbl DestroyCreditsWindow\n"
+ "\tldr r0, [r7]\n"
+ "\tmovs r1, 0x6\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r7]\n"
+ "\tstrh r4, [r0, 0x4]\n"
+ "\tstrh r4, [r0, 0x6]\n"
+ "\tb _080F3D06_return0\n"
+ "_080F3D6A_case06:\n"
+ "\tldr r2, [r7]\n"
+ "\tldrh r0, [r2, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F3D7A\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrh r0, [r2, 0x4]\n"
+ "\tldrb r0, [r2, 0x8]\n"
+ "\tb _080F4182_return\n"
+ "_080F3D7A:\n"
+ "\tldr r1, _080F3D94 @ =sCreditsScript\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x5\n"
+ "\tbls _080F3D8A\n"
+ "\tb _080F3E94\n"
+ "_080F3D8A:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _080F3D98 @ =_080F3D9C\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_080F3D94: .4byte sCreditsScript\n"
+ "_080F3D98: .4byte _080F3D9C\n"
+ "\t.align 2, 0\n"
+ "_080F3D9C:\n"
+ "\t.4byte _080F3DB4\n"
+ "\t.4byte _080F3DE0\n"
+ "\t.4byte _080F3E10\n"
+ "\t.4byte _080F3E30\n"
+ "\t.4byte _080F3E58\n"
+ "\t.4byte _080F3E8C\n"
+ "_080F3DB4:\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 8\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x10\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r4, _080F3DDC @ =sCreditsMgr\n"
+ "\tldr r1, [r4]\n"
+ "\tmovs r0, 0x7\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r4]\n"
+ "\tldrb r0, [r0, 0xA]\n"
+ "\tmovs r1, 0\n"
+ "\tbl FillWindowPixelBuffer\n"
+ "\tldr r0, [r4]\n"
+ "\tldrb r0, [r0, 0x8]\n"
+ "\tb _080F4182_return\n"
+ "\t.align 2, 0\n"
+ "_080F3DDC: .4byte sCreditsMgr\n"
+ "_080F3DE0:\n"
+ "\tldr r2, _080F3E04 @ =sCreditsMgr\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r0, 0xA\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r2, [r2]\n"
+ "\tldr r1, _080F3E08 @ =sCreditsScript\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tstrb r0, [r2, 0x9]\n"
+ "\tldr r2, _080F3E0C @ =0x3fffffff\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0\n"
+ "\tbl FieldWeather_StartFadingOutCreditsMap\n"
+ "\tb _080F3E94\n"
+ "\t.align 2, 0\n"
+ "_080F3E04: .4byte sCreditsMgr\n"
+ "_080F3E08: .4byte sCreditsScript\n"
+ "_080F3E0C: .4byte 0x3fffffff\n"
+ "_080F3E10:\n"
+ "\tldr r2, _080F3E28 @ =sCreditsMgr\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r0, 0xC\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r2, [r2]\n"
+ "\tldr r1, _080F3E2C @ =sCreditsScript\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tstrb r0, [r2, 0x9]\n"
+ "\tb _080F3E94\n"
+ "\t.align 2, 0\n"
+ "_080F3E28: .4byte sCreditsMgr\n"
+ "_080F3E2C: .4byte sCreditsScript\n"
+ "_080F3E30:\n"
+ "\tldr r2, _080F3E50 @ =sCreditsMgr\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r0, 0xD\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r2, [r2]\n"
+ "\tldr r1, _080F3E54 @ =sCreditsScript\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tstrb r0, [r2, 0x9]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0\n"
+ "\tbl fade_screen\n"
+ "\tb _080F3E94\n"
+ "\t.align 2, 0\n"
+ "_080F3E50: .4byte sCreditsMgr\n"
+ "_080F3E54: .4byte sCreditsScript\n"
+ "_080F3E58:\n"
+ "\tldr r2, _080F3E84 @ =sCreditsMgr\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r3, 0\n"
+ "\tmovs r0, 0xF\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r2, [r2]\n"
+ "\tldr r1, _080F3E88 @ =sCreditsScript\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tstrb r0, [r2, 0x9]\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tstr r3, [sp]\n"
+ "\tmovs r1, 0x4\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x10\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tb _080F3E94\n"
+ "\t.align 2, 0\n"
+ "_080F3E84: .4byte sCreditsMgr\n"
+ "_080F3E88: .4byte sCreditsScript\n"
+ "_080F3E8C:\n"
+ "\tldr r0, _080F3EAC @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x11\n"
+ "\tstrb r0, [r1]\n"
+ "_080F3E94:\n"
+ "\tldr r0, _080F3EAC @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r2, _080F3EB0 @ =sCreditsScript\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r2\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r1, 0x6]\n"
+ "\tb _080F3D06_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3EAC: .4byte sCreditsMgr\n"
+ "_080F3EB0: .4byte sCreditsScript\n"
+ "_080F3EB4_case07:\n"
+ "\tldr r0, _080F3F14 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tcmp r6, 0\n"
+ "\tbne _080F3FBA_returnfield8\n"
+ "\tadd r3, sp, 0x14\n"
+ "\tldr r5, _080F3F18 @ =sCreditsTexts\n"
+ "\tldr r4, _080F3F1C @ =sCreditsScript\n"
+ "\tldr r2, [r7]\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r4\n"
+ "\tldrb r1, [r0, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tldrb r0, [r0, 0x8]\n"
+ "\tstrh r0, [r3]\n"
+ "\tldrb r0, [r2, 0xA]\n"
+ "\tstr r6, [sp]\n"
+ "\tstr r6, [sp, 0x4]\n"
+ "\tldr r1, _080F3F20 @ =sTextColor_Header\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tmovs r1, 0x1\n"
+ "\tnegs r1, r1\n"
+ "\tstr r1, [sp, 0xC]\n"
+ "\tldrh r1, [r2, 0x6]\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r4\n"
+ "\tldrb r2, [r1, 0x1]\n"
+ "\tlsls r1, r2, 1\n"
+ "\tadds r1, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r5\n"
+ "\tldr r1, [r1]\n"
+ "\tstr r1, [sp, 0x10]\n"
+ "\tmovs r1, 0x1\n"
+ "\tmovs r2, 0x2\n"
+ "\tmovs r3, 0x6\n"
+ "\tbl AddTextPrinterParameterized4\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x8\n"
+ "\tb _080F3FB8_setfield0_returnfield8\n"
+ "\t.align 2, 0\n"
+ "_080F3F14: .4byte gPaletteFade\n"
+ "_080F3F18: .4byte sCreditsTexts\n"
+ "_080F3F1C: .4byte sCreditsScript\n"
+ "_080F3F20: .4byte sTextColor_Header\n"
+ "_080F3F24_case08:\n"
+ "\tadd r4, sp, 0x14\n"
+ "\tldr r3, _080F3F78 @ =sCreditsTexts\n"
+ "\tldr r5, _080F3F7C @ =sCreditsScript\n"
+ "\tldr r2, [r7]\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tldrb r1, [r0, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r3\n"
+ "\tldrb r0, [r0, 0x8]\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r0, [r4]\n"
+ "\tldrb r0, [r2, 0xA]\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tldr r1, _080F3F80 @ =sTextColor_Regular\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tmovs r1, 0x1\n"
+ "\tnegs r1, r1\n"
+ "\tstr r1, [sp, 0xC]\n"
+ "\tldrh r1, [r2, 0x6]\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r5\n"
+ "\tldrb r2, [r1, 0x1]\n"
+ "\tlsls r1, r2, 1\n"
+ "\tadds r1, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r3, 0x4\n"
+ "\tadds r1, r3\n"
+ "\tldr r1, [r1]\n"
+ "\tstr r1, [sp, 0x10]\n"
+ "\tmovs r1, 0x2\n"
+ "\tmovs r2, 0x8\n"
+ "\tmovs r3, 0x6\n"
+ "\tbl AddTextPrinterParameterized4\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x9\n"
+ "\tb _080F3FB8_setfield0_returnfield8\n"
+ "\t.align 2, 0\n"
+ "_080F3F78: .4byte sCreditsTexts\n"
+ "_080F3F7C: .4byte sCreditsScript\n"
+ "_080F3F80: .4byte sTextColor_Regular\n"
+ "_080F3F84_case09:\n"
+ "\tldr r0, [r7]\n"
+ "\tldrb r0, [r0, 0xA]\n"
+ "\tmovs r1, 0x2\n"
+ "\tbl CopyWindowToVram\n"
+ "\tldr r1, [r7]\n"
+ "\tldr r2, _080F3FC0 @ =sCreditsScript\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r2\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tmovs r2, 0\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r1, 0x6]\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 8\n"
+ "\tstr r2, [sp]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x6\n"
+ "_080F3FB8_setfield0_returnfield8:\n"
+ "\tstrb r0, [r1]\n"
+ "_080F3FBA_returnfield8:\n"
+ "\tldr r0, [r7]\n"
+ "\tldrb r0, [r0, 0x8]\n"
+ "\tb _080F4182_return\n"
+ "\t.align 2, 0\n"
+ "_080F3FC0: .4byte sCreditsScript\n"
+ "_080F3FC4_case0A:\n"
+ "\tldr r0, _080F3FE8 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080F3FD6\n"
+ "\tb _080F3D06_return0\n"
+ "_080F3FD6:\n"
+ "\tbl DestroyCreditsWindow\n"
+ "\tldr r1, _080F3FEC @ =sCreditsMgr\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x1]\n"
+ "\tldr r1, [r1]\n"
+ "\tmovs r0, 0xB\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F3FE8: .4byte gPaletteFade\n"
+ "_080F3FEC: .4byte sCreditsMgr\n"
+ "_080F3FF0_case0B:\n"
+ "\tldr r0, [r7]\n"
+ "\tldrb r0, [r0, 0x9]\n"
+ "\tbl DoOverworldMapScrollScene\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F3FFE\n"
+ "\tb _080F3D06_return0\n"
+ "_080F3FFE:\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x8]\n"
+ "\tldr r1, [r7]\n"
+ "\tmovs r0, 0x6\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "_080F400A_case0C:\n"
+ "\tldr r0, _080F4050 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080F401C\n"
+ "\tb _080F3D06_return0\n"
+ "_080F401C:\n"
+ "\tbl DestroyCreditsWindow\n"
+ "\tldr r1, _080F4054 @ =sCreditsMgr\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x1]\n"
+ "\tadds r4, r1, 0\n"
+ "_080F4028:\n"
+ "\tldr r0, [r4]\n"
+ "\tldrb r0, [r0, 0x9]\n"
+ "\tbl DoOverworldMapScrollScene\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F4028\n"
+ "\tldr r0, _080F4054 @ =sCreditsMgr\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r0, [r0, 0x9]\n"
+ "\tcmp r0, 0x6\n"
+ "\tbeq _080F4058\n"
+ "\tcmp r0, 0x6\n"
+ "\tble _080F404A\n"
+ "\tcmp r0, 0x9\n"
+ "\tbeq _080F405E\n"
+ "\tcmp r0, 0xC\n"
+ "\tbeq _080F4064\n"
+ "_080F404A:\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080F4068\n"
+ "\t.align 2, 0\n"
+ "_080F4050: .4byte gPaletteFade\n"
+ "_080F4054: .4byte sCreditsMgr\n"
+ "_080F4058:\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tmovs r0, 0x2\n"
+ "\tb _080F4068\n"
+ "_080F405E:\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tmovs r0, 0x3\n"
+ "\tb _080F4068\n"
+ "_080F4064:\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tmovs r0, 0x4\n"
+ "_080F4068:\n"
+ "\tstrh r0, [r1]\n"
+ "\tadd r0, sp, 0x14\n"
+ "\tldrb r0, [r0]\n"
+ "\tbl LoadPlayerOrRivalSprite\n"
+ "\tldr r2, _080F4080 @ =sCreditsMgr\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x8]\n"
+ "\tldr r1, [r2]\n"
+ "\tmovs r0, 0x6\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F4080: .4byte sCreditsMgr\n"
+ "_080F4084_case0D:\n"
+ "\tldr r0, _080F40B0 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080F4096\n"
+ "\tb _080F3D06_return0\n"
+ "_080F4096:\n"
+ "\tbl DestroyPlayerOrRivalSprite\n"
+ "\tbl DestroyCreditsWindow\n"
+ "\tldr r1, _080F40B4 @ =sCreditsMgr\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x1]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x8]\n"
+ "\tldr r1, [r1]\n"
+ "\tmovs r0, 0xE\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F40B0: .4byte gPaletteFade\n"
+ "_080F40B4: .4byte sCreditsMgr\n"
+ "_080F40B8_case0E:\n"
+ "\tbl DoCreditsMonScene\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F40C2\n"
+ "\tb _080F3D06_return0\n"
+ "_080F40C2:\n"
+ "\tldr r0, _080F40CC @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x6\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F40CC: .4byte sCreditsMgr\n"
+ "_080F40D0_case0F:\n"
+ "\tldr r0, _080F40F8 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080F40E2\n"
+ "\tb _080F3D06_return0\n"
+ "_080F40E2:\n"
+ "\tbl DestroyCreditsWindow\n"
+ "\tldr r1, _080F40FC @ =sCreditsMgr\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x1]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r4, [r0, 0x8]\n"
+ "\tldr r1, [r1]\n"
+ "\tmovs r0, 0x10\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F40F8: .4byte gPaletteFade\n"
+ "_080F40FC: .4byte sCreditsMgr\n"
+ "_080F4100_case10:\n"
+ "\tbl DoCopyrightOrTheEndGfxScene\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F410A\n"
+ "\tb _080F3D06_return0\n"
+ "_080F410A:\n"
+ "\tldr r0, _080F4114 @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x6\n"
+ "\tb _080F413C_setfield0_return0\n"
+ "\t.align 2, 0\n"
+ "_080F4114: .4byte sCreditsMgr\n"
+ "_080F4118_case11:\n"
+ "\tldr r0, _080F4140 @ =gMain\n"
+ "\tldrh r1, [r0, 0x2E]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F414C\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tldr r1, _080F4144 @ =0x00007fff\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x10\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r0, _080F4148 @ =sCreditsMgr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x12\n"
+ "_080F413C_setfield0_return0:\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _080F3D06_return0\n"
+ "\t.align 2, 0\n"
+ "_080F4140: .4byte gMain\n"
+ "_080F4144: .4byte 0x00007fff\n"
+ "_080F4148: .4byte sCreditsMgr\n"
+ "_080F414C:\n"
+ "\tldr r1, [r7]\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F4156\n"
+ "\tb _080F3D52_decfield4_return0\n"
+ "_080F4156:\n"
+ "\tmovs r0, 0x12\n"
+ "\tstrb r0, [r1]\n"
+ "\tsubs r0, 0x13\n"
+ "\tldr r1, _080F416C @ =0x00007fff\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x10\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tb _080F3D06_return0\n"
+ "\t.align 2, 0\n"
+ "_080F416C: .4byte 0x00007fff\n"
+ "_080F4170_case12:\n"
+ "\tldr r0, _080F418C @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F4180_default_return2\n"
+ "\tbl DestroyCreditsWindow\n"
+ "_080F4180_default_return2:\n"
+ "\tmovs r0, 0x2\n"
+ "_080F4182_return:\n"
+ "\tadd sp, 0x24\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_080F418C: .4byte gPaletteFade");
+}
+#endif //NONMATCHING
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void LoadCreditsMonPic(u8 whichMon)
+{
+ switch (whichMon)
+ {
+ case CREDITSMON_CHARIZARD:
+ InitWindows(sWindowTemplates_Charizard);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ LoadMonPicForCredits(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Charizard, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Charizard, 0, 0);
+ break;
+ case CREDITSMON_VENUSAUR:
+ InitWindows(sWindowTemplates_Venusaur);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ LoadMonPicForCredits(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Venusaur, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Venusaur, 0, 0);
+ break;
+ case CREDITSMON_BLASTOISE:
+ InitWindows(sWindowTemplates_Blastoise);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ LoadMonPicForCredits(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Blastoise, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Blastoise, 0, 0);
+ break;
+ case CREDITSMON_PIKACHU:
+ InitWindows(sWindowTemplates_Pikachu);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ LoadMonPicForCredits(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0);
+ CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Pikachu, 0, 0);
+ CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Pikachu, 0, 0);
+ break;
+ }
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+ CopyWindowToVram(2, 2);
+}
+
+static u16 GetCreditsMonSpecies(u8 whichMon)
+{
+ switch (whichMon)
+ {
+ case CREDITSMON_CHARIZARD:
+ return SPECIES_CHARIZARD;
+ case CREDITSMON_VENUSAUR:
+ return SPECIES_VENUSAUR;
+ case CREDITSMON_BLASTOISE:
+ return SPECIES_BLASTOISE;
+ case CREDITSMON_PIKACHU:
+ return SPECIES_PIKACHU;
+ default:
+ return SPECIES_NONE;
+ }
+}
+
+static bool32 DoCreditsMonScene(void)
+{
+ switch (sCreditsMgr->subseqno)
+ {
+ 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, sBgTemplates_MonSceneOrTheEnd, NELEMS(sBgTemplates_MonSceneOrTheEnd));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ sCreditsMgr->creditsMonTimer = 0;
+ sCreditsMgr->unk_0E = 0;
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, sCreditsMgr->creditsMonTimer, sCreditsMgr->creditsMonTimer, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, gCreditsPokeballBgGfxTiles, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(2, sAffineCircleGfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, gCreditsPokeballBgGfxMap, 0x500, 0, 1);
+ DecompressAndLoadBgGfxUsingHeap(2, sAffineCircleMap, 0x400, 0, 1);
+ LoadPalette(gCreditsMonBackdropPals[sCreditsMgr->whichMon], 0, 0x20);
+ LoadPalette(sPalette_OneBlackThenAllWhite, 0xF0, 0x20);
+ LoadCreditsMonPic(sCreditsMgr->whichMon);
+ SetVBlankCallback(VBlankCB);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ sCreditsMgr->subseqno++;
+ break;
+ case 1:
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, PIXEL_FILL(1));
+ PutWindowTilemap(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ sCreditsMgr->subseqno++;
+ break;
+ case 2:
+ ShowBg(2);
+ ShowBg(0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sCreditsMgr->creditsMonTimer = 40;
+ sCreditsMgr->subseqno++;
+ break;
+ case 3:
+ if (sCreditsMgr->creditsMonTimer != 0)
+ sCreditsMgr->creditsMonTimer--;
+ else
+ sCreditsMgr->subseqno++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ sCreditsMgr->creditsMonTimer = 8;
+ sCreditsMgr->unk_0E = 1;
+ sCreditsMgr->subseqno++;
+ }
+ break;
+ case 5:
+ if (sCreditsMgr->creditsMonTimer != 0)
+ sCreditsMgr->creditsMonTimer--;
+ else
+ {
+ if (sCreditsMgr->unk_0E < 3)
+ {
+ PutWindowTilemap(sCreditsMgr->unk_0E);
+ CopyBgTilemapBufferToVram(0);
+ sCreditsMgr->creditsMonTimer = 4;
+ sCreditsMgr->unk_0E++;
+ }
+ else
+ sCreditsMgr->subseqno++;
+ }
+ break;
+ case 6:
+ if (sCreditsMgr->creditsMonTimer < 256)
+ {
+ sCreditsMgr->creditsMonTimer += 16;
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, sCreditsMgr->creditsMonTimer, sCreditsMgr->creditsMonTimer, 0);
+ }
+ else
+ {
+ SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, 0x100, 0x100, 0);
+ sCreditsMgr->creditsMonTimer = 32;
+ sCreditsMgr->subseqno++;
+ }
+ break;
+ case 7:
+ if (sCreditsMgr->creditsMonTimer != 0)
+ sCreditsMgr->creditsMonTimer--;
+ else
+ {
+ HideBg(2);
+ ShowBg(1);
+ PlayCry2(GetCreditsMonSpecies(sCreditsMgr->whichMon), 0, 125, 10);
+ sCreditsMgr->creditsMonTimer = 128;
+ sCreditsMgr->subseqno++;
+ }
+ break;
+ case 8:
+ if (sCreditsMgr->creditsMonTimer != 0)
+ sCreditsMgr->creditsMonTimer--;
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sCreditsMgr->subseqno++;
+ }
+ break;
+ case 9:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(0));
+ sCreditsMgr->subseqno = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static bool32 DoCopyrightOrTheEndGfxScene(void)
+{
+ switch (sCreditsMgr->subseqno)
+ {
+ 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, sBgTemplates_MonSceneOrTheEnd, 1);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(0, sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].tiles, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(0, sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].map, 0x800, 0, 1);
+ LoadPalette(sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].palette, 0x00, 0x200);
+ SetVBlankCallback(VBlankCB);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ sCreditsMgr->subseqno++;
+ break;
+ case 1:
+ CopyBgTilemapBufferToVram(0);
+ sCreditsMgr->subseqno++;
+ break;
+ case 2:
+ ShowBg(0);
+ if (sCreditsMgr->whichMon != 0)
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK);
+ else
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sCreditsMgr->subseqno++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sCreditsMgr->subseqno = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void Task_MovePlayerAndGroundSprites(u8 taskId)
+{
+ struct CreditsTaskData * data = (void *)gTasks[taskId].data;
+ switch (data->spriteMoveCmd)
+ {
+ case 0:
+ break;
+ case 1:
+ if (gSprites[data->playerSpriteId].pos1.x != 0xD0)
+ {
+ gSprites[data->playerSpriteId].pos1.x--;
+ gSprites[data->groundSpriteId].pos1.x--;
+ }
+ else
+ {
+ data->spriteMoveCmd = 0;
+ }
+ break;
+ case 2:
+ if (sCreditsMgr->unk_1D & 1)
+ {
+ if (gSprites[data->playerSpriteId].pos1.y != 0x50)
+ {
+ gSprites[data->playerSpriteId].pos1.y--;
+ gSprites[data->groundSpriteId].pos1.y--;
+ }
+ else
+ {
+ data->spriteMoveCmd = 0;
+ }
+ }
+ break;
+ case 3:
+ if (sCreditsMgr->mainseqno == 15)
+ {
+ gSprites[data->playerSpriteId].pos1.x--;
+ gSprites[data->groundSpriteId].pos1.x--;
+ }
+ break;
+ }
+}
+
+static void DestroyPlayerOrRivalSprite(void)
+{
+ if (sCreditsMgr->taskId != 0xFF)
+ {
+ struct CreditsTaskData * data = (void *)gTasks[sCreditsMgr->taskId].data;
+ FreeSpriteTilesByTag(data->playerTilesTag);
+ DestroySprite(&gSprites[data->playerSpriteId]);
+ FreeSpriteTilesByTag(data->groundTilesTag);
+ DestroySprite(&gSprites[data->groundSpriteId]);
+ DestroyTask(sCreditsMgr->taskId);
+ sCreditsMgr->taskId = 0xFF;
+ }
+}
+
+static void LoadPlayerOrRivalSprite(u8 whichScene)
+{
+ u8 taskId;
+ struct CreditsTaskData * data;
+ s32 x, y;
+ struct SpriteTemplate sprTemplate;
+ struct CompressedSpriteSheet sprSheet;
+
+ if (sCreditsMgr->taskId == 0xFF)
+ {
+ taskId = CreateTask(Task_MovePlayerAndGroundSprites, 0);
+ data = (void *)gTasks[taskId].data;
+ sCreditsMgr->taskId = taskId;
+ switch (sPlayerRivalSpriteParams[whichScene][2])
+ {
+ default:
+ case 0:
+ x = 0xd0;
+ y = 0x50;
+ break;
+ case 1:
+ x = 0x110;
+ y = 0x50;
+ break;
+ case 2:
+ x = 0xd0;
+ y = 0xa0;
+ break;
+ }
+ data->spriteMoveCmd = sPlayerRivalSpriteParams[whichScene][2];
+ data->playerTilesTag = 0x2000;
+ data->field_04 = 0xFFFF;
+ switch (sPlayerRivalSpriteParams[whichScene][0])
+ {
+ case 0:
+ // Player
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ sprSheet.data = sMalePlayerSpriteGfx;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->playerTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sMalePlayerSpritePal, 0x1F0, 0x20);
+ }
+ else
+ {
+ sprSheet.data = sFemalePlayerSpriteGfx;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->playerTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sFemalePlayerSpritePal, 0x1F0, 0x20);
+ }
+ break;
+ case 1:
+ // Rival
+ sprSheet.data = sRivalSpriteGfx;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->playerTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sRivalSpritePal, 0x1F0, 0x20);
+ break;
+ }
+ sprTemplate = sPlayerOrRivalSpriteTemplate;
+ sprTemplate.tileTag = data->playerTilesTag;
+ data->playerSpriteId = CreateSprite(&sprTemplate, x, y, 0);
+ gSprites[data->playerSpriteId].oam.paletteNum = 0xF;
+ gSprites[data->playerSpriteId].subpriority = 0;
+
+ data->groundTilesTag = 0x2001;
+ data->field_0A = 0xFFFF;
+ switch (sPlayerRivalSpriteParams[whichScene][1])
+ {
+ case 0:
+ sprSheet.data = sGroundSpriteGfx_Grass;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->groundTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sGroundSpritePal_Grass, 0x1E0, 0x20);
+ sprTemplate = sGroundSpriteTemplate_Running;
+ break;
+ case 1:
+ sprSheet.data = sGroundSpriteGfx_Grass;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->groundTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sGroundSpritePal_Grass, 0x1E0, 0x20);
+ sprTemplate = sGroundSpriteTemplate_Static;
+ break;
+ case 2:
+ sprSheet.data = sGroundSpriteGfx_Dirt;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->groundTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sGroundSpritePal_Dirt, 0x1E0, 0x20);
+ sprTemplate = sGroundSpriteTemplate_Running;
+ break;
+ case 3:
+ sprSheet.data = sGroundSpriteGfx_City;
+ sprSheet.size = 0x3000;
+ sprSheet.tag = data->groundTilesTag;
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadPalette(sGroundSpritePal_City, 0x1E0, 0x20);
+ sprTemplate = sGroundSpriteTemplate_Running;
+ break;
+ }
+ sprTemplate.tileTag = data->groundTilesTag;
+ data->groundSpriteId = CreateSprite(&sprTemplate, x, y + 0x26, 0);
+ gSprites[data->groundSpriteId].oam.paletteNum = 0xE;
+ gSprites[data->groundSpriteId].subpriority = 1;
+ }
+}
diff --git a/src/menu2.c b/src/menu2.c
index 6ee1488b1..c6d5ab094 100644
--- a/src/menu2.c
+++ b/src/menu2.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "text.h"
+#include "blit.h"
#include "gpu_regs.h"
#include "task.h"
#include "wild_encounter.h"
@@ -502,261 +503,75 @@ void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
}
}
-// Yeah, no, I'm not bothering with this
-NAKED
-static void sub_812E768(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+static void sub_812E768(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height)
{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x28\n"
- "\tstr r0, [sp]\n"
- "\tstr r1, [sp, 0x4]\n"
- "\tldr r0, [sp, 0x48]\n"
- "\tldr r4, [sp, 0x4C]\n"
- "\tldr r1, [sp, 0x50]\n"
- "\tldr r5, [sp, 0x54]\n"
- "\tlsls r2, 16\n"
- "\tlsrs r2, 16\n"
- "\tstr r2, [sp, 0x8]\n"
- "\tlsls r3, 16\n"
- "\tlsrs r3, 16\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tlsls r4, 16\n"
- "\tlsrs r4, 16\n"
- "\tlsls r1, 16\n"
- "\tlsrs r1, 16\n"
- "\tlsls r5, 16\n"
- "\tlsrs r5, 16\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tldrh r0, [r2, 0x4]\n"
- "\tldr r2, [sp, 0xC]\n"
- "\tsubs r0, r2\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tadds r2, r1, r2\n"
- "\tstr r2, [sp, 0x10]\n"
- "\tcmp r0, r1\n"
- "\tbge _0812E7B4\n"
- "\tldr r1, [sp, 0x8]\n"
- "\tadds r0, r1\n"
- "\tstr r0, [sp, 0x10]\n"
- "_0812E7B4:\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tldrh r1, [r2, 0x6]\n"
- "\tsubs r0, r1, r4\n"
- "\tcmp r0, r5\n"
- "\tbge _0812E7C6\n"
- "\tadds r0, r3, r1\n"
- "\tsubs r0, r4\n"
- "\tstr r0, [sp, 0x14]\n"
- "\tb _0812E7CA\n"
- "_0812E7C6:\n"
- "\tadds r5, r3, r5\n"
- "\tstr r5, [sp, 0x14]\n"
- "_0812E7CA:\n"
- "\tldr r0, [sp]\n"
- "\tldrh r1, [r0, 0x4]\n"
- "\tmovs r2, 0x7\n"
- "\tadds r0, r1, 0\n"
- "\tands r0, r2\n"
- "\tadds r1, r0\n"
- "\tasrs r1, 3\n"
- "\tstr r1, [sp, 0x18]\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tldrh r1, [r0, 0x4]\n"
- "\tadds r0, r1, 0\n"
- "\tands r0, r2\n"
- "\tadds r1, r0\n"
- "\tasrs r1, 3\n"
- "\tstr r1, [sp, 0x1C]\n"
- "\tmov r12, r3\n"
- "\tmov r8, r4\n"
- "\tldr r1, [sp, 0x14]\n"
- "\tcmp r12, r1\n"
- "\tblt _0812E7F4\n"
- "\tb _0812E932\n"
- "_0812E7F4:\n"
- "\tldr r5, [sp, 0x8]\n"
- "\tldr r6, [sp, 0xC]\n"
- "\tmov r2, r12\n"
- "\tadds r2, 0x1\n"
- "\tstr r2, [sp, 0x20]\n"
- "\tmov r0, r8\n"
- "\tadds r0, 0x1\n"
- "\tstr r0, [sp, 0x24]\n"
- "\tldr r1, [sp, 0x10]\n"
- "\tcmp r5, r1\n"
- "\tblt _0812E80C\n"
- "\tb _0812E922\n"
- "_0812E80C:\n"
- "\tmovs r7, 0x1\n"
- "\tmovs r2, 0xF0\n"
- "\tmov r10, r2\n"
- "\tmovs r0, 0xF\n"
- "\tmov r9, r0\n"
- "_0812E816:\n"
- "\tasrs r0, r5, 1\n"
- "\tmovs r1, 0x3\n"
- "\tands r0, r1\n"
- "\tldr r2, [sp]\n"
- "\tldr r1, [r2]\n"
- "\tadds r1, r0\n"
- "\tasrs r0, r5, 3\n"
- "\tlsls r0, 5\n"
- "\tadds r1, r0\n"
- "\tmov r2, r12\n"
- "\tasrs r0, r2, 3\n"
- "\tldr r2, [sp, 0x18]\n"
- "\tmuls r0, r2\n"
- "\tlsls r0, 5\n"
- "\tadds r1, r0\n"
- "\tmov r2, r12\n"
- "\tlsls r0, r2, 29\n"
- "\tlsrs r0, 27\n"
- "\tadds r3, r1, r0\n"
- "\tasrs r0, r6, 1\n"
- "\tmovs r1, 0x3\n"
- "\tands r0, r1\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tldr r1, [r2]\n"
- "\tadds r1, r0\n"
- "\tasrs r0, r6, 3\n"
- "\tlsls r0, 5\n"
- "\tadds r1, r0\n"
- "\tmov r2, r8\n"
- "\tasrs r0, r2, 3\n"
- "\tldr r2, [sp, 0x1C]\n"
- "\tmuls r0, r2\n"
- "\tlsls r0, 5\n"
- "\tadds r1, r0\n"
- "\tmov r2, r8\n"
- "\tlsls r0, r2, 29\n"
- "\tlsrs r0, 27\n"
- "\tadds r4, r1, r0\n"
- "\tadds r0, r4, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E8C2\n"
- "\tsubs r4, 0x1\n"
- "\tadds r0, r6, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E89A\n"
- "\tldrh r0, [r4]\n"
- "\tldr r2, _0812E88C @ =0x00000fff\n"
- "\tands r2, r0\n"
- "\tadds r0, r5, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E890\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r10\n"
- "\tands r0, r1\n"
- "\tlsls r0, 8\n"
- "\tb _0812E912\n"
- "\t.align 2, 0\n"
- "_0812E88C: .4byte 0x00000fff\n"
- "_0812E890:\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r9\n"
- "\tands r0, r1\n"
- "\tlsls r0, 12\n"
- "\tb _0812E912\n"
- "_0812E89A:\n"
- "\tldrh r0, [r4]\n"
- "\tldr r2, _0812E8B4 @ =0x0000f0ff\n"
- "\tands r2, r0\n"
- "\tadds r0, r5, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E8B8\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r10\n"
- "\tands r0, r1\n"
- "\tlsls r0, 4\n"
- "\tb _0812E912\n"
- "\t.align 2, 0\n"
- "_0812E8B4: .4byte 0x0000f0ff\n"
- "_0812E8B8:\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r9\n"
- "\tands r0, r1\n"
- "\tlsls r0, 8\n"
- "\tb _0812E912\n"
- "_0812E8C2:\n"
- "\tadds r0, r6, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E8EE\n"
- "\tldrh r0, [r4]\n"
- "\tldr r2, _0812E8E0 @ =0x0000ff0f\n"
- "\tands r2, r0\n"
- "\tadds r0, r5, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E8E4\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r10\n"
- "\tb _0812E910\n"
- "\t.align 2, 0\n"
- "_0812E8E0: .4byte 0x0000ff0f\n"
- "_0812E8E4:\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r9\n"
- "\tands r0, r1\n"
- "\tlsls r0, 4\n"
- "\tb _0812E912\n"
- "_0812E8EE:\n"
- "\tldrh r0, [r4]\n"
- "\tldr r2, _0812E908 @ =0x0000fff0\n"
- "\tands r2, r0\n"
- "\tadds r0, r5, 0\n"
- "\tands r0, r7\n"
- "\tcmp r0, 0\n"
- "\tbeq _0812E90C\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r10\n"
- "\tands r0, r1\n"
- "\tlsrs r0, 4\n"
- "\tb _0812E912\n"
- "\t.align 2, 0\n"
- "_0812E908: .4byte 0x0000fff0\n"
- "_0812E90C:\n"
- "\tldrb r1, [r3]\n"
- "\tmov r0, r9\n"
- "_0812E910:\n"
- "\tands r0, r1\n"
- "_0812E912:\n"
- "\torrs r2, r0\n"
- "\tstrh r2, [r4]\n"
- "\tadds r5, 0x1\n"
- "\tadds r6, 0x1\n"
- "\tldr r0, [sp, 0x10]\n"
- "\tcmp r5, r0\n"
- "\tbge _0812E922\n"
- "\tb _0812E816\n"
- "_0812E922:\n"
- "\tldr r1, [sp, 0x20]\n"
- "\tmov r12, r1\n"
- "\tldr r2, [sp, 0x24]\n"
- "\tmov r8, r2\n"
- "\tldr r0, [sp, 0x14]\n"
- "\tcmp r12, r0\n"
- "\tbge _0812E932\n"
- "\tb _0812E7F4\n"
- "_0812E932:\n"
- "\tadd sp, 0x28\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0");
+ s32 loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY;
+ u16 toOrr;
+ const u8 *pixelsSrc;
+ u16 *pixelsDst;
+
+ if (dst->width - dstX < width)
+ xEnd = dst->width - dstX + srcX;
+ else
+ xEnd = width + srcX;
+
+ if (dst->height - dstY < height)
+ yEnd = srcY + dst->height - dstY;
+ else
+ yEnd = srcY + height;
+ multiplierSrcY = (src->width + (src->width & 7)) >> 3;
+ multiplierDstY = (dst->width + (dst->width & 7)) >> 3;
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
+ {
+ #ifndef NONMATCHING
+ asm("":::"r4");
+ #endif
+ pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B);
+ pixelsDst = (u16 *)(dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B));
+
+ if ((uintptr_t)pixelsDst & 0x1)
+ {
+ pixelsDst = (void *)pixelsDst - 1;
+ if (loopDstX & 0x1)
+ {
+ toOrr = *pixelsDst & 0x0fff;
+ if (loopSrcX & 0x1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8);
+ else
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12);
+ }
+ else
+ {
+ toOrr = *pixelsDst & 0xf0ff;
+ if (loopSrcX & 0x1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4);
+ else
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8);
+ }
+ }
+ else
+ {
+ if (loopDstX & 1)
+ {
+ toOrr = *pixelsDst & 0xff0f;
+ if (loopSrcX & 1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0);
+ else
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4);
+ }
+ else
+ {
+ toOrr = *pixelsDst & 0xfff0;
+ if (loopSrcX & 1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4);
+ else
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0);
+ }
+ }
+ }
+ }
}
#define tEvA data[0]
diff --git a/src/quest_log.c b/src/quest_log.c
index 6083e9348..8b9ee9395 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -871,7 +871,7 @@ void sub_8110F90(u8 unused)
gSaveBlock1Ptr->location.mapNum = 19;
gSaveBlock1Ptr->location.warpId = -1;
gUnknown_203ADF8 = 0;
- gUnknown_2031DD8 = 1;
+ gDisableMapMusicChangeOnMapLoad = 1;
sub_8082740(1);
sub_8111368();
}
@@ -1567,7 +1567,7 @@ void sub_81120AC(u8 taskId)
switch (data[0])
{
case 0:
- gUnknown_2031DD8 = 0;
+ gDisableMapMusicChangeOnMapLoad = 0;
Overworld_PlaySpecialMapMusic();
sub_811229C();
FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8);
diff --git a/src/sound.c b/src/sound.c
index dc4b9f604..41b9f5b7d 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -15,7 +15,7 @@ struct Fanfare
};
// TODO: what are these
-extern u8 gUnknown_2031DD8;
+extern u8 gDisableMapMusicChangeOnMapLoad;
extern u8 gUnknown_203ADFA;
extern u8 gUnknown_203F174;
@@ -571,7 +571,7 @@ void PlayBGM(u16 songNum)
void PlaySE(u16 songNum)
{
- if(gUnknown_2031DD8 == 0 && gUnknown_203ADFA != 2)
+ if(gDisableMapMusicChangeOnMapLoad == 0 && gUnknown_203ADFA != 2)
m4aSongNumStart(songNum);
}
diff --git a/src/text.c b/src/text.c
index d36a448ad..5b88e9f75 100644
--- a/src/text.c
+++ b/src/text.c
@@ -6,19 +6,18 @@
#include "text.h"
#include "sprite.h"
#include "blit.h"
+#include "sound.h"
+#include "m4a.h"
+#include "quest_log.h"
+#include "window.h"
+#include "graphics.h"
+#include "dynamic_placeholder_text_util.h"
extern u8 gGlyphInfo[0x90];
-extern u8 gUnknown_203ADFA;
-extern u16 gTMCaseMainWindowPalette[];
extern const struct OamData gOamData_83AC9D0;
-extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
-extern void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
-extern u8 GetKeypadIconWidth(u8 keypadIconId);
-extern void CopyWindowToVram(u8 windowId, u8 mode);
-extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
-extern void PlaySE(u16 songNum);
-extern u8* DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 a1);
+static void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese);
+static void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese);
TextFlags gTextFlags;
@@ -378,107 +377,107 @@ const u16 gFont9JapaneseGlyphs[] = INCBIN_U16("data/graphics/fonts/font9_jap.fwj
u16 Font0Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 0;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 0;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
u16 Font1Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 1;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 1;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
u16 Font2Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 2;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 2;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
u16 Font3Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 3;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 3;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
u16 Font4Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 4;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 4;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
u16 Font5Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == 0)
{
- textPrinter->sub_union.sub.font_type = 5;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 5;
+ subStruct->hasGlyphIdBeenSet = 1;
}
return RenderText(textPrinter);
}
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
if (gTextFlags.autoScroll == 1)
- subStruct->frames_visible_counter = 0;
+ subStruct->autoScrollDelay = 0;
else
{
- subStruct->field_1_upmid = 0;
- subStruct->field_1 = 0;
+ subStruct->downArrowYPosIdx = 0;
+ subStruct->downArrowDelay = 0;
}
}
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
const u8 *arrowTiles;
if (gTextFlags.autoScroll == 0)
{
- if (subStruct->field_1 != 0)
+ if (subStruct->downArrowDelay != 0)
{
- subStruct->field_1 = ((*(u32*)&textPrinter->sub_union.sub) << 19 >> 27) - 1; // convoluted way of getting field_1, necessary to match
+ subStruct->downArrowDelay = ((*(u32*)&textPrinter->subUnion.sub) << 19 >> 27) - 1; // convoluted way of getting field_1, necessary to match
}
else
{
FillWindowPixelRect(
- textPrinter->subPrinter.windowId,
- textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.windowId,
+ textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
10,
12);
@@ -494,20 +493,20 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
}
BlitBitmapRectToWindow(
- textPrinter->subPrinter.windowId,
+ textPrinter->printerTemplate.windowId,
arrowTiles,
- gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->field_1_upmid but again, stupidly retrieved
+ gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->downArrowYPosIdx but again, stupidly retrieved
0,
0x80,
0x10,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
10,
12);
- CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2);
- subStruct->field_1 = 0x8;
- subStruct->field_1_upmid = (*(u32*)subStruct << 17 >> 30) + 1;
+ subStruct->downArrowDelay = 0x8;
+ subStruct->downArrowYPosIdx = (*(u32*)subStruct << 17 >> 30) + 1;
}
}
}
@@ -515,27 +514,27 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
void TextPrinterClearDownArrow(struct TextPrinter *textPrinter)
{
FillWindowPixelRect(
- textPrinter->subPrinter.windowId,
- textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.windowId,
+ textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
10,
12);
- CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2);
}
bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
u8 delay = (gUnknown_203ADFA == 2) ? 50 : 120;
- if (subStruct->frames_visible_counter == delay)
+ if (subStruct->autoScrollDelay == delay)
{
return TRUE;
}
else
{
- subStruct->frames_visible_counter++;
+ subStruct->autoScrollDelay++;
return FALSE;
}
}
@@ -550,7 +549,7 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
else
{
TextPrinterDrawDownArrow(textPrinter);
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
result = TRUE;
PlaySE(5);
@@ -568,7 +567,7 @@ bool16 TextPrinterWait(struct TextPrinter *textPrinter)
}
else
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
result = TRUE;
PlaySE(5);
@@ -619,772 +618,291 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c
}
}
-__attribute__((naked))
u16 RenderText(struct TextPrinter *textPrinter)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r6, r0, 0\n\
- adds r4, r6, 0\n\
- adds r4, 0x14\n\
- ldrb r0, [r6, 0x1C]\n\
- cmp r0, 0x6\n\
- bls _080057A0\n\
- b _08005D68\n\
-_080057A0:\n\
- lsls r0, 2\n\
- ldr r1, _080057AC @ =_080057B0\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080057AC: .4byte _080057B0\n\
- .align 2, 0\n\
-_080057B0:\n\
- .4byte _080057CC\n\
- .4byte _08005C58\n\
- .4byte _08005C6C\n\
- .4byte _08005C98\n\
- .4byte _08005CD0\n\
- .4byte _08005D44\n\
- .4byte _08005D56\n\
-_080057CC:\n\
- ldr r2, _08005820 @ =gMain\n\
- ldrh r1, [r2, 0x2C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080057E6\n\
- ldrb r1, [r4]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080057E6\n\
- movs r0, 0\n\
- strb r0, [r6, 0x1E]\n\
-_080057E6:\n\
- ldrb r1, [r6, 0x1E]\n\
- cmp r1, 0\n\
- beq _08005828\n\
- ldrb r0, [r6, 0x1D]\n\
- cmp r0, 0\n\
- beq _08005828\n\
- subs r0, r1, 0x1\n\
- strb r0, [r6, 0x1E]\n\
- ldr r0, _08005824 @ =gTextFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08005804\n\
- b _08005B30\n\
-_08005804:\n\
- ldrh r1, [r2, 0x2E]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08005810\n\
- b _08005B30\n\
-_08005810:\n\
- ldrb r0, [r4]\n\
- movs r1, 0x10\n\
- orrs r0, r1\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- strb r0, [r6, 0x1E]\n\
- b _08005B30\n\
- .align 2, 0\n\
-_08005820: .4byte gMain\n\
-_08005824: .4byte gTextFlags\n\
-_08005828:\n\
- ldr r2, _08005838 @ =gTextFlags\n\
- ldrb r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0800583C\n\
- movs r0, 0x1\n\
- b _0800583E\n\
- .align 2, 0\n\
-_08005838: .4byte gTextFlags\n\
-_0800583C:\n\
- ldrb r0, [r6, 0x1D]\n\
-_0800583E:\n\
- strb r0, [r6, 0x1E]\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- adds r0, r3, 0\n\
- subs r0, 0xF8\n\
- cmp r0, 0x7\n\
- bls _08005852\n\
- b _08005B6C\n\
-_08005852:\n\
- lsls r0, 2\n\
- ldr r1, _0800585C @ =_08005860\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0800585C: .4byte _08005860\n\
- .align 2, 0\n\
-_08005860:\n\
- .4byte _08005B46\n\
- .4byte _08005B34\n\
- .4byte _08005B26\n\
- .4byte _08005B22\n\
- .4byte _080058AC\n\
- .4byte _080058A8\n\
- .4byte _08005880\n\
- .4byte _08005D68\n\
-_08005880:\n\
- ldrb r0, [r6, 0x6]\n\
- strb r0, [r6, 0x8]\n\
- ldrb r1, [r6, 0x5]\n\
- ldr r0, _080058A4 @ =gFonts\n\
- ldr r2, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r1, [r6, 0xB]\n\
- ldrb r0, [r0, 0x5]\n\
- adds r1, r0\n\
- ldrb r0, [r6, 0x9]\n\
- adds r0, r1\n\
- strb r0, [r6, 0x9]\n\
-_0800589E:\n\
- movs r0, 0x2\n\
- b _08005D6A\n\
- .align 2, 0\n\
-_080058A4: .4byte gFonts\n\
-_080058A8:\n\
- ldr r0, [r6]\n\
- b _08005B0A\n\
-_080058AC:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- subs r0, r3, 0x1\n\
- cmp r0, 0x17\n\
- bls _080058BC\n\
- b _08005B6C\n\
-_080058BC:\n\
- lsls r0, 2\n\
- ldr r1, _080058C8 @ =_080058CC\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080058C8: .4byte _080058CC\n\
- .align 2, 0\n\
-_080058CC:\n\
- .4byte _0800592C\n\
- .4byte _0800594E\n\
- .4byte _08005972\n\
- .4byte _0800598C\n\
- .4byte _080059D8\n\
- .4byte _080059DC\n\
- .4byte _0800589E\n\
- .4byte _080059F4\n\
- .4byte _08005A04\n\
- .4byte _08005A1A\n\
- .4byte _08005A1E\n\
- .4byte _08005A66\n\
- .4byte _08005A70\n\
- .4byte _08005A78\n\
- .4byte _08005A84\n\
- .4byte _08005A4C\n\
- .4byte _08005AB0\n\
- .4byte _08005ACC\n\
- .4byte _08005ADC\n\
- .4byte _08005B00\n\
- .4byte _08005B10\n\
- .4byte _08005B18\n\
- .4byte _08005A96\n\
- .4byte _08005AA4\n\
-_0800592C:\n\
- ldr r2, [r6]\n\
- ldrb r1, [r2]\n\
- lsls r1, 4\n\
- ldrb r3, [r6, 0xC]\n\
- movs r0, 0xF\n\
- ands r0, r3\n\
- orrs r0, r1\n\
- strb r0, [r6, 0xC]\n\
- adds r2, 0x1\n\
- str r2, [r6]\n\
- lsls r0, 24\n\
- lsrs r0, 28\n\
- ldrb r2, [r6, 0xD]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 28\n\
- lsrs r2, 4\n\
- b _080059D2\n\
-_0800594E:\n\
- ldr r1, [r6]\n\
- ldrb r2, [r1]\n\
- movs r0, 0xF\n\
- ands r0, r2\n\
- ldrb r3, [r6, 0xD]\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- ands r2, r3\n\
- orrs r2, r0\n\
- strb r2, [r6, 0xD]\n\
- adds r1, 0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r6, 0xC]\n\
- lsrs r0, 4\n\
- lsls r1, r2, 28\n\
- lsrs r1, 28\n\
- lsrs r2, 4\n\
- b _080059D2\n\
-_08005972:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- lsls r0, 4\n\
- ldrb r3, [r6, 0xD]\n\
- movs r2, 0xF\n\
- ands r2, r3\n\
- orrs r2, r0\n\
- strb r2, [r6, 0xD]\n\
- adds r1, 0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r6, 0xC]\n\
- lsrs r0, 4\n\
- b _080059CA\n\
-_0800598C:\n\
- ldr r3, [r6]\n\
- ldrb r1, [r3]\n\
- lsls r1, 4\n\
- ldrb r4, [r6, 0xC]\n\
- movs r2, 0xF\n\
- adds r0, r2, 0\n\
- ands r0, r4\n\
- orrs r0, r1\n\
- strb r0, [r6, 0xC]\n\
- adds r5, r3, 0x1\n\
- str r5, [r6]\n\
- ldrb r3, [r3, 0x1]\n\
- adds r1, r2, 0\n\
- ands r1, r3\n\
- ldrb r4, [r6, 0xD]\n\
- movs r3, 0x10\n\
- negs r3, r3\n\
- ands r3, r4\n\
- orrs r3, r1\n\
- strb r3, [r6, 0xD]\n\
- adds r4, r5, 0x1\n\
- str r4, [r6]\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r1, 4\n\
- ands r2, r3\n\
- orrs r2, r1\n\
- strb r2, [r6, 0xD]\n\
- adds r4, 0x1\n\
- str r4, [r6]\n\
- lsls r0, 24\n\
- lsrs r0, 28\n\
-_080059CA:\n\
- lsls r1, r2, 28\n\
- lsrs r1, 28\n\
- lsls r2, 24\n\
- lsrs r2, 28\n\
-_080059D2:\n\
- bl GenerateFontHalfRowLookupTable\n\
- b _0800589E\n\
-_080059D8:\n\
- ldr r0, [r6]\n\
- b _08005B0A\n\
-_080059DC:\n\
- ldr r0, [r6]\n\
- ldrb r0, [r0]\n\
- movs r1, 0xF\n\
- ands r1, r0\n\
- ldrb r2, [r4]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4]\n\
- ldr r0, [r6]\n\
- b _08005B0A\n\
-_080059F4:\n\
- ldr r0, [r6]\n\
- ldrb r1, [r0]\n\
- strb r1, [r6, 0x1E]\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- movs r0, 0x6\n\
- strb r0, [r6, 0x1C]\n\
- b _0800589E\n\
-_08005A04:\n\
- movs r0, 0x1\n\
- strb r0, [r6, 0x1C]\n\
- ldrb r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08005A14\n\
- b _08005B30\n\
-_08005A14:\n\
- movs r0, 0\n\
- strb r0, [r4, 0x2]\n\
- b _08005B30\n\
-_08005A1A:\n\
- movs r0, 0x5\n\
- b _08005D52\n\
-_08005A1E:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- adds r1, r0, 0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 8\n\
- orrs r3, r0\n\
- adds r1, 0x1\n\
- str r1, [r6]\n\
- ldr r0, _08005A48 @ =gUnknown_203ADFA\n\
- ldrb r0, [r0]\n\
- subs r0, 0x2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _08005A40\n\
- b _0800589E\n\
-_08005A40:\n\
- adds r0, r3, 0\n\
- bl PlayBGM\n\
- b _0800589E\n\
- .align 2, 0\n\
-_08005A48: .4byte gUnknown_203ADFA\n\
-_08005A4C:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- adds r1, r0, 0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 8\n\
- orrs r3, r0\n\
- adds r1, 0x1\n\
- str r1, [r6]\n\
- adds r0, r3, 0\n\
- bl PlaySE\n\
- b _0800589E\n\
-_08005A66:\n\
- ldr r1, [r6]\n\
- adds r0, r1, 0x1\n\
- str r0, [r6]\n\
- ldrb r3, [r1, 0x1]\n\
- b _08005B6C\n\
-_08005A70:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- ldrb r2, [r6, 0x6]\n\
- b _08005AD2\n\
-_08005A78:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- ldrb r3, [r6, 0x7]\n\
- adds r0, r3\n\
- strb r0, [r6, 0x9]\n\
- b _08005AD6\n\
-_08005A84:\n\
- ldrb r0, [r6, 0x4]\n\
- ldrb r2, [r6, 0xD]\n\
- lsls r2, 28\n\
- lsrs r1, r2, 4\n\
- orrs r1, r2\n\
- lsrs r1, 24\n\
- bl FillWindowPixelBuffer\n\
- b _0800589E\n\
-_08005A96:\n\
- ldr r0, _08005AA0 @ =gMPlayInfo_BGM\n\
- bl m4aMPlayStop\n\
- b _0800589E\n\
- .align 2, 0\n\
-_08005AA0: .4byte gMPlayInfo_BGM\n\
-_08005AA4:\n\
- ldr r0, _08005AAC @ =gMPlayInfo_BGM\n\
- bl m4aMPlayContinue\n\
- b _0800589E\n\
- .align 2, 0\n\
-_08005AAC: .4byte gMPlayInfo_BGM\n\
-_08005AB0:\n\
- ldr r0, [r6]\n\
- ldrb r4, [r0]\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- cmp r4, 0\n\
- bgt _08005ABE\n\
- b _0800589E\n\
-_08005ABE:\n\
- adds r0, r6, 0\n\
- adds r1, r4, 0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, 0x8]\n\
- adds r0, r4\n\
- b _08005C4E\n\
-_08005ACC:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r6, 0x6]\n\
- ldrb r2, [r1]\n\
-_08005AD2:\n\
- adds r0, r2\n\
- strb r0, [r6, 0x8]\n\
-_08005AD6:\n\
- adds r1, 0x1\n\
- str r1, [r6]\n\
- b _0800589E\n\
-_08005ADC:\n\
- ldr r0, [r6]\n\
- ldrb r2, [r0]\n\
- ldrb r1, [r6, 0x6]\n\
- adds r2, r1\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- ldrb r0, [r6, 0x8]\n\
- subs r4, r2, r0\n\
- cmp r4, 0\n\
- bgt _08005AF2\n\
- b _0800589E\n\
-_08005AF2:\n\
- adds r0, r6, 0\n\
- adds r1, r4, 0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, 0x8]\n\
- adds r0, r4\n\
- b _08005C4E\n\
-_08005B00:\n\
- ldr r0, [r6]\n\
- ldrb r2, [r0]\n\
- adds r1, r6, 0\n\
- adds r1, 0x20\n\
- strb r2, [r1]\n\
-_08005B0A:\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- b _0800589E\n\
-_08005B10:\n\
- adds r1, r6, 0\n\
- adds r1, 0x21\n\
- movs r0, 0x1\n\
- b _08005B1E\n\
-_08005B18:\n\
- adds r1, r6, 0\n\
- adds r1, 0x21\n\
- movs r0, 0\n\
-_08005B1E:\n\
- strb r0, [r1]\n\
- b _0800589E\n\
-_08005B22:\n\
- movs r0, 0x2\n\
- b _08005B28\n\
-_08005B26:\n\
- movs r0, 0x3\n\
-_08005B28:\n\
- strb r0, [r6, 0x1C]\n\
- adds r0, r6, 0\n\
- bl TextPrinterInitDownArrowCounters\n\
-_08005B30:\n\
- movs r0, 0x3\n\
- b _08005D6A\n\
-_08005B34:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r2, 0\n\
- orrs r3, r1\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- b _08005B6C\n\
-_08005B46:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- adds r0, 0x1\n\
- str r0, [r6]\n\
- ldrb r0, [r6, 0x4]\n\
- adds r1, r3, 0\n\
- ldrb r2, [r6, 0x8]\n\
- ldrb r3, [r6, 0x9]\n\
- bl DrawKeypadIcon\n\
- ldr r1, _08005B68 @ =gGlyphInfo\n\
- adds r1, 0x80\n\
- strb r0, [r1]\n\
- ldrb r3, [r6, 0xA]\n\
- adds r0, r3\n\
- b _08005C4A\n\
- .align 2, 0\n\
-_08005B68: .4byte gGlyphInfo\n\
-_08005B6C:\n\
- ldr r0, [r4]\n\
- lsls r0, 28\n\
- lsrs r0, 28\n\
- cmp r0, 0x5\n\
- bhi _08005BEE\n\
- lsls r0, 2\n\
- ldr r1, _08005B80 @ =_08005B84\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08005B80: .4byte _08005B84\n\
- .align 2, 0\n\
-_08005B84:\n\
- .4byte _08005B9C\n\
- .4byte _08005BAA\n\
- .4byte _08005BB8\n\
- .4byte _08005BC6\n\
- .4byte _08005BD4\n\
- .4byte _08005BE2\n\
-_08005B9C:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont0\n\
- b _08005BEE\n\
-_08005BAA:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont1\n\
- b _08005BEE\n\
-_08005BB8:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont2\n\
- b _08005BEE\n\
-_08005BC6:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont3\n\
- b _08005BEE\n\
-_08005BD4:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont4\n\
- b _08005BEE\n\
-_08005BE2:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl DecompressGlyphFont5\n\
-_08005BEE:\n\
- adds r0, r6, 0\n\
- bl CopyGlyphToWindow\n\
- adds r2, r6, 0\n\
- adds r2, 0x20\n\
- ldrb r0, [r2]\n\
- cmp r0, 0\n\
- beq _08005C28\n\
- ldr r1, _08005C24 @ =gGlyphInfo\n\
- adds r1, 0x80\n\
- ldrb r0, [r1]\n\
- ldrb r3, [r6, 0x8]\n\
- adds r0, r3\n\
- strb r0, [r6, 0x8]\n\
- ldrb r2, [r2]\n\
- ldrb r0, [r1]\n\
- subs r4, r2, r0\n\
- cmp r4, 0\n\
- ble _08005C50\n\
- adds r0, r6, 0\n\
- adds r1, r4, 0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, 0x8]\n\
- adds r0, r4\n\
- b _08005C4E\n\
- .align 2, 0\n\
-_08005C24: .4byte gGlyphInfo\n\
-_08005C28:\n\
- adds r0, r6, 0\n\
- adds r0, 0x21\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08005C44\n\
- ldr r0, _08005C40 @ =gGlyphInfo\n\
- adds r0, 0x80\n\
- ldrb r1, [r6, 0xA]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldrb r0, [r6, 0x8]\n\
- b _08005C4C\n\
- .align 2, 0\n\
-_08005C40: .4byte gGlyphInfo\n\
-_08005C44:\n\
- ldr r0, _08005C54 @ =gGlyphInfo\n\
- adds r0, 0x80\n\
- ldrb r0, [r0]\n\
-_08005C4A:\n\
- ldrb r1, [r6, 0x8]\n\
-_08005C4C:\n\
- adds r0, r1\n\
-_08005C4E:\n\
- strb r0, [r6, 0x8]\n\
-_08005C50:\n\
- movs r0, 0\n\
- b _08005D6A\n\
- .align 2, 0\n\
-_08005C54: .4byte gGlyphInfo\n\
-_08005C58:\n\
- adds r0, r6, 0\n\
- bl TextPrinterWait\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _08005C66\n\
- b _08005B30\n\
-_08005C66:\n\
- movs r0, 0\n\
- strb r0, [r6, 0x1C]\n\
- b _08005B30\n\
-_08005C6C:\n\
- adds r0, r6, 0\n\
- bl TextPrinterWaitWithDownArrow\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _08005C7A\n\
- b _08005B30\n\
-_08005C7A:\n\
- ldrb r0, [r6, 0x4]\n\
- ldrb r2, [r6, 0xD]\n\
- lsls r2, 28\n\
- lsrs r1, r2, 4\n\
- orrs r1, r2\n\
- lsrs r1, 24\n\
- bl FillWindowPixelBuffer\n\
- ldrb r0, [r6, 0x6]\n\
- movs r1, 0\n\
- strb r0, [r6, 0x8]\n\
- ldrb r0, [r6, 0x7]\n\
- strb r0, [r6, 0x9]\n\
- strb r1, [r6, 0x1C]\n\
- b _08005B30\n\
-_08005C98:\n\
- adds r0, r6, 0\n\
- bl TextPrinterWaitWithDownArrow\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _08005CA6\n\
- b _08005B30\n\
-_08005CA6:\n\
- adds r0, r6, 0\n\
- bl TextPrinterClearDownArrow\n\
- ldrb r1, [r6, 0x5]\n\
- ldr r0, _08005CCC @ =gFonts\n\
- ldr r2, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r1, [r6, 0xB]\n\
- ldrb r0, [r0, 0x5]\n\
- adds r1, r0\n\
- strb r1, [r6, 0x1F]\n\
- ldrb r0, [r6, 0x6]\n\
- strb r0, [r6, 0x8]\n\
- movs r0, 0x4\n\
- strb r0, [r6, 0x1C]\n\
- b _08005B30\n\
- .align 2, 0\n\
-_08005CCC: .4byte gFonts\n\
-_08005CD0:\n\
- ldrb r2, [r6, 0x1F]\n\
- cmp r2, 0\n\
- beq _08005D40\n\
- ldr r4, _08005D04 @ =gWindowVerticalScrollSpeeds\n\
- ldr r5, _08005D08 @ =gSaveBlock2Ptr\n\
- ldr r0, [r5]\n\
- ldrb r0, [r0, 0x14]\n\
- lsls r1, r0, 29\n\
- lsrs r0, r1, 29\n\
- adds r0, r4\n\
- ldrb r0, [r0]\n\
- cmp r2, r0\n\
- bcs _08005D0C\n\
- ldrb r0, [r6, 0x4]\n\
- ldrb r1, [r6, 0xD]\n\
- lsls r1, 28\n\
- lsrs r3, r1, 4\n\
- orrs r3, r1\n\
- lsrs r3, 24\n\
- movs r1, 0\n\
- bl ScrollWindow\n\
- movs r0, 0\n\
- strb r0, [r6, 0x1F]\n\
- b _08005D36\n\
- .align 2, 0\n\
-_08005D04: .4byte gWindowVerticalScrollSpeeds\n\
-_08005D08: .4byte gSaveBlock2Ptr\n\
-_08005D0C:\n\
- ldrb r0, [r6, 0x4]\n\
- lsrs r1, 29\n\
- adds r1, r4\n\
- ldrb r2, [r1]\n\
- ldrb r1, [r6, 0xD]\n\
- lsls r1, 28\n\
- lsrs r3, r1, 4\n\
- orrs r3, r1\n\
- lsrs r3, 24\n\
- movs r1, 0\n\
- bl ScrollWindow\n\
- ldr r0, [r5]\n\
- ldrb r0, [r0, 0x14]\n\
- lsls r0, 29\n\
- lsrs r0, 29\n\
- adds r0, r4\n\
- ldrb r1, [r6, 0x1F]\n\
- ldrb r0, [r0]\n\
- subs r1, r0\n\
- strb r1, [r6, 0x1F]\n\
-_08005D36:\n\
- ldrb r0, [r6, 0x4]\n\
- movs r1, 0x2\n\
- bl CopyWindowToVram\n\
- b _08005B30\n\
-_08005D40:\n\
- strb r2, [r6, 0x1C]\n\
- b _08005B30\n\
-_08005D44:\n\
- bl IsSEPlaying\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- beq _08005D52\n\
- b _08005B30\n\
-_08005D52:\n\
- strb r0, [r6, 0x1C]\n\
- b _08005B30\n\
-_08005D56:\n\
- ldrb r0, [r6, 0x1E]\n\
- adds r1, r0, 0\n\
- cmp r1, 0\n\
- beq _08005D64\n\
- subs r0, 0x1\n\
- strb r0, [r6, 0x1E]\n\
- b _08005B30\n\
-_08005D64:\n\
- strb r1, [r6, 0x1C]\n\
- b _08005B30\n\
-_08005D68:\n\
- movs r0, 0x1\n\
-_08005D6A:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided");
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
+ u16 currChar;
+ s32 width;
+ s32 widthHelper;
+
+ switch (textPrinter->state)
+ {
+ case 0:
+ if (JOY_HELD(A_BUTTON | B_BUTTON) && subStruct->hasPrintBeenSpedUp)
+ textPrinter->delayCounter = 0;
+
+ if (textPrinter->delayCounter && textPrinter->textSpeed)
+ {
+ textPrinter->delayCounter--;
+ if (gTextFlags.canABSpeedUpPrint && JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ subStruct->hasPrintBeenSpedUp = TRUE;
+ textPrinter->delayCounter = 0;
+ }
+ return 3;
+ }
+
+ if (gTextFlags.autoScroll)
+ textPrinter->delayCounter = 1;
+ else
+ textPrinter->delayCounter = textPrinter->textSpeed;
+
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+
+ switch (currChar)
+ {
+ case CHAR_NEWLINE:
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY += gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
+ return 2;
+ case PLACEHOLDER_BEGIN:
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case EXT_CTRL_CODE_BEGIN:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ switch (currChar)
+ {
+ case 1:
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
+ return 2;
+ case 2:
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
+ return 2;
+ case 3:
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
+ return 2;
+ case 4:
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
+ return 2;
+ case 5:
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case 6:
+ subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case EXT_CTRL_CODE_UNKNOWN_7:
+ return 2;
+ case 8:
+ textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ textPrinter->state = 6;
+ return 2;
+ case 9:
+ textPrinter->state = 1;
+ if (gTextFlags.autoScroll)
+ subStruct->autoScrollDelay = 0;
+ return 3;
+ case 10:
+ textPrinter->state = 5;
+ return 3;
+ case 11:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ currChar |= *textPrinter->printerTemplate.currentChar << 8;
+ textPrinter->printerTemplate.currentChar++;
+ if ((u8)(gUnknown_203ADFA - 2u) > 1)
+ PlayBGM(currChar);
+ return 2;
+ case 16:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ currChar |= (*textPrinter->printerTemplate.currentChar << 8);
+ textPrinter->printerTemplate.currentChar++;
+ PlaySE(currChar);
+ return 2;
+ case 12:
+ textPrinter->printerTemplate.currentChar++;
+ currChar = *textPrinter->printerTemplate.currentChar;
+ break;
+ case 13:
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case 14:
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case 15:
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
+ return 2;
+ case 23:
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ return 2;
+ case 24:
+ m4aMPlayContinue(&gMPlayInfo_BGM);
+ return 2;
+ case EXT_CTRL_CODE_CLEAR:
+ width = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ if (width > 0)
+ {
+ ClearTextSpan(textPrinter, width);
+ textPrinter->printerTemplate.currentX += width;
+ return 0;
+ }
+ return 2;
+ case 18:
+ textPrinter->printerTemplate.currentX = *textPrinter->printerTemplate.currentChar + textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case EXT_CTRL_CODE_CLEAR_TO:
+ {
+ widthHelper = *textPrinter->printerTemplate.currentChar;
+ widthHelper += textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentChar++;
+ width = widthHelper - textPrinter->printerTemplate.currentX;
+ if (width > 0)
+ {
+ ClearTextSpan(textPrinter, width);
+ textPrinter->printerTemplate.currentX += width;
+ return 0;
+ }
+ }
+ return 2;
+ case EXT_CTRL_CODE_MIN_LETTER_SPACING:
+ textPrinter->minLetterSpacing = *textPrinter->printerTemplate.currentChar++;
+ return 2;
+ case EXT_CTRL_CODE_JPN:
+ textPrinter->japanese = 1;
+ return 2;
+ case EXT_CTRL_CODE_ENG:
+ textPrinter->japanese = 0;
+ return 2;
+ }
+ break;
+ case CHAR_PROMPT_CLEAR:
+ textPrinter->state = 2;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case CHAR_PROMPT_SCROLL:
+ textPrinter->state = 3;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case CHAR_EXTRA_EMOJI:
+ currChar = *textPrinter->printerTemplate.currentChar | 0x100;
+ textPrinter->printerTemplate.currentChar++;
+ break;
+ case CHAR_KEYPAD_ICON:
+ currChar = *textPrinter->printerTemplate.currentChar++;
+ gGlyphInfo[0x80] = DrawKeypadIcon(textPrinter->printerTemplate.windowId, currChar, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY);
+ textPrinter->printerTemplate.currentX += gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing;
+ return 0;
+ case EOS:
+ return 1;
+ }
+
+ switch (subStruct->glyphId)
+ {
+ case 0:
+ DecompressGlyphFont0(currChar, textPrinter->japanese);
+ break;
+ case 1:
+ DecompressGlyphFont1(currChar, textPrinter->japanese);
+ break;
+ case 2:
+ DecompressGlyphFont2(currChar, textPrinter->japanese);
+ break;
+ case 3:
+ DecompressGlyphFont3(currChar, textPrinter->japanese);
+ break;
+ case 4:
+ DecompressGlyphFont4(currChar, textPrinter->japanese);
+ break;
+ case 5:
+ DecompressGlyphFont5(currChar, textPrinter->japanese);
+ }
+
+ CopyGlyphToWindow(textPrinter);
+
+ if (textPrinter->minLetterSpacing)
+ {
+ textPrinter->printerTemplate.currentX += gGlyphInfo[0x80];
+ width = textPrinter->minLetterSpacing - gGlyphInfo[0x80];
+ if (width > 0)
+ {
+ ClearTextSpan(textPrinter, width);
+ textPrinter->printerTemplate.currentX += width;
+ }
+ }
+ else
+ {
+ if (textPrinter->japanese)
+ textPrinter->printerTemplate.currentX += (gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing);
+ else
+ textPrinter->printerTemplate.currentX += gGlyphInfo[0x80];
+ }
+ return 0;
+ case 1:
+ if (TextPrinterWait(textPrinter))
+ textPrinter->state = 0;
+ return 3;
+ case 2:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 3:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ TextPrinterClearDownArrow(textPrinter);
+ textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->state = 4;
+ }
+ return 3;
+ case 4:
+ if (textPrinter->scrollDistance)
+ {
+
+ if (textPrinter->scrollDistance < gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed])
+ {
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
+ textPrinter->scrollDistance = 0;
+ }
+ else
+ {
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
+ textPrinter->scrollDistance -= gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed];
+ }
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
+ }
+ else
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 5:
+ if (!IsSEPlaying())
+ textPrinter->state = 0;
+ return 3;
+ case 6:
+ if (textPrinter->delayCounter != 0)
+ textPrinter->delayCounter--;
+ else
+ textPrinter->state = 0;
+ return 3;
+ }
+
+ return 1;
}
s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
@@ -1484,7 +1002,7 @@ s32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese)
for (i = 0; i < 7; ++i)
{
- if (glyphId == gGlyphWidthFuncs[i].font_id)
+ if (glyphId == gGlyphWidthFuncs[i].fontId)
return *gGlyphWidthFuncs[i].func;
}
@@ -1498,7 +1016,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
s32 (*func)(u16 glyphId, bool32 isJapanese);
int localLetterSpacing;
register u32 lineWidth asm("r5");
- u8 *bufferPointer;
+ const u8 *bufferPointer;
int glyphWidth;
u32 width;
@@ -1516,7 +1034,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
width = 0;
lineWidth = 0;
- bufferPointer = 0;
+ bufferPointer = NULL;
while (*str != 0xFF)
{
@@ -1559,7 +1077,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
}
lineWidth += glyphWidth;
}
- bufferPointer = 0;
+ bufferPointer = NULL;
break;
case 0xFC:
switch (*++str)
@@ -1813,7 +1331,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y)
{
BlitBitmapRectToWindow(
windowId,
- gKeypadIconTiles + (gKeypadIcons[keypadIconId].tile_offset * 0x20),
+ gKeypadIconTiles + (gKeypadIcons[keypadIconId].tileOffset * 0x20),
0,
0,
0x80,
@@ -1827,7 +1345,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y)
u8 GetKeypadIconTileOffset(u8 keypadIconId)
{
- return gKeypadIcons[keypadIconId].tile_offset;
+ return gKeypadIcons[keypadIconId].tileOffset;
}
u8 GetKeypadIconWidth(u8 keypadIconId)
@@ -1976,7 +1494,7 @@ s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese)
}
}
-void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese)
+static void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
int i;
@@ -2019,7 +1537,7 @@ s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese)
return gFont2LatinGlyphWidths[glyphId];
}
-void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese)
+static void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
int i;
diff --git a/src/text_printer.c b/src/text_printer.c
index 6c124b448..28377b55a 100644
--- a/src/text_printer.c
+++ b/src/text_printer.c
@@ -45,27 +45,27 @@ void DeactivateAllTextPrinters (void)
{
int printer;
for (printer = 0; printer < NUM_TEXT_PRINTERS; ++printer)
- sTextPrinters[printer].sub_union.sub.active = 0;
+ sTextPrinters[printer].active = 0;
}
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
{
- struct TextPrinterTemplate subPrinter;
-
- subPrinter.currentChar = str;
- subPrinter.windowId = windowId;
- subPrinter.fontId = fontId;
- subPrinter.x = x;
- subPrinter.y = y;
- subPrinter.currentX = x;
- subPrinter.currentY = y;
- subPrinter.letterSpacing = gFonts[fontId].letterSpacing;
- subPrinter.lineSpacing = gFonts[fontId].lineSpacing;
- subPrinter.unk = gFonts[fontId].unk;
- subPrinter.fgColor = gFonts[fontId].fgColor;
- subPrinter.bgColor = gFonts[fontId].bgColor;
- subPrinter.shadowColor = gFonts[fontId].shadowColor;
- return AddTextPrinter(&subPrinter, speed, callback);
+ struct TextPrinterTemplate printerTemplate;
+
+ printerTemplate.currentChar = str;
+ printerTemplate.windowId = windowId;
+ printerTemplate.fontId = fontId;
+ printerTemplate.x = x;
+ printerTemplate.y = y;
+ printerTemplate.currentX = x;
+ printerTemplate.currentY = y;
+ printerTemplate.letterSpacing = gFonts[fontId].letterSpacing;
+ printerTemplate.lineSpacing = gFonts[fontId].lineSpacing;
+ printerTemplate.unk = gFonts[fontId].unk;
+ printerTemplate.fgColor = gFonts[fontId].fgColor;
+ printerTemplate.bgColor = gFonts[fontId].bgColor;
+ printerTemplate.shadowColor = gFonts[fontId].shadowColor;
+ return AddTextPrinter(&printerTemplate, speed, callback);
}
bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
@@ -76,18 +76,18 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void
if (!gFonts)
return FALSE;
- sTempTextPrinter.sub_union.sub.active = 1;
+ sTempTextPrinter.active = 1;
sTempTextPrinter.state = 0;
- sTempTextPrinter.text_speed = speed;
+ sTempTextPrinter.textSpeed = speed;
sTempTextPrinter.delayCounter = 0;
sTempTextPrinter.scrollDistance = 0;
for (i = 0; i < 7; ++i)
{
- sTempTextPrinter.sub_union.sub_fields[i] = 0;
+ sTempTextPrinter.subUnion.fields[i] = 0;
}
- sTempTextPrinter.subPrinter = *textSubPrinter;
+ sTempTextPrinter.printerTemplate = *textSubPrinter;
sTempTextPrinter.callback = callback;
sTempTextPrinter.minLetterSpacing = 0;
sTempTextPrinter.japanese = 0;
@@ -95,12 +95,12 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void
GenerateFontHalfRowLookupTable(textSubPrinter->fgColor, textSubPrinter->bgColor, textSubPrinter->shadowColor);
if (speed != TEXT_SPEED_FF && speed != 0x0)
{
- --sTempTextPrinter.text_speed;
+ --sTempTextPrinter.textSpeed;
sTextPrinters[textSubPrinter->windowId] = sTempTextPrinter;
}
else
{
- sTempTextPrinter.text_speed = 0;
+ sTempTextPrinter.textSpeed = 0;
for (j = 0; j < 0x400; ++j)
{
if ((u32)RenderFont(&sTempTextPrinter) == 1)
@@ -108,8 +108,8 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void
}
if (speed != TEXT_SPEED_FF)
- CopyWindowToVram(sTempTextPrinter.subPrinter.windowId, 2);
- sTextPrinters[textSubPrinter->windowId].sub_union.sub.active = 0;
+ CopyWindowToVram(sTempTextPrinter.printerTemplate.windowId, 2);
+ sTextPrinters[textSubPrinter->windowId].active = 0;
}
return TRUE;
}
@@ -121,18 +121,18 @@ void RunTextPrinters(void)
for (i = 0; i < 0x20; ++i)
{
- if (sTextPrinters[i].sub_union.sub.active != 0)
+ if (sTextPrinters[i].active != 0)
{
temp = RenderFont(&sTextPrinters[i]);
switch (temp) {
case 0:
- CopyWindowToVram(sTextPrinters[i].subPrinter.windowId, 2);
+ CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, 2);
case 3:
if (sTextPrinters[i].callback != 0)
- sTextPrinters[i].callback(&sTextPrinters[i].subPrinter, temp);
+ sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp);
break;
case 1:
- sTextPrinters[i].sub_union.sub.active = 0;
+ sTextPrinters[i].active = 0;
break;
}
}
@@ -141,7 +141,7 @@ void RunTextPrinters(void)
bool16 IsTextPrinterActive(u8 id)
{
- return sTextPrinters[id].sub_union.sub.active;
+ return sTextPrinters[id].active;
}
u32 RenderFont(struct TextPrinter *textPrinter)
@@ -149,7 +149,7 @@ u32 RenderFont(struct TextPrinter *textPrinter)
u32 ret;
while (TRUE)
{
- ret = gFonts[textPrinter->subPrinter.fontId].fontFunction(textPrinter);
+ ret = gFonts[textPrinter->printerTemplate.fontId].fontFunction(textPrinter);
if (ret != 2)
return ret;
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index 5f49173dc..6cec633c5 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -278,7 +278,7 @@ u16 FreeAndDestroyMonPicSprite(u16 spriteId)
return FreeAndDestroyPicSpriteInternal(spriteId);
}
-u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
+u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
{
return sub_810C0C0(species, otId, personality, isFrontPic, 0, 0, paletteSlot, windowId, FALSE);
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9ee2d6a51..0a91bcce7 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -516,7 +516,7 @@ gUnknown_2031DCC: @ 2031DCC
gUnknown_2031DD4: @ 2031DD4
.space 0x4
-gUnknown_2031DD8: @ 2031DD8
+gDisableMapMusicChangeOnMapLoad: @ 2031DD8
.space 0x2
gUnknown_2031DDA: @ 2031DDA
@@ -1086,8 +1086,7 @@ gUnknown_203AB38: @ 203AB38
gUnknown_203AB3C: @ 203AB3C
.space 0x4
-gUnknown_203AB40: @ 203AB40
- .space 0x4
+ .include "src/credits.o"
gUnknown_203AB44: @ 203AB44
.space 0x4