diff options
-rw-r--r-- | asm/dodrio_berry_picking.s | 787 | ||||
-rw-r--r-- | include/gba/macro.h | 29 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/dodrio_berry_picking_2.c | 221 |
4 files changed, 218 insertions, 820 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s deleted file mode 100644 index 0305193cf..000000000 --- a/asm/dodrio_berry_picking.s +++ /dev/null @@ -1,787 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8155A78 -sub_8155A78: @ 8155A78 - push {r4-r6,lr} - sub sp, 0x10 - ldr r5, _08155A94 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r6, _08155A98 @ =0x00003014 - adds r0, r6 - ldrb r4, [r0] - cmp r4, 0x1 - beq _08155AD0 - cmp r4, 0x1 - bgt _08155A9C - cmp r4, 0 - beq _08155AA6 - b _08155B18 - .align 2, 0 -_08155A94: .4byte gUnknown_203F440 -_08155A98: .4byte 0x00003014 -_08155A9C: - cmp r4, 0x2 - beq _08155AE4 - cmp r4, 0x3 - beq _08155AFC - b _08155B18 -_08155AA6: - movs r0, 0 - movs r1, 0 - bl DrawDialogueFrame - ldr r2, _08155ACC @ =gText_SavingDontTurnOffThePower2 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized2 - b _08155B08 - .align 2, 0 -_08155ACC: .4byte gText_SavingDontTurnOffThePower2 -_08155AD0: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, [r5] - ldr r0, _08155AE0 @ =0x00003014 - adds r1, r0 - b _08155B0C - .align 2, 0 -_08155AE0: .4byte 0x00003014 -_08155AE4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155B40 - ldr r0, _08155AF8 @ =sub_80DA634 - movs r1, 0 - bl CreateTask - b _08155B08 - .align 2, 0 -_08155AF8: .4byte sub_80DA634 -_08155AFC: - ldr r0, _08155B14 @ =sub_80DA634 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08155B40 -_08155B08: - ldr r1, [r5] - adds r1, r6 -_08155B0C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155B40 - .align 2, 0 -_08155B14: .4byte sub_80DA634 -_08155B18: - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08155B48 @ =gUnknown_203F440 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] -_08155B40: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08155B48: .4byte gUnknown_203F440 - thumb_func_end sub_8155A78 - - thumb_func_start sub_8155B4C -sub_8155B4C: @ 8155B4C - push {r4-r6,lr} - sub sp, 0xC - ldr r1, _08155B6C @ =gUnknown_203F440 - ldr r2, [r1] - ldr r6, _08155B70 @ =0x00003014 - adds r0, r2, r6 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x1 - beq _08155BA4 - cmp r0, 0x1 - bgt _08155B74 - cmp r0, 0 - beq _08155B7A - b _08155C18 - .align 2, 0 -_08155B6C: .4byte gUnknown_203F440 -_08155B70: .4byte 0x00003014 -_08155B74: - cmp r0, 0x2 - beq _08155BEC - b _08155C18 -_08155B7A: - ldr r4, _08155B9C @ =sUnknown_84756A4 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - ldr r2, _08155BA0 @ =0x00003008 - adds r1, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, r2 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r4, 0 - bl sub_8154868 - b _08155C08 - .align 2, 0 -_08155B9C: .4byte sUnknown_84756A4 -_08155BA0: .4byte 0x00003008 -_08155BA4: - ldr r4, _08155BE0 @ =0x00003008 - adds r0, r2, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155BE4 @ =gText_CommunicationStandby3 - movs r1, 0x6 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r5] - ldr r0, _08155BE8 @ =0x00003014 - adds r1, r0 - b _08155C0C - .align 2, 0 -_08155BE0: .4byte 0x00003008 -_08155BE4: .4byte gText_CommunicationStandby3 -_08155BE8: .4byte 0x00003014 -_08155BEC: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155C02 - ldr r0, [r5] - ldr r1, _08155C14 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap -_08155C02: - movs r0, 0 - bl CopyBgTilemapBufferToVram -_08155C08: - ldr r1, [r5] - adds r1, r6 -_08155C0C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155C24 - .align 2, 0 -_08155C14: .4byte 0x00003008 -_08155C18: - ldr r0, [r5] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] -_08155C24: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8155B4C - - thumb_func_start sub_8155C2C -sub_8155C2C: @ 8155C2C - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, _08155C78 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r4, _08155C7C @ =0x00003008 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r5] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08155C78: .4byte gUnknown_203F440 -_08155C7C: .4byte 0x00003008 - thumb_func_end sub_8155C2C - - thumb_func_start sub_8155C80 -sub_8155C80: @ 8155C80 - push {r4-r7,lr} - sub sp, 0xC - ldr r0, _08155CA0 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r7, _08155CA4 @ =0x00003014 - adds r2, r1, r7 - ldrb r5, [r2] - adds r6, r0, 0 - cmp r5, 0x1 - beq _08155D08 - cmp r5, 0x1 - bgt _08155CA8 - cmp r5, 0 - beq _08155CB2 - b _08155D9C - .align 2, 0 -_08155CA0: .4byte gUnknown_203F440 -_08155CA4: .4byte 0x00003014 -_08155CA8: - cmp r5, 0x2 - beq _08155D50 - cmp r5, 0x3 - beq _08155D7C - b _08155D9C -_08155CB2: - ldr r4, _08155CF8 @ =sUnknown_847569C - adds r0, r4, 0 - bl AddWindow - ldr r1, [r6] - ldr r2, _08155CFC @ =0x00003008 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r0, r2 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r4, 0 - bl sub_8154868 - ldr r1, [r6] - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - ldr r2, _08155D00 @ =0x0000301c - adds r1, r0, r2 - movs r2, 0 - strh r5, [r1] - ldr r1, _08155D04 @ =0x00003020 - adds r0, r1 - strb r2, [r0] - ldr r0, [r6] - adds r1, 0x4 - adds r0, r1 - strb r2, [r0] - b _08155DE2 - .align 2, 0 -_08155CF8: .4byte sUnknown_847569C -_08155CFC: .4byte 0x00003008 -_08155D00: .4byte 0x0000301c -_08155D04: .4byte 0x00003020 -_08155D08: - ldr r4, _08155D44 @ =0x00003008 - adds r0, r1, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155D48 @ =gText_SomeoneDroppedOut - movs r1, 0x6 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r6] - ldr r2, _08155D4C @ =0x00003014 - adds r1, r2 - b _08155D70 - .align 2, 0 -_08155D44: .4byte 0x00003008 -_08155D48: .4byte gText_SomeoneDroppedOut -_08155D4C: .4byte 0x00003014 -_08155D50: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155D66 - ldr r0, [r6] - ldr r1, _08155D78 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap -_08155D66: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r6] - adds r1, r7 -_08155D70: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155DE2 - .align 2, 0 -_08155D78: .4byte 0x00003008 -_08155D7C: - ldr r0, _08155D98 @ =0x0000301c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x77 - bls _08155DE2 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _08155DE2 - .align 2, 0 -_08155D98: .4byte 0x0000301c -_08155D9C: - ldr r0, [r6] - ldr r1, _08155DEC @ =0x00003024 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - ldr r0, [r6] - ldr r4, _08155DF0 @ =0x00003008 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r6] - movs r2, 0xC0 - lsls r2, 6 - adds r0, r2 - movs r1, 0x1 - str r1, [r0] -_08155DE2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08155DEC: .4byte 0x00003024 -_08155DF0: .4byte 0x00003008 - thumb_func_end sub_8155C80 - - thumb_func_start unused_0 -unused_0: @ 8155DF4 - push {r4,lr} - ldr r4, _08155E18 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _08155E1C @ =0x00003004 - adds r0, r1 - ldrb r0, [r0] - bl DestroyTask - ldr r0, [r4] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08155E18: .4byte gUnknown_203F440 -_08155E1C: .4byte 0x00003004 - thumb_func_end unused_0 - - thumb_func_start nullsub_98 -nullsub_98: @ 8155E20 - bx lr - thumb_func_end nullsub_98 - - thumb_func_start sub_8155E24 -sub_8155E24: @ 8155E24 - push {r4,lr} - ldr r2, _08155E48 @ =gUnknown_203F440 - ldr r1, [r2] - ldr r3, _08155E4C @ =0x00003014 - adds r1, r3 - movs r3, 0 - strb r3, [r1] - ldr r1, [r2] - movs r4, 0xC0 - lsls r4, 6 - adds r2, r1, r4 - str r3, [r2] - ldr r2, _08155E50 @ =0x00003028 - adds r1, r2 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08155E48: .4byte gUnknown_203F440 -_08155E4C: .4byte 0x00003014 -_08155E50: .4byte 0x00003028 - thumb_func_end sub_8155E24 - - thumb_func_start sub_8155E54 -sub_8155E54: @ 8155E54 - ldr r0, _08155E60 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r1, _08155E64 @ =0x00003028 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_08155E60: .4byte gUnknown_203F440 -_08155E64: .4byte 0x00003028 - thumb_func_end sub_8155E54 - - thumb_func_start sub_8155E68 -sub_8155E68: @ 8155E68 - push {lr} - ldr r0, _08155E80 @ =gUnknown_203F440 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - beq _08155E84 - movs r0, 0x1 - b _08155E86 - .align 2, 0 -_08155E80: .4byte gUnknown_203F440 -_08155E84: - movs r0, 0 -_08155E86: - pop {r1} - bx r1 - thumb_func_end sub_8155E68 - - thumb_func_start sub_8155E8C -sub_8155E8C: @ 8155E8C - ldr r0, _08155E98 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r1, _08155E9C @ =0x00003024 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08155E98: .4byte gUnknown_203F440 -_08155E9C: .4byte 0x00003024 - thumb_func_end sub_8155E8C - - thumb_func_start sub_8155EA0 -sub_8155EA0: @ 8155EA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08155FD0 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08155FD4 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08155EC6: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08155EC6 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08155FD0 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08155FD8 @ =sUnknown_847565C - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - bl InitStandardTextBoxWindows - bl ResetBg0 - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _08155FDC @ =gUnknown_203F440 - ldr r1, [r4] - movs r0, 0x3 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 5 - adds r1, r2 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 6 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08155FD0: .4byte 0x040000d4 -_08155FD4: .4byte 0x81000800 -_08155FD8: .4byte sUnknown_847565C -_08155FDC: .4byte gUnknown_203F440 - thumb_func_end sub_8155EA0 - - thumb_func_start sub_8155FE0 -sub_8155FE0: @ 8155FE0 - push {lr} - sub sp, 0x4 - ldr r0, _08155FFC @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _08156000 @ =0x00003018 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _0815607A - lsls r0, 2 - ldr r1, _08156004 @ =_08156008 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08155FFC: .4byte gUnknown_203F440 -_08156000: .4byte 0x00003018 -_08156004: .4byte _08156008 - .align 2, 0 -_08156008: - .4byte _08156020 - .4byte _08156030 - .4byte _08156036 - .4byte _08156044 - .4byte _0815605C - .4byte _0815606A -_08156020: - ldr r0, _0815602C @ =sDodrioBerryBgPal1 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - b _08156082 - .align 2, 0 -_0815602C: .4byte sDodrioBerryBgPal1 -_08156030: - bl ResetTempTileDataBuffers - b _08156082 -_08156036: - ldr r1, _08156040 @ =sDodrioBerryBgGfx1 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - b _0815604C - .align 2, 0 -_08156040: .4byte sDodrioBerryBgGfx1 -_08156044: - ldr r1, _08156058 @ =sDodrioBerryBgGfx2 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 -_0815604C: - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - b _08156082 - .align 2, 0 -_08156058: .4byte sDodrioBerryBgGfx2 -_0815605C: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08156082 - b _08156090 -_0815606A: - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - b _08156082 -_0815607A: - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08156092 -_08156082: - ldr r0, _08156098 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _0815609C @ =0x00003018 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08156090: - movs r0, 0 -_08156092: - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_08156098: .4byte gUnknown_203F440 -_0815609C: .4byte 0x00003018 - thumb_func_end sub_8155FE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/gba/macro.h b/include/gba/macro.h index a3e870210..6cf2e1651 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -105,20 +105,21 @@ } \ } -#define DmaClearLarge(dmaNum, dest, size, block, bit) \ -{ \ - u32 _size = size; \ - while (1) \ - { \ - DmaFill##bit(dmaNum, 0, dest, (block)); \ - dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaFill##bit(dmaNum, 0, dest, _size); \ - break; \ - } \ - } \ +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ + break; \ + } \ + } \ } #define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ diff --git a/ld_script.txt b/ld_script.txt index ce6724236..54a16301c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -288,7 +288,6 @@ SECTIONS { src/quest_log_player.o(.text); src/dodrio_berry_picking.o(.text); src/dodrio_berry_picking_2.o(.text); - asm/dodrio_berry_picking.o(.text); src/battle_controller_pokedude.o(.text); src/quest_log_objects.o(.text); src/dodrio_berry_picking_3.o(.text); diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index aac4b485f..15a99fd66 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -5,30 +5,14 @@ #include "item.h" #include "link.h" #include "menu.h" +#include "new_menu_helpers.h" +#include "save.h" #include "strings.h" #include "task.h" #include "text_window.h" #include "text_window_graphics.h" #include "constants/songs.h" -// Temporary stopgap to export duplicate data -// included from data/dodrio_berry_picking.h -asm(".global sDodrioBerryStatusGfx\n" - "\t.global sDodrioBerrySpritesGfx\n" - "\t.global sDodrioBerryPlatformGfx\n" - "\t.global sDodrioBerryBgTilemap1\n" - "\t.global sDodrioBerryBgTilemap2Left\n" - "\t.global sDodrioBerryBgTilemap2Right\n" - "\t.global sUnknown_8475674\n" - "\t.global sUnknown_8475684\n" - "\t.global sUnknown_847568C\n" - "\t.global sUnknown_84756A4\n" - "\t.global sUnknown_847569C\n" - "\t.global sUnknown_847565C\n" - "\t.global sDodrioBerryBgPal1\n" - "\t.global sDodrioBerryBgGfx1\n" - "\t.global sDodrioBerryBgGfx2"); - struct DodrioStruct_2022CF4 { u8 filler_00[0xc]; @@ -1429,3 +1413,204 @@ void sub_81556E0(void) break; } } + +void sub_8155A78(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + DrawDialogueFrame(0, FALSE); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + gUnknown_203F440->state++; + break; + case 1: + CopyWindowToVram(0, 3); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + CreateTask(sub_80DA634, 0); + gUnknown_203F440->state++; + } + break; + case 3: + if (!FuncIsActiveTask(sub_80DA634)) + gUnknown_203F440->state++; + break; + default: + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +void sub_8155B4C(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_84756A4); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + sub_8154868(&sUnknown_84756A4); + gUnknown_203F440->state++; + break; + case 1: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_CommunicationStandby3, 0, 6, -1, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + default: + gUnknown_203F440->finished = TRUE; + break; + } +} + +void sub_8155C2C(void) +{ + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; +} + +void sub_8155C80(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_847569C); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + sub_8154868(&sUnknown_847569C); + gUnknown_203F440->state++; + gUnknown_203F440->unk301C = 0; + gUnknown_203F440->unk3020 = 0; + gUnknown_203F440->unk3024 = 0; + break; + case 1: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_SomeoneDroppedOut, 0, 6, TEXT_SPEED_FF, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + case 3: + if (++gUnknown_203F440->unk301C >= 120) + gUnknown_203F440->state++; + break; + default: + gUnknown_203F440->unk3024 = 5; + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +void unused_0(void) +{ + DestroyTask(gUnknown_203F440->unk3004); + gUnknown_203F440->finished = TRUE; +} + +void nullsub_98(void) +{ + +} + +void sub_8155E24(void (*func)(void)) +{ + gUnknown_203F440->state = 0; + gUnknown_203F440->finished = FALSE; + gUnknown_203F440->unk3028 = func; +} + +void (*sub_8155E54(void))(void) +{ + return gUnknown_203F440->unk3028; +} + +bool32 sub_8155E68(void) +{ + if (gUnknown_203F440->finished == TRUE) + return FALSE; + else + return TRUE; +} + +u8 sub_8155E8C(void) +{ + return gUnknown_203F440->unk3024; +} + +void sub_8155EA0(void) +{ + DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaClear32(3,(void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sUnknown_847565C, ARRAY_COUNT(sUnknown_847565C)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitStandardTextBoxWindows(); + ResetBg0(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + SetBgTilemapBuffer(3, gUnknown_203F440->tilemapBuffers[0]); + SetBgTilemapBuffer(1, gUnknown_203F440->tilemapBuffers[1]); + SetBgTilemapBuffer(2, gUnknown_203F440->tilemapBuffers[2]); +} + +bool32 sub_8155FE0(void) +{ + switch (gUnknown_203F440->unk3018) + { + case 0: + LoadPalette(sDodrioBerryBgPal1, 0, sizeof(sDodrioBerryBgPal1)); + break; + case 1: + ResetTempTileDataBuffers(); + break; + case 2: + DecompressAndCopyTileDataToVram(3, sDodrioBerryBgGfx1, 0, 0, 0); + break; + case 3: + DecompressAndCopyTileDataToVram(1, sDodrioBerryBgGfx2, 0, 0, 0); + break; + case 4: + if (FreeTempTileDataBuffersIfPossible() == TRUE) + return FALSE; + break; + case 5: + LoadPalette(stdpal_get(3), 0xD0, 0x20); + break; + default: + gUnknown_203F440->unk3018 = 0; + return TRUE; + } + + gUnknown_203F440->unk3018++; + return FALSE; +} |