mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
decompile more of pokeblock.s
This commit is contained in:
parent
8ac17e0948
commit
4351676749
@ -463,7 +463,7 @@ _081AAF54:
|
||||
adds r5, r0, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrb r2, [r4, 0x5]
|
||||
lsls r2, 1
|
||||
adds r1, r4, 0
|
||||
@ -719,7 +719,7 @@ _081AB1B2:
|
||||
b _081AB1E4
|
||||
.pool
|
||||
_081AB1CC:
|
||||
bl sub_8122328
|
||||
bl LoadListMenuArrowsGfx
|
||||
ldr r0, [r4]
|
||||
ldr r1, =0x00000834
|
||||
adds r0, r1
|
||||
@ -902,7 +902,7 @@ _081AB30C:
|
||||
cmp r6, r0
|
||||
bcc _081AB30C
|
||||
_081AB34A:
|
||||
ldr r2, =gUnknown_03006310
|
||||
ldr r2, =gMultiuseListMenuTemplate
|
||||
adds r1, r2, 0
|
||||
ldr r0, =gUnknown_08613F9C
|
||||
ldm r0!, {r3-r5}
|
||||
@ -1924,7 +1924,7 @@ bag_menu_inits_lists_menu: @ 81ABBBC
|
||||
bl sub_81ABA88
|
||||
ldrb r0, [r7, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldrh r2, [r4]
|
||||
@ -2133,7 +2133,7 @@ _081ABDCC:
|
||||
ldrb r0, [r6]
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
ldrh r2, [r7]
|
||||
mov r3, r8
|
||||
ldrh r0, [r3]
|
||||
@ -2157,12 +2157,12 @@ _081ABDCC:
|
||||
.pool
|
||||
_081ABE10:
|
||||
ldrb r0, [r6]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r4, r0, 0
|
||||
ldrb r0, [r6]
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
@ -2603,7 +2603,7 @@ _081AC1DC:
|
||||
subs r5, r4, 0x5
|
||||
ldrb r0, [r5, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrb r2, [r5, 0x5]
|
||||
lsls r2, 1
|
||||
adds r1, r4, 0
|
||||
@ -2847,12 +2847,12 @@ sub_81AC3C0: @ 81AC3C0
|
||||
adds r1, r2, r1
|
||||
adds r3, 0x8
|
||||
adds r2, r3
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
b _081AC472
|
||||
.pool
|
||||
_081AC418:
|
||||
ldrb r0, [r4]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r7, r0, 0
|
||||
ldrb r0, [r4]
|
||||
ldr r5, =gUnknown_0203CE58
|
||||
@ -2864,7 +2864,7 @@ _081AC418:
|
||||
adds r4, r5, 0
|
||||
adds r4, 0x8
|
||||
adds r2, r4
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0
|
||||
bl sub_80D4FC8
|
||||
ldrb r0, [r5, 0x5]
|
||||
@ -2989,7 +2989,7 @@ _081AC4F8:
|
||||
_081AC538:
|
||||
ldrb r0, [r5, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldrh r2, [r7]
|
||||
@ -3070,7 +3070,7 @@ sub_81AC590: @ 81AC590
|
||||
_081AC5F2:
|
||||
ldrb r0, [r4, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r6]
|
||||
ldrh r2, [r5]
|
||||
bl ListMenuInit
|
||||
@ -4326,7 +4326,7 @@ Task_ActuallyToss: @ 81AD150
|
||||
bl sub_81ABA88
|
||||
ldrb r0, [r4, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldrh r2, [r7]
|
||||
@ -4388,7 +4388,7 @@ _081AD23A:
|
||||
ldr r0, =gUnknown_0203CE58
|
||||
ldrb r0, [r0, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r6]
|
||||
ldrh r2, [r5]
|
||||
bl ListMenuInit
|
||||
@ -5155,7 +5155,7 @@ sub_81AD8C8: @ 81AD8C8
|
||||
bl sub_81ABA88
|
||||
ldrb r0, [r7, 0x5]
|
||||
bl load_bag_item_list_buffers
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
mov r2, r9
|
||||
ldrh r1, [r2]
|
||||
ldrh r2, [r5]
|
||||
|
@ -94,7 +94,7 @@ sub_81606A0: @ 81606A0
|
||||
ldr r0, =gUnknown_085CEBB8
|
||||
bl LoadSpritePalette
|
||||
bl sub_81610B8
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r4]
|
||||
ldrh r2, [r4, 0x2]
|
||||
bl ListMenuInit
|
||||
@ -151,7 +151,7 @@ sub_8160740: @ 8160740
|
||||
ldr r0, =gUnknown_085CEBB8
|
||||
bl LoadSpritePalette
|
||||
bl sub_81610B8
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r4]
|
||||
ldrh r2, [r4, 0x2]
|
||||
bl ListMenuInit
|
||||
@ -980,7 +980,7 @@ sub_8160F50: @ 8160F50
|
||||
lsls r4, 1
|
||||
adds r0, r4
|
||||
ldrb r0, [r0]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r5, r0, 0
|
||||
ldr r0, [r6]
|
||||
adds r0, r4
|
||||
@ -988,7 +988,7 @@ sub_8160F50: @ 8160F50
|
||||
ldr r4, =gUnknown_0203BC38
|
||||
adds r2, r4, 0x2
|
||||
adds r1, r4, 0
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r5, r0
|
||||
|
32
asm/link.s
32
asm/link.s
@ -18243,7 +18243,7 @@ _08012938:
|
||||
ldrb r0, [r6, 0xF]
|
||||
movs r1, 0
|
||||
bl sub_81973FC
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F015C
|
||||
ldm r1!, {r3,r5,r7}
|
||||
@ -19724,7 +19724,7 @@ _0801360C:
|
||||
ldrb r0, [r6, 0xB]
|
||||
movs r1, 0
|
||||
bl sub_81973FC
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F0204
|
||||
ldm r1!, {r3,r5,r7}
|
||||
@ -19769,7 +19769,7 @@ _080136EA:
|
||||
b _08013A72
|
||||
_080136F2:
|
||||
ldrb r0, [r6, 0xE]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r4, r0, 0
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
@ -21038,7 +21038,7 @@ sub_8014210: @ 8014210
|
||||
adds r6, r0, 0
|
||||
lsls r6, 16
|
||||
lsrs r6, 16
|
||||
bl sp000_heal_pokemon
|
||||
bl HealPlayerParty
|
||||
bl copy_player_party_to_sav1
|
||||
bl copy_bags_and_unk_data_from_save_blocks
|
||||
ldr r5, =gLinkPlayers
|
||||
@ -21406,7 +21406,7 @@ _080145F4:
|
||||
ldr r0, =gBlockSendBuffer
|
||||
movs r1, 0x1
|
||||
bl sub_80143E4
|
||||
bl sp000_heal_pokemon
|
||||
bl HealPlayerParty
|
||||
bl copy_player_party_to_sav1
|
||||
bl copy_bags_and_unk_data_from_save_blocks
|
||||
movs r0, 0x1
|
||||
@ -21419,7 +21419,7 @@ _080145F4:
|
||||
.pool
|
||||
_08014620:
|
||||
bl overworld_free_bg_tilemaps
|
||||
bl sp000_heal_pokemon
|
||||
bl HealPlayerParty
|
||||
bl copy_player_party_to_sav1
|
||||
bl copy_bags_and_unk_data_from_save_blocks
|
||||
ldr r0, =gBlockSendBuffer
|
||||
@ -21435,7 +21435,7 @@ _08014620:
|
||||
.pool
|
||||
_0801464C:
|
||||
bl overworld_free_bg_tilemaps
|
||||
bl sp000_heal_pokemon
|
||||
bl HealPlayerParty
|
||||
bl copy_player_party_to_sav1
|
||||
bl copy_bags_and_unk_data_from_save_blocks
|
||||
ldr r0, =gBlockSendBuffer
|
||||
@ -21969,7 +21969,7 @@ _08014AEC:
|
||||
strb r0, [r5, 0xF]
|
||||
ldrb r0, [r5, 0xF]
|
||||
bl sub_8018784
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F015C
|
||||
ldm r1!, {r3,r4,r6}
|
||||
@ -22501,7 +22501,7 @@ _08014FE8:
|
||||
strb r0, [r7, 0xD]
|
||||
ldrb r0, [r7, 0xB]
|
||||
bl sub_8018784
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F0204
|
||||
ldm r1!, {r3-r5}
|
||||
@ -22549,7 +22549,7 @@ _080150CE:
|
||||
b _080152A0
|
||||
_080150D6:
|
||||
ldrb r0, [r7, 0xE]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r2, r0, 0
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
@ -22874,7 +22874,7 @@ _08015398:
|
||||
strb r0, [r5, 0xB]
|
||||
ldrb r0, [r5, 0xB]
|
||||
bl sub_8018784
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F0204
|
||||
ldm r1!, {r3,r4,r6}
|
||||
@ -22920,7 +22920,7 @@ _08015446:
|
||||
cmp r0, 0
|
||||
beq _08015452
|
||||
ldrb r0, [r5, 0xE]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
_08015452:
|
||||
ldrb r0, [r5, 0x14]
|
||||
cmp r0, 0x78
|
||||
@ -26270,7 +26270,7 @@ _080171DC:
|
||||
ldrb r0, [r5]
|
||||
movs r1, 0
|
||||
bl sub_81973FC
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, [sp, 0x24]
|
||||
ldm r1!, {r3,r4,r6}
|
||||
@ -26295,7 +26295,7 @@ _080171DC:
|
||||
_08017228:
|
||||
mov r3, r9
|
||||
ldrb r0, [r3]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
mov r8, r0
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
@ -26383,7 +26383,7 @@ _080172C8:
|
||||
ldrb r0, [r6]
|
||||
movs r1, 0
|
||||
bl sub_81973FC
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, [sp, 0x24]
|
||||
ldm r1!, {r3,r4,r7}
|
||||
@ -26411,7 +26411,7 @@ _08017314:
|
||||
_0801731C:
|
||||
mov r3, r10
|
||||
ldrb r0, [r3]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r1, r0, 0
|
||||
ldr r0, =gMain
|
||||
ldrh r2, [r0, 0x2E]
|
||||
|
@ -64,7 +64,7 @@ _081AE4B0:
|
||||
ldr r1, [sp, 0x4]
|
||||
bl sub_8098858
|
||||
_081AE4C0:
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, [sp]
|
||||
ldm r1!, {r3-r5}
|
||||
@ -87,7 +87,7 @@ _081AE4C0:
|
||||
.pool
|
||||
_081AE4F4:
|
||||
ldrb r0, [r5, 0x6]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
str r0, [r5]
|
||||
ldr r1, =gMain
|
||||
ldrh r0, [r1, 0x2E]
|
||||
@ -227,9 +227,9 @@ _081AE5F0:
|
||||
bx r1
|
||||
thumb_func_end Unused_ListMenuInit2
|
||||
|
||||
thumb_func_start ListMenuHandleInput
|
||||
@ int ListMenuHandleInput(u8 taskId)
|
||||
ListMenuHandleInput: @ 81AE604
|
||||
thumb_func_start ListMenuHandleInputGetItemId
|
||||
@ int ListMenuHandleInputGetItemId(u8 taskId)
|
||||
ListMenuHandleInputGetItemId: @ 81AE604
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@ -337,7 +337,7 @@ _081AE6BE:
|
||||
_081AE6C2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end ListMenuHandleInput
|
||||
thumb_func_end ListMenuHandleInputGetItemId
|
||||
|
||||
thumb_func_start sub_81AE6C8
|
||||
sub_81AE6C8: @ 81AE6C8
|
||||
@ -557,8 +557,8 @@ _081AE856:
|
||||
.pool
|
||||
thumb_func_end sub_81AE838
|
||||
|
||||
thumb_func_start get_coro_args_x18_x1A
|
||||
get_coro_args_x18_x1A: @ 81AE860
|
||||
thumb_func_start sub_81AE860
|
||||
sub_81AE860: @ 81AE860
|
||||
push {lr}
|
||||
adds r3, r1, 0
|
||||
lsls r0, 24
|
||||
@ -581,7 +581,7 @@ _081AE882:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end get_coro_args_x18_x1A
|
||||
thumb_func_end sub_81AE860
|
||||
|
||||
thumb_func_start ListMenuGetYCoordForPrintingArrowCursor
|
||||
@ u8 ListMenuGetYCoordForPrintingArrowCursor(u8 taskId)
|
||||
|
@ -752,8 +752,8 @@ _08122322:
|
||||
bx r0
|
||||
thumb_func_end sub_8122298
|
||||
|
||||
thumb_func_start sub_8122328
|
||||
sub_8122328: @ 8122328
|
||||
thumb_func_start LoadListMenuArrowsGfx
|
||||
LoadListMenuArrowsGfx: @ 8122328
|
||||
push {lr}
|
||||
ldr r0, =gUnknown_0859F514
|
||||
bl LoadCompressedObjectPic
|
||||
@ -762,7 +762,7 @@ sub_8122328: @ 8122328
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8122328
|
||||
thumb_func_end LoadListMenuArrowsGfx
|
||||
|
||||
thumb_func_start sub_8122344
|
||||
sub_8122344: @ 8122344
|
||||
|
@ -21,7 +21,7 @@ sub_8084620: @ 8084620
|
||||
lsrs r1, 1
|
||||
adds r0, r4, 0
|
||||
bl SetMoney
|
||||
bl sp000_heal_pokemon
|
||||
bl HealPlayerParty
|
||||
bl sub_8084720
|
||||
bl copy_saved_warp3_bank_and_enter_x_to_warp1
|
||||
bl warp_in
|
||||
|
@ -733,7 +733,7 @@ sub_816B430: @ 816B430
|
||||
bl sub_816B4C0
|
||||
bl sub_816BC14
|
||||
bl gpu_pal_allocator_reset__manage_upper_four
|
||||
bl sub_8122328
|
||||
bl LoadListMenuArrowsGfx
|
||||
ldr r0, =gUnknown_0203BCC4
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xCD
|
||||
@ -1013,7 +1013,7 @@ sub_816B674: @ 816B674
|
||||
cmp r0, 0
|
||||
bne _0816B71E
|
||||
ldrb r0, [r4, 0xA]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r6, r0, 0
|
||||
ldrb r0, [r4, 0xA]
|
||||
ldr r7, =gUnknown_0203BCBA
|
||||
@ -1021,7 +1021,7 @@ sub_816B674: @ 816B674
|
||||
mov r8, r1
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r6, r0
|
||||
@ -1820,7 +1820,7 @@ _0816BD58:
|
||||
movs r1, 0x2
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
ldr r4, =gUnknown_03006310
|
||||
ldr r4, =gMultiuseListMenuTemplate
|
||||
adds r1, r4, 0
|
||||
ldr r0, =gUnknown_085DFF44
|
||||
ldm r0!, {r2,r3,r6}
|
||||
@ -2327,7 +2327,7 @@ _0816C186:
|
||||
bl sub_816C110
|
||||
bl sub_816C140
|
||||
bl sub_816BD04
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldr r2, =gUnknown_0203BCB8
|
||||
ldrh r1, [r2, 0x2]
|
||||
ldrh r2, [r2]
|
||||
@ -2476,7 +2476,7 @@ sub_816C30C: @ 816C30C
|
||||
ldr r1, =gUnknown_0203BCBA
|
||||
subs r4, r1, 0x2
|
||||
adds r2, r4, 0
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
ldrh r1, [r4, 0x2]
|
||||
ldrh r0, [r4]
|
||||
adds r1, r0
|
||||
@ -2492,12 +2492,12 @@ sub_816C30C: @ 816C30C
|
||||
.pool
|
||||
_0816C35C:
|
||||
ldrb r0, [r4, 0xA]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r6, r0, 0
|
||||
ldrb r0, [r4, 0xA]
|
||||
ldr r1, =gUnknown_0203BCBA
|
||||
subs r2, r1, 0x2
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r6, r0
|
||||
@ -2691,18 +2691,18 @@ sub_816C4FC: @ 816C4FC
|
||||
ldrb r0, [r4, 0xA]
|
||||
ldr r1, =gUnknown_0203BCBA
|
||||
subs r2, r1, 0x2
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
b _0816C57E
|
||||
.pool
|
||||
_0816C530:
|
||||
ldrb r0, [r4, 0xA]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r6, r0, 0
|
||||
ldrb r0, [r4, 0xA]
|
||||
ldr r1, =gUnknown_0203BCBA
|
||||
subs r4, r1, 0x2
|
||||
adds r2, r4, 0
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
ldr r0, =gUnknown_0203BCC4
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xCD
|
||||
@ -2825,7 +2825,7 @@ _0816C622:
|
||||
adds r0, r2
|
||||
movs r1, 0xFF
|
||||
strb r1, [r0]
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldr r2, =gUnknown_0203BCB8
|
||||
ldrh r1, [r2, 0x2]
|
||||
ldrh r2, [r2]
|
||||
@ -3363,7 +3363,7 @@ sub_816CB04: @ 816CB04
|
||||
bl sub_816C110
|
||||
bl sub_816C140
|
||||
bl sub_816BD04
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r4, 0x2]
|
||||
ldrh r2, [r4]
|
||||
bl ListMenuInit
|
||||
|
2002
asm/pokeblock.s
2002
asm/pokeblock.s
File diff suppressed because it is too large
Load Diff
@ -2460,7 +2460,7 @@ _081C52DC:
|
||||
b _081C5308
|
||||
.pool
|
||||
_081C52F0:
|
||||
bl sub_8122328
|
||||
bl LoadListMenuArrowsGfx
|
||||
ldr r0, [r4]
|
||||
ldr r1, =0x00000984
|
||||
adds r0, r1
|
||||
@ -2559,7 +2559,7 @@ _081C5382:
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
str r0, [r1]
|
||||
ldr r2, =gUnknown_03006310
|
||||
ldr r2, =gMultiuseListMenuTemplate
|
||||
adds r1, r2, 0
|
||||
ldr r0, =gUnknown_0861F2C0
|
||||
ldm r0!, {r4,r6,r7}
|
||||
@ -2918,7 +2918,7 @@ sub_81C56F8: @ 81C56F8
|
||||
lsls r4, 3
|
||||
ldr r0, =gTasks + 0x8
|
||||
adds r4, r0
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldr r2, =gUnknown_0203CF30
|
||||
ldrh r1, [r2, 0x8]
|
||||
ldrh r2, [r2, 0x6]
|
||||
@ -3545,7 +3545,7 @@ _081C5C12:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x8
|
||||
adds r2, r4, 0x6
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
ldrh r1, [r4, 0x8]
|
||||
ldrh r0, [r4, 0x6]
|
||||
adds r1, r0
|
||||
@ -3565,14 +3565,14 @@ _081C5C12:
|
||||
.pool
|
||||
_081C5C5C:
|
||||
ldrb r0, [r7]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r6, r0, 0
|
||||
ldrb r0, [r7]
|
||||
ldr r1, =gUnknown_0203CF38
|
||||
mov r8, r1
|
||||
mov r2, r8
|
||||
subs r2, 0x2
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r6, r0
|
||||
@ -4646,7 +4646,7 @@ sub_81C65CC: @ 81C65CC
|
||||
bl sub_81C5924
|
||||
bl sub_81C59BC
|
||||
bl sub_81C5314
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r6]
|
||||
ldrh r2, [r7]
|
||||
bl ListMenuInit
|
||||
@ -4953,18 +4953,18 @@ sub_81C68B0: @ 81C68B0
|
||||
ldrb r0, [r4]
|
||||
ldr r1, =gUnknown_0203CF38
|
||||
subs r2, r1, 0x2
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
b _081C6940
|
||||
.pool
|
||||
_081C68F8:
|
||||
ldrb r0, [r4]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r6, r0, 0
|
||||
ldrb r0, [r4]
|
||||
ldr r4, =gUnknown_0203CF38
|
||||
subs r2, r4, 0x2
|
||||
adds r1, r4, 0
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0
|
||||
bl sub_81C7028
|
||||
subs r4, 0x8
|
||||
@ -5066,7 +5066,7 @@ _081C69A8:
|
||||
strh r0, [r1, 0x6]
|
||||
_081C69E0:
|
||||
bl sub_81C5314
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r7]
|
||||
mov r3, r8
|
||||
ldrh r2, [r3]
|
||||
@ -5124,7 +5124,7 @@ sub_81C6A14: @ 81C6A14
|
||||
strh r0, [r1, 0x6]
|
||||
_081C6A5E:
|
||||
bl sub_81C5314
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r5]
|
||||
ldrh r2, [r7]
|
||||
bl ListMenuInit
|
||||
|
@ -21921,7 +21921,7 @@ sub_81D1DC0: @ 81D1DC0
|
||||
ldr r7, =gUnknown_0203CF4C
|
||||
ldr r0, =gText_Cancel2
|
||||
mov r12, r0
|
||||
ldr r4, =gUnknown_03006310
|
||||
ldr r4, =gMultiuseListMenuTemplate
|
||||
ldr r1, =gUnknown_0203CF48
|
||||
mov r8, r1
|
||||
ldr r2, =sub_81D1E7C
|
||||
@ -23376,7 +23376,7 @@ sub_81D28C8: @ 81D28C8
|
||||
push {r4-r7,lr}
|
||||
lsls r1, 16
|
||||
lsrs r4, r1, 16
|
||||
ldr r3, =gUnknown_03006310
|
||||
ldr r3, =gMultiuseListMenuTemplate
|
||||
adds r2, r3, 0
|
||||
ldr r1, =gUnknown_08625548
|
||||
ldm r1!, {r5-r7}
|
||||
|
@ -1174,8 +1174,8 @@ _080F917A:
|
||||
bx r1
|
||||
thumb_func_end sub_80F9160
|
||||
|
||||
thumb_func_start sp000_heal_pokemon
|
||||
sp000_heal_pokemon: @ 80F9180
|
||||
thumb_func_start HealPlayerParty
|
||||
HealPlayerParty: @ 80F9180
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@ -1267,7 +1267,7 @@ _080F922C:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sp000_heal_pokemon
|
||||
thumb_func_end HealPlayerParty
|
||||
|
||||
thumb_func_start ScriptGiveMon
|
||||
@ void ScriptGiveMon(s16 species_num, u8 level, int held_item)
|
||||
|
10
asm/shop.s
10
asm/shop.s
@ -409,7 +409,7 @@ _080DFDAC:
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
ldr r0, =gUnknown_03006310
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl ListMenuInit
|
||||
@ -601,7 +601,7 @@ _080DFF78:
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
str r0, [r1, 0x4]
|
||||
ldr r3, =gUnknown_03006310
|
||||
ldr r3, =gMultiuseListMenuTemplate
|
||||
adds r1, r3, 0
|
||||
ldr r0, =gUnknown_08589A48
|
||||
ldm r0!, {r4-r6}
|
||||
@ -627,7 +627,7 @@ _080DFFDC:
|
||||
_080DFFDE:
|
||||
ldr r0, =gUnknown_02039F70
|
||||
ldr r0, [r0]
|
||||
ldr r1, =gUnknown_03006310
|
||||
ldr r1, =gMultiuseListMenuTemplate
|
||||
ldrh r1, [r1, 0xE]
|
||||
ldr r2, =0x00002004
|
||||
adds r0, r2
|
||||
@ -1976,7 +1976,7 @@ Task_BuyMenu: @ 80E0AC8
|
||||
b _080E0C8E
|
||||
_080E0AEA:
|
||||
ldrb r0, [r4, 0xE]
|
||||
bl ListMenuHandleInput
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r5, r0, 0
|
||||
ldrb r0, [r4, 0xE]
|
||||
ldr r7, =gUnknown_02039F70
|
||||
@ -1985,7 +1985,7 @@ _080E0AEA:
|
||||
adds r1, r2, r3
|
||||
subs r3, 0x2
|
||||
adds r2, r3
|
||||
bl get_coro_args_x18_x1A
|
||||
bl sub_81AE860
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r5, r0
|
||||
|
@ -5,15 +5,6 @@
|
||||
|
||||
.section .rodata
|
||||
|
||||
gUnknown_085B2748:: @ 85B2748
|
||||
.incbin "baserom.gba", 0x5b2748, 0x60
|
||||
|
||||
gUnknown_085B27A8:: @ 85B27A8
|
||||
.incbin "baserom.gba", 0x5b27a8, 0x8
|
||||
|
||||
gUnknown_085B27B0:: @ 85B27B0
|
||||
.incbin "baserom.gba", 0x5b27b0, 0x18
|
||||
|
||||
gUnknown_085B27C8:: @ 85B27C8
|
||||
.incbin "baserom.gba", 0x5b27c8, 0x88
|
||||
|
||||
|
@ -1431,7 +1431,7 @@ OldaleTown_PokemonCenter_1F_EventScript_271993:: @ 8271993
|
||||
waitfieldeffect 25
|
||||
applymovement VAR_0x800B, OldaleTown_PokemonCenter_1F_Movement_2725AA
|
||||
waitmovement 0
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
return
|
||||
|
||||
OldaleTown_PokemonCenter_1F_EventScript_2719B1:: @ 82719B1
|
||||
@ -2190,7 +2190,7 @@ SSTidalRooms_EventScript_272083:: @ 8272083
|
||||
fadescreen 1
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
fadescreen 0
|
||||
return
|
||||
|
||||
@ -5129,7 +5129,7 @@ SecretBase_RedCave1_EventScript_276286:: @ 8276286
|
||||
call_if 1, SecretBase_RedCave1_EventScript_2762C1
|
||||
compare_var_to_value VAR_RESULT, 2
|
||||
call_if 1, SecretBase_RedCave1_EventScript_2762C5
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
release
|
||||
end
|
||||
|
||||
|
@ -449,7 +449,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276F60:: @ 8276F60
|
||||
end
|
||||
|
||||
OldaleTown_PokemonCenter_2F_EventScript_276FBD:: @ 8276FBD
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
special copy_player_party_to_sav1
|
||||
special copy_bags_and_unk_data_from_save_blocks
|
||||
copyvar VAR_0x4087, VAR_0x8004
|
||||
@ -1031,7 +1031,7 @@ OldaleTown_PokemonCenter_2F_EventScript_27759F:: @ 827759F
|
||||
goto_eq OldaleTown_PokemonCenter_2F_EventScript_2772EC
|
||||
msgbox OldaleTown_PokemonCenter_2F_Text_27961C, 4
|
||||
closemessage
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 6
|
||||
copyvar VAR_0x4087, VAR_0x8004
|
||||
call OldaleTown_PokemonCenter_2F_EventScript_277BBE
|
||||
|
@ -143,7 +143,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257630:: @ 8257630
|
||||
special sub_81A1780
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
BattleFrontier_BattleArenaBattleRoom_EventScript_2576B0:: @ 82576B0
|
||||
setvar VAR_0x8004, 9
|
||||
@ -430,14 +430,14 @@ FallarborTown_BattleTentBattleRoom_EventScript_257B6C:: @ 8257B6C
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 5
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
waitstate
|
||||
setvar VAR_0x8004, 18
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 21
|
||||
special sub_81A1780
|
||||
return
|
||||
|
@ -90,7 +90,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255D59:: @ 8255D59
|
||||
setvar VAR_0x8004, 8
|
||||
special sub_81A1780
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 3
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_81A5238
|
||||
|
@ -528,7 +528,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 3
|
||||
setvar VAR_0x8005, 0
|
||||
setvar VAR_0x4009, 1
|
||||
@ -537,7 +537,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440
|
||||
setvar VAR_0x4009, 0
|
||||
setvar VAR_0x8004, 17
|
||||
special sub_818E9AC
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 16
|
||||
special sub_818E9AC
|
||||
return
|
||||
|
@ -95,7 +95,7 @@ BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9
|
||||
setvar VAR_0x8006, 1
|
||||
special sub_818E9AC
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
goto BattleFrontier_BattleDomeLobby_EventScript_249991
|
||||
|
||||
BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940
|
||||
@ -118,7 +118,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940
|
||||
setvar VAR_0x8006, 1
|
||||
special sub_818E9AC
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
BattleFrontier_BattleDomeLobby_EventScript_249991:: @ 8249991
|
||||
setvar VAR_0x8004, 13
|
||||
@ -265,7 +265,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249BC2:: @ 8249BC2
|
||||
msgbox BattleFrontier_BattleDomeLobby_Text_24A437, 4
|
||||
closemessage
|
||||
call BattleFrontier_BattleDomeLobby_EventScript_249C6E
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
warp BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR, 255, 23, 6
|
||||
setvar VAR_0x4000, 0
|
||||
waitstate
|
||||
|
@ -249,7 +249,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7
|
||||
special sub_81A1780
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600
|
||||
fadescreen 1
|
||||
setvar VAR_0x8004, 11
|
||||
|
@ -89,7 +89,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AEA7:: @ 825AEA7
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 6
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
@ -225,7 +225,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B0E0:: @ 825B0E0
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 6
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
|
@ -72,7 +72,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259BA5:: @ 8259BA5
|
||||
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_25A22D, 4
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 9
|
||||
special sub_81A1780
|
||||
compare_var_to_value VAR_RESULT, 0
|
||||
|
@ -100,7 +100,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F911:: @ 824F911
|
||||
special sub_81A1780
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
BattleFrontier_BattlePalaceBattleRoom_EventScript_24F98A:: @ 824F98A
|
||||
setvar VAR_0x8004, 9
|
||||
@ -337,14 +337,14 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_24FDF7:: @ 824FDF7
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 4
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
waitstate
|
||||
setvar VAR_0x8004, 18
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 21
|
||||
special sub_81A1780
|
||||
return
|
||||
|
@ -90,7 +90,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D8A1:: @ 824D8A1
|
||||
setvar VAR_0x8004, 8
|
||||
special sub_81A1780
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 7
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8195960
|
||||
|
@ -25,7 +25,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B707:: @ 825B707
|
||||
end
|
||||
|
||||
BattleFrontier_BattlePikeLobby_EventScript_25B710:: @ 825B710
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 27
|
||||
special sub_81A703C
|
||||
lockall
|
||||
@ -77,7 +77,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B78D:: @ 825B78D
|
||||
copyvar VAR_0x8006, VAR_RESULT
|
||||
special sub_81A703C
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 27
|
||||
special sub_81A703C
|
||||
message BattleFrontier_BattlePikeLobby_Text_25C1DF
|
||||
@ -108,7 +108,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B806:: @ 825B806
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A703C
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 27
|
||||
special sub_81A703C
|
||||
setvar VAR_0x8004, 8
|
||||
@ -210,7 +210,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C
|
||||
setvar VAR_0x8004, 5
|
||||
special sub_81A1780
|
||||
call BattleFrontier_BattlePikeLobby_EventScript_25BA94
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
call BattleFrontier_BattlePikeLobby_EventScript_25BB49
|
||||
warpsilent BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR, 255, 6, 7
|
||||
setvar VAR_0x4000, 0
|
||||
|
@ -89,7 +89,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D285:: @ 825D285
|
||||
msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DE3F, 4
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DE94, 4
|
||||
closemessage
|
||||
release
|
||||
@ -257,7 +257,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D50E:: @ 825D50E
|
||||
waitmessage
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DA13, 4
|
||||
closemessage
|
||||
applymovement 1, BattleFrontier_BattlePikeRandomRoom1_Movement_25D798
|
||||
|
@ -90,7 +90,7 @@ BattleFrontier_BattlePyramidTop_EventScript_252B66:: @ 8252B66
|
||||
special sub_81A8E7C
|
||||
setvar VAR_0x8004, 14
|
||||
special sub_81A8E7C
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
warpsilent BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY, 255, 7, 13
|
||||
waitstate
|
||||
end
|
||||
|
@ -70,7 +70,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA
|
||||
special copy_player_party_from_sav1
|
||||
setvar VAR_0x8004, 14
|
||||
special sub_81A8E7C
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
message BattleFrontier_BattlePyramidLobby_Text_2519F8
|
||||
waitmessage
|
||||
playse SE_EXPMAX
|
||||
@ -100,7 +100,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250852:: @ 8250852
|
||||
special copy_player_party_from_sav1
|
||||
setvar VAR_0x8004, 14
|
||||
special sub_81A8E7C
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
lockall
|
||||
message BattleFrontier_BattlePyramidLobby_Text_251B5A
|
||||
waitmessage
|
||||
@ -218,7 +218,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250A21:: @ 8250A21
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
setvar VAR_RESULT, 0
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
warp BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE, 255, 1, 1
|
||||
setvar VAR_0x4000, 0
|
||||
waitstate
|
||||
|
@ -84,7 +84,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F:: @ 8241C2F
|
||||
msgbox BattleFrontier_BattleTowerBattleRoom_Text_242217, 4
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F:: @ 8241C8F
|
||||
setvar VAR_0x8004, 9
|
||||
@ -361,7 +361,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E
|
||||
setvar VAR_0x8005, 6
|
||||
setvar VAR_0x8006, 0
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 0
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
@ -371,7 +371,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E
|
||||
goto_eq BattleFrontier_BattleTowerBattleRoom_EventScript_24215A
|
||||
setvar VAR_0x8004, 18
|
||||
special sub_81A1780
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 21
|
||||
special sub_81A1780
|
||||
|
||||
|
@ -161,7 +161,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121
|
||||
call_if 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249514
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
BattleFrontier_BattleTowerBattleRoom2_EventScript_249143:: @ 8249143
|
||||
setvar VAR_0x8004, 1
|
||||
|
@ -153,7 +153,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E84D:: @ 823E84D
|
||||
setvar VAR_0x8004, 8
|
||||
special sub_81A1780
|
||||
special copy_player_party_from_sav1
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 6
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8161F74
|
||||
|
@ -68,7 +68,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E41:: @ 8243E41
|
||||
applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_2725A6
|
||||
waitmovement 0
|
||||
msgbox BattleFrontier_BattleTowerMultiBattleRoom_Text_244056, 4
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x4001, 1
|
||||
releaseall
|
||||
end
|
||||
|
@ -110,7 +110,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_2009B3:: @ 82009B3
|
||||
special sub_81A1780
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
FallarborTown_BattleTentBattleRoom_EventScript_200A2A:: @ 8200A2A
|
||||
setvar VAR_0x8004, 1
|
||||
|
@ -230,7 +230,7 @@ Route101_EventScript_1EBE16:: @ 81EBE16
|
||||
applymovement 2, Route101_Movement_1EBE8D
|
||||
waitmovement 0
|
||||
msgbox Route101_Text_1EBF12, 4
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setflag FLAG_0x2D0
|
||||
clearflag FLAG_0x2D1
|
||||
setflag FLAG_0x2BC
|
||||
|
@ -54,7 +54,7 @@ SlateportCity_BattleTentBattleRoom_EventScript_2099BE:: @ 82099BE
|
||||
msgbox 0x2021fc4, 4
|
||||
waitmessage
|
||||
closemessage
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
setvar VAR_0x8004, 6
|
||||
setvar VAR_0x8005, 0
|
||||
special sub_8163AC4
|
||||
|
@ -65,7 +65,7 @@ SlateportCity_BattleTentCorridor_EventScript_208EEE:: @ 8208EEE
|
||||
msgbox SlateportCity_BattleTentCorridor_Text_25A22D, 4
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
SlateportCity_BattleTentCorridor_EventScript_208F0D:: @ 8208F0D
|
||||
setvar VAR_0x8004, 1
|
||||
|
@ -78,7 +78,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_20BB00:: @ 820BB00
|
||||
fadescreen 1
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
removeobject 1
|
||||
setflag FLAG_0x384
|
||||
compare_var_to_value VAR_0x40DA, 0
|
||||
|
@ -29,7 +29,7 @@ SootopolisCity_MysteryEventsHouse_B1F_EventScript_227E68:: @ 8227E68
|
||||
compare_var_to_value VAR_RESULT, 2
|
||||
call_if 1, SootopolisCity_MysteryEventsHouse_B1F_EventScript_227EE8
|
||||
closemessage
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
applymovement 255, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF9
|
||||
waitmovement 0
|
||||
special copy_player_party_from_sav1
|
||||
|
@ -97,7 +97,7 @@ TrainerHill_Entrance_EventScript_2681DA:: @ 82681DA
|
||||
applymovement 255, TrainerHill_Entrance_Movement_268381
|
||||
waitmovement 0
|
||||
setvar VAR_0x40D6, 0
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
releaseall
|
||||
|
||||
TrainerHill_Entrance_EventScript_2681EE:: @ 82681EE
|
||||
@ -174,7 +174,7 @@ TrainerHill_Entrance_EventScript_2682C8:: @ 82682C8
|
||||
special sp194_trainer_tower
|
||||
setvar VAR_0x40D6, 1
|
||||
setvar VAR_0x4005, 0
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
msgbox TrainerHill_Entrance_Text_26862A, 4
|
||||
setvar VAR_0x8004, 0
|
||||
special sp194_trainer_tower
|
||||
|
@ -88,7 +88,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023C8:: @ 82023C8
|
||||
special sub_81A1780
|
||||
playfanfare BGM_ME_ASA
|
||||
waitfanfare
|
||||
special sp000_heal_pokemon
|
||||
special HealPlayerParty
|
||||
|
||||
VerdanturfTown_BattleTentBattleRoom_EventScript_20243C:: @ 820243C
|
||||
setvar VAR_0x8004, 1
|
||||
|
@ -53,7 +53,7 @@ EventScript_2A4BAC:: @ 82A4BAC
|
||||
|
||||
EventScript_2A4BD0:: @ 82A4BD0
|
||||
fadescreen 1
|
||||
special sub_8135908
|
||||
special OpenPokeblockCaseOnFeeder
|
||||
waitstate
|
||||
compare_var_to_value VAR_RESULT, 65535
|
||||
goto_if 5, EventScript_2A4BE2
|
||||
|
@ -7,7 +7,7 @@
|
||||
.set __special__, 0
|
||||
.align 2
|
||||
gSpecials:: @ 81DBA64
|
||||
def_special sp000_heal_pokemon
|
||||
def_special HealPlayerParty
|
||||
def_special sub_809D2BC
|
||||
def_special sub_80AF948
|
||||
def_special sub_80AF9F8
|
||||
@ -218,7 +218,7 @@ gSpecials:: @ 81DBA64
|
||||
def_special EnterSafariMode
|
||||
def_special ExitSafariMode
|
||||
def_special GetPokeblockFeederInFront
|
||||
def_special sub_8135908
|
||||
def_special OpenPokeblockCaseOnFeeder
|
||||
def_special sub_813793C
|
||||
def_special sub_8137988
|
||||
def_special sub_8137A0C
|
||||
|
@ -489,11 +489,12 @@ struct RecordMixingDayCareMail
|
||||
bool16 holdsItem[DAYCARE_MON_COUNT];
|
||||
};
|
||||
|
||||
#define MAP_OBJECTS_COUNT 16
|
||||
#define BERRY_TREES_COUNT 128
|
||||
#define FLAGS_COUNT 300
|
||||
#define VARS_COUNT 256
|
||||
#define MAIL_COUNT 16
|
||||
#define POKEBLOCKS_COUNT 40
|
||||
#define MAP_OBJECTS_COUNT 16
|
||||
#define BERRY_TREES_COUNT 128
|
||||
#define FLAGS_COUNT 300
|
||||
#define VARS_COUNT 256
|
||||
#define MAIL_COUNT 16
|
||||
|
||||
enum
|
||||
{
|
||||
@ -586,7 +587,7 @@ struct SaveBlock1
|
||||
/*0x650*/ struct ItemSlot bagPocket_PokeBalls[16];
|
||||
/*0x690*/ struct ItemSlot bagPocket_TMHM[64];
|
||||
/*0x790*/ struct ItemSlot bagPocket_Berries[46];
|
||||
/*0x848*/ struct Pokeblock pokeblocks[40];
|
||||
/*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT];
|
||||
/*0x988*/ u8 seen1[52];
|
||||
/*0x9BC*/ u16 berryBlenderRecords[3];
|
||||
/*0x9C2*/ u8 field_9C2[6];
|
||||
|
@ -1,14 +1,17 @@
|
||||
#ifndef GUARD_LIST_MENU_H
|
||||
#define GUARD_LIST_MENU_H
|
||||
|
||||
#define LIST_NOTHING_CHOSEN -1
|
||||
#define LIST_B_PRESSED -2
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
struct ListMenuItem
|
||||
{
|
||||
const u8 *unk_00;
|
||||
s32 unk_04;
|
||||
const u8 *name;
|
||||
s32 id;
|
||||
};
|
||||
|
||||
struct ListMenu;
|
||||
@ -16,7 +19,7 @@ struct ListMenu;
|
||||
struct ListMenuTemplate
|
||||
{
|
||||
const struct ListMenuItem *items;
|
||||
void (* unk_04)(u32, bool8, struct ListMenu *);
|
||||
void (* moveCursorFunc)(u32, bool8, struct ListMenu *);
|
||||
void (* unk_08)(u8, s32, u8);
|
||||
u16 totalItems;
|
||||
u16 maxShowed;
|
||||
@ -32,9 +35,11 @@ struct ListMenuTemplate
|
||||
u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
|
||||
u32 unk_16_7:1; // x800000
|
||||
u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
|
||||
u32 cursorKind:2; // x40000000, x80000000
|
||||
};
|
||||
|
||||
struct ListMenu {
|
||||
struct ListMenu
|
||||
{
|
||||
struct ListMenuTemplate _template;
|
||||
u16 scrollOffset;
|
||||
u16 selectedRow;
|
||||
@ -44,13 +49,13 @@ struct ListMenu {
|
||||
u8 unk_1F;
|
||||
};
|
||||
|
||||
extern struct ListMenuTemplate gUnknown_03006310;
|
||||
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
|
||||
|
||||
// Exported ROM declarations
|
||||
|
||||
u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
|
||||
s32 ListMenuHandleInput(u8 id);
|
||||
void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
|
||||
void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
|
||||
u8 ListMenuInit(struct ListMenuTemplate *template, u16 cursorPage, u16 cursorPosition);
|
||||
s32 ListMenuHandleInputGetItemId(u8 listTaskId);
|
||||
void sub_81AE860(u8 listTaskId, u16 *a1, u16 *a2);
|
||||
void sub_81AE6C8(u8 listTaskId, u16 *a1, u16 *a2);
|
||||
|
||||
#endif //GUARD_LIST_MENU_H
|
||||
|
@ -32,7 +32,7 @@ void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirs
|
||||
s8 sub_8198C58(void);
|
||||
void do_scheduled_bg_tilemap_copies_to_vram(void);
|
||||
void clear_scheduled_bg_copies_to_vram(void);
|
||||
void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str);
|
||||
void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
|
||||
void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
|
||||
|
||||
#endif // GUARD_MENU_H
|
||||
|
@ -3,7 +3,8 @@
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
struct YesNoFuncTable {
|
||||
struct YesNoFuncTable
|
||||
{
|
||||
TaskFunc yesFunc;
|
||||
TaskFunc noFunc;
|
||||
};
|
||||
@ -20,5 +21,9 @@ void ResetVramOamAndBgCntRegs(void);
|
||||
void SetVBlankHBlankCallbacksToNull(void);
|
||||
void ResetAllBgsCoordinates(void);
|
||||
bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
|
||||
void sub_8122344(void *arg0, u8 arg1);
|
||||
void LoadListMenuArrowsGfx(void);
|
||||
void sub_81223FC(u8 *a0, u8 count, u8 a2);
|
||||
void sub_8122448(u8 *a0, u8 count, u16 x, u16 y);
|
||||
|
||||
#endif //GUARD_MENU_HELPERS_H
|
||||
|
@ -25,6 +25,14 @@ enum
|
||||
PBLOCK_FEEL,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
PBLOCK_CASE_FIELD,
|
||||
PBLOCK_CASE_BATTLE,
|
||||
PBLOCK_CASE_FEEDER,
|
||||
PBLOCK_CASE_GIVE
|
||||
};
|
||||
|
||||
// use pokeblock
|
||||
extern u8 gPokeblockMonId;
|
||||
extern s16 gPokeblockGain;
|
||||
@ -40,8 +48,13 @@ extern const u8 *const gPokeblockNames[];
|
||||
extern const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet;
|
||||
extern const struct CompressedSpritePalette gPokeblockCase_SpritePal;
|
||||
|
||||
void OpenPokeblockCase(u8 caseId, void (*callback)(void));
|
||||
void OpenPokeblockCaseInBattle(void);
|
||||
void OpenPokeblockCaseOnFeeder(void);
|
||||
void ResetPokeblockScrollPositions(void);
|
||||
|
||||
u8 CreatePokeblockCaseSprite(s16 x, s16 y, u8 subpriority);
|
||||
u8 GetPokeblockData(const struct Pokeblock *pokeblock, u8 dataId);
|
||||
s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 dataId);
|
||||
void ClearPokeblocks(void);
|
||||
s8 GetFirstFreePokeblockSlot(void);
|
||||
bool32 AddPokeblock(struct Pokeblock *pokeblock);
|
||||
|
@ -18,6 +18,15 @@ extern const u8 gText_Tough[];
|
||||
extern const u8 gText_Single[];
|
||||
extern const u8 gText_Double[];
|
||||
|
||||
extern const u8 gText_Spicy[];
|
||||
extern const u8 gText_Dry[];
|
||||
extern const u8 gText_Sweet[];
|
||||
extern const u8 gText_Bitter[];
|
||||
extern const u8 gText_Sour[];
|
||||
|
||||
extern const u8 gText_StowCase[];
|
||||
extern const u8 gText_LvVar1[];
|
||||
|
||||
extern const u8 gText_Spicy2[];
|
||||
extern const u8 gText_Dry2[];
|
||||
extern const u8 gText_Sweet2[];
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "pokeball.h"
|
||||
#include "data2.h"
|
||||
#include "pokeblock.h"
|
||||
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u8 gActiveBank;
|
||||
@ -291,13 +292,13 @@ static void CompleteOnSpecialAnimDone(void)
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void OpenPokeblockCase(void)
|
||||
static void SafariOpenPokeblockCase(void)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gBattleBankFunc[gActiveBank] = CompleteWhenChosePokeblock;
|
||||
FreeAllWindowBuffers();
|
||||
sub_81358F4();
|
||||
OpenPokeblockCaseInBattle();
|
||||
}
|
||||
}
|
||||
|
||||
@ -497,7 +498,7 @@ static void SafariHandleChooseItem(void)
|
||||
s32 i;
|
||||
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
gBattleBankFunc[gActiveBank] = OpenPokeblockCase;
|
||||
gBattleBankFunc[gActiveBank] = SafariOpenPokeblockCase;
|
||||
gBankInMenu = gActiveBank;
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ extern const u8 gDaycareText_PlayOther[];
|
||||
|
||||
extern u8 GetCursorSelectionMonId(void);
|
||||
extern u16 ItemIdToBattleMoveId(u16);
|
||||
extern s32 ListMenuHandleInput(u8);
|
||||
extern s32 ListMenuHandleInputGetItemId(u8);
|
||||
extern void sub_81AE6C8(u8, u16*, u16*);
|
||||
extern void sub_819746C(u8, bool8);
|
||||
extern void sub_81973FC(u8, bool8);
|
||||
@ -75,7 +75,7 @@ static const struct ListMenuItem sLevelMenuItems[] =
|
||||
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
|
||||
{
|
||||
.items = sLevelMenuItems,
|
||||
.unk_04 = sub_81AF078,
|
||||
.moveCursorFunc = sub_81AF078,
|
||||
.unk_08 = DaycarePrintMonInfo,
|
||||
.totalItems = 3,
|
||||
.maxShowed = 3,
|
||||
@ -90,7 +90,8 @@ static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
|
||||
.unk_16_0 = TRUE,
|
||||
.spaceBetweenItems = 0,
|
||||
.unk_16_7 = FALSE,
|
||||
.unk_17_0 = 1
|
||||
.unk_17_0 = 1,
|
||||
.cursorKind = 0
|
||||
};
|
||||
|
||||
static const u8 *const sCompatibilityMessages[] =
|
||||
@ -1256,7 +1257,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
|
||||
|
||||
static void Task_HandleDaycareLevelMenuInput(u8 taskId)
|
||||
{
|
||||
u32 var = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
|
||||
u32 var = ListMenuHandleInputGetItemId(gTasks[taskId].tMenuListTaskId);
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
|
@ -791,17 +791,17 @@ void sub_8127330(u8 taskId)
|
||||
for (i = 0; i < sDecorPCBuffer->unk_520 - 1; i ++)
|
||||
{
|
||||
sub_8127454(sDecorPCBuffer->names[i], gCurDecorInventoryItems[i]);
|
||||
sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
|
||||
sDecorPCBuffer->items[i].unk_04 = i;
|
||||
sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
|
||||
sDecorPCBuffer->items[i].id = i;
|
||||
}
|
||||
StringCopy(sDecorPCBuffer->names[i], gText_Cancel);
|
||||
sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
|
||||
sDecorPCBuffer->items[i].unk_04 = -2;
|
||||
gUnknown_03006310 = gUnknown_085A6BD0;
|
||||
gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1];
|
||||
gUnknown_03006310.totalItems = sDecorPCBuffer->unk_520;
|
||||
gUnknown_03006310.items = sDecorPCBuffer->items;
|
||||
gUnknown_03006310.maxShowed = sDecorPCBuffer->unk_521;
|
||||
sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
|
||||
sDecorPCBuffer->items[i].id = -2;
|
||||
gMultiuseListMenuTemplate = gUnknown_085A6BD0;
|
||||
gMultiuseListMenuTemplate.unk_10 = sDecorMenuWindowIndices[1];
|
||||
gMultiuseListMenuTemplate.totalItems = sDecorPCBuffer->unk_520;
|
||||
gMultiuseListMenuTemplate.items = sDecorPCBuffer->items;
|
||||
gMultiuseListMenuTemplate.maxShowed = sDecorPCBuffer->unk_521;
|
||||
}
|
||||
|
||||
void sub_8127454(u8 *dest, u16 decorId)
|
||||
@ -870,7 +870,7 @@ void sub_812759C(u8 taskId)
|
||||
sub_81272C8();
|
||||
sub_81272F8();
|
||||
sub_8127330(taskId);
|
||||
data[13] = ListMenuInit(&gUnknown_03006310, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
|
||||
data[13] = ListMenuInit(&gMultiuseListMenuTemplate, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
|
||||
sub_8127500();
|
||||
}
|
||||
|
||||
@ -888,8 +888,8 @@ void sub_812764C(u8 taskId)
|
||||
data = gTasks[taskId].data;
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
input = ListMenuHandleInput(data[13]);
|
||||
get_coro_args_x18_x1A(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
|
||||
input = ListMenuHandleInputGetItemId(data[13]);
|
||||
sub_81AE860(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
|
||||
switch (input)
|
||||
{
|
||||
case -1:
|
||||
|
@ -33,7 +33,6 @@ extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPo
|
||||
extern void warp_in(void);
|
||||
extern void sub_80BB358(void);
|
||||
extern void ResetBagScrollPositions(void);
|
||||
extern void sub_813624C(void); // clears something pokeblock related
|
||||
extern void ResetPokedex(void);
|
||||
extern void sub_8084400(void);
|
||||
extern void ClearMailData(void);
|
||||
@ -148,7 +147,7 @@ void sub_808447C(void)
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
ResetBagScrollPositions();
|
||||
sub_813624C();
|
||||
ResetPokeblockScrollPositions();
|
||||
}
|
||||
|
||||
void NewGameInitData(void)
|
||||
|
817
src/pokeblock.c
817
src/pokeblock.c
@ -8,6 +8,59 @@
|
||||
#include "menu_helpers.h"
|
||||
#include "pokemon.h"
|
||||
#include "graphics.h"
|
||||
#include "malloc.h"
|
||||
#include "main.h"
|
||||
#include "battle.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "palette.h"
|
||||
#include "unknown_task.h"
|
||||
#include "list_menu.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "decompress.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item.h"
|
||||
#include "items.h"
|
||||
#include "string_util.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "berry.h"
|
||||
#include "menu_indicators.h"
|
||||
#include "event_data.h"
|
||||
|
||||
#define FIELD_E75_COUNT 7
|
||||
|
||||
struct PokeblockMenuStruct
|
||||
{
|
||||
u8 tilemap[0x800];
|
||||
void (*debugCallback)(void);
|
||||
const u8 *pokeblockOptions;
|
||||
u8 optionsNo;
|
||||
u8 caseId;
|
||||
u8 itemsNo;
|
||||
u8 maxShowed;
|
||||
struct ListMenuItem items[POKEBLOCKS_COUNT + 1];
|
||||
u8 menuItemsStrings[POKEBLOCKS_COUNT + 1][0x20]; // + 1 because of STOW CASE item
|
||||
u8 pokeblockCaseSpriteId;
|
||||
u8 field_E75[FIELD_E75_COUNT];
|
||||
u8 unkTaskId;
|
||||
bool8 isSwapping;
|
||||
s16 gfxState;
|
||||
u8 field_E80;
|
||||
u8 field_E81;
|
||||
u8 field_E82;
|
||||
u8 field_E83;
|
||||
u8 field_E84;
|
||||
u8 field_E85;
|
||||
u8 field_E86;
|
||||
u8 field_E87;
|
||||
};
|
||||
|
||||
struct PokeblockSavedData
|
||||
{
|
||||
void (*callback)(void);
|
||||
u16 lastItemPos;
|
||||
u16 lastItemPage;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
@ -19,7 +72,33 @@ enum
|
||||
PKBL_GIVE_TO_LADY
|
||||
};
|
||||
|
||||
extern u16 gSpecialVar_ItemId;
|
||||
extern void (*gFieldCallback)(void);
|
||||
|
||||
extern const u16 gUnknown_0860F074[];
|
||||
|
||||
extern void c2_exit_to_overworld_2_switch(void);
|
||||
extern bool8 sub_81221EC(void);
|
||||
extern void sub_809882C(u8, u16, u8);
|
||||
extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
|
||||
extern void sub_80AF168(void);
|
||||
|
||||
// this file's functions
|
||||
void CB2_InitPokeblockMenu(void);
|
||||
bool8 InitPokeblockMenu(void);
|
||||
static bool8 LoadPokeblockMenuGfx(void);
|
||||
static void HandleInitBackgrounds(void);
|
||||
static void HandleInitWindows(void);
|
||||
void SetMenuItemsCountAndMaxShowed(void);
|
||||
void sub_81362E0(void);
|
||||
void sub_8136344(void);
|
||||
void HandlePokeblockListMenuItems(void);
|
||||
void sub_81363BC(void);
|
||||
static void MovePokeblockMenuCursor(u32 pkblId, bool8 arg1, struct ListMenu *arg2);
|
||||
static void PutPokeblockInfoText(void);
|
||||
void HandlePokeblockMenuCursor(u16 cursorPos, u16 arg1);
|
||||
static void PutPokeblockListMenuString(u8 *dst, u16 pkblId);
|
||||
void Task_HandlePokeblockMenuInput(u8 taskId);
|
||||
void PokeblockAction_UseOnField(u8 taskId);
|
||||
void PokeblockAction_Toss(u8 taskId);
|
||||
void PokeblockAction_Cancel(u8 taskId);
|
||||
@ -28,6 +107,16 @@ void PokeblockAction_UseOnPokeblockFeeder(u8 taskId);
|
||||
void PokeblockAction_GiveToContestLady(u8 taskId);
|
||||
void TossPokeblockChoice_Yes(u8 taskId);
|
||||
void TossPokeblockChoice_No(u8 taskId);
|
||||
void Task_FreeDataAndExitPokeblockCase(u8 taskId);
|
||||
void PutPokeblockOptionsWindow(u8 taskId);
|
||||
static void Task_HandlePokeblocksSwapInput(u8 taskId);
|
||||
static void sub_8136470(struct Sprite *sprite);
|
||||
static void sub_8135FCC(s32 pkblId);
|
||||
void HandlePokeblocksSwap(u8 taskId, bool8 noSwap);
|
||||
|
||||
// ram variables
|
||||
EWRAM_DATA struct PokeblockSavedData sSavedPokeblockData = {0};
|
||||
EWRAM_DATA struct PokeblockMenuStruct *sPokeblockMenu = NULL;
|
||||
|
||||
// const rom data
|
||||
const s8 gPokeblockFlavorCompatibilityTable[] =
|
||||
@ -60,7 +149,7 @@ const s8 gPokeblockFlavorCompatibilityTable[] =
|
||||
0, 0, 0, 0, 0 // Quirky
|
||||
};
|
||||
|
||||
const struct BgTemplate gUnknown_085B2620[] =
|
||||
static const struct BgTemplate sBgTemplatesForPokeblockMenu[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
@ -181,7 +270,7 @@ const struct CompressedSpritePalette gPokeblockCase_SpritePal =
|
||||
gMenuPokeblockDevice_Pal, GFX_TAG_POKEBLOCK_CASE
|
||||
};
|
||||
|
||||
const struct SpriteTemplate sSpriteTemplate_PokeblockCase =
|
||||
static const struct SpriteTemplate sSpriteTemplate_PokeblockCase =
|
||||
{
|
||||
GFX_TAG_POKEBLOCK_CASE,
|
||||
GFX_TAG_POKEBLOCK_CASE,
|
||||
@ -202,3 +291,727 @@ const struct Pokeblock sFavoritePokeblocksTable[] =
|
||||
{ PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20},
|
||||
{ PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
|
||||
{
|
||||
{0, 2, 1, 9, 2, 0xF, 0x1E},
|
||||
{0, 0xF, 1, 0xE, 0x12, 0xF, 0x30},
|
||||
{0, 2, 0xD, 5, 2, 0xF, 0x12C},
|
||||
{0, 2, 0xF, 5, 2, 0xF, 0x136},
|
||||
{0, 2, 0x11, 5, 2, 0xF, 0x140},
|
||||
{0, 8, 0xD, 5, 2, 0xF, 0x14A},
|
||||
{0, 8, 0xF, 5, 2, 0xF, 0x154},
|
||||
{0, 0xB, 0x11, 2, 2, 0xF, 0x15E},
|
||||
{1, 7, 5, 6, 6, 0xF, 0x162},
|
||||
{1, 7, 7, 6, 4, 0xF, 0x186},
|
||||
{1, 2, 0xF, 0x1B, 4, 0xF, 0x19E},
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
const struct WindowTemplate gUnknown_085B27A8[] = {1, 0x15, 9, 5, 4, 0xF, 0x20A};
|
||||
|
||||
static const struct ListMenuTemplate sPokeblockListMenuTemplate =
|
||||
{
|
||||
.items = NULL,
|
||||
.moveCursorFunc = MovePokeblockMenuCursor,
|
||||
.unk_08 = NULL,
|
||||
.totalItems = 0,
|
||||
.maxShowed = 0,
|
||||
.unk_10 = 1,
|
||||
.unk_11 = 0,
|
||||
.unk_12 = 1,
|
||||
.cursor_Y = 0,
|
||||
.upText_Y = 1,
|
||||
.cursorColor = 2,
|
||||
.fillColor = 0,
|
||||
.cursorShadowColor = 3,
|
||||
.unk_16_0 = FALSE,
|
||||
.spaceBetweenItems = 32,
|
||||
.unk_16_7 = FALSE,
|
||||
.unk_17_0 = 1,
|
||||
.cursorKind = 1
|
||||
};
|
||||
|
||||
// code
|
||||
void OpenPokeblockCase(u8 caseId, void (*callback)(void))
|
||||
{
|
||||
sPokeblockMenu = Alloc(sizeof(*sPokeblockMenu));
|
||||
sPokeblockMenu->caseId = caseId;
|
||||
sPokeblockMenu->debugCallback = NULL;
|
||||
sPokeblockMenu->unkTaskId = 0xFF;
|
||||
sPokeblockMenu->isSwapping = FALSE;
|
||||
sSavedPokeblockData.callback = callback;
|
||||
|
||||
switch (sPokeblockMenu->caseId)
|
||||
{
|
||||
case PBLOCK_CASE_BATTLE:
|
||||
sPokeblockMenu->pokeblockOptions = sActionsInBattle;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsInBattle);
|
||||
break;
|
||||
case PBLOCK_CASE_FEEDER:
|
||||
sPokeblockMenu->pokeblockOptions = sActionsOnPokeblockFeeder;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnPokeblockFeeder);
|
||||
break;
|
||||
case PBLOCK_CASE_GIVE:
|
||||
sPokeblockMenu->pokeblockOptions = sActionsWhenGivingToLady;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady);
|
||||
break;
|
||||
default:
|
||||
sPokeblockMenu->pokeblockOptions = sActionsOnField;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField);
|
||||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(CB2_InitPokeblockMenu);
|
||||
}
|
||||
|
||||
void OpenPokeblockCaseInBattle(void)
|
||||
{
|
||||
OpenPokeblockCase(PBLOCK_CASE_BATTLE, SetCB2ToReshowScreenAfterMenu2);
|
||||
}
|
||||
|
||||
void OpenPokeblockCaseOnFeeder(void)
|
||||
{
|
||||
OpenPokeblockCase(PBLOCK_CASE_FEEDER, c2_exit_to_overworld_2_switch);
|
||||
}
|
||||
|
||||
static void CB2_PokeblockMenu(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
do_scheduled_bg_tilemap_copies_to_vram();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void VBlankCB_PokeblockMenu(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void CB2_InitPokeblockMenu(void)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (sub_81221EC() == TRUE)
|
||||
break;
|
||||
if (InitPokeblockMenu() == TRUE)
|
||||
break;
|
||||
if (sub_81221AC() == TRUE)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 InitPokeblockMenu(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
SetVBlankHBlankCallbacksToNull();
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
remove_some_task();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
FreeAllSpritePalettes();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
ResetPaletteFade();
|
||||
gPaletteFade.bufferTransferDisabled = 1;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
ResetSpriteData();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 5:
|
||||
if (sPokeblockMenu->caseId != PBLOCK_CASE_BATTLE)
|
||||
ResetTasks();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
HandleInitBackgrounds();
|
||||
sPokeblockMenu->gfxState = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
if (!LoadPokeblockMenuGfx())
|
||||
return FALSE;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 8:
|
||||
SetMenuItemsCountAndMaxShowed();
|
||||
sub_81362E0();
|
||||
sub_8136344();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 9:
|
||||
sPokeblockMenu->pokeblockCaseSpriteId = CreatePokeblockCaseSprite(56, 64, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 10:
|
||||
sub_8122344(&sPokeblockMenu->field_E75, FIELD_E75_COUNT);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 11:
|
||||
HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 12:
|
||||
HandleInitWindows();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 13:
|
||||
HandlePokeblockListMenuItems();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 14:
|
||||
sub_81363BC();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 15:
|
||||
taskId = CreateTask(Task_HandlePokeblockMenuInput, 0);
|
||||
gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.lastItemPage, sSavedPokeblockData.lastItemPos);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 16:
|
||||
PutPokeblockInfoText();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 17:
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 18:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
default:
|
||||
SetVBlankCallback(VBlankCB_PokeblockMenu);
|
||||
SetMainCallback2(CB2_PokeblockMenu);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void HandleInitBackgrounds(void)
|
||||
{
|
||||
ResetVramOamAndBgCntRegs();
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, sBgTemplatesForPokeblockMenu, ARRAY_COUNT(sBgTemplatesForPokeblockMenu));
|
||||
SetBgTilemapBuffer(2, sPokeblockMenu->tilemap);
|
||||
ResetAllBgsCoordinates();
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
ShowBg(2);
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
}
|
||||
|
||||
static bool8 LoadPokeblockMenuGfx(void)
|
||||
{
|
||||
switch (sPokeblockMenu->gfxState)
|
||||
{
|
||||
case 0:
|
||||
reset_temp_tile_data_buffers();
|
||||
decompress_and_copy_tile_data_to_vram(2, gMenuPokeblock_Gfx, 0, 0, 0);
|
||||
sPokeblockMenu->gfxState++;
|
||||
break;
|
||||
case 1:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
LZDecompressWram(gMenuPokeblock_Tilemap, sPokeblockMenu->tilemap);
|
||||
sPokeblockMenu->gfxState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xC0);
|
||||
sPokeblockMenu->gfxState++;
|
||||
break;
|
||||
case 3:
|
||||
LoadCompressedObjectPic(&gPokeblockCase_SpriteSheet);
|
||||
sPokeblockMenu->gfxState++;
|
||||
break;
|
||||
case 4:
|
||||
LoadCompressedObjectPalette(&gPokeblockCase_SpritePal);
|
||||
sPokeblockMenu->gfxState++;
|
||||
break;
|
||||
case 5:
|
||||
LoadListMenuArrowsGfx();
|
||||
sPokeblockMenu->gfxState = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void HandleInitWindows(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
InitWindows(sWindowTemplatesForPokeblockMenu);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 1, 0xE0);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0xA, 0xD0);
|
||||
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++)
|
||||
{
|
||||
FillWindowPixelBuffer(i, 0);
|
||||
}
|
||||
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
}
|
||||
|
||||
void PrintOnPokeblockWindow(u8 windowId, const u8 *string, s32 x)
|
||||
{
|
||||
AddTextPrinterParametrized2(windowId, 1, x, 1, 0, 0, &sTextColorInPokeblockMenu, 0, string);
|
||||
}
|
||||
|
||||
static void PutPokeblockInfoText(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
const u8 *itemName = ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name;
|
||||
PrintOnPokeblockWindow(0, itemName, GetStringCenterAlignXOffset(1, itemName, 0x48));
|
||||
|
||||
PrintOnPokeblockWindow(2, gText_Spicy, 0);
|
||||
PrintOnPokeblockWindow(3, gText_Dry, 0);
|
||||
PrintOnPokeblockWindow(4, gText_Sweet, 0);
|
||||
PrintOnPokeblockWindow(5, gText_Bitter, 0);
|
||||
PrintOnPokeblockWindow(6, gText_Sour, 0);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
PutWindowTilemap(i);
|
||||
}
|
||||
}
|
||||
|
||||
void HandlePokeblockListMenuItems(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < sPokeblockMenu->itemsNo - 1; i++)
|
||||
{
|
||||
PutPokeblockListMenuString(sPokeblockMenu->menuItemsStrings[i], i);
|
||||
sPokeblockMenu->items[i].name = sPokeblockMenu->menuItemsStrings[i];
|
||||
sPokeblockMenu->items[i].id = i;
|
||||
}
|
||||
|
||||
StringCopy(sPokeblockMenu->menuItemsStrings[i], gText_StowCase);
|
||||
sPokeblockMenu->items[i].name = sPokeblockMenu->menuItemsStrings[i];
|
||||
sPokeblockMenu->items[i].id = LIST_B_PRESSED;
|
||||
|
||||
gMultiuseListMenuTemplate = sPokeblockListMenuTemplate;
|
||||
gMultiuseListMenuTemplate.unk_17_0 = 7;
|
||||
gMultiuseListMenuTemplate.totalItems = sPokeblockMenu->itemsNo;
|
||||
gMultiuseListMenuTemplate.items = sPokeblockMenu->items;
|
||||
gMultiuseListMenuTemplate.maxShowed = sPokeblockMenu->maxShowed;
|
||||
}
|
||||
|
||||
static void PutPokeblockListMenuString(u8 *dst, u16 pkblId)
|
||||
{
|
||||
struct Pokeblock *pkblock = &gSaveBlock1Ptr->pokeblocks[pkblId];
|
||||
u8 *txtPtr = StringCopy(dst, gPokeblockNames[pkblock->color]);
|
||||
|
||||
*(txtPtr++) = EXT_CTRL_CODE_BEGIN;
|
||||
*(txtPtr++) = 0x12;
|
||||
*(txtPtr++) = 0x57;
|
||||
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetHighestPokeblocksFlavorLevel(pkblock), STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
StringExpandPlaceholders(txtPtr, gText_LvVar1);
|
||||
}
|
||||
|
||||
static void MovePokeblockMenuCursor(u32 pkblId, bool8 arg1, struct ListMenu *arg2)
|
||||
{
|
||||
if (arg1 != TRUE)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
gSprites[sPokeblockMenu->pokeblockCaseSpriteId].callback = sub_8136470;
|
||||
}
|
||||
|
||||
if (!sPokeblockMenu->isSwapping)
|
||||
sub_8135FCC(pkblId);
|
||||
}
|
||||
|
||||
static void sub_8135FCC(s32 pkblId)
|
||||
{
|
||||
u8 i;
|
||||
struct Pokeblock *pokeblock;
|
||||
u16 rectTilemapSrc[2];
|
||||
|
||||
FillWindowPixelBuffer(7, 0);
|
||||
|
||||
if (pkblId != LIST_B_PRESSED)
|
||||
{
|
||||
pokeblock = &gSaveBlock1Ptr->pokeblocks[pkblId];
|
||||
rectTilemapSrc[0] = 0x17;
|
||||
rectTilemapSrc[1] = 0x18;
|
||||
for (i = 0; i < FLAVOR_COUNT; i++)
|
||||
{
|
||||
if (GetPokeblockData(pokeblock, PBLOCK_SPICY + i) > 0)
|
||||
{
|
||||
rectTilemapSrc[0] = (i << 0xC) + 0x17;
|
||||
rectTilemapSrc[1] = (i << 0xC) + 0x18;
|
||||
}
|
||||
else
|
||||
{
|
||||
rectTilemapSrc[0] = 0xF;
|
||||
rectTilemapSrc[1] = 0xF;
|
||||
}
|
||||
CopyToBgTilemapBufferRect(2, rectTilemapSrc, (i / 3 * 6) + 1, (i % 3 * 2) + 13, 1, 2);
|
||||
}
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetPokeblocksFeel(pokeblock), STR_CONV_MODE_RIGHT_ALIGN, 2);
|
||||
PrintOnPokeblockWindow(7, gStringVar1, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
rectTilemapSrc[0] = 0xF;
|
||||
rectTilemapSrc[1] = 0xF;
|
||||
|
||||
for (i = 0; i < FLAVOR_COUNT; i++)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, rectTilemapSrc, (i / 3 * 6) + 1, (i % 3 * 2) + 13, 1, 2);
|
||||
}
|
||||
CopyWindowToVram(7, 2);
|
||||
}
|
||||
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
|
||||
void HandlePokeblockMenuCursor(u16 cursorPos, u16 arg1)
|
||||
{
|
||||
FillBgTilemapBufferRect_Palette0(2, arg1, 0xF, (cursorPos * 2) + 1, 0xE, 2);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
|
||||
void CompactPokeblockSlots(void)
|
||||
{
|
||||
u16 i, j;
|
||||
|
||||
for (i = 0; i < POKEBLOCKS_COUNT - 1; i++)
|
||||
{
|
||||
for (j = i + 1; j < POKEBLOCKS_COUNT; j++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->pokeblocks[i].color == 0)
|
||||
{
|
||||
struct Pokeblock temp = gSaveBlock1Ptr->pokeblocks[i];
|
||||
gSaveBlock1Ptr->pokeblocks[i] = gSaveBlock1Ptr->pokeblocks[j];
|
||||
gSaveBlock1Ptr->pokeblocks[j] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SwapSortPokeblocksInternalData(u32 id1, u32 id2)
|
||||
{
|
||||
s16 i, count;
|
||||
struct Pokeblock *pokeblocks = gSaveBlock1Ptr->pokeblocks;
|
||||
struct Pokeblock *copyPokeblock1;
|
||||
|
||||
if (id1 == id2)
|
||||
return;
|
||||
|
||||
copyPokeblock1 = Alloc(sizeof(struct Pokeblock));
|
||||
*copyPokeblock1 = pokeblocks[id1];
|
||||
|
||||
if (id2 > id1)
|
||||
{
|
||||
id2--;
|
||||
for (count = id2, i = id1; i < count; i++)
|
||||
pokeblocks[i] = pokeblocks[i + 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
for (count = id2, i = id1; i > count; i--)
|
||||
pokeblocks[i] = pokeblocks[i - 1];
|
||||
}
|
||||
|
||||
pokeblocks[id2] = *copyPokeblock1;
|
||||
Free(copyPokeblock1);
|
||||
}
|
||||
|
||||
void ResetPokeblockScrollPositions(void)
|
||||
{
|
||||
sSavedPokeblockData.lastItemPos = 0;
|
||||
sSavedPokeblockData.lastItemPage = 0;
|
||||
}
|
||||
|
||||
void SetMenuItemsCountAndMaxShowed(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
CompactPokeblockSlots();
|
||||
|
||||
for (sPokeblockMenu->itemsNo = 0, i = 0; i < POKEBLOCKS_COUNT; i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->pokeblocks[i].color != 0)
|
||||
sPokeblockMenu->itemsNo++;
|
||||
}
|
||||
|
||||
sPokeblockMenu->itemsNo++; // STOW CASE menu item
|
||||
|
||||
if (sPokeblockMenu->itemsNo > 9)
|
||||
sPokeblockMenu->maxShowed = 9;
|
||||
else
|
||||
sPokeblockMenu->maxShowed = sPokeblockMenu->itemsNo;
|
||||
}
|
||||
|
||||
void sub_81362E0(void)
|
||||
{
|
||||
if (sSavedPokeblockData.lastItemPage != 0)
|
||||
{
|
||||
if (sSavedPokeblockData.lastItemPage + sPokeblockMenu->maxShowed > sPokeblockMenu->itemsNo)
|
||||
sSavedPokeblockData.lastItemPage = sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed;
|
||||
}
|
||||
|
||||
if (sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos >= sPokeblockMenu->itemsNo)
|
||||
{
|
||||
if (sPokeblockMenu->itemsNo == 0)
|
||||
sSavedPokeblockData.lastItemPos = 0;
|
||||
else
|
||||
sSavedPokeblockData.lastItemPos = sPokeblockMenu->itemsNo - 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136344(void)
|
||||
{
|
||||
if (sSavedPokeblockData.lastItemPos > 4)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0;
|
||||
i < sSavedPokeblockData.lastItemPos - 4 && sSavedPokeblockData.lastItemPage + sPokeblockMenu->maxShowed != sPokeblockMenu->itemsNo;
|
||||
sSavedPokeblockData.lastItemPos--, sSavedPokeblockData.lastItemPage++, i++);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81363BC(void)
|
||||
{
|
||||
if (sPokeblockMenu->unkTaskId == 0xFF)
|
||||
{
|
||||
sPokeblockMenu->unkTaskId = AddScrollIndicatorArrowPairParametrized(2, 0xB0, 8, 0x98, sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed,
|
||||
0x456, 0x456, &sSavedPokeblockData.lastItemPage);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136418(void)
|
||||
{
|
||||
if (sPokeblockMenu->unkTaskId != 0xFF)
|
||||
{
|
||||
RemoveScrollIndicatorArrowPair(sPokeblockMenu->unkTaskId);
|
||||
sPokeblockMenu->unkTaskId = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
u8 CreatePokeblockCaseSprite(s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
return CreateSprite(&sSpriteTemplate_PokeblockCase, x, y, subpriority);
|
||||
}
|
||||
|
||||
static void sub_8136470(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] > 1)
|
||||
sprite->data[0] = 0;
|
||||
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->oam.affineMode = 1;
|
||||
sprite->affineAnims = sSpriteAffineAnimTable_85B26F0;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
sprite->data[0] = 1;
|
||||
sprite->data[1] = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (++sprite->data[1] > 11)
|
||||
{
|
||||
sprite->oam.affineMode = 0;
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void FadePaletteAndSetTaskToClosePokeblockCase(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_FreeDataAndExitPokeblockCase;
|
||||
}
|
||||
|
||||
void Task_FreeDataAndExitPokeblockCase(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (sPokeblockMenu->caseId == PBLOCK_CASE_FEEDER || sPokeblockMenu->caseId == PBLOCK_CASE_GIVE)
|
||||
gFieldCallback = sub_80AF168;
|
||||
|
||||
sub_81AE6C8(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
sub_8136418();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
|
||||
if (sPokeblockMenu->debugCallback != NULL)
|
||||
SetMainCallback2(sPokeblockMenu->debugCallback);
|
||||
else
|
||||
SetMainCallback2(sSavedPokeblockData.callback);
|
||||
|
||||
FreeAllWindowBuffers();
|
||||
Free(sPokeblockMenu);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void Task_HandlePokeblockMenuInput(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (!gPaletteFade.active && sub_81221EC() != TRUE)
|
||||
{
|
||||
if (gMain.newKeys & SELECT_BUTTON)
|
||||
{
|
||||
sub_81AE860(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
if (sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos != sPokeblockMenu->itemsNo - 1)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x2005);
|
||||
data[2] = sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos;
|
||||
sPokeblockMenu->isSwapping = TRUE;
|
||||
gTasks[taskId].func = Task_HandlePokeblocksSwapInput;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 oldPosition = sSavedPokeblockData.lastItemPos;
|
||||
s32 itemId = ListMenuHandleInputGetItemId(data[0]);
|
||||
|
||||
sub_81AE860(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
if (oldPosition != sSavedPokeblockData.lastItemPos)
|
||||
{
|
||||
HandlePokeblockMenuCursor(oldPosition, 5);
|
||||
HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
|
||||
}
|
||||
|
||||
switch (itemId)
|
||||
{
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
break;
|
||||
case LIST_B_PRESSED:
|
||||
PlaySE(SE_SELECT);
|
||||
gSpecialVar_Result = 0xFFFF;
|
||||
gSpecialVar_ItemId = 0;
|
||||
FadePaletteAndSetTaskToClosePokeblockCase(taskId);
|
||||
break;
|
||||
default:
|
||||
PlaySE(SE_SELECT);
|
||||
gSpecialVar_ItemId = itemId;
|
||||
PutPokeblockOptionsWindow(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_HandlePokeblocksSwapInput(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (sub_81221EC() == TRUE)
|
||||
return;
|
||||
|
||||
if (gMain.newKeys & SELECT_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81AE860(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
HandlePokeblocksSwap(taskId, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 i = sSavedPokeblockData.lastItemPage;
|
||||
u16 var = sSavedPokeblockData.lastItemPos;
|
||||
s32 itemId = ListMenuHandleInputGetItemId(data[0]);
|
||||
|
||||
sub_81AE860(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
if (i != sSavedPokeblockData.lastItemPage || var != sSavedPokeblockData.lastItemPos)
|
||||
{
|
||||
for (i = 0; i < 9; i++)
|
||||
{
|
||||
var = i + sSavedPokeblockData.lastItemPage;
|
||||
if (var == data[2])
|
||||
HandlePokeblockMenuCursor(i, 0x2005);
|
||||
else
|
||||
HandlePokeblockMenuCursor(i, 5);
|
||||
}
|
||||
}
|
||||
|
||||
sub_81223FC(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 0);
|
||||
sub_8122448(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 0x80, (sSavedPokeblockData.lastItemPos * 16) + 8);
|
||||
|
||||
switch (itemId)
|
||||
{
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
break;
|
||||
case LIST_B_PRESSED: // same id as STOW CASE field
|
||||
PlaySE(SE_SELECT);
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
HandlePokeblocksSwap(taskId, FALSE);
|
||||
else
|
||||
HandlePokeblocksSwap(taskId, TRUE);
|
||||
break;
|
||||
default:
|
||||
PlaySE(SE_SELECT);
|
||||
HandlePokeblocksSwap(taskId, FALSE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HandlePokeblocksSwap(u8 taskId, bool8 noSwap)
|
||||
{
|
||||
u8 i;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
u16 swappedFromId = sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos;
|
||||
|
||||
sPokeblockMenu->isSwapping = FALSE;
|
||||
sub_81AE6C8(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
|
||||
if (!noSwap && data[2] != swappedFromId && data[2] != swappedFromId - 1)
|
||||
{
|
||||
SwapSortPokeblocksInternalData(data[2], swappedFromId);
|
||||
HandlePokeblockListMenuItems();
|
||||
}
|
||||
|
||||
if (data[2] < swappedFromId)
|
||||
sSavedPokeblockData.lastItemPos--;
|
||||
|
||||
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.lastItemPage, sSavedPokeblockData.lastItemPos);
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
sub_81223FC(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 1);
|
||||
|
||||
for (i = 0; i < 9; i++)
|
||||
HandlePokeblockMenuCursor(i, 5);
|
||||
|
||||
HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
|
||||
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
|
||||
}
|
||||
|
@ -1081,13 +1081,13 @@ void game_continue(u8 taskId)
|
||||
if (sub_80E9878(i))
|
||||
{
|
||||
sub_80E9780(gUnknown_0203A020->names[count], i);
|
||||
gUnknown_0203A020->items[count].unk_00 = gUnknown_0203A020->names[count];
|
||||
gUnknown_0203A020->items[count].unk_04 = i;
|
||||
gUnknown_0203A020->items[count].name = gUnknown_0203A020->names[count];
|
||||
gUnknown_0203A020->items[count].id = i;
|
||||
count ++;
|
||||
}
|
||||
}
|
||||
gUnknown_0203A020->items[count].unk_00 = gText_Cancel;
|
||||
gUnknown_0203A020->items[count].unk_04 = -2;
|
||||
gUnknown_0203A020->items[count].name = gText_Cancel;
|
||||
gUnknown_0203A020->items[count].id = -2;
|
||||
data[0] = count + 1;
|
||||
if (data[0] < 8)
|
||||
{
|
||||
@ -1097,11 +1097,11 @@ void game_continue(u8 taskId)
|
||||
{
|
||||
data[3] = 8;
|
||||
}
|
||||
gUnknown_03006310 = gUnknown_0858D07C;
|
||||
gUnknown_03006310.unk_10 = data[6];
|
||||
gUnknown_03006310.totalItems = data[0];
|
||||
gUnknown_03006310.items = gUnknown_0203A020->items;
|
||||
gUnknown_03006310.maxShowed = data[3];
|
||||
gMultiuseListMenuTemplate = gUnknown_0858D07C;
|
||||
gMultiuseListMenuTemplate.unk_10 = data[6];
|
||||
gMultiuseListMenuTemplate.totalItems = data[0];
|
||||
gMultiuseListMenuTemplate.items = gUnknown_0203A020->items;
|
||||
gMultiuseListMenuTemplate.maxShowed = data[3];
|
||||
}
|
||||
|
||||
void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu)
|
||||
@ -1118,7 +1118,7 @@ void sub_80E9E00(u8 taskId)
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
SetStandardWindowBorderStyle(data[6], 0);
|
||||
data[5] = ListMenuInit(&gUnknown_03006310, data[2], data[1]);
|
||||
data[5] = ListMenuInit(&gMultiuseListMenuTemplate, data[2], data[1]);
|
||||
sub_80E9E44(taskId);
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
}
|
||||
@ -1137,8 +1137,8 @@ void sub_80E9E90(u8 taskId)
|
||||
s32 input;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
input = ListMenuHandleInput(data[5]);
|
||||
get_coro_args_x18_x1A(data[5], &data[2], &data[1]);
|
||||
input = ListMenuHandleInputGetItemId(data[5]);
|
||||
sub_81AE860(data[5], &data[2], &data[1]);
|
||||
switch (input)
|
||||
{
|
||||
case -1:
|
||||
|
@ -419,7 +419,7 @@ gUnknown_030062F4: @ 30062F4
|
||||
gUnknown_03006300: @ 3006300
|
||||
.space 0x10
|
||||
|
||||
gUnknown_03006310: @ 3006310
|
||||
gMultiuseListMenuTemplate: @ 3006310
|
||||
.space 0x18
|
||||
|
||||
gUnknown_03006328: @ 3006328
|
||||
|
@ -1164,15 +1164,8 @@ gUnknown_0203AB34: @ 203AB34
|
||||
.align 2
|
||||
gUnknown_0203AB40: @ 203AB40
|
||||
.space 0x8
|
||||
|
||||
gUnknown_0203AB48: @ 203AB48
|
||||
.space 0x6
|
||||
|
||||
gUnknown_0203AB4E: @ 203AB4E
|
||||
.space 0x2
|
||||
|
||||
gUnknown_0203AB50: @ 203AB50
|
||||
.space 0x4
|
||||
|
||||
.include "src/pokeblock.o"
|
||||
|
||||
gUnknown_0203AB54: @ 203AB54
|
||||
.space 0x1
|
||||
|
Loading…
Reference in New Issue
Block a user