diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-15 15:11:51 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-15 15:11:51 -0400 |
commit | be742e6741af58076ac09722d42d64eee3c8d763 (patch) | |
tree | bdb64f7dbfed009d75a094acb0ea99e9368d7897 | |
parent | 8908b7d47a6f4879a37c6d5794a347e1c3c422f4 (diff) |
pokemon_storage_system_7
-rw-r--r-- | asm/pokemon_storage_system.s | 1479 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 4 | ||||
-rw-r--r-- | include/pokemon_icon.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 4 | ||||
-rw-r--r-- | include/window.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokemon_storage_system_7.c | 582 | ||||
-rw-r--r-- | src/window_8bpp.c | 4 | ||||
-rw-r--r-- | sym_ewram.txt | 5 |
9 files changed, 597 insertions, 1491 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index c991cd1eb..fe224637d 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -7,1485 +7,6 @@ @ file boundary? - thumb_func_start sub_8095050 -sub_8095050: @ 8095050 - push {r4,lr} - ldr r4, _08095088 @ =gUnknown_2039828 - ldr r0, _0809508C @ =0x00000974 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809509C - ldr r0, _08095090 @ =gUnknown_83D35D4 - bl AddWindow8Bit - adds r1, r0, 0 - ldr r0, _08095094 @ =sPSSData - ldr r0, [r0] - ldr r2, _08095098 @ =0x000021f0 - adds r0, r2 - strh r1, [r0] - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0xFF - beq _0809509C - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - b _0809509E - .align 2, 0 -_08095088: .4byte gUnknown_2039828 -_0809508C: .4byte 0x00000974 -_08095090: .4byte gUnknown_83D35D4 -_08095094: .4byte sPSSData -_08095098: .4byte 0x000021f0 -_0809509C: - movs r0, 0 -_0809509E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095050 - - thumb_func_start sub_80950A4 -sub_80950A4: @ 80950A4 - push {lr} - ldr r0, _080950B8 @ =gUnknown_2039828 - ldr r0, [r0] - cmp r0, 0 - beq _080950B2 - bl Free -_080950B2: - pop {r0} - bx r0 - .align 2, 0 -_080950B8: .4byte gUnknown_2039828 - thumb_func_end sub_80950A4 - - thumb_func_start sub_80950BC -sub_80950BC: @ 80950BC - ldr r2, _080950CC @ =gUnknown_2039828 - ldr r1, [r2] - movs r3, 0 - strb r0, [r1] - ldr r0, [r2] - strb r3, [r0, 0x1] - bx lr - .align 2, 0 -_080950CC: .4byte gUnknown_2039828 - thumb_func_end sub_80950BC - - thumb_func_start sub_80950D0 -sub_80950D0: @ 80950D0 - push {lr} - ldr r0, _080950E8 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08095130 - lsls r0, 2 - ldr r1, _080950EC @ =_080950F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080950E8: .4byte gUnknown_2039828 -_080950EC: .4byte _080950F0 - .align 2, 0 -_080950F0: - .4byte _08095108 - .4byte _0809510E - .4byte _08095114 - .4byte _0809511A - .4byte _08095120 - .4byte _08095126 -_08095108: - bl sub_8095138 - b _0809512A -_0809510E: - bl sub_8095234 - b _0809512A -_08095114: - bl sub_80952A0 - b _0809512A -_0809511A: - bl sub_8095314 - b _0809512A -_08095120: - bl sub_8095394 - b _0809512A -_08095126: - bl sub_80953BC -_0809512A: - lsls r0, 24 - lsrs r0, 24 - b _08095132 -_08095130: - movs r0, 0 -_08095132: - pop {r1} - bx r1 - thumb_func_end sub_80950D0 - - thumb_func_start sub_8095138 -sub_8095138: @ 8095138 - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08095150 @ =gUnknown_2039828 - ldr r1, [r6] - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - beq _08095168 - cmp r0, 0x1 - bgt _08095154 - cmp r0, 0 - beq _0809515A - b _08095228 - .align 2, 0 -_08095150: .4byte gUnknown_2039828 -_08095154: - cmp r0, 0x2 - beq _08095214 - b _08095228 -_0809515A: - movs r0, 0 - bl HideBg - movs r0, 0x80 - bl LoadMonIconPalettesAt - b _080951F8 -_08095168: - adds r0, r1, 0x2 - adds r1, 0x3 - bl sub_8094CD4 - ldr r1, [r6] - ldrb r0, [r1, 0x2] - strb r0, [r1, 0x4] - ldr r1, [r6] - ldrb r0, [r1, 0x3] - strb r0, [r1, 0x5] - ldr r4, _08095204 @ =0xfffffc00 - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r5, _08095208 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809520C @ =0x000021f0 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer8Bit - ldr r1, [r6] - ldrb r0, [r1, 0x2] - ldrb r1, [r1, 0x3] - bl sub_80956A4 - movs r0, 0 - movs r1, 0x4 - movs r2, 0x1 - bl SetBgAttribute - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram8Bit - movs r0, 0xFC - lsls r0, 6 - ldr r2, _08095210 @ =0x00007fff - movs r1, 0x8 - bl BlendPalettes - movs r0, 0x2 - bl sub_8094D14 - movs r0, 0x8 - movs r1, 0x80 - bl SetGpuRegBits -_080951F8: - ldr r1, [r6] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _08095228 - .align 2, 0 -_08095204: .4byte 0xfffffc00 -_08095208: .4byte sPSSData -_0809520C: .4byte 0x000021f0 -_08095210: .4byte 0x00007fff -_08095214: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08095228 - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809522A -_08095228: - movs r0, 0x1 -_0809522A: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8095138 - - thumb_func_start sub_8095234 -sub_8095234: @ 8095234 - push {r4,lr} - ldr r4, _0809524C @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _0809525E - cmp r0, 0x1 - bgt _08095250 - cmp r0, 0 - beq _08095256 - b _08095298 - .align 2, 0 -_0809524C: .4byte gUnknown_2039828 -_08095250: - cmp r0, 0x2 - beq _08095272 - b _08095298 -_08095256: - movs r0, 0 - bl HideBg - b _08095268 -_0809525E: - bl sub_8095A58 - movs r0, 0 - bl sub_8094D14 -_08095268: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _08095298 -_08095272: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08095298 - bl sub_8094D40 - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809529A -_08095298: - movs r0, 0x1 -_0809529A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095234 - - thumb_func_start sub_80952A0 -sub_80952A0: @ 80952A0 - push {r4,lr} - ldr r4, _080952B4 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080952B8 - cmp r0, 0x1 - beq _08095300 - b _0809530A - .align 2, 0 -_080952B4: .4byte gUnknown_2039828 -_080952B8: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - bne _0809530A - ldr r1, [r4] - adds r0, r1, 0x6 - adds r1, 0x7 - bl sub_8094CD4 - bl sub_8095520 - ldr r1, [r4] - ldrb r0, [r1, 0x6] - strb r0, [r1, 0x4] - ldr r1, [r4] - ldrb r0, [r1, 0x7] - strb r0, [r1, 0x5] - ldr r0, _080952F8 @ =sPSSData - ldr r0, [r0] - ldr r1, _080952FC @ =0x000021f0 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram8Bit - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809530A - .align 2, 0 -_080952F8: .4byte sPSSData -_080952FC: .4byte 0x000021f0 -_08095300: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0809530C -_0809530A: - movs r0, 0x1 -_0809530C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80952A0 - - thumb_func_start sub_8095314 -sub_8095314: @ 8095314 - push {r4,lr} - ldr r4, _0809532C @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _08095342 - cmp r0, 0x1 - bgt _08095330 - cmp r0, 0 - beq _08095336 - b _0809538C - .align 2, 0 -_0809532C: .4byte gUnknown_2039828 -_08095330: - cmp r0, 0x2 - beq _0809536E - b _0809538C -_08095336: - bl sub_80957C8 - bl sub_80958A0 - movs r0, 0 - b _08095360 -_08095342: - bl DoMonPlaceChange - lsls r0, 24 - cmp r0, 0 - bne _0809538C - movs r0, 0x3 - bl sub_8094D14 - movs r1, 0x80 - lsls r1, 1 - movs r0, 0 - movs r2, 0x8 - bl sub_8095780 - movs r0, 0x1 -_08095360: - bl sub_8092BAC - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809538C -_0809536E: - bl sub_8095790 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl DoMonPlaceChange - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0 - bne _0809538C - cmp r0, 0 - bne _0809538C - movs r0, 0 - b _0809538E -_0809538C: - movs r0, 0x1 -_0809538E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095314 - - thumb_func_start sub_8095394 -sub_8095394: @ 8095394 - push {r4,lr} - bl sub_80924A8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8095790 - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0 - bne _080953B4 - cmp r0, 0 - bne _080953B4 - movs r0, 0 - b _080953B6 -_080953B4: - movs r0, 0x1 -_080953B6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095394 - - thumb_func_start sub_80953BC -sub_80953BC: @ 80953BC - push {r4,lr} - ldr r4, _080953D4 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _080953FA - cmp r0, 0x1 - bgt _080953D8 - cmp r0, 0 - beq _080953E2 - b _0809546A - .align 2, 0 -_080953D4: .4byte gUnknown_2039828 -_080953D8: - cmp r0, 0x2 - beq _08095426 - cmp r0, 0x3 - beq _08095444 - b _0809546A -_080953E2: - bl sub_80959A8 - movs r1, 0xFF - lsls r1, 8 - movs r0, 0 - movs r2, 0x8 - bl sub_8095780 - movs r0, 0 - bl sub_8092BAC - b _0809543A -_080953FA: - bl DoMonPlaceChange - lsls r0, 24 - cmp r0, 0 - bne _0809546A - bl sub_8095790 - lsls r0, 24 - cmp r0, 0 - bne _0809546A - bl sub_8095918 - movs r0, 0x2 - bl sub_8094D14 - movs r0, 0x1 - bl sub_8092BAC - movs r0, 0 - bl HideBg - b _0809543A -_08095426: - bl DoMonPlaceChange - lsls r0, 24 - cmp r0, 0 - bne _0809546A - movs r0, 0 - bl sub_8094D14 - bl sub_8095A58 -_0809543A: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809546A -_08095444: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0809546A - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - bl sub_8094D40 - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809546C -_0809546A: - movs r0, 0x1 -_0809546C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80953BC - - thumb_func_start sub_8095474 -sub_8095474: @ 8095474 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080954B0 - cmp r0, 0x1 - bgt _0809548A - cmp r0, 0 - beq _08095494 - b _08095518 -_0809548A: - cmp r1, 0x2 - beq _080954D0 - cmp r1, 0x3 - beq _080954F0 - b _08095518 -_08095494: - ldr r0, _080954AC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r0, [r1, 0x9] - cmp r0, 0 - beq _080954FE - subs r0, 0x1 - strb r0, [r1, 0x9] - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - b _080954E4 - .align 2, 0 -_080954AC: .4byte gUnknown_2039828 -_080954B0: - ldr r0, _080954CC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r2, [r1, 0x9] - ldrb r0, [r1, 0xB] - adds r0, r2, r0 - cmp r0, 0x4 - bgt _080954FE - adds r0, r2, 0x1 - strb r0, [r1, 0x9] - movs r1, 0xFC - lsls r1, 8 - movs r0, 0 - b _080954E4 - .align 2, 0 -_080954CC: .4byte gUnknown_2039828 -_080954D0: - ldr r0, _080954EC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080954FE - subs r0, 0x1 - strb r0, [r1, 0x8] - movs r0, 0x80 - lsls r0, 3 - movs r1, 0 -_080954E4: - movs r2, 0x6 - bl sub_8095780 - b _08095518 - .align 2, 0 -_080954EC: .4byte gUnknown_2039828 -_080954F0: - ldr r0, _08095504 @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r2, [r1, 0x8] - ldrb r0, [r1, 0xA] - adds r0, r2, r0 - cmp r0, 0x5 - ble _08095508 -_080954FE: - movs r0, 0 - b _0809551A - .align 2, 0 -_08095504: .4byte gUnknown_2039828 -_08095508: - adds r0, r2, 0x1 - strb r0, [r1, 0x8] - movs r0, 0xFC - lsls r0, 8 - movs r1, 0 - movs r2, 0x6 - bl sub_8095780 -_08095518: - movs r0, 0x1 -_0809551A: - pop {r1} - bx r1 - thumb_func_end sub_8095474 - - thumb_func_start sub_8095520 -sub_8095520: @ 8095520 - push {r4-r7,lr} - ldr r6, _080955C0 @ =gUnknown_2039828 - ldr r2, [r6] - ldrb r3, [r2, 0x2] - ldrb r5, [r2, 0x6] - subs r1, r3, r5 - cmp r1, 0 - bge _08095532 - negs r1, r1 -_08095532: - ldrb r0, [r2, 0x4] - subs r0, r3, r0 - cmp r0, 0 - bge _0809553C - negs r0, r0 -_0809553C: - subs r0, r1, r0 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x7] - subs r3, r1, r0 - cmp r3, 0 - bge _0809554E - negs r3, r3 -_0809554E: - ldrb r2, [r2, 0x5] - subs r0, r1, r2 - cmp r0, 0 - bge _08095558 - negs r0, r0 -_08095558: - subs r0, r3, r0 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - cmp r4, 0 - ble _0809556C - adds r0, r5, 0 - bl sub_80955C4 -_0809556C: - cmp r4, 0 - bge _08095588 - ldr r2, [r6] - ldrb r0, [r2, 0x4] - ldrb r1, [r2, 0x3] - ldrb r2, [r2, 0x5] - bl sub_8095634 - ldr r2, [r6] - ldrb r0, [r2, 0x6] - ldrb r1, [r2, 0x3] - ldrb r2, [r2, 0x5] - bl sub_80955C4 -_08095588: - lsls r0, r7, 16 - asrs r4, r0, 16 - cmp r4, 0 - ble _0809559C - ldr r2, [r6] - ldrb r0, [r2, 0x7] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_80955FC -_0809559C: - cmp r4, 0 - bge _080955B8 - ldr r2, [r6] - ldrb r0, [r2, 0x5] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_809566C - ldr r2, [r6] - ldrb r0, [r2, 0x7] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_80955FC -_080955B8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080955C0: .4byte gUnknown_2039828 - thumb_func_end sub_8095520 - - thumb_func_start sub_80955C4 -sub_80955C4: @ 80955C4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _080955E2 - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _080955F4 -_080955E2: - adds r1, r4, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - bl sub_80956A4 - cmp r4, r5 - bls _080955E2 -_080955F4: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80955C4 - - thumb_func_start sub_80955FC -sub_80955FC: @ 80955FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _0809561A - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _0809562C -_0809561A: - adds r0, r4, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r6, 0 - bl sub_80956A4 - cmp r4, r5 - bls _0809561A -_0809562C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80955FC - - thumb_func_start sub_8095634 -sub_8095634: @ 8095634 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _08095652 - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _08095664 -_08095652: - adds r1, r4, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - bl sub_809572C - cmp r4, r5 - bls _08095652 -_08095664: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8095634 - - thumb_func_start sub_809566C -sub_809566C: @ 809566C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _0809568A - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _0809569C -_0809568A: - adds r0, r4, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r6, 0 - bl sub_809572C - cmp r4, r5 - bls _0809568A -_0809569C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809566C - - thumb_func_start sub_80956A4 -sub_80956A4: @ 80956A4 - push {r4-r7,lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r7, r0, r1 - lsls r4, r7, 1 - adds r4, r6, r4 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x41 - bl GetCurrentBoxMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetCurrentBoxMonData - adds r1, r0, 0 - cmp r5, 0 - beq _0809571A - adds r0, r5, 0 - movs r2, 0x1 - bl GetMonIconPtr - adds r4, r0, 0 - adds r0, r5, 0 - bl GetValidMonIconPalIndex - adds r0, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08095724 @ =sPSSData - ldr r1, [r1] - ldr r2, _08095728 @ =0x000021f0 - adds r1, r2 - ldrb r3, [r1] - movs r2, 0x20 - str r2, [sp] - str r2, [sp, 0x4] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - str r1, [sp, 0x8] - lsls r1, r7, 3 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - str r2, [sp, 0x14] - str r0, [sp, 0x18] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl BlitBitmapRectToWindow4BitTo8Bit -_0809571A: - add sp, 0x1C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095724: .4byte sPSSData -_08095728: .4byte 0x000021f0 - thumb_func_end sub_80956A4 - - thumb_func_start sub_809572C -sub_809572C: @ 809572C - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r5, r0, r1 - lsls r0, r5, 1 - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x41 - bl GetCurrentBoxMonData - lsls r0, 16 - cmp r0, 0 - beq _0809576E - ldr r0, _08095778 @ =sPSSData - ldr r0, [r0] - ldr r1, _0809577C @ =0x000021f0 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r4, 1 - adds r2, r4 - lsls r2, 3 - lsls r3, r5, 3 - movs r1, 0x20 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0 - bl FillWindowPixelRect8Bit -_0809576E: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08095778: .4byte sPSSData -_0809577C: .4byte 0x000021f0 - thumb_func_end sub_809572C - - thumb_func_start sub_8095780 -sub_8095780: @ 8095780 - ldr r3, _0809578C @ =gUnknown_2039828 - ldr r3, [r3] - strh r0, [r3, 0xC] - strh r1, [r3, 0xE] - strh r2, [r3, 0x10] - bx lr - .align 2, 0 -_0809578C: .4byte gUnknown_2039828 - thumb_func_end sub_8095780 - - thumb_func_start sub_8095790 -sub_8095790: @ 8095790 - push {r4,lr} - ldr r4, _080957C4 @ =gUnknown_2039828 - ldr r1, [r4] - ldrh r0, [r1, 0x10] - cmp r0, 0 - beq _080957BA - ldrh r1, [r1, 0xC] - movs r0, 0 - movs r2, 0x1 - bl ChangeBgX - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0 - movs r2, 0x1 - bl ChangeBgY - ldr r1, [r4] - ldrh r0, [r1, 0x10] - subs r0, 0x1 - strh r0, [r1, 0x10] -_080957BA: - ldr r0, [r4] - ldrb r0, [r0, 0x10] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080957C4: .4byte gUnknown_2039828 - thumb_func_end sub_8095790 - - thumb_func_start sub_80957C8 -sub_80957C8: @ 80957C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _0809589C @ =gUnknown_2039828 - ldr r1, [r4] - ldrb r0, [r1, 0x4] - ldrb r2, [r1, 0x2] - cmp r0, r2 - bls _080957E0 - adds r0, r2, 0 -_080957E0: - strb r0, [r1, 0x8] - ldr r1, [r4] - ldrb r0, [r1, 0x5] - ldrb r2, [r1, 0x3] - cmp r0, r2 - bls _080957EE - adds r0, r2, 0 -_080957EE: - strb r0, [r1, 0x9] - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x4] - subs r0, r1, r0 - cmp r0, 0 - bge _080957FE - negs r0, r0 -_080957FE: - adds r0, 0x1 - strb r0, [r2, 0xA] - ldr r2, [r4] - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x5] - subs r0, r1, r0 - cmp r0, 0 - bge _08095810 - negs r0, r0 -_08095810: - adds r0, 0x1 - strb r0, [r2, 0xB] - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r6, 0 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r8, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1 - mov r9, r0 - adds r2, r1, 0 - cmp r2, r9 - bge _0809588C -_08095838: - lsls r0, r2, 1 - adds r0, r2 - ldr r3, _0809589C @ =gUnknown_2039828 - ldr r1, [r3] - lsls r0, 1 - ldrb r3, [r1, 0x8] - adds r0, r3 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r7, r2, 0x1 - cmp r4, r8 - bge _08095886 - mov r0, r8 - subs r4, r0, r4 -_08095856: - mov r0, r10 - adds r1, r5, 0 - bl GetBoxedMonPtr - adds r1, r0, 0 - ldr r2, _0809589C @ =gUnknown_2039828 - ldr r0, [r2] - lsls r2, r6, 2 - adds r2, r6 - lsls r2, 4 - adds r0, r2 - adds r0, 0x14 - movs r2, 0x50 - bl memcpy - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _08095856 -_08095886: - adds r2, r7, 0 - cmp r2, r9 - blt _08095838 -_0809588C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809589C: .4byte gUnknown_2039828 - thumb_func_end sub_80957C8 - - thumb_func_start sub_80958A0 -sub_80958A0: @ 80958A0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, _08095914 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r7, r2, r1 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r1, r0 - mov r9, r1 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, [r4] - ldrb r2, [r0, 0x9] - cmp r2, r9 - bge _08095908 -_080958CC: - lsls r0, r2, 1 - adds r0, r2 - ldr r1, _08095914 @ =gUnknown_2039828 - ldr r1, [r1] - lsls r0, 1 - ldrb r3, [r1, 0x8] - adds r0, r3 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r6, r2, 0x1 - cmp r4, r7 - bge _08095902 - subs r4, r7, r4 -_080958E8: - adds r0, r5, 0 - bl DestroyBoxMonIconAtPosition - mov r0, r8 - adds r1, r5, 0 - bl ZeroBoxMonAt - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _080958E8 -_08095902: - adds r2, r6, 0 - cmp r2, r9 - blt _080958CC -_08095908: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095914: .4byte gUnknown_2039828 - thumb_func_end sub_80958A0 - - thumb_func_start sub_8095918 -sub_8095918: @ 8095918 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080959A4 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r8, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1 - mov r10, r0 - movs r6, 0 - adds r2, r1, 0 - cmp r2, r10 - bge _08095994 -_0809593E: - lsls r0, r2, 1 - adds r0, r2 - ldr r3, _080959A4 @ =gUnknown_2039828 - ldr r1, [r3] - lsls r0, 1 - ldrb r4, [r1, 0x8] - adds r0, r4 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r7, r2, 0x1 - cmp r4, r8 - bge _0809598E - mov r9, r3 - mov r0, r8 - subs r4, r0, r4 -_0809595E: - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 4 - adds r1, 0x14 - mov r2, r9 - ldr r0, [r2] - adds r0, r1 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _0809597C - adds r0, r5, 0 - bl sub_80901EC -_0809597C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _0809595E -_0809598E: - adds r2, r7, 0 - cmp r2, r10 - blt _0809593E -_08095994: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080959A4: .4byte gUnknown_2039828 - thumb_func_end sub_8095918 - - thumb_func_start sub_80959A8 -sub_80959A8: @ 80959A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, _08095A54 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r10, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r1, r0 - str r1, [sp] - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r7, 0 - ldr r0, [r4] - ldrb r3, [r0, 0x9] - ldr r0, [sp] - cmp r3, r0 - bge _08095A42 -_080959DE: - lsls r0, r3, 1 - adds r0, r3 - ldr r2, _08095A54 @ =gUnknown_2039828 - ldr r1, [r2] - lsls r0, 1 - ldrb r4, [r1, 0x8] - adds r0, r4 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r5, [r1, 0x8] - adds r3, 0x1 - mov r9, r3 - cmp r5, r10 - bge _08095A3A - mov r8, r2 - mov r0, r10 - subs r5, r0, r5 -_08095A00: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 4 - adds r4, r0, 0 - adds r4, 0x14 - mov r1, r8 - ldr r0, [r1] - adds r0, r4 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _08095A28 - mov r0, r8 - ldr r2, [r0] - adds r2, r4 - ldr r0, [sp, 0x4] - adds r1, r6, 0 - bl SetBoxMonAt -_08095A28: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - subs r5, 0x1 - cmp r5, 0 - bne _08095A00 -_08095A3A: - mov r3, r9 - ldr r1, [sp] - cmp r3, r1 - blt _080959DE -_08095A42: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095A54: .4byte gUnknown_2039828 - thumb_func_end sub_80959A8 - - thumb_func_start sub_8095A58 -sub_8095A58: @ 8095A58 - push {lr} - sub sp, 0x8 - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - movs r1, 0x4 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x8 - movs r1, 0x80 - bl ClearGpuRegBits - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_8095A58 - - thumb_func_start sub_8095AA0 -sub_8095AA0: @ 8095AA0 - ldr r0, _08095AB8 @ =gUnknown_2039828 - ldr r2, [r0] - ldrb r1, [r2, 0x3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - ldrb r2, [r2, 0x2] - adds r0, r2 - lsls r0, 24 - lsrs r0, 24 - bx lr - .align 2, 0 -_08095AB8: .4byte gUnknown_2039828 - thumb_func_end sub_8095AA0 - - thumb_func_start sub_8095ABC -sub_8095ABC: @ 8095ABC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _08095B28 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r9, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1, r0 - str r0, [sp] - movs r7, 0 - adds r6, r1, 0 - cmp r6, r0 - bge _08095B4A - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 1 - mov r8, r0 -_08095AEC: - ldr r2, _08095B28 @ =gUnknown_2039828 - ldr r1, [r2] - ldrb r0, [r1, 0x8] - add r0, r8 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - cmp r4, r9 - bge _08095B3E - mov r10, r2 -_08095B00: - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 4 - adds r1, 0x14 - mov r2, r10 - ldr r0, [r2] - adds r0, r1 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _08095B2C - adds r0, r5, 0 - movs r1, 0x5 - bl GetCurrentBoxMonData - cmp r0, 0 - beq _08095B2C - movs r0, 0 - b _08095B4C - .align 2, 0 -_08095B28: .4byte gUnknown_2039828 -_08095B2C: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x1 - cmp r4, r9 - blt _08095B00 -_08095B3E: - movs r0, 0x6 - add r8, r0 - adds r6, 0x1 - ldr r2, [sp] - cmp r6, r2 - blt _08095AEC -_08095B4A: - movs r0, 0x1 -_08095B4C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095ABC - - @ file boundary? - thumb_func_start sub_8095B5C sub_8095B5C: @ 8095B5C push {r4-r7,lr} diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s index 113488954..65fefed4f 100644 --- a/data/pokemon_storage_system.s +++ b/data/pokemon_storage_system.s @@ -6,10 +6,6 @@ .section .rodata .align 2 -gUnknown_83D35D4:: @ 83D35D4 - .byte 0, 10, 3, 20, 18, 9 - .2byte 0x000a - gUnknown_83D35DC:: @ 83D35DC .incbin "graphics/interface/pss_unk_83D35DC.4bpp" diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 597694baf..e2eebc62b 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -28,5 +28,7 @@ void FreeMonIconPalette(u16 iconId); void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum); u8 GetMonIconPaletteIndexFromSpecies(u16 species); u16 GetIconSpecies(u16 species, u32 personality); +void LoadMonIconPalettesAt(u16 offset); +u8 GetValidMonIconPalIndex(u16 species); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 3d80b4c6a..399e29f32 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -506,5 +506,9 @@ bool8 sub_8095474(u8 action); u8 sub_8095AA0(void); bool8 sub_8095ABC(void); void sub_8095D44(u8 cursorArea, u8 cursorPos); +void sub_8094CD4(u8 *arg0, u8 *arg1); +void sub_8094D40(void); +void sub_8092BAC(bool8 arg0); +void DestroyBoxMonIconAtPosition(u8 boxPosition); #endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/include/window.h b/include/window.h index 5f3630afb..c8b83af7a 100644 --- a/include/window.h +++ b/include/window.h @@ -69,10 +69,10 @@ void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, WindowFunc func); bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); u32 GetWindowAttribute(u8 windowId, u8 attributeId); -u16 AddWindow8Bit(struct WindowTemplate *template); -u16 AddWindow8Bit(struct WindowTemplate *template); +u16 AddWindow8Bit(const struct WindowTemplate *template); +void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue); void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); +void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); void CopyWindowToVram8Bit(u8 windowId, u8 mode); extern void *gWindowBgTilemapBuffers[]; diff --git a/ld_script.txt b/ld_script.txt index 89f486240..554592574 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -134,6 +134,7 @@ SECTIONS { src/pokemon_storage_system_4.o(.text); src/pokemon_storage_system_5.o(.text); src/pokemon_storage_system_6.o(.text); + src/pokemon_storage_system_7.o(.text); asm/pokemon_storage_system.o(.text); src/pokemon_icon.o(.text); src/script_movement.o(.text); @@ -459,6 +460,7 @@ SECTIONS { src/pokemon_storage_system_4.o(.rodata); src/pokemon_storage_system_5.o(.rodata); src/pokemon_storage_system_6.o(.rodata); + src/pokemon_storage_system_7.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); src/fldeff_cut.o(.rodata); diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c new file mode 100644 index 000000000..9982655e3 --- /dev/null +++ b/src/pokemon_storage_system_7.c @@ -0,0 +1,582 @@ +#include <stdlib.h> // to declare abs +#include "global.h" +#include "gflib.h" +#include "pokemon_icon.h" +#include "pokemon_storage_system_internal.h" +#include "text_window.h" +#include "constants/species.h" + +struct MoveMons +{ + u8 field_0; + u8 state; + u8 fromRow; + u8 fromColumn; + u8 toRow; + u8 toColumn; + u8 field_6; + u8 field_7; + u8 minRow; + u8 minColumn; + u8 rowsTotal; + u8 columsTotal; + u16 bgX; + u16 bgY; + u16 field_10; + struct BoxPokemon boxMons[IN_BOX_COUNT]; +}; + +EWRAM_DATA struct MoveMons *sMoveMonsPtr = NULL; + +bool8 sub_8095138(void); +bool8 sub_8095234(void); +bool8 sub_80952A0(void); +bool8 sub_8095314(void); +bool8 sub_8095394(void); +bool8 sub_80953BC(void); +void sub_8095520(void); +void sub_80955C4(u8 arg0, u8 arg1, u8 arg2); +void sub_80955FC(u8 arg0, u8 arg1, u8 arg2); +void sub_8095634(u8 arg0, u8 arg1, u8 arg2); +void sub_809566C(u8 arg0, u8 arg1, u8 arg2); +void sub_80956A4(u8 x, u8 y); +void sub_809572C(u8 x, u8 y); +void sub_8095780(u16 bgX, u16 bgY, u16 duration); +u8 sub_8095790(void); +void sub_80957C8(void); +void sub_80958A0(void); +void sub_8095918(void); +void sub_80959A8(void); +void sub_8095A58(void); + +const struct WindowTemplate gUnknown_83D35D4 = { + .bg = 0, + .tilemapLeft = 10, + .tilemapTop = 3, + .width = 20, + .height = 18, + .paletteNum = 9, + .baseBlock = 0x00a +}; + +bool8 sub_8095050(void) +{ + sMoveMonsPtr = Alloc(sizeof(*sMoveMonsPtr)); + if (sMoveMonsPtr != NULL) + { + sPSSData->field_2200 = AddWindow8Bit(&gUnknown_83D35D4); + if (sPSSData->field_2200 != 0xFF) + { + FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0)); + return TRUE; + } + } + + return FALSE; +} + +void sub_80950A4(void) +{ + if (sMoveMonsPtr != NULL) + Free(sMoveMonsPtr); +} + +void sub_80950BC(u8 arg0) +{ + sMoveMonsPtr->field_0 = arg0; + sMoveMonsPtr->state = 0; +} + +bool8 sub_80950D0(void) +{ + switch (sMoveMonsPtr->field_0) + { + case 0: + return sub_8095138(); + case 1: + return sub_8095234(); + case 2: + return sub_80952A0(); + case 3: + return sub_8095314(); + case 4: + return sub_8095394(); + case 5: + return sub_80953BC(); + } + + return FALSE; +} + +bool8 sub_8095138(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + HideBg(0); + LoadMonIconPalettesAt(0x80); + sMoveMonsPtr->state++; + break; + case 1: + sub_8094CD4(&sMoveMonsPtr->fromRow, &sMoveMonsPtr->fromColumn); + sMoveMonsPtr->toRow = sMoveMonsPtr->fromRow; + sMoveMonsPtr->toColumn = sMoveMonsPtr->fromColumn; + ChangeBgX(0, -1024, 0); + ChangeBgY(0, -1024, 0); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); + FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0)); + sub_80956A4(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); + PutWindowTilemap(sPSSData->field_2200); + CopyWindowToVram8Bit(sPSSData->field_2200, 3); + BlendPalettes(0x3F00, 8, RGB_WHITE); + sub_8094D14(2); + SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + sMoveMonsPtr->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 sub_8095234(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + HideBg(0); + sMoveMonsPtr->state++; + break; + case 1: + sub_8095A58(); + sub_8094D14(0); + sMoveMonsPtr->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_8094D40(); + LoadPalette(stdpal_get(3), 0xD0, 0x20); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 sub_80952A0(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + if (!sub_80924A8()) + { + sub_8094CD4(&sMoveMonsPtr->field_6, &sMoveMonsPtr->field_7); + sub_8095520(); + sMoveMonsPtr->toRow = sMoveMonsPtr->field_6; + sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7; + CopyWindowToVram8Bit(sPSSData->field_2200, 2); + sMoveMonsPtr->state++; + } + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool8 sub_8095314(void) +{ + u8 var1, var2; + + switch (sMoveMonsPtr->state) + { + case 0: + sub_80957C8(); + sub_80958A0(); + sub_8092BAC(FALSE); + sMoveMonsPtr->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + sub_8094D14(3); + sub_8095780(0, 256, 8); + sub_8092BAC(TRUE); + sMoveMonsPtr->state++; + } + break; + case 2: + var1 = sub_8095790(); + var2 = DoMonPlaceChange(); + if (!var1 && !var2) + return FALSE; + break; + } + + return TRUE; +} + +bool8 sub_8095394(void) +{ + u8 var1 = sub_80924A8(); + u8 var2 = sub_8095790(); + + if (!var1 && !var2) + return FALSE; + else + return TRUE; +} + +bool8 sub_80953BC(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + sub_80959A8(); + sub_8095780(0, -256, 8); + sub_8092BAC(FALSE); + sMoveMonsPtr->state++; + break; + case 1: + if (!DoMonPlaceChange() && !sub_8095790()) + { + sub_8095918(); + sub_8094D14(2); + sub_8092BAC(TRUE); + HideBg(0); + sMoveMonsPtr->state++; + } + break; + case 2: + if (!DoMonPlaceChange()) + { + sub_8094D14(0); + sub_8095A58(); + sMoveMonsPtr->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + LoadPalette(stdpal_get(3), 0xD0, 0x20); + sub_8094D40(); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 sub_8095474(u8 arg0) +{ + switch (arg0) + { + case 0: // up + if (sMoveMonsPtr->minColumn == 0) + return FALSE; + sMoveMonsPtr->minColumn--; + sub_8095780(0, 1024, 6); + break; + case 1: // down + if (sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal >= 5) + return FALSE; + sMoveMonsPtr->minColumn++; + sub_8095780(0, -1024, 6); + break; + case 2: // left + if (sMoveMonsPtr->minRow == 0) + return FALSE; + sMoveMonsPtr->minRow--; + sub_8095780(1024, 0, 6); + break; + case 3: // right + if (sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal > 5) + return FALSE; + sMoveMonsPtr->minRow++; + sub_8095780(-1024, 0, 6); + break; + } + + return TRUE; +} + +void sub_8095520(void) +{ + s16 var = (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->field_6)) - (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow)); + s16 var2 = (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->field_7)) - (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn)); + + if (var > 0) + sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + + if (var < 0) + { + sub_8095634(sMoveMonsPtr->toRow, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + } + + if (var2 > 0) + sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + + if (var2 < 0) + { + sub_809566C(sMoveMonsPtr->toColumn, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + } +} + +void sub_80955C4(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_80956A4(arg0, arg1++); +} + +void sub_80955FC(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_80956A4(arg1++, arg0); +} + +void sub_8095634(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_809572C(arg0, arg1++); +} + +void sub_809566C(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_809572C(arg1++, arg0); +} + +void sub_80956A4(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_ROWS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); + + if (species != SPECIES_NONE) + { + const u8 *iconGfx = GetMonIconPtr(species, personality, 1); + u8 index = GetValidMonIconPalIndex(species) + 8; + + BlitBitmapRectToWindow4BitTo8Bit(sPSSData->field_2200, + iconGfx, + 0, + 0, + 32, + 32, + 24 * x, + 24 * y, + 32, + 32, + index); + } +} + +void sub_809572C(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_ROWS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + + if (species != SPECIES_NONE) + { + FillWindowPixelRect8Bit(sPSSData->field_2200, + PIXEL_FILL(0), + 24 * x, + 24 * y, + 32, + 32); + } +} + +void sub_8095780(u16 bgX, u16 bgY, u16 duration) +{ + sMoveMonsPtr->bgX = bgX; + sMoveMonsPtr->bgY = bgY; + sMoveMonsPtr->field_10 = duration; +} + +u8 sub_8095790(void) +{ + if (sMoveMonsPtr->field_10 != 0) + { + ChangeBgX(0, sMoveMonsPtr->bgX, 1); + ChangeBgY(0, sMoveMonsPtr->bgY, 1); + sMoveMonsPtr->field_10--; + } + + return sMoveMonsPtr->field_10; +} + +void sub_80957C8(void) +{ + s32 i, j; + s32 rowCount, columnCount; + u8 boxId; + u8 monArrayId; + + sMoveMonsPtr->minRow = min(sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + sMoveMonsPtr->minColumn = min(sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + sMoveMonsPtr->rowsTotal = abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow) + 1; + sMoveMonsPtr->columsTotal = abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn) + 1; + boxId = StorageGetCurrentBox(); + monArrayId = 0; + rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); + + sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + monArrayId++; + boxPosition++; + } + } +} + +void sub_80958A0(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 boxId = StorageGetCurrentBox(); + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + DestroyBoxMonIconAtPosition(boxPosition); + ZeroBoxMonAt(boxId, boxPosition); + boxPosition++; + } + } +} + +void sub_8095918(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + sub_80901EC(boxPosition); + monArrayId++; + boxPosition++; + } + } +} + +void sub_80959A8(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 boxId = StorageGetCurrentBox(); + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMoveMonsPtr->boxMons[monArrayId]); + boxPosition++; + monArrayId++; + } + } +} + +void sub_8095A58(void) +{ + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); + ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(0); +} + +u8 sub_8095AA0(void) +{ + return (IN_BOX_ROWS * sMoveMonsPtr->fromColumn) + sMoveMonsPtr->fromRow; +} + +bool8 sub_8095ABC(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) + return FALSE; + + monArrayId++; + boxPosition++; + } + } + + return TRUE; +} diff --git a/src/window_8bpp.c b/src/window_8bpp.c index c58c13802..8977d61e4 100644 --- a/src/window_8bpp.c +++ b/src/window_8bpp.c @@ -13,7 +13,7 @@ static void nullsub_9(void) { } -u16 AddWindow8Bit(struct WindowTemplate *template) +u16 AddWindow8Bit(const struct WindowTemplate *template) { u16 windowId; u8* memAddress; @@ -81,7 +81,7 @@ void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, FillBitmapRect8Bit(&pixelRect, x, y, width, height, fillValue); } -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) +void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) { struct Bitmap sourceRect; struct Bitmap destRect; diff --git a/sym_ewram.txt b/sym_ewram.txt index 2ab91f8d4..312f3f2f0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -162,11 +162,10 @@ gUnknown_20386A8: @ 20386A8 .include "src/pokemon_storage_system_3.o" .align 2 .include "src/pokemon_storage_system_5.o" - .align 2 -gUnknown_2039828: @ 2039828 - .space 0x4 + .include "src/pokemon_storage_system_7.o" + .align 2 gUnknown_203982C: @ 203982C .space 0x4 |