diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-09-25 13:49:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-25 13:49:16 -0400 |
commit | 0e217e22d8fa3e075416cb332435c3756548357e (patch) | |
tree | 59ef21892a02c9d266f5cac36872458bdbe0de61 | |
parent | 2599dac8ac8c12268fca902910bfe1aab40a68ca (diff) | |
parent | 6539884c8850aca6c2057017dba9c3d78ca15784 (diff) |
Merge branch 'master' into battle
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 Binary files differindex c4f49efb2..645018067 100644 --- a/baserom.ips +++ b/baserom.ips 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 Binary files differnew file mode 100644 index 000000000..9afadd699 --- /dev/null +++ b/data/credits/unk_840C650.png diff --git a/data/credits/unk_840CA54.bin b/data/credits/unk_840CA54.bin Binary files differnew file mode 100644 index 000000000..a127ba9ca --- /dev/null +++ b/data/credits/unk_840CA54.bin diff --git a/data/credits/unk_840CB8C.bin b/data/credits/unk_840CB8C.bin Binary files differnew file mode 100644 index 000000000..3dd1c74a0 --- /dev/null +++ b/data/credits/unk_840CB8C.bin diff --git a/data/credits/unk_840D228.bin b/data/credits/unk_840D228.bin Binary files differnew file mode 100644 index 000000000..f6c336c01 --- /dev/null +++ b/data/credits/unk_840D228.bin diff --git a/data/credits/unk_840DC0C.bin b/data/credits/unk_840DC0C.bin Binary files differnew file mode 100644 index 000000000..a52ea8056 --- /dev/null +++ b/data/credits/unk_840DC0C.bin diff --git a/data/credits/unk_840E158.bin b/data/credits/unk_840E158.bin Binary files differnew file mode 100644 index 000000000..2d9128634 --- /dev/null +++ b/data/credits/unk_840E158.bin diff --git a/data/credits/unk_840E904.bin b/data/credits/unk_840E904.bin Binary files differnew file mode 100644 index 000000000..4887c1e7e --- /dev/null +++ b/data/credits/unk_840E904.bin diff --git a/data/credits/unk_840F240.bin b/data/credits/unk_840F240.bin Binary files differnew file mode 100644 index 000000000..285a468b6 --- /dev/null +++ b/data/credits/unk_840F240.bin diff --git a/data/credits/unk_840F944.bin b/data/credits/unk_840F944.bin Binary files differnew file mode 100644 index 000000000..ba2cdab77 --- /dev/null +++ b/data/credits/unk_840F944.bin diff --git a/data/credits/unk_8410198.bin b/data/credits/unk_8410198.bin Binary files differnew file mode 100644 index 000000000..f7b3a02a5 --- /dev/null +++ b/data/credits/unk_8410198.bin diff --git a/data/credits/unk_84105B4.bin b/data/credits/unk_84105B4.bin Binary files differnew file mode 100644 index 000000000..d173e611e --- /dev/null +++ b/data/credits/unk_84105B4.bin diff --git a/data/credits/unk_8410B20.bin b/data/credits/unk_8410B20.bin Binary files differnew file mode 100644 index 000000000..eea1940ee --- /dev/null +++ b/data/credits/unk_8410B20.bin diff --git a/data/credits/unk_8410B20.png b/data/credits/unk_8410B20.png Binary files differnew file mode 100644 index 000000000..19ce2f796 --- /dev/null +++ b/data/credits/unk_8410B20.png 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 Binary files differnew file mode 100644 index 000000000..ec065cdb6 --- /dev/null +++ b/data/credits/unk_8410E30.png 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 Binary files differnew file mode 100644 index 000000000..341594160 --- /dev/null +++ b/data/credits/unk_8411C18.png 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 Binary files differnew file mode 100644 index 000000000..ea9c61c88 --- /dev/null +++ b/data/credits/unk_84129C0.png 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 Binary files differnew file mode 100644 index 000000000..7fa79c06a --- /dev/null +++ b/data/credits/unk_8413338.png 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 Binary files differnew file mode 100644 index 000000000..18e34725f --- /dev/null +++ b/data/credits/unk_8413874.png 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 Binary files differnew file mode 100644 index 000000000..5b10bd699 --- /dev/null +++ b/data/credits/unk_8413DB8.png 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 Binary files differnew file mode 100644 index 000000000..b1389a64a --- /dev/null +++ b/graphics/credits/unk_8EAAB98.png diff --git a/graphics/credits/unk_8EAB30C.bin b/graphics/credits/unk_8EAB30C.bin Binary files differnew file mode 100644 index 000000000..c072a9564 --- /dev/null +++ b/graphics/credits/unk_8EAB30C.bin diff --git a/graphics/credits/unk_8EAE548.bin b/graphics/credits/unk_8EAE548.bin Binary files differnew file mode 100644 index 000000000..8830b60c3 --- /dev/null +++ b/graphics/credits/unk_8EAE548.bin diff --git a/graphics/credits/unk_8EAE548.png b/graphics/credits/unk_8EAE548.png Binary files differnew file mode 100644 index 000000000..297827436 --- /dev/null +++ b/graphics/credits/unk_8EAE548.png 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 |