summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <YamaArashi@users.noreply.github.com>2017-01-07 10:26:04 -0800
committerGitHub <noreply@github.com>2017-01-07 10:26:04 -0800
commitcdecaed3c9e495410593bd39df97f155efd7adc5 (patch)
treea76f360d80642e30cf01e2f57e355f24a4c39010
parentdc542dce609b53b6dc843f9ebd47b7a0e2a589df (diff)
parenteac8f3514f91f9770b61305b4c443e8d64536350 (diff)
Merge pull request #171 from marijnvdwerf/decompile/credits
Continue decompilation of credits
-rw-r--r--asm/credits.s441
-rw-r--r--data/text/credits.inc51
-rw-r--r--src/credits.c432
3 files changed, 410 insertions, 514 deletions
diff --git a/asm/credits.s b/asm/credits.s
index fe9a93668..4c6f9d5d8 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -6,447 +6,6 @@
.text
- thumb_func_start sub_81441B8
-sub_81441B8: @ 81441B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _081441E4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0xA
- bhi _08144218
- lsls r0, 2
- ldr r1, _081441E8 @ =_081441EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081441E4: .4byte gTasks
-_081441E8: .4byte _081441EC
- .align 2, 0
-_081441EC:
- .4byte _08144218
- .4byte _08144258
- .4byte _08144278
- .4byte _08144358
- .4byte _0814438C
- .4byte _081443F8
- .4byte _08144218
- .4byte _08144218
- .4byte _08144218
- .4byte _08144218
- .4byte _08144428
-_08144218:
- ldr r0, _08144250 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0814422A
- b _08144446
-_0814422A:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0x8]
- movs r1, 0x58
- strh r1, [r0, 0xE]
- movs r3, 0xA
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r2, [r0, 0x24]
- ldr r0, _08144254 @ =gUnknown_02039320
- strh r2, [r0]
- b _08144446
- .align 2, 0
-_08144250: .4byte gPaletteFade
-_08144254: .4byte gUnknown_02039320
-_08144258:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r6
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08144270
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _08144446
-_08144270:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08144446
-_08144278:
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _08144320 @ =0x0000feff
- ands r0, r1
- strh r0, [r2]
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r3, r0, r6
- movs r0, 0xA
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r4, r0, r6
- ldr r1, [r4]
- ldr r0, _08144324 @ =sub_8143B68
- mov r8, r2
- cmp r1, r0
- bne _08144352
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- cmp r0, 0x33
- bgt _0814434C
- movs r4, 0
- ldr r7, _08144328 @ =gCreditsEntryPointerTable
- adds r6, r3, 0
-_081442B0:
- movs r2, 0xC
- ldrsh r1, [r6, r2]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, r4
- lsls r0, 2
- adds r0, r7
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsls r2, r4, 25
- movs r3, 0x90
- lsls r3, 20
- adds r2, r3
- lsrs r2, 24
- movs r1, 0
- movs r3, 0xF0
- bl sub_8072BD8
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _081442B0
- ldr r3, _0814432C @ =gTasks
- mov r0, r8
- adds r1, r0, r5
- lsls r1, 3
- adds r1, r3
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xA
- ldrsh r2, [r1, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r3
- movs r2, 0x1
- strh r2, [r0, 0x24]
- movs r2, 0xA
- ldrsh r1, [r1, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- movs r3, 0x22
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _08144334
- movs r0, 0xC0
- lsls r0, 2
- ldr r1, _08144330 @ =0x0000328d
- b _0814433A
- .align 2, 0
-_08144320: .4byte 0x0000feff
-_08144324: .4byte sub_8143B68
-_08144328: .4byte gCreditsEntryPointerTable
-_0814432C: .4byte gTasks
-_08144330: .4byte 0x0000328d
-_08144334:
- movs r0, 0xC0
- lsls r0, 2
- ldr r1, _08144348 @ =0x00001967
-_0814433A:
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08144446
- .align 2, 0
-_08144348: .4byte 0x00001967
-_0814434C:
- movs r0, 0xA
- strh r0, [r3, 0x8]
- b _08144446
-_08144352:
- movs r0, 0
- strh r0, [r4, 0x24]
- b _08144446
-_08144358:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 1
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08144388 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08144446
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0x82
- strh r1, [r0, 0xE]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08144446
- .align 2, 0
-_08144388: .4byte gPaletteFade
-_0814438C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081443A4
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _08144446
-_081443A4:
- ldrb r0, [r4, 0xC]
- ldrb r1, [r4, 0xA]
- bl sub_8144454
- lsls r0, 24
- cmp r0, 0
- beq _081443BA
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08144446
-_081443BA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r3, 0xA
- ldrsh r1, [r4, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- movs r1, 0x22
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _081443E0
- movs r0, 0xC0
- lsls r0, 2
- ldr r1, _081443DC @ =0x0000328d
- b _081443E6
- .align 2, 0
-_081443DC: .4byte 0x0000328d
-_081443E0:
- movs r0, 0xC0
- lsls r0, 2
- ldr r1, _081443F4 @ =0x00001967
-_081443E6:
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08144446
- .align 2, 0
-_081443F4: .4byte 0x00001967
-_081443F8:
- ldr r0, _08144420 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08144446
- movs r0, 0
- movs r1, 0x9
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r0, _08144424 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x2
- strh r0, [r1, 0x8]
- b _08144446
- .align 2, 0
-_08144420: .4byte gPaletteFade
-_08144424: .4byte gTasks
-_08144428:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r2, 0xA
- ldrsh r1, [r0, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0x10]
- adds r0, r5, 0
- bl DestroyTask
-_08144446:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81441B8
-
- thumb_func_start sub_8144454
-sub_8144454: @ 8144454
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r6, r3, 0
- lsls r1, 24
- lsrs r2, r1, 24
- adds r5, r2, 0
- ldr r4, _08144508 @ =gTasks
- cmp r3, 0x6
- bne _08144474
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x1E]
-_08144474:
- cmp r3, 0xC
- bne _08144486
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x1
- strh r1, [r0, 0x16]
- strh r1, [r0, 0x1E]
-_08144486:
- cmp r3, 0x12
- bne _08144496
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x1E]
-_08144496:
- cmp r3, 0x18
- bne _081444AA
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x16]
- movs r1, 0x1
- strh r1, [r0, 0x1E]
-_081444AA:
- cmp r3, 0x1E
- bne _081444BA
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x1E]
-_081444BA:
- cmp r3, 0x23
- bne _081444CE
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x3
- strh r1, [r0, 0x16]
- movs r1, 0x1
- strh r1, [r0, 0x1E]
-_081444CE:
- cmp r3, 0x28
- bne _081444DE
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x1E]
-_081444DE:
- cmp r6, 0x2E
- bne _081444F2
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r4
- movs r1, 0x4
- strh r1, [r0, 0x16]
- movs r1, 0x1
- strh r1, [r0, 0x1E]
-_081444F2:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r4
- movs r1, 0x1E
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0814450C
- movs r0, 0
- b _0814450E
- .align 2, 0
-_08144508: .4byte gTasks
-_0814450C:
- movs r0, 0x1
-_0814450E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144454
-
thumb_func_start sub_8144514
sub_8144514: @ 8144514
push {r4-r7,lr}
diff --git a/data/text/credits.inc b/data/text/credits.inc
index 2f7aa5478..29abccf91 100644
--- a/data/text/credits.inc
+++ b/data/text/credits.inc
@@ -703,256 +703,307 @@ gCreditsEntryPointerTable:: @ 840C5F0
.4byte CreditsCredits
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsDirector
.4byte CreditsMasuda
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsArtDirector
.4byte CreditsSugimori
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsBattleDirector
.4byte CreditsMorimoto
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsMainProgrammer
.4byte CreditsTetsuyaWatanabe
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsBattleSystemProgrammer
.4byte CreditsSogabe
.4byte CreditsFieldSystemProgrammer
.4byte CreditsTamada
.4byte CreditsTerminator
+
.4byte CreditsProgrammers
.4byte CreditsMori
.4byte CreditsKagaya
.4byte CreditsMatsuda
.4byte CreditsTerminator
+
.4byte CreditsProgrammers
.4byte CreditsHiroyukiNakamura
.4byte CreditsTaya
.4byte CreditsNohara
.4byte CreditsTerminator
+
.4byte CreditsProgrammers
.4byte CreditsTomomichiOhta
.4byte CreditsIwasawa
.4byte CreditsTakenoriOhta
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsMainGraphicDesigner
.4byte CreditsYoshida
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsPOKeMONGraphicDesigners
.4byte CreditsSugimori
.4byte CreditsYoshida
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsPOKeMONGraphicDesigners
.4byte CreditsFujiwara
.4byte CreditsSatoshiOhta
.4byte CreditsIwashita
.4byte CreditsTerminator
+
.4byte CreditsPOKeMONGraphicDesigners
.4byte CreditsTomita
.4byte CreditsUnno
.4byte CreditsEo
.4byte CreditsTerminator
+
.4byte CreditsPOKeMONDesigners
.4byte CreditsMorimoto
.4byte CreditsOkutani
.4byte CreditsNishida
.4byte CreditsTerminator
+
.4byte CreditsPOKeMONDesigners
.4byte CreditsSaito
.4byte CreditsYoshikawa
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsMusicComposition
.4byte CreditsIchinose
.4byte CreditsAoki
.4byte CreditsMasuda
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsSoundEffectsPOKeMONVoices
.4byte CreditsAoki
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsGameDesigners
.4byte CreditsMasuda
.4byte CreditsMorimoto
.4byte CreditsNishino
.4byte CreditsTerminator
+
.4byte CreditsGameDesigners
.4byte CreditsMatsushima
.4byte CreditsTetsujiOhta
.4byte CreditsSato
.4byte CreditsKawachimaru
+
.4byte CreditsGameDesigners
.4byte CreditsShimoyamada
.4byte CreditsOhmori
.4byte CreditsTakahashi
.4byte CreditsTerminator
+
.4byte CreditsPlotScenario
.4byte CreditsMasuda
.4byte CreditsTomisawa
.4byte CreditsNishino
.4byte CreditsTerminator
+
.4byte CreditsGameScenario
.4byte CreditsToshinobuMatsumiya
.4byte CreditsTomisawa
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsScriptDesigners
.4byte CreditsNohara
.4byte CreditsTetsujiOhta
.4byte CreditsTomomichiOhta
.4byte CreditsTerminator
+
.4byte CreditsMapDesigners
.4byte CreditsOhmori
.4byte CreditsTetsujiOhta
.4byte CreditsNishino
.4byte CreditsTerminator
+
.4byte CreditsMapDataDesigners
.4byte CreditsTetsujiOhta
.4byte CreditsTakahashi
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsParametricDesigners
.4byte CreditsNishino
.4byte CreditsMorimoto
.4byte CreditsTetsujiOhta
.4byte CreditsShimoyamada
+
.4byte CreditsTerminator
.4byte CreditsPOKeDEXText
.4byte CreditsMatsushima
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsEnvironmentToolProgrammers
.4byte CreditsSogabe
.4byte CreditsTamada
.4byte CreditsHiroyukiNakamura
.4byte CreditsMori
+
.4byte CreditsProductTesting
.4byte CreditsSuperMarioClub
.4byte CreditsTada
.4byte CreditsOhnishi
.4byte CreditsOkamura
+
.4byte CreditsSpecialThanks
.4byte CreditsTominaga
.4byte CreditsYoshiroTajiri
.4byte CreditsSasaki
.4byte CreditsTerminator
+
.4byte CreditsSpecialThanks
.4byte CreditsHamano
.4byte CreditsChieMatsumiya
.4byte CreditsShinozaki
.4byte CreditsFujii
+
.4byte CreditsSpecialThanks
.4byte CreditsSuyama
.4byte CreditsMitsuhara
.4byte CreditsKomura
.4byte CreditsOhashi
+
.4byte CreditsSpecialThanks
.4byte CreditsTakizawa
.4byte CreditsTakada
.4byte CreditsKondo
.4byte CreditsMashima
+
.4byte CreditsInformationSupervisors
.4byte CreditsEnomoto
.4byte CreditsTerada
.4byte CreditsSakurai
.4byte CreditsSagawa
+
.4byte CreditsCoordinators
.4byte CreditsKyokoWatanabe
.4byte CreditsNakano
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTaskManagers
.4byte CreditsYamagami
.4byte CreditsNomoto
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsProducers
.4byte CreditsJinnai
.4byte CreditsIzushi
.4byte CreditsTsuru
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsExecutiveDirector
.4byte CreditsSatoshiTajiri
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsExecutiveProducers
.4byte CreditsIwata
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsExecutiveProducers
.4byte CreditsIshihara
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsEnglishVersionCoordinators
.4byte CreditsHiroNakamura
.4byte CreditsMcMahill
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsTranslator
.4byte CreditsOgasawara
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsProgrammers
.4byte CreditsMurakawa
.4byte CreditsYamamoto
.4byte CreditsFunakoshi
.4byte CreditsKinashi
+
.4byte CreditsGraphicDesigners
.4byte CreditsYamamoto
.4byte CreditsKinashi
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsProductSupport
.4byte CreditsNakamichi
.4byte CreditsHara
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsArtwork
.4byte CreditsOkada
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsTerminator
.4byte CreditsTextEditor
.4byte CreditsLillygren
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsNOAProductTesting
.4byte CreditsHertzog
.4byte CreditsRidgeway
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsBrailleCodeCheck
.4byte CreditsNFotB
.4byte CreditsMaurer
.4byte CreditsJapanBrailleLibrary
.4byte CreditsEBU
+
.4byte CreditsBrailleCodeCheck
.4byte CreditsABA
.4byte CreditsRNZFotB
.4byte CreditsTerminator
.4byte CreditsTerminator
+
.4byte CreditsSpecialThanks
.4byte CreditsFord
.4byte CreditsBarlow
.4byte CreditsUesugi
.4byte CreditsUyama
+
.4byte CreditsSpecialThanks
.4byte CreditsHowitt
.4byte CreditsTilden
diff --git a/src/credits.c b/src/credits.c
index ef89707ff..13a6a1633 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -9,6 +9,72 @@
#include "task.h"
#include "text.h"
+enum {
+ PAGE_TITLE,
+ PAGE_DIRECTOR,
+ PAGE_ART_DIRECTOR,
+ PAGE_BATTLE_DIRECTOR,
+ PAGE_MAIN_PROGRAMMER,
+ PAGE_BATTLE_SYSTEM_PROGRAMMER,
+ PAGE_PROGRAMMERS_1,
+ PAGE_PROGRAMMERS_2,
+ PAGE_PROGRAMMERS_3,
+ PAGE_MAIN_GRAHPICS_DESIGNER,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_1,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_2,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_3,
+ PAGE_POKEMON_DESIGNERS_1,
+ PAGE_POKEMON_DESIGNERS_2,
+ PAGE_MUSIC_COMPOSITION,
+ PAGE_SOUND_EFFECTS,
+ PAGE_GAME_DESIGNERS_1,
+ PAGE_GAME_DESIGNERS_2,
+ PAGE_GAME_DESIGNERS_3,
+ PAGE_PLOT_SCENARIO,
+ PAGE_GAME_SCENARIO,
+ PAGE_SCRIPT_DESIGNERS,
+ PAGE_MAP_DESIGNERS,
+ PAGE_MAP_DATA_DESIGNERS,
+ PAGE_PARAMETRIC_DESIGNERS,
+ PAGE_POKEDEX_TEXT,
+ PAGE_ENVIRONMENT_TOOLS,
+ PAGE_PRODUCT_TESTING,
+ PAGE_SPECIAL_THANKS,
+ PAGE_SPECIAL_THANKS_1,
+ PAGE_SPECIAL_THANKS_2,
+ PAGE_SPECIAL_THANKS_3,
+ PAGE_INFORMATION_SUPERVISORS,
+ PAGE_COORDINATORS,
+ PAGE_TASK_MANAGERS,
+ PAGE_PRODUCERS,
+ PAGE_EXECUTIVE_DIRECTOR,
+ PAGE_EXECUTIVE_PRODUCERS_1,
+ PAGE_EXECUTIVE_PRODUCERS_2,
+ PAGE_TRANSLATION_COORDINATOR,
+ PAGE_TRANSLATORS,
+ PAGE_PROGRAMMERS,
+ PAGE_GRAPHIC_DESIGNERS,
+ PAGE_PRODUCT_SUPPORT,
+ PAGE_ARTWORK,
+ PAGE_TEXT_EDITOR,
+ PAGE_NOA_TESTING,
+ PAGE_BRAILLE_CODE_CHECK_1,
+ PAGE_BRAILLE_CODE_CHECK_2,
+ PAGE_SPECIAL_THANKS_4,
+ PAGE_SPECIAL_THANKS_5,
+
+ PAGE_COUNT
+};
+
+#define UNK_DEFINE_82 (0x82)
+
+#define COLOR_DARK_GREEN 0x1967
+#define COLOR_LIGHT_GREEN 0x328D
+
+enum {
+ TD_CURRENT_PAGE = 2,
+};
+
struct Unk201C000 {
u8 pad_00[0x88];
u16 var_88;
@@ -22,6 +88,11 @@ struct HallOfFame {
u8 sheet2[0x800];
};
+struct CreditsEntry {
+ u8 var_0;
+ u8 *text;
+};
+
extern struct Unk201C000 unk_201C000;
extern struct HallOfFame gHallOfFame;
@@ -45,6 +116,7 @@ extern u8 gBirchHelpGfx[];
// data/credits
extern u16 gUnknown_0840B7BC[32];
extern u16 gUnknown_0840B7FC[32];
+extern struct CreditsEntry *gCreditsEntryPointerTable[][5];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
@@ -62,8 +134,9 @@ static void sub_8144024(u8 taskId);
static void sub_8144080(u8 taskId);
static void sub_8144114(u8 taskId);
static void sub_8144130(void);
+static void sub_81441B8(u8 taskId);
+static u8 sub_8144454(u8 page, u8 taskId);
-void sub_81441B8(u8 taskId);
void sub_8144514(u8 taskId);
u8 sub_8144ECC(u8 data, u8 taskId);
void sub_81450AC(u8 taskId);
@@ -83,15 +156,18 @@ static void sub_814395C(void) {
BuildOamBuffer();
UpdatePaletteFade();
- if (!(gMain.heldKeys & B_BUTTON)) {
+ if (!(gMain.heldKeys & B_BUTTON))
+ {
return;
}
- if (!gUnknown_02039324) {
+ if (!gUnknown_02039324)
+ {
return;
}
- if (gTasks[gUnknown_02039322].func != sub_8143B68) {
+ if (gTasks[gUnknown_02039322].func != sub_8143B68)
+ {
return;
}
@@ -108,7 +184,7 @@ void sub_81439D0(void) {
s16 taskId3;
u8 taskId2;
u16 savedIme;
- struct Unk201C000 * c000;
+ struct Unk201C000 *c000;
sub_8144130();
SetVBlankCallback(NULL);
@@ -122,8 +198,10 @@ void sub_81439D0(void) {
gTasks[taskId].data[11] = 0;
gTasks[taskId].data[13] = 1;
- while (TRUE) {
- if (sub_8144ECC(0, taskId)) {
+ while (TRUE)
+ {
+ if (sub_8144ECC(0, taskId))
+ {
break;
}
}
@@ -171,7 +249,8 @@ void sub_81439D0(void) {
}
void sub_8143B38(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -181,7 +260,8 @@ void sub_8143B38(u8 taskId) {
void sub_8143B68(u8 taskId) {
u16 data11;
- if (gTasks[taskId].data[4]) {
+ if (gTasks[taskId].data[4])
+ {
s16 secondaryTaskId;
secondaryTaskId = gTasks[taskId].data[1];
@@ -195,12 +275,15 @@ void sub_8143B68(u8 taskId) {
gUnknown_02039320 = 0;
data11 = gTasks[taskId].data[11];
- if (gTasks[taskId].data[11] == 1) {
+ if (gTasks[taskId].data[11] == 1)
+ {
gTasks[taskId].data[13] = data11;
gTasks[taskId].data[11] = 0;
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = sub_8143BFC;
- } else if (gTasks[taskId].data[11] == 2) {
+ }
+ else if (gTasks[taskId].data[11] == 2)
+ {
gTasks[taskId].data[13] = data11;
gTasks[taskId].data[11] = 0;
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
@@ -209,7 +292,8 @@ void sub_8143B68(u8 taskId) {
}
static void sub_8143BFC(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -223,7 +307,8 @@ static void c2_080C9BFC(u8 taskId) {
SetVBlankCallback(NULL);
- if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) {
+ if (!sub_8144ECC(gTasks[taskId].data[7], taskId))
+ {
return;
}
@@ -240,7 +325,8 @@ static void c2_080C9BFC(u8 taskId) {
}
static void sub_8143CC0(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -252,58 +338,58 @@ static void sub_8143CC0(u8 taskId) {
#ifdef NONMATCHING
static void sub_8143D04(u8 taskId) {
switch (gMain.state) {
- default:
- case 0: {
- u16 i;
-
- ResetSpriteData();
- FreeAllSpritePalettes();
- gReservedSpritePaletteCount = 8;
- LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM);
- LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800));
- LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2);
-
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet0[i] = 0x11;
- }
+ default:
+ case 0: {
+ u16 i;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM);
+ LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800));
+ LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2);
+
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet0[i] = 0x11;
+ }
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet1[i] = 0x22;
- }
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet1[i] = 0x22;
+ }
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet2[i] = 0x33;
- }
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet2[i] = 0x33;
+ }
- unk_201f800[0] = 0;
- unk_201f800[1] = 0x53FF;
- unk_201f800[2] = 0x529F;
- unk_201f800[3] = 0x7E94;
+ unk_201f800[0] = 0;
+ unk_201f800[1] = 0x53FF; // light yellow
+ unk_201f800[2] = 0x529F; // light red
+ unk_201f800[3] = 0x7E94; // light blue
- LoadSpriteSheet(&gUnknown_0840CAA0);
- LoadSpritePalette(&gUnknown_0840CAB0);
+ LoadSpriteSheet(&gUnknown_0840CAA0);
+ LoadSpritePalette(&gUnknown_0840CAB0);
- gMain.state += 1;
- break;
- }
+ gMain.state += 1;
+ break;
+ }
- case 1: {
- gTasks[taskId].data[3] = CreateTask(sub_8144514, 0);
- gTasks[gTasks[taskId].data[3]].data[0] = 1;
- gTasks[gTasks[taskId].data[3]].data[1] = taskId;
- gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7];
-
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 32;
- REG_BG3CNT = 0x703;
- REG_DISPCNT = 0x1940;
-
- gMain.state = 0;
- gUnknown_0203935C = 0;
- gTasks[taskId].func = sub_8143B38;
- break;
- }
+ case 1: {
+ gTasks[taskId].data[3] = CreateTask(sub_8144514, 0);
+ gTasks[gTasks[taskId].data[3]].data[0] = 1;
+ gTasks[gTasks[taskId].data[3]].data[1] = taskId;
+ gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7];
+
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 32;
+ REG_BG3CNT = 0x703;
+ REG_DISPCNT = 0x1940;
+
+ gMain.state = 0;
+ gUnknown_0203935C = 0;
+ gTasks[taskId].func = sub_8143B38;
+ break;
+ }
}
}
#else
@@ -508,7 +594,8 @@ _08143EB8: .4byte sub_8143B38\n\
#endif
static void sub_8143EBC(u8 taskId) {
- if (gTasks[taskId].data[12]) {
+ if (gTasks[taskId].data[12])
+ {
gTasks[taskId].data[12] -= 1;
return;
}
@@ -518,7 +605,8 @@ static void sub_8143EBC(u8 taskId) {
}
static void sub_8143F04(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -549,7 +637,8 @@ static void sub_8143F3C(u8 taskId) {
}
static void sub_8143FDC(u8 taskId) {
- if (gTasks[taskId].data[0]) {
+ if (gTasks[taskId].data[0])
+ {
gTasks[taskId].data[0] -= 1;
return;
}
@@ -559,7 +648,8 @@ static void sub_8143FDC(u8 taskId) {
}
static void sub_8144024(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -571,29 +661,34 @@ static void sub_8144024(u8 taskId) {
}
static void sub_8144080(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
- if (gTasks[taskId].data[0] == 0) {
+ if (gTasks[taskId].data[0] == 0)
+ {
FadeOutBGM(4);
BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
gTasks[taskId].func = sub_8144114;
return;
}
- if (gMain.newKeys) {
+ if (gMain.newKeys)
+ {
FadeOutBGM(4);
BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
gTasks[taskId].func = sub_8144114;
return;
}
- if (gTasks[taskId].data[0] == 7144) {
+ if (gTasks[taskId].data[0] == 7144)
+ {
FadeOutBGM(8);
}
- if (gTasks[taskId].data[0] == 6840) {
+ if (gTasks[taskId].data[0] == 6840)
+ {
m4aSongNumStart(BGM_END);
}
@@ -601,7 +696,8 @@ static void sub_8144080(u8 taskId) {
}
static void sub_8144114(u8 taskId) {
- if (gPaletteFade.active) {
+ if (gPaletteFade.active)
+ {
return;
}
@@ -624,7 +720,197 @@ static void sub_8144130(void) {
REG_BLDALPHA = 0;
REG_BLDY = 0;
- DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
- DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
- DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ DmaFill16(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *) (PLTT + 2), PLTT_SIZE - 2);
+}
+
+static void sub_81441B8(u8 taskId) {
+ u16 i;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ default:
+ if (gPaletteFade.active)
+ {
+ return;
+ }
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].data[3] = 0x58;
+ gTasks[gTasks[taskId].data[1]].data[14] = 0;
+ gUnknown_02039320 = 0;
+ return;
+
+ case 1:
+ if (gTasks[taskId].data[3] != 0)
+ {
+ gTasks[taskId].data[3] -= 1;
+ return;
+ }
+
+ gTasks[taskId].data[0] += 1;
+ return;
+
+ case 2:
+ REG_DISPCNT &= ~DISPCNT_BG0_ON;
+
+ if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68)
+ {
+ if (gTasks[taskId].data[TD_CURRENT_PAGE] < PAGE_COUNT)
+ {
+
+ for (i = 0; i < 5; i++)
+ {
+ sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskId].data[TD_CURRENT_PAGE]][i]->text, 0,
+ 9 + i * 2, 240);
+ }
+
+ gTasks[taskId].data[TD_CURRENT_PAGE] += 1;
+ gTasks[taskId].data[0] += 1;
+
+ gTasks[gTasks[taskId].data[1]].data[14] = 1;
+
+ if (gTasks[gTasks[taskId].data[1]].data[13] == 1)
+ {
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN);
+ }
+ else
+ {
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN);
+ }
+ return;
+ }
+
+
+ gTasks[taskId].data[0] = 10;
+ return;
+ }
+
+ gTasks[gTasks[taskId].data[1]].data[14] = 0;
+ return;
+
+ case 3:
+ REG_DISPCNT |= DISPCNT_BG0_ON;
+
+ if (gPaletteFade.active)
+ {
+ return;
+ }
+
+ gTasks[taskId].data[3] = UNK_DEFINE_82;
+ gTasks[taskId].data[0] += 1;
+ return;
+
+ case 4:
+ if (gTasks[taskId].data[3] != 0)
+ {
+ gTasks[taskId].data[3] -= 1;
+ return;
+ }
+
+ if (sub_8144454((u8) gTasks[taskId].data[2], (u8) gTasks[taskId].data[1]))
+ {
+ gTasks[taskId].data[0] += 1;
+ return;
+ }
+
+ gTasks[taskId].data[0] += 1;
+
+ if (gTasks[gTasks[taskId].data[1]].data[13] == 1)
+ {
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN);
+ }
+ else
+ {
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN);
+ }
+
+ return;
+
+ case 5:
+ if (gPaletteFade.active)
+ {
+ return;
+ }
+
+ MenuZeroFillWindowRect(0, 9, 29, 19);
+ gTasks[taskId].data[0] = 2;
+ return;
+
+ case 10:
+ gTasks[gTasks[taskId].data[1]].data[4] = 1;
+ DestroyTask(taskId);
+ return;
+ }
+}
+
+#define LAST_PAGE (PAGE_TEXT_EDITOR)
+
+static u8 sub_8144454(u8 page, u8 taskId) {
+ // Starts with bike + ocean + morning
+
+ if (page == PAGE_PROGRAMMERS_1)
+ {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3)
+ {
+ // Bike + ocean + sunset
+ gTasks[taskId].data[7] = 1;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_GAME_DESIGNERS_2)
+ {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_MAP_DATA_DESIGNERS)
+ {
+ // Bike + forest + sunset
+ gTasks[taskId].data[7] = 2;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_SPECIAL_THANKS_1)
+ {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_TASK_MANAGERS)
+ {
+ // Bike + forest + sunset
+ gTasks[taskId].data[7] = 3;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_TRANSLATION_COORDINATOR)
+ {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == LAST_PAGE)
+ {
+ // Bike + town + night
+ gTasks[taskId].data[7] = 4;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (gTasks[taskId].data[11] != 0)
+ {
+ // Returns true if changed?
+ return TRUE;
+ }
+
+ return FALSE;
}