diff options
32 files changed, 569 insertions, 451 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s index 79f66d386..afdb65c90 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -5,320 +5,6 @@ .text - thumb_func_start sub_80CBBAC -sub_80CBBAC: @ 80CBBAC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080CBC24 @ =gTasks - adds r4, r0 - adds r0, r5, 0 - bl sub_80CBD50 - ldrh r0, [r4, 0x24] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldr r0, _080CBC28 @ =gUnknown_2039A14 - ldr r0, [r0] - bl Free - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl ClearStdWindowAndFrameToTransparent - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl FillWindowPixelBuffer - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl CopyWindowToVram - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CBC24: .4byte gTasks -_080CBC28: .4byte gUnknown_2039A14 - thumb_func_end sub_80CBBAC - - thumb_func_start sub_80CBC2C -sub_80CBC2C: @ 80CBC2C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080CBC54 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x14 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080CBC50 - cmp r0, 0x2 - bne _080CBC50 - movs r0, 0x1 - strh r0, [r1, 0x14] - ldr r0, _080CBC58 @ =sub_80CBC90 - str r0, [r1] -_080CBC50: - pop {r0} - bx r0 - .align 2, 0 -_080CBC54: .4byte gTasks -_080CBC58: .4byte sub_80CBC90 - thumb_func_end sub_80CBC2C - - thumb_func_start sub_80CBC5C -sub_80CBC5C: @ 80CBC5C - push {lr} - ldr r0, _080CBC74 @ =sub_80CBC2C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _080CBC78 - bl EnableBothScriptContexts - b _080CBC88 - .align 2, 0 -_080CBC74: .4byte sub_80CBC2C -_080CBC78: - ldr r0, _080CBC8C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - strh r0, [r1, 0x14] -_080CBC88: - pop {r0} - bx r0 - .align 2, 0 -_080CBC8C: .4byte gTasks - thumb_func_end sub_80CBC5C - - thumb_func_start sub_80CBC90 -sub_80CBC90: @ 80CBC90 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - adds r0, r4, 0 - bl sub_80CBCC0 - ldr r1, _080CBCB8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080CBCBC @ =sub_80CBB28 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CBCB8: .4byte gTasks -_080CBCBC: .4byte sub_80CBB28 - thumb_func_end sub_80CBC90 - - thumb_func_start sub_80CBCC0 -sub_80CBCC0: @ 80CBCC0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080CBD44 @ =gTasks - adds r4, r1, r0 - mov r1, sp - ldr r0, _080CBD48 @ =gUnknown_83F5D1C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r0] - str r0, [r1] - movs r0, 0x8 - ldrsh r1, [r4, r0] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - beq _080CBD3C - mov r2, sp - movs r3, 0x10 - ldrsh r1, [r4, r3] - lsls r1, 2 - movs r5, 0xC - ldrsh r0, [r4, r5] - lsls r0, 3 - adds r1, r0 - movs r3, 0 - strb r1, [r2, 0x1] - mov r1, sp - movs r0, 0x8 - strb r0, [r1, 0x2] - movs r0, 0x10 - ldrsh r1, [r4, r0] - lsls r1, 2 - movs r5, 0xC - ldrsh r0, [r4, r5] - lsls r0, 3 - adds r1, r0 - strb r1, [r2, 0x4] - mov r1, sp - movs r2, 0x12 - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, 0xA - strb r0, [r1, 0x5] - mov r0, sp - strh r3, [r0, 0x6] - mov r2, sp - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x8] - subs r0, r1 - strh r0, [r2, 0x8] - ldr r1, _080CBD4C @ =gUnknown_2039A18 - mov r0, sp - bl AddScrollIndicatorArrowPair - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] -_080CBD3C: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CBD44: .4byte gTasks -_080CBD48: .4byte gUnknown_83F5D1C -_080CBD4C: .4byte gUnknown_2039A18 - thumb_func_end sub_80CBCC0 - - thumb_func_start sub_80CBD50 -sub_80CBD50: @ 80CBD50 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080CBD7C @ =gTasks - adds r2, r1, r0 - movs r0, 0x8 - ldrsh r1, [r2, r0] - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r1, r0 - beq _080CBD76 - ldrh r0, [r2, 0x20] - lsls r0, 24 - lsrs r0, 24 - bl RemoveScrollIndicatorArrowPair -_080CBD76: - pop {r0} - bx r0 - .align 2, 0 -_080CBD7C: .4byte gTasks - thumb_func_end sub_80CBD50 - - thumb_func_start sub_80CBD80 -sub_80CBD80: @ 80CBD80 - push {lr} - movs r0, 0x16 - bl HelpSystem_SetSomeVariable2 - movs r0, 0x8 - bl SetPlayerAvatarTransitionFlags - pop {r0} - bx r0 - thumb_func_end sub_80CBD80 - - thumb_func_start GetStarterPokemon -GetStarterPokemon: @ 80CBD94 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x2 - bls _080CBDA0 - movs r1, 0 -_080CBDA0: - ldr r0, _080CBDAC @ =sStarterMon - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - pop {r1} - bx r1 - .align 2, 0 -_080CBDAC: .4byte sStarterMon - thumb_func_end GetStarterPokemon - - thumb_func_start ScrSpecial_GetStarter -ScrSpecial_GetStarter: @ 80CBDB0 - push {lr} - ldr r0, _080CBDC8 @ =0x00004031 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl GetStarterPokemon - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_080CBDC8: .4byte 0x00004031 - thumb_func_end ScrSpecial_GetStarter - - thumb_func_start sub_80CBDCC -sub_80CBDCC: @ 80CBDCC - push {lr} - ldr r0, _080CBDE4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetSetPokedexFlag - pop {r0} - bx r0 - .align 2, 0 -_080CBDE4: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80CBDCC - - thumb_func_start sub_80CBDE8 -sub_80CBDE8: @ 80CBDE8 - ldr r1, _080CBDF8 @ =gSelectedEventObject - movs r0, 0 - strb r0, [r1] - ldr r1, _080CBDFC @ =gSpecialVar_TextColor - movs r0, 0xFF - strh r0, [r1] - bx lr - .align 2, 0 -_080CBDF8: .4byte gSelectedEventObject -_080CBDFC: .4byte gSpecialVar_TextColor - thumb_func_end sub_80CBDE8 - thumb_func_start ContextNpcGetTextColor ContextNpcGetTextColor: @ 80CBE00 push {lr} diff --git a/data/field_specials.s b/data/field_specials.s index 99179f0a4..3eadee1aa 100644 --- a/data/field_specials.s +++ b/data/field_specials.s @@ -335,33 +335,33 @@ gUnknown_83F5F26:: @ 83F5F26 .2byte 0xffff gUnknown_83F5F50:: @ 83F5F50 - .incbin "baserom.gba", 0x3F5F50, 0x20 - .incbin "baserom.gba", 0x3F5F70, 0x20 - .incbin "baserom.gba", 0x3F5F90, 0x20 - .incbin "baserom.gba", 0x3F5FB0, 0x20 - .incbin "baserom.gba", 0x3F5FD0, 0x20 - .incbin "baserom.gba", 0x3F5FF0, 0x20 - .incbin "baserom.gba", 0x3F6010, 0x20 - .incbin "baserom.gba", 0x3F6030, 0x20 - .incbin "baserom.gba", 0x3F6050, 0x20 - .incbin "baserom.gba", 0x3F6070, 0x20 - .incbin "baserom.gba", 0x3F6090, 0x20 + .incbin "data/field_specials/unk_83F5F50.gbapal" + .incbin "data/field_specials/unk_83F5F70.gbapal" + .incbin "data/field_specials/unk_83F5F90.gbapal" + .incbin "data/field_specials/unk_83F5FB0.gbapal" + .incbin "data/field_specials/unk_83F5FD0.gbapal" + .incbin "data/field_specials/unk_83F5FF0.gbapal" + .incbin "data/field_specials/unk_83F6010.gbapal" + .incbin "data/field_specials/unk_83F6030.gbapal" + .incbin "data/field_specials/unk_83F6050.gbapal" + .incbin "data/field_specials/unk_83F6070.gbapal" + .incbin "data/field_specials/unk_83F6090.gbapal" gUnknown_83F60B0:: @ 83F60B0 - .incbin "baserom.gba", 0x3F60B0, 0x20 + .incbin "data/field_specials/unk_83F60B0.gbapal" gUnknown_83F60D0:: @ 83F60D0 - .incbin "baserom.gba", 0x3F60D0, 0x20 - .incbin "baserom.gba", 0x3F60F0, 0x20 - .incbin "baserom.gba", 0x3F6110, 0x20 - .incbin "baserom.gba", 0x3F6130, 0x20 - .incbin "baserom.gba", 0x3F6150, 0x20 - .incbin "baserom.gba", 0x3F6170, 0x20 - .incbin "baserom.gba", 0x3F6190, 0x20 - .incbin "baserom.gba", 0x3F61B0, 0x20 + .incbin "data/field_specials/unk_83F60D0.gbapal" + .incbin "data/field_specials/unk_83F60F0.gbapal" + .incbin "data/field_specials/unk_83F6110.gbapal" + .incbin "data/field_specials/unk_83F6130.gbapal" + .incbin "data/field_specials/unk_83F6150.gbapal" + .incbin "data/field_specials/unk_83F6170.gbapal" + .incbin "data/field_specials/unk_83F6190.gbapal" + .incbin "data/field_specials/unk_83F61B0.gbapal" gUnknown_83F61D0:: @ 83F61D0 - .incbin "baserom.gba", 0x3F61D0, 0x20 + .incbin "data/field_specials/unk_83F61D0.gbapal" gUnknown_83F61F0:: @ 83F61F0 .incbin "baserom.gba", 0x3F61F0, 0xB diff --git a/data/field_specials/unk_83F5F50.pal b/data/field_specials/unk_83F5F50.pal new file mode 100644 index 000000000..6528f9f75 --- /dev/null +++ b/data/field_specials/unk_83F5F50.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/field_specials/unk_83F5F70.pal b/data/field_specials/unk_83F5F70.pal new file mode 100644 index 000000000..934306488 --- /dev/null +++ b/data/field_specials/unk_83F5F70.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +41 115 205 +82 82 106 diff --git a/data/field_specials/unk_83F5F90.pal b/data/field_specials/unk_83F5F90.pal new file mode 100644 index 000000000..624c69448 --- /dev/null +++ b/data/field_specials/unk_83F5F90.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 82 106 +41 115 205 +131 238 255 +0 41 156 diff --git a/data/field_specials/unk_83F5FB0.pal b/data/field_specials/unk_83F5FB0.pal new file mode 100644 index 000000000..fb3cdebd0 --- /dev/null +++ b/data/field_specials/unk_83F5FB0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +41 115 205 +131 238 255 +82 172 230 +0 65 189 diff --git a/data/field_specials/unk_83F5FD0.pal b/data/field_specials/unk_83F5FD0.pal new file mode 100644 index 000000000..f2c6c78af --- /dev/null +++ b/data/field_specials/unk_83F5FD0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +41 115 205 +131 238 255 +82 172 230 +41 115 205 +41 115 205 diff --git a/data/field_specials/unk_83F5FF0.pal b/data/field_specials/unk_83F5FF0.pal new file mode 100644 index 000000000..3e2c5757a --- /dev/null +++ b/data/field_specials/unk_83F5FF0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +41 115 205 +131 238 255 +82 172 230 +41 115 205 +0 65 189 +82 172 230 diff --git a/data/field_specials/unk_83F6010.pal b/data/field_specials/unk_83F6010.pal new file mode 100644 index 000000000..84e6e811a --- /dev/null +++ b/data/field_specials/unk_83F6010.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +131 238 255 +82 172 230 +41 115 205 +0 65 189 +0 41 156 +131 238 255 diff --git a/data/field_specials/unk_83F6030.pal b/data/field_specials/unk_83F6030.pal new file mode 100644 index 000000000..f49f8ef99 --- /dev/null +++ b/data/field_specials/unk_83F6030.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 172 230 +41 115 205 +0 65 189 +0 41 156 +82 82 106 +90 180 238 diff --git a/data/field_specials/unk_83F6050.pal b/data/field_specials/unk_83F6050.pal new file mode 100644 index 000000000..538ebf789 --- /dev/null +++ b/data/field_specials/unk_83F6050.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +41 115 205 +0 65 189 +0 41 156 +82 82 106 +82 82 106 +41 115 205 diff --git a/data/field_specials/unk_83F6070.pal b/data/field_specials/unk_83F6070.pal new file mode 100644 index 000000000..49b9d85b6 --- /dev/null +++ b/data/field_specials/unk_83F6070.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +0 65 189 +0 41 156 +82 82 106 +82 82 106 +82 82 106 +0 65 189 diff --git a/data/field_specials/unk_83F6090.pal b/data/field_specials/unk_83F6090.pal new file mode 100644 index 000000000..ff81da8b3 --- /dev/null +++ b/data/field_specials/unk_83F6090.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +0 41 156 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +0 41 156 diff --git a/data/field_specials/unk_83F60B0.pal b/data/field_specials/unk_83F60B0.pal new file mode 100644 index 000000000..a0763ff47 --- /dev/null +++ b/data/field_specials/unk_83F60B0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +131 238 255 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +172 172 98 +148 148 74 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/field_specials/unk_83F60D0.pal b/data/field_specials/unk_83F60D0.pal new file mode 100644 index 000000000..6528f9f75 --- /dev/null +++ b/data/field_specials/unk_83F60D0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/field_specials/unk_83F60F0.pal b/data/field_specials/unk_83F60F0.pal new file mode 100644 index 000000000..75dfaa19a --- /dev/null +++ b/data/field_specials/unk_83F60F0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 172 230 +41 115 205 diff --git a/data/field_specials/unk_83F6110.pal b/data/field_specials/unk_83F6110.pal new file mode 100644 index 000000000..092544dec --- /dev/null +++ b/data/field_specials/unk_83F6110.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 82 106 +82 82 106 +82 172 230 +41 115 205 +131 238 255 +82 172 230 diff --git a/data/field_specials/unk_83F6130.pal b/data/field_specials/unk_83F6130.pal new file mode 100644 index 000000000..3b93965ad --- /dev/null +++ b/data/field_specials/unk_83F6130.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 172 230 +41 115 205 +131 238 255 +82 172 230 +82 172 230 +41 115 205 diff --git a/data/field_specials/unk_83F6150.pal b/data/field_specials/unk_83F6150.pal new file mode 100644 index 000000000..be23edc23 --- /dev/null +++ b/data/field_specials/unk_83F6150.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +131 238 255 +82 172 230 +82 172 230 +41 115 205 +41 115 205 +0 65 189 diff --git a/data/field_specials/unk_83F6170.pal b/data/field_specials/unk_83F6170.pal new file mode 100644 index 000000000..788d0bd65 --- /dev/null +++ b/data/field_specials/unk_83F6170.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +82 172 230 +41 115 205 +41 115 205 +0 65 189 +0 65 189 +82 82 106 diff --git a/data/field_specials/unk_83F6190.pal b/data/field_specials/unk_83F6190.pal new file mode 100644 index 000000000..8ca385f0d --- /dev/null +++ b/data/field_specials/unk_83F6190.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +41 115 205 +0 65 189 +0 65 189 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/field_specials/unk_83F61B0.pal b/data/field_specials/unk_83F61B0.pal new file mode 100644 index 000000000..63fe8e97e --- /dev/null +++ b/data/field_specials/unk_83F61B0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +255 74 0 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +255 255 180 +189 189 115 +0 65 189 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/field_specials/unk_83F61D0.pal b/data/field_specials/unk_83F61D0.pal new file mode 100644 index 000000000..a0763ff47 --- /dev/null +++ b/data/field_specials/unk_83F61D0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +82 82 106 +123 123 123 +131 238 255 +255 213 131 +230 164 98 +197 115 74 +164 82 65 +172 172 98 +148 148 74 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 +82 82 106 diff --git a/data/maps/CeruleanCity_House1/scripts.inc b/data/maps/CeruleanCity_House1/scripts.inc index 04577bf37..26995d532 100644 --- a/data/maps/CeruleanCity_House1/scripts.inc +++ b/data/maps/CeruleanCity_House1/scripts.inc @@ -26,7 +26,7 @@ CeruleanCity_House1_EventScript_16A7F0:: @ 816A7F0 EventScript_16A87D:: @ 816A87D message Text_191967 waitmessage - special sub_80CBC5C + special Special_ReturnToListMenu waitstate switch VAR_RESULT case 0, EventScript_16A8FB diff --git a/data/maps/FuchsiaCity/scripts.inc b/data/maps/FuchsiaCity/scripts.inc index d62d5252d..ea921b4d1 100644 --- a/data/maps/FuchsiaCity/scripts.inc +++ b/data/maps/FuchsiaCity/scripts.inc @@ -72,7 +72,7 @@ FuchsiaCity_EventScript_166E07:: @ 8166E07 FuchsiaCity_EventScript_166E1F:: @ 8166E1F lockall setvar VAR_0x8004, SPECIES_CHANSEY - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_CHANSEY, 10, 3 msgbox gUnknown_81807A9 erasemonpic @@ -82,7 +82,7 @@ FuchsiaCity_EventScript_166E1F:: @ 8166E1F FuchsiaCity_EventScript_166E38:: @ 8166E38 lockall setvar VAR_0x8004, SPECIES_VOLTORB - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_VOLTORB, 10, 3 msgbox gUnknown_81807D9 erasemonpic @@ -92,7 +92,7 @@ FuchsiaCity_EventScript_166E38:: @ 8166E38 FuchsiaCity_EventScript_166E51:: @ 8166E51 lockall setvar VAR_0x8004, SPECIES_KANGASKHAN - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_KANGASKHAN, 10, 3 msgbox gUnknown_8180806 erasemonpic @@ -102,7 +102,7 @@ FuchsiaCity_EventScript_166E51:: @ 8166E51 FuchsiaCity_EventScript_166E6A:: @ 8166E6A lockall setvar VAR_0x8004, SPECIES_SLOWPOKE - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_SLOWPOKE, 10, 3 msgbox gUnknown_8180859 erasemonpic @@ -112,7 +112,7 @@ FuchsiaCity_EventScript_166E6A:: @ 8166E6A FuchsiaCity_EventScript_166E83:: @ 8166E83 lockall setvar VAR_0x8004, SPECIES_LAPRAS - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_LAPRAS, 10, 3 msgbox gUnknown_8180887 erasemonpic @@ -124,7 +124,7 @@ FuchsiaCity_EventScript_166E9C:: @ 8166E9C checkflag FLAG_GOT_DOME_FOSSIL goto_if TRUE, EventScript_166EBE setvar VAR_0x8004, SPECIES_KABUTO - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_KABUTO, 10, 3 msgbox gUnknown_81808FA erasemonpic @@ -133,7 +133,7 @@ FuchsiaCity_EventScript_166E9C:: @ 8166E9C EventScript_166EBE:: @ 8166EBE setvar VAR_0x8004, SPECIES_OMANYTE - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_OMANYTE, 10, 3 msgbox gUnknown_81808AE erasemonpic diff --git a/data/maps/Route15_WestEntrance_2F/scripts.inc b/data/maps/Route15_WestEntrance_2F/scripts.inc index 7ec851931..1b491d4e5 100644 --- a/data/maps/Route15_WestEntrance_2F/scripts.inc +++ b/data/maps/Route15_WestEntrance_2F/scripts.inc @@ -9,7 +9,7 @@ Route15_WestEntrance_2F_EventScript_170093:: @ 8170093 waitbuttonpress erasemonpic setvar VAR_0x8004, SPECIES_ARTICUNO - special sub_80CBDCC + special Special_SetSeenMon releaseall end diff --git a/data/maps/Route25_SeaCottage/scripts.inc b/data/maps/Route25_SeaCottage/scripts.inc index b3c8e79ed..76be366f2 100644 --- a/data/maps/Route25_SeaCottage/scripts.inc +++ b/data/maps/Route25_SeaCottage/scripts.inc @@ -263,7 +263,7 @@ EventScript_17082B:: @ 817082B waitbuttonpress erasemonpic setvar VAR_0x8004, SPECIES_EEVEE - special sub_80CBDCC + special Special_SetSeenMon goto EventScript_1707D8 end @@ -272,7 +272,7 @@ EventScript_170840:: @ 8170840 waitbuttonpress erasemonpic setvar VAR_0x8004, SPECIES_FLAREON - special sub_80CBDCC + special Special_SetSeenMon goto EventScript_1707D8 end @@ -281,7 +281,7 @@ EventScript_170855:: @ 8170855 waitbuttonpress erasemonpic setvar VAR_0x8004, SPECIES_JOLTEON - special sub_80CBDCC + special Special_SetSeenMon goto EventScript_1707D8 end @@ -290,7 +290,7 @@ EventScript_17086A:: @ 817086A waitbuttonpress erasemonpic setvar VAR_0x8004, SPECIES_VAPOREON - special sub_80CBDCC + special Special_SetSeenMon goto EventScript_1707D8 end diff --git a/data/maps/SSAnne_2F_Room1/scripts.inc b/data/maps/SSAnne_2F_Room1/scripts.inc index f3dc1f136..9748777c7 100644 --- a/data/maps/SSAnne_2F_Room1/scripts.inc +++ b/data/maps/SSAnne_2F_Room1/scripts.inc @@ -7,7 +7,7 @@ SSAnne_2F_Room1_EventScript_160C97:: @ 8160C97 message Text_173CE3 waitmessage setvar VAR_0x8004, SPECIES_SNORLAX - special sub_80CBDCC + special Special_SetSeenMon drawmonpic SPECIES_SNORLAX, 10, 3 waitbuttonpress erasemonpic diff --git a/data/maps/SeafoamIslands_B4F/scripts.inc b/data/maps/SeafoamIslands_B4F/scripts.inc index 3b618448c..d861d3700 100644 --- a/data/maps/SeafoamIslands_B4F/scripts.inc +++ b/data/maps/SeafoamIslands_B4F/scripts.inc @@ -70,7 +70,7 @@ SeafoamIslands_B4F_MapScript4_1630E7:: @ 81630E7 EventScript_1630F1:: @ 81630F1 turnobject 255, 2 - special sub_80CBD80 + special Special_ForcePlayerToStartSurfing end SeafoamIslands_B4F_MapScript5_1630F9:: @ 81630F9 diff --git a/data/specials.inc b/data/specials.inc index b0eac8922..af5b87dd7 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -354,7 +354,7 @@ gSpecials:: @ 815FD60 def_special sub_807F904 def_special Special_ForcePlayerOntoBike def_special Special_ListMenu - def_special sub_80CBC5C + def_special Special_ReturnToListMenu def_special sub_80CADC4 def_special Special_SetVermilionTrashCans def_special sub_805D1A8 @@ -362,9 +362,9 @@ gSpecials:: @ 815FD60 def_special Special_CheckAddCoins def_special GetDaycarePokemonCount def_special Special_CloseElevatorCurrentFloorWindow - def_special sub_80CBD80 + def_special Special_ForcePlayerToStartSurfing def_special ScrSpecial_GetStarter - def_special sub_80CBDCC + def_special Special_SetSeenMon def_special sub_810C444 def_special sub_80CC7B4 def_special ChangeBoxPokemonNickname diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 1cf5a4e94..13862d6c7 100644 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -169,7 +169,7 @@ #define MAP_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER (32 | (2 << 8)) #define MAP_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER (33 | (2 << 8)) #define MAP_THREE_ISLAND_DUNSPARCE_TUNNEL (34 | (2 << 8)) -#define MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY (35 | (2 << 8)) +#define MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY (35 | (2 << 8)) #define MAP_NAVEL_ROCK_1F (36 | (2 << 8)) #define MAP_NAVEL_ROCK_SUMMIT (37 | (2 << 8)) #define MAP_NAVEL_ROCK_BASE (38 | (2 << 8)) diff --git a/src/field_specials.c b/src/field_specials.c index 7decaee7b..373e7cb05 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -18,7 +18,9 @@ #include "battle_tower.h" #include "field_camera.h" #include "field_map_obj.h" +#include "menu_indicators.h" #include "random.h" +#include "help_system.h" #include "sound.h" #include "text.h" #include "pokemon_storage_system.h" @@ -56,15 +58,18 @@ static void Task_ElevatorShake(u8 taskId); static void AnimateElevatorWindowView(u16 nfloors, bool8 direction); static void Task_AnimateElevatorWindowView(u8 taskId); static void Task_CreateScriptListMenu(u8 taskId); -void sub_80CBA7C(void); -void sub_80CBADC(s32 nothing, bool8 is, struct ListMenu * used); -void sub_80CBB28(u8 taskId); -void sub_80CBBAC(u8 taskId); -void sub_80CBC2C(u8 taskId); -void sub_80CBCC0(u8 taskId); -void sub_80CBD50(u8 taskId); -u16 GetStarterPokemon(u16 starterIdx); - +static void CreateScriptListMenu(void); +static void ScriptListMenuMoveCursorFunction(s32 nothing, bool8 is, struct ListMenu * used); +static void Task_ListMenuHandleInput(u8 taskId); +static void Task_DestroyListMenu(u8 taskId); +static void Task_SuspendListMenu(u8 taskId); +static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId); +static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId); +static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId); +static u16 GetStarterPokemon(u16 starterIdx); + +extern const struct ScrollArrowsTemplate gUnknown_83F5D1C; +extern const u16 sStarterMon[3]; extern const u8 *const gUnknown_83F5BCC[][12]; extern const u8 sSlotMachineIndices[22]; extern const u16 sResortGorgeousDeluxeRewards[6]; @@ -613,10 +618,10 @@ static u16 SampleResortGoregeousMon(void) for (i = 0; i < 100; i++) { species = (Random() % (NUM_SPECIES - 1)) + 1; - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FALSE) == TRUE) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == TRUE) return species; } - while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FALSE) != TRUE) + while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) != TRUE) { if (species == SPECIES_BULBASAUR) species = NUM_SPECIES - 1; @@ -1079,7 +1084,7 @@ static void Task_CreateScriptListMenu(u8 taskId) else gUnknown_2039A18 = 0; gUnknown_2039A14 = AllocZeroed(task->data[1] * sizeof(struct ListMenuItem)); - sub_80CBA7C(); + CreateScriptListMenu(); mwidth = 0; for (i = 0; i < task->data[1]; i++) { @@ -1098,17 +1103,17 @@ static void Task_CreateScriptListMenu(u8 taskId) gUnknown_3005360.totalItems = task->data[1]; gUnknown_3005360.maxShowed = task->data[0]; gUnknown_3005360.windowId = task->data[13]; - sub_80CBCC0(taskId); + Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); task->data[14] = ListMenuInit(&gUnknown_3005360, task->data[7], task->data[8]); PutWindowTilemap(task->data[13]); CopyWindowToVram(task->data[13], 3); - gTasks[taskId].func = sub_80CBB28; + gTasks[taskId].func = Task_ListMenuHandleInput; } -void sub_80CBA7C(void) +static void CreateScriptListMenu(void) { gUnknown_3005360.items = gUnknown_2039A14; - gUnknown_3005360.moveCursorFunc = sub_80CBADC; + gUnknown_3005360.moveCursorFunc = ScriptListMenuMoveCursorFunction; gUnknown_3005360.itemPrintFunc = NULL; gUnknown_3005360.totalItems = 1; gUnknown_3005360.maxShowed = 1; @@ -1127,12 +1132,12 @@ void sub_80CBA7C(void) gUnknown_3005360.cursorKind = 0; } -void sub_80CBADC(s32 nothing, bool8 is, struct ListMenu * used) +static void ScriptListMenuMoveCursorFunction(s32 nothing, bool8 is, struct ListMenu * used) { u8 taskId; struct Task * task; PlaySE(SE_SELECT); - taskId = FindTaskIdByFunc(sub_80CBB28); + taskId = FindTaskIdByFunc(Task_ListMenuHandleInput); if (taskId != 0xFF) { task = &gTasks[taskId]; @@ -1141,12 +1146,14 @@ void sub_80CBADC(s32 nothing, bool8 is, struct ListMenu * used) } } -#ifdef NONMATCHING -// task should be in r6, taskId in r5 -void sub_80CBB28(u8 taskId) +static void Task_ListMenuHandleInput(u8 taskId) { - struct Task * task = &gTasks[taskId]; - s32 input = ListMenu_ProcessInput(task->data[14]); + s32 input; + struct Task * task; + asm("":::"r6", "r4"); // fakematch register allocation + + task = &gTasks[taskId]; + input = ListMenu_ProcessInput(task->data[14]); switch (input) { case -1: @@ -1154,91 +1161,117 @@ void sub_80CBB28(u8 taskId) case -2: gSpecialVar_Result = 0x7F; PlaySE(SE_SELECT); - sub_80CBBAC(taskId); + Task_DestroyListMenu(taskId); break; default: gSpecialVar_Result = input; PlaySE(SE_SELECT); if (task->data[6] == 0 || input == task->data[1] - 1) { - sub_80CBBAC(taskId); + Task_DestroyListMenu(taskId); } else { - sub_80CBD50(taskId); - task->func = sub_80CBC2C; + Task_ListMenuRemoveScrollIndicatorArrowPair(taskId); + task->func = Task_SuspendListMenu; EnableBothScriptContexts(); } break; } } -#else -NAKED -void sub_80CBB28(u8 taskId) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tlsls r0, r5, 2\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tldr r1, _080CBB54 @ =gTasks\n" - "\tadds r6, r0, r1\n" - "\tldrh r0, [r6, 0x24]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tbl ListMenu_ProcessInput\n" - "\tadds r4, r0, 0\n" - "\tmovs r0, 0x2\n" - "\tnegs r0, r0\n" - "\tcmp r4, r0\n" - "\tbeq _080CBB58\n" - "\tadds r0, 0x1\n" - "\tcmp r4, r0\n" - "\tbne _080CBB6C\n" - "\tb _080CBBA2\n" - "\t.align 2, 0\n" - "_080CBB54: .4byte gTasks\n" - "_080CBB58:\n" - "\tldr r1, _080CBB68 @ =gSpecialVar_Result\n" - "\tmovs r0, 0x7F\n" - "\tstrh r0, [r1]\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tb _080CBB88\n" - "\t.align 2, 0\n" - "_080CBB68: .4byte gSpecialVar_Result\n" - "_080CBB6C:\n" - "\tldr r0, _080CBB90 @ =gSpecialVar_Result\n" - "\tstrh r4, [r0]\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tmovs r1, 0x14\n" - "\tldrsh r0, [r6, r1]\n" - "\tcmp r0, 0\n" - "\tbeq _080CBB88\n" - "\tmovs r1, 0xA\n" - "\tldrsh r0, [r6, r1]\n" - "\tsubs r0, 0x1\n" - "\tcmp r4, r0\n" - "\tbne _080CBB94\n" - "_080CBB88:\n" - "\tadds r0, r5, 0\n" - "\tbl sub_80CBBAC\n" - "\tb _080CBBA2\n" - "\t.align 2, 0\n" - "_080CBB90: .4byte gSpecialVar_Result\n" - "_080CBB94:\n" - "\tadds r0, r5, 0\n" - "\tbl sub_80CBD50\n" - "\tldr r0, _080CBBA8 @ =sub_80CBC2C\n" - "\tstr r0, [r6]\n" - "\tbl EnableBothScriptContexts\n" - "_080CBBA2:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_080CBBA8: .4byte sub_80CBC2C"); -} -#endif //NONMATCHING + +static void Task_DestroyListMenu(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + Task_ListMenuRemoveScrollIndicatorArrowPair(taskId); + DestroyListMenuTask(task->data[14], NULL, NULL); + Free(gUnknown_2039A14); + ClearStdWindowAndFrameToTransparent(task->data[13], TRUE); + FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); + ClearWindowTilemap(task->data[13]); + CopyWindowToVram(task->data[13], 2); + RemoveWindow(task->data[13]); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +static void Task_SuspendListMenu(u8 taskId) +{ + switch (gTasks[taskId].data[6]) + { + case 1: + break; + case 2: + gTasks[taskId].data[6] = 1; + gTasks[taskId].func = Task_RedrawScrollArrowsAndWaitInput; + break; + } +} + +void Special_ReturnToListMenu(void) +{ + u8 taskId = FindTaskIdByFunc(Task_SuspendListMenu); + if (taskId == 0xFF) + EnableBothScriptContexts(); + else + gTasks[taskId].data[6]++; +} + +static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId) +{ + ScriptContext2_Enable(); + Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); + gTasks[taskId].func = Task_ListMenuHandleInput; +} + +static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + struct ScrollArrowsTemplate template = gUnknown_83F5D1C; + if (task->data[0] != task->data[1]) + { + template.firstX = 4 * task->data[4] + 8 * task->data[2]; + template.firstY = 8; + template.secondX = 4 * task->data[4] + 8 * task->data[2]; + template.secondY = 8 * task->data[5] + 10; + template.fullyUpThreshold = 0; + template.fullyDownThreshold = task->data[1] - task->data[0]; + task->data[12] = AddScrollIndicatorArrowPair(&template, &gUnknown_2039A18); + } +} + +static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + if (task->data[0] != task->data[1]) + RemoveScrollIndicatorArrowPair(task->data[12]); +} + +void Special_ForcePlayerToStartSurfing(void) +{ + HelpSystem_SetSomeVariable2(22); + SetPlayerAvatarTransitionFlags(8); +} + +static u16 GetStarterPokemon(u16 idx) +{ + if (idx >= NELEMS(sStarterMon)) + idx = 0; + return sStarterMon[idx]; +} + +u16 ScrSpecial_GetStarter(void) +{ + return GetStarterPokemon(VarGet(VAR_STARTER_MON)); +} + +void Special_SetSeenMon(void) +{ + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gSpecialVar_0x8004), 2); +} + +void sub_80CBDE8(void) +{ + gSelectedEventObject = 0; + gSpecialVar_TextColor = 0xFF; +} |