.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_8178F44 sub_8178F44: @ 8178F44 push {r4,r5,lr} sub sp, 0x18 adds r5, r0, 0 adds r4, r1, 0 adds r3, r2, 0 lsls r3, 24 add r0, sp, 0x14 movs r2, 0 strb r2, [r0] adds r1, r0, 0 movs r0, 0xF strb r0, [r1, 0x1] movs r0, 0x3 strb r0, [r1, 0x2] ldr r0, =gUnknown_0203BD0E ldrb r0, [r0] lsls r4, 27 lsrs r4, 24 lsrs r3, 21 adds r3, 0x1 lsls r3, 24 lsrs r3, 24 str r2, [sp] str r2, [sp, 0x4] str r1, [sp, 0x8] str r2, [sp, 0xC] str r5, [sp, 0x10] movs r1, 0x1 adds r2, r4, 0 bl AddTextPrinterParametrized2 add sp, 0x18 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8178F44 thumb_func_start DoSaveFailedScreen DoSaveFailedScreen: @ 8178F90 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, =sub_8178FDC bl SetMainCallback2 ldr r0, =gUnknown_0203BCFC strh r4, [r0] ldr r1, =gUnknown_0203BCFE movs r2, 0 movs r0, 0 strh r0, [r1] strh r0, [r1, 0x2] ldr r0, =gUnknown_0203BD0E strb r2, [r0] strb r2, [r0, 0x1] pop {r4} pop {r0} bx r0 .pool thumb_func_end DoSaveFailedScreen thumb_func_start sub_8178FC8 sub_8178FC8: @ 8178FC8 push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 thumb_func_end sub_8178FC8 thumb_func_start sub_8178FDC sub_8178FDC: @ 8178FDC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r0, =gMain movs r1, 0x87 lsls r1, 3 adds r7, r0, r1 ldrb r0, [r7] cmp r0, 0 beq _08178FF8 cmp r0, 0x1 bne _08178FF8 b _0817925C _08178FF8: movs r0, 0 bl SetVBlankCallback movs r0, 0 movs r1, 0 bl SetGpuReg movs r0, 0xE movs r1, 0 bl SetGpuReg movs r0, 0xC movs r1, 0 bl SetGpuReg movs r0, 0xA movs r1, 0 bl SetGpuReg movs r0, 0x8 movs r1, 0 bl SetGpuReg movs r0, 0x1C movs r1, 0 bl SetGpuReg movs r0, 0x1E movs r1, 0 bl SetGpuReg movs r0, 0x18 movs r1, 0 bl SetGpuReg movs r0, 0x1A movs r1, 0 bl SetGpuReg movs r0, 0x14 movs r1, 0 bl SetGpuReg movs r0, 0x16 movs r1, 0 bl SetGpuReg movs r0, 0x10 movs r1, 0 bl SetGpuReg movs r0, 0x12 movs r1, 0 bl SetGpuReg add r1, sp, 0x4 movs r0, 0 strh r0, [r1] ldr r2, =0x040000d4 str r1, [r2] movs r1, 0xC0 lsls r1, 19 str r1, [r2, 0x4] ldr r0, =0x8100c000 str r0, [r2, 0x8] ldr r0, [r2, 0x8] movs r3, 0 mov r8, r3 str r3, [sp, 0x8] add r4, sp, 0x8 str r4, [r2] movs r0, 0xE0 lsls r0, 19 str r0, [r2, 0x4] ldr r0, =0x85000100 str r0, [r2, 0x8] ldr r0, [r2, 0x8] add r0, sp, 0x4 mov r3, r8 strh r3, [r0] str r0, [r2] movs r0, 0xA0 lsls r0, 19 str r0, [r2, 0x4] ldr r0, =0x81000200 str r0, [r2, 0x8] ldr r0, [r2, 0x8] ldr r0, =gUnknown_085B0E04 bl LZ77UnCompVram ldr r0, =gUnknown_085B0A80 ldr r1, =0x06007000 bl LZ77UnCompVram ldr r0, =gUnknown_085B0C0C ldr r1, =0x06007800 bl LZ77UnCompVram ldr r0, =gUnknown_085EFDE4 ldr r1, =0x06010020 bl LZ77UnCompVram movs r0, 0 bl ResetBgsAndClearDma3BusyFlags ldr r1, =gUnknown_085EFD88 movs r0, 0 movs r2, 0x3 bl InitBgsFromTemplates ldr r5, =0x0201e000 movs r0, 0 adds r1, r5, 0 bl SetBgTilemapBuffer mov r0, r8 str r0, [sp, 0x8] ldr r2, =0x05000200 adds r0, r4, 0 adds r1, r5, 0 bl CpuSet ldr r1, =gUnknown_0850E87C movs r2, 0x90 lsls r2, 1 movs r6, 0x85 lsls r6, 2 movs r0, 0 adds r3, r6, 0 bl LoadBgTiles ldr r0, =gUnknown_085EFD94 bl InitWindows ldr r0, =gUnknown_085EFD9C bl AddWindowWithoutTileMap ldr r4, =gUnknown_0203BD0E strb r0, [r4] ldrb r0, [r4] movs r1, 0x80 lsls r1, 4 adds r2, r5, r1 movs r1, 0x7 bl SetWindowAttribute ldr r0, =gUnknown_085EFDA4 bl AddWindowWithoutTileMap strb r0, [r4, 0x1] ldrb r0, [r4, 0x1] movs r3, 0xE8 lsls r3, 5 adds r5, r3 movs r1, 0x7 adds r2, r5, 0 bl SetWindowAttribute bl DeactivateAllTextPrinters bl ResetSpriteData bl ResetTasks bl ResetPaletteFade ldr r0, =gUnknown_085B0A00 movs r1, 0 movs r2, 0x40 bl LoadPalette ldr r0, =gUnknown_085EFDC4 movs r1, 0x80 lsls r1, 1 movs r2, 0x20 bl LoadPalette ldr r0, =gUnknown_0850FEFC movs r1, 0xE0 movs r2, 0x20 bl LoadPalette ldr r0, =gUnknown_0860F074 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldrb r0, [r4] movs r1, 0 adds r2, r6, 0 movs r3, 0xE bl SetWindowBorderStyle ldrb r0, [r4, 0x1] movs r1, 0 adds r2, r6, 0 movs r3, 0xE bl SetWindowBorderStyle ldrb r0, [r4, 0x1] movs r1, 0x11 bl FillWindowPixelBuffer ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer ldrb r0, [r4, 0x1] movs r1, 0x2 bl CopyWindowToVram ldrb r0, [r4] movs r1, 0x1 bl CopyWindowToVram ldr r0, =gUnknown_085EC816 movs r1, 0x1 movs r2, 0 bl sub_8178F44 movs r0, 0x1 negs r0, r0 mov r1, r8 str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0x1 bl EnableInterrupts ldr r0, =sub_8178FC8 bl SetVBlankCallback movs r1, 0x82 lsls r1, 5 movs r0, 0 bl SetGpuReg movs r0, 0 bl ShowBg movs r0, 0x2 bl ShowBg movs r0, 0x3 bl ShowBg ldrb r0, [r7] adds r0, 0x1 strb r0, [r7] b _08179272 .pool _0817925C: bl UpdatePaletteFade lsls r0, 24 cmp r0, 0 bne _08179272 ldr r0, =sub_8179288 bl SetMainCallback2 ldr r0, =sub_8179454 bl SetVBlankCallback _08179272: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8178FDC thumb_func_start sub_8179288 sub_8179288: @ 8179288 push {r4-r6,lr} movs r5, 0 ldr r0, =gUnknown_0203BCFE movs r1, 0x1 strh r1, [r0] ldr r1, =gDamagedSaveSectors ldr r0, [r1] cmp r0, 0 beq _081792EC adds r6, r1, 0 _0817929C: ldr r0, [r6] bl sub_81795AC lsls r0, 24 cmp r0, 0 bne _08179348 ldr r4, =gUnknown_0203BD0E ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gUnknown_085EC917 movs r1, 0x1 movs r2, 0 bl sub_8178F44 ldr r0, =gUnknown_0203BCFC ldrb r0, [r0] bl HandleSavingData ldr r0, [r6] cmp r0, 0 beq _081792DC ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gUnknown_085EC816 movs r1, 0x1 movs r2, 0 bl sub_8178F44 _081792DC: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 ldr r0, [r6] cmp r0, 0 beq _081792EC cmp r5, 0x2 bls _0817929C _081792EC: cmp r5, 0x3 bne _0817931C ldr r0, =gUnknown_0203BD0E ldrb r0, [r0] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gUnknown_085EC86F b _08179330 .pool _0817931C: ldr r0, =gUnknown_0203BD0E ldrb r0, [r0] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gGameContinueCallback ldr r0, [r0] cmp r0, 0 bne _08179370 ldr r0, =gUnknown_085EC94F _08179330: movs r1, 0x1 movs r2, 0 bl sub_8178F44 b _0817937A .pool _08179348: ldr r0, =gUnknown_0203BD0E ldrb r0, [r0] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gUnknown_085EC86F movs r1, 0x1 movs r2, 0 bl sub_8178F44 ldr r0, =sub_8179390 bl SetMainCallback2 b _08179380 .pool _08179370: ldr r0, =gUnknown_085EC9A2 movs r1, 0x1 movs r2, 0 bl sub_8178F44 _0817937A: ldr r0, =sub_81793E0 bl SetMainCallback2 _08179380: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_8179288 thumb_func_start sub_8179390 sub_8179390: @ 8179390 push {lr} ldr r1, =gUnknown_0203BCFE movs r0, 0 strh r0, [r1] ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _081793C4 ldr r0, =gUnknown_0203BD0E ldrb r0, [r0] movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gUnknown_085EC8D4 movs r1, 0x1 movs r2, 0 bl sub_8178F44 ldr r0, =sub_8178FC8 bl SetVBlankCallback ldr r0, =sub_81793E0 bl SetMainCallback2 _081793C4: pop {r0} bx r0 .pool thumb_func_end sub_8179390 thumb_func_start sub_81793E0 sub_81793E0: @ 81793E0 push {lr} sub sp, 0x4 ldr r0, =gUnknown_0203BCFE movs r2, 0 strh r2, [r0] ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08179410 movs r0, 0x1 negs r0, r0 str r2, [sp] movs r1, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r0, =sub_8178FC8 bl SetVBlankCallback ldr r0, =sub_8179428 bl SetMainCallback2 _08179410: add sp, 0x4 pop {r0} bx r0 .pool thumb_func_end sub_81793E0 thumb_func_start sub_8179428 sub_8179428: @ 8179428 push {r4,r5,lr} bl UpdatePaletteFade lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0817944E ldr r5, =gGameContinueCallback ldr r0, [r5] cmp r0, 0 bne _08179448 bl DoSoftReset b _0817944E .pool _08179448: bl SetMainCallback2 str r4, [r5] _0817944E: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_8179428 thumb_func_start sub_8179454 sub_8179454: @ 8179454 push {r4,r5,lr} ldr r5, =gMain ldr r0, [r5, 0x24] lsrs r4, r0, 3 movs r0, 0x7 ands r4, r0 ldr r0, =gUnknown_085EFD80 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [r5, 0x38] str r1, [r5, 0x3C] ldrh r1, [r5, 0x3A] ldr r0, =0xfffffe00 ands r0, r1 movs r1, 0x70 orrs r0, r1 strh r0, [r5, 0x3A] adds r1, r5, 0 adds r1, 0x38 movs r0, 0x48 strb r0, [r1] ldr r0, =gUnknown_0203BCFE ldrh r0, [r0] cmp r0, 0 beq _081794DC ldr r3, =gUnknown_085EFDAC lsls r2, r4, 1 adds r2, r4 adds r0, r2, r3 ldrb r4, [r0] ldrh r1, [r5, 0x3C] ldr r0, =0xfffffc00 ands r0, r1 orrs r0, r4 strh r0, [r5, 0x3C] adds r0, r3, 0x2 adds r0, r2, r0 ldrb r1, [r0] lsls r1, 4 adds r3, 0x1 adds r2, r3 ldrb r0, [r2] lsls r0, 3 orrs r1, r0 adds r3, r5, 0 adds r3, 0x3B movs r0, 0x1F ands r1, r0 lsls r1, 1 ldrb r2, [r3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _081794E8 .pool _081794DC: ldrh r0, [r5, 0x3C] ldr r1, =0xfffffc00 ands r1, r0 movs r0, 0x1 orrs r1, r0 strh r1, [r5, 0x3C] _081794E8: ldr r0, =gUnknown_030022F8 movs r1, 0xE0 lsls r1, 19 movs r2, 0x1 bl CpuFastSet ldr r1, =gUnknown_0203BCFE ldrh r0, [r1, 0x2] cmp r0, 0 beq _08179500 subs r0, 0x1 strh r0, [r1, 0x2] _08179500: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8179454 thumb_func_start sub_8179514 sub_8179514: @ 8179514 push {r4,lr} lsls r0, 16 lsrs r0, 16 ldr r4, =gSaveDataBuffer movs r3, 0x80 lsls r3, 5 movs r1, 0 adds r2, r4, 0 bl ReadFlash movs r1, 0 ldr r2, =0x000003ff _0817952C: ldr r0, [r4] cmp r0, 0 beq _08179540 movs r0, 0x1 b _0817954E .pool _08179540: adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 adds r4, 0x4 cmp r1, r2 bls _0817952C movs r0, 0 _0817954E: pop {r4} pop {r1} bx r1 thumb_func_end sub_8179514 thumb_func_start sub_8179554 sub_8179554: @ 8179554 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 16 lsrs r6, r0, 16 movs r0, 0 ldr r1, =0x00000fff mov r8, r1 ldr r7, =ProgramFlashByte _08179566: movs r4, 0 adds r5, r0, 0x1 _0817956A: ldr r3, [r7] adds r0, r6, 0 adds r1, r4, 0 movs r2, 0 bl _call_via_r3 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, r8 bls _0817956A adds r0, r6, 0 bl sub_8179514 lsls r0, 24 lsrs r1, r0, 24 lsls r0, r5, 16 lsrs r0, 16 cmp r1, 0 beq _08179596 cmp r0, 0x81 bls _08179566 _08179596: adds r0, r1, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_8179554 thumb_func_start sub_81795AC sub_81795AC: @ 81795AC push {r4-r6,lr} adds r5, r0, 0 movs r6, 0 _081795B2: movs r4, 0x1 lsls r4, r6 adds r0, r5, 0 ands r0, r4 cmp r0, 0 beq _081795CC adds r0, r6, 0 bl sub_8179554 lsls r0, 24 cmp r0, 0 bne _081795CC bics r5, r4 _081795CC: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0x1F bls _081795B2 cmp r5, 0 beq _081795DE movs r0, 0x1 b _081795E0 _081795DE: movs r0, 0 _081795E0: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_81795AC .align 2, 0 @ Don't pad with nop.