Merge pull request #230 from PikalaxALT/save_failed_screen
Save failed screen
This commit is contained in:
@@ -1,595 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80F50F4
|
||||
sub_80F50F4: @ 80F50F4
|
||||
ldr r1, _080F50FC @ =gUnknown_3005430
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080F50FC: .4byte gUnknown_3005430
|
||||
thumb_func_end sub_80F50F4
|
||||
|
||||
thumb_func_start DoSaveFailedScreen
|
||||
DoSaveFailedScreen: @ 80F5100
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _080F5110 @ =gUnknown_203AB4C
|
||||
strh r0, [r1]
|
||||
ldr r1, _080F5114 @ =gUnknown_3005430
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080F5110: .4byte gUnknown_203AB4C
|
||||
_080F5114: .4byte gUnknown_3005430
|
||||
thumb_func_end DoSaveFailedScreen
|
||||
|
||||
thumb_func_start sub_80F5118
|
||||
sub_80F5118: @ 80F5118
|
||||
push {lr}
|
||||
ldr r0, _080F5130 @ =gUnknown_203AB50
|
||||
ldrb r1, [r0]
|
||||
adds r2, r0, 0
|
||||
cmp r1, 0x8
|
||||
bls _080F5126
|
||||
b _080F52D6
|
||||
_080F5126:
|
||||
lsls r0, r1, 2
|
||||
ldr r1, _080F5134 @ =_080F5138
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080F5130: .4byte gUnknown_203AB50
|
||||
_080F5134: .4byte _080F5138
|
||||
.align 2, 0
|
||||
_080F5138:
|
||||
.4byte _080F515C
|
||||
.4byte _080F5190
|
||||
.4byte _080F51B4
|
||||
.4byte _080F51E4
|
||||
.4byte _080F5204
|
||||
.4byte _080F5240
|
||||
.4byte _080F5280
|
||||
.4byte _080F5298
|
||||
.4byte _080F52B4
|
||||
_080F515C:
|
||||
ldr r0, _080F5168 @ =gUnknown_3005430
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080F516C
|
||||
movs r0, 0
|
||||
b _080F52D8
|
||||
.align 2, 0
|
||||
_080F5168: .4byte gUnknown_3005430
|
||||
_080F516C:
|
||||
ldr r0, _080F5184 @ =gMPlayInfo_BGM
|
||||
ldr r1, _080F5188 @ =0x0000ffff
|
||||
movs r2, 0x80
|
||||
bl m4aMPlayVolumeControl
|
||||
bl SaveCallbacks
|
||||
ldr r1, _080F518C @ =gUnknown_203AB50
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F5184: .4byte gMPlayInfo_BGM
|
||||
_080F5188: .4byte 0x0000ffff
|
||||
_080F518C: .4byte gUnknown_203AB50
|
||||
_080F5190:
|
||||
bl SaveMapTiles
|
||||
bl SaveMapGPURegs
|
||||
bl SaveMapTextColors
|
||||
bl sub_80F52EC
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
ldr r1, _080F51B0 @ =gUnknown_203AB50
|
||||
movs r0, 0x2
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F51B0: .4byte gUnknown_203AB50
|
||||
_080F51B4:
|
||||
ldr r1, _080F51D8 @ =0x0600c000
|
||||
movs r2, 0x80
|
||||
lsls r2, 7
|
||||
movs r0, 0
|
||||
movs r3, 0
|
||||
bl RequestDma3Fill
|
||||
ldr r0, _080F51DC @ =gUnknown_841EE44
|
||||
movs r1, 0xA0
|
||||
lsls r1, 19
|
||||
movs r2, 0x20
|
||||
movs r3, 0
|
||||
bl RequestDma3Copy
|
||||
ldr r1, _080F51E0 @ =gUnknown_203AB50
|
||||
movs r0, 0x3
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F51D8: .4byte 0x0600c000
|
||||
_080F51DC: .4byte gUnknown_841EE44
|
||||
_080F51E0: .4byte gUnknown_203AB50
|
||||
_080F51E4:
|
||||
bl sub_80F53E8
|
||||
ldr r0, _080F51FC @ =gUnknown_8418C83
|
||||
bl sub_80F5404
|
||||
bl sub_80F53CC
|
||||
ldr r1, _080F5200 @ =gUnknown_203AB50
|
||||
movs r0, 0x4
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F51FC: .4byte gUnknown_8418C83
|
||||
_080F5200: .4byte gUnknown_203AB50
|
||||
_080F5204:
|
||||
movs r0, 0x50
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x10
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x12
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
ldr r1, _080F5238 @ =0x00001f0c
|
||||
movs r0, 0x8
|
||||
bl SetGpuReg
|
||||
movs r1, 0x80
|
||||
lsls r1, 1
|
||||
movs r0, 0
|
||||
bl SetGpuReg
|
||||
ldr r1, _080F523C @ =gUnknown_203AB50
|
||||
movs r0, 0x5
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F5238: .4byte 0x00001f0c
|
||||
_080F523C: .4byte gUnknown_203AB50
|
||||
_080F5240:
|
||||
bl sub_80F5458
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0x1
|
||||
bne _080F5260
|
||||
ldr r0, _080F5258 @ =gSaveSucceeded
|
||||
strh r1, [r0]
|
||||
ldr r0, _080F525C @ =gUnknown_8418E09
|
||||
bl sub_80F5404
|
||||
b _080F526C
|
||||
.align 2, 0
|
||||
_080F5258: .4byte gSaveSucceeded
|
||||
_080F525C: .4byte gUnknown_8418E09
|
||||
_080F5260:
|
||||
ldr r0, _080F5274 @ =gSaveSucceeded
|
||||
movs r1, 0xFF
|
||||
strh r1, [r0]
|
||||
ldr r0, _080F5278 @ =gUnknown_8418CD9
|
||||
bl sub_80F5404
|
||||
_080F526C:
|
||||
ldr r1, _080F527C @ =gUnknown_203AB50
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F5274: .4byte gSaveSucceeded
|
||||
_080F5278: .4byte gUnknown_8418CD9
|
||||
_080F527C: .4byte gUnknown_203AB50
|
||||
_080F5280:
|
||||
ldr r0, _080F5294 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080F52D6
|
||||
movs r0, 0x7
|
||||
strb r0, [r2]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F5294: .4byte gMain
|
||||
_080F5298:
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
bl RestoreMapTiles
|
||||
bl sub_80F52EC
|
||||
ldr r1, _080F52B0 @ =gUnknown_203AB50
|
||||
movs r0, 0x8
|
||||
strb r0, [r1]
|
||||
b _080F52D6
|
||||
.align 2, 0
|
||||
_080F52B0: .4byte gUnknown_203AB50
|
||||
_080F52B4:
|
||||
ldr r0, _080F52DC @ =gMPlayInfo_BGM
|
||||
ldr r1, _080F52E0 @ =0x0000ffff
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl m4aMPlayVolumeControl
|
||||
bl RestoreMapTextColors
|
||||
bl RestoreGPURegs
|
||||
bl RestoreCallbacks
|
||||
ldr r0, _080F52E4 @ =gUnknown_3005430
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
ldr r0, _080F52E8 @ =gUnknown_203AB50
|
||||
strb r1, [r0]
|
||||
_080F52D6:
|
||||
movs r0, 0x1
|
||||
_080F52D8:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080F52DC: .4byte gMPlayInfo_BGM
|
||||
_080F52E0: .4byte 0x0000ffff
|
||||
_080F52E4: .4byte gUnknown_3005430
|
||||
_080F52E8: .4byte gUnknown_203AB50
|
||||
thumb_func_end sub_80F5118
|
||||
|
||||
thumb_func_start sub_80F52EC
|
||||
sub_80F52EC: @ 80F52EC
|
||||
push {r4,r5,lr}
|
||||
movs r1, 0
|
||||
ldr r5, _080F5310 @ =0x000001ff
|
||||
movs r4, 0xA0
|
||||
lsls r4, 19
|
||||
movs r2, 0
|
||||
ldr r3, _080F5314 @ =0x05000200
|
||||
_080F52FA:
|
||||
adds r0, r1, r4
|
||||
strh r2, [r0]
|
||||
adds r0, r1, r3
|
||||
strh r2, [r0]
|
||||
adds r1, 0x2
|
||||
cmp r1, r5
|
||||
ble _080F52FA
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F5310: .4byte 0x000001ff
|
||||
_080F5314: .4byte 0x05000200
|
||||
thumb_func_end sub_80F52EC
|
||||
|
||||
thumb_func_start sub_80F5318
|
||||
sub_80F5318: @ 80F5318
|
||||
push {lr}
|
||||
ldr r0, _080F532C @ =gDecompressionBuffer + 0x3800
|
||||
ldr r1, _080F5330 @ =0x0600f800
|
||||
movs r2, 0xA0
|
||||
lsls r2, 3
|
||||
movs r3, 0
|
||||
bl RequestDma3Copy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F532C: .4byte gDecompressionBuffer + 0x3800
|
||||
_080F5330: .4byte 0x0600f800
|
||||
thumb_func_end sub_80F5318
|
||||
|
||||
thumb_func_start sub_80F5334
|
||||
sub_80F5334: @ 80F5334
|
||||
push {lr}
|
||||
ldr r0, _080F5348 @ =gDecompressionBuffer + 0x020
|
||||
ldr r1, _080F534C @ =0x0600c020
|
||||
movs r2, 0x8C
|
||||
lsls r2, 6
|
||||
movs r3, 0
|
||||
bl RequestDma3Copy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F5348: .4byte gDecompressionBuffer + 0x020
|
||||
_080F534C: .4byte 0x0600c020
|
||||
thumb_func_end sub_80F5334
|
||||
|
||||
thumb_func_start sub_80F5350
|
||||
sub_80F5350: @ 80F5350
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r4, [sp, 0x20]
|
||||
ldr r5, [sp, 0x24]
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r9, r1
|
||||
lsls r2, 24
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
mov r8, r3
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r5, 16
|
||||
lsrs r7, r5, 16
|
||||
lsrs r0, r2, 24
|
||||
adds r2, r0, r4
|
||||
cmp r0, r2
|
||||
bge _080F53B6
|
||||
mov r12, r2
|
||||
ldr r1, _080F53C8 @ =gDecompressionBuffer + 0x3800
|
||||
mov r10, r1
|
||||
_080F5386:
|
||||
mov r4, r9
|
||||
mov r2, r8
|
||||
adds r1, r4, r2
|
||||
adds r3, r0, 0x1
|
||||
cmp r4, r1
|
||||
bge _080F53AE
|
||||
lsls r2, r0, 6
|
||||
mov r5, r10
|
||||
_080F5396:
|
||||
lsls r0, r4, 1
|
||||
adds r0, r2, r0
|
||||
adds r0, r5
|
||||
strh r6, [r0]
|
||||
adds r0, r6, r7
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
cmp r4, r1
|
||||
blt _080F5396
|
||||
_080F53AE:
|
||||
lsls r0, r3, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, r12
|
||||
blt _080F5386
|
||||
_080F53B6:
|
||||
bl sub_80F5318
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F53C8: .4byte gDecompressionBuffer + 0x3800
|
||||
thumb_func_end sub_80F5350
|
||||
|
||||
thumb_func_start sub_80F53CC
|
||||
sub_80F53CC: @ 80F53CC
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
movs r0, 0xA
|
||||
str r0, [sp]
|
||||
movs r0, 0x1
|
||||
str r0, [sp, 0x4]
|
||||
movs r1, 0x1
|
||||
movs r2, 0x5
|
||||
movs r3, 0x1C
|
||||
bl sub_80F5350
|
||||
add sp, 0x8
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80F53CC
|
||||
|
||||
thumb_func_start sub_80F53E8
|
||||
sub_80F53E8: @ 80F53E8
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
movs r0, 0x14
|
||||
str r0, [sp]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x4]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x1E
|
||||
bl sub_80F5350
|
||||
add sp, 0x8
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80F53E8
|
||||
|
||||
thumb_func_start sub_80F5404
|
||||
sub_80F5404: @ 80F5404
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x10
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2
|
||||
movs r1, 0x1
|
||||
movs r2, 0x3
|
||||
bl GenerateFontHalfRowLookupTable
|
||||
add r1, sp, 0xC
|
||||
ldr r2, _080F544C @ =0x00001111
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
ldr r4, _080F5450 @ =gDecompressionBuffer + 0x020
|
||||
ldr r2, _080F5454 @ =0x01001180
|
||||
adds r0, r1, 0
|
||||
adds r1, r4, 0
|
||||
bl CpuSet
|
||||
movs r0, 0x2
|
||||
str r0, [sp]
|
||||
movs r0, 0x1C
|
||||
str r0, [sp, 0x4]
|
||||
movs r0, 0xA
|
||||
str r0, [sp, 0x8]
|
||||
movs r0, 0x2
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
movs r3, 0x2
|
||||
bl HelpSystemRenderText
|
||||
bl sub_80F5334
|
||||
add sp, 0x10
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F544C: .4byte 0x00001111
|
||||
_080F5450: .4byte gDecompressionBuffer + 0x020
|
||||
_080F5454: .4byte 0x01001180
|
||||
thumb_func_end sub_80F5404
|
||||
|
||||
thumb_func_start sub_80F5458
|
||||
sub_80F5458: @ 80F5458
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
ldr r0, _080F5490 @ =gDamagedSaveSectors
|
||||
ldr r1, [r0]
|
||||
adds r4, r0, 0
|
||||
cmp r1, 0
|
||||
beq _080F548C
|
||||
_080F5466:
|
||||
ldr r0, [r4]
|
||||
bl sub_80F5540
|
||||
cmp r0, 0
|
||||
bne _080F5498
|
||||
ldr r0, _080F5494 @ =gUnknown_203AB4C
|
||||
ldrb r0, [r0]
|
||||
bl HandleSavingData
|
||||
adds r5, 0x1
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080F548C
|
||||
ldr r4, _080F5490 @ =gDamagedSaveSectors
|
||||
cmp r5, 0x2
|
||||
ble _080F5466
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _080F5498
|
||||
_080F548C:
|
||||
movs r0, 0x1
|
||||
b _080F549A
|
||||
.align 2, 0
|
||||
_080F5490: .4byte gDamagedSaveSectors
|
||||
_080F5494: .4byte gUnknown_203AB4C
|
||||
_080F5498:
|
||||
movs r0, 0
|
||||
_080F549A:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80F5458
|
||||
|
||||
thumb_func_start VerifySectorWipe
|
||||
VerifySectorWipe: @ 80F54A0
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r4, _080F54C4 @ =gSaveDataBuffer
|
||||
movs r3, 0x80
|
||||
lsls r3, 5
|
||||
movs r1, 0
|
||||
adds r2, r4, 0
|
||||
bl ReadFlash
|
||||
movs r1, 0
|
||||
ldr r2, _080F54C8 @ =0x000003ff
|
||||
_080F54B8:
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080F54CC
|
||||
movs r0, 0x1
|
||||
b _080F54DA
|
||||
.align 2, 0
|
||||
_080F54C4: .4byte gSaveDataBuffer
|
||||
_080F54C8: .4byte 0x000003ff
|
||||
_080F54CC:
|
||||
adds r0, r1, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
adds r4, 0x4
|
||||
cmp r1, r2
|
||||
bls _080F54B8
|
||||
movs r0, 0
|
||||
_080F54DA:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end VerifySectorWipe
|
||||
|
||||
thumb_func_start WipeSector
|
||||
WipeSector: @ 80F54E0
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r7, r0, 0
|
||||
movs r0, 0
|
||||
lsls r6, r7, 16
|
||||
ldr r1, _080F5538 @ =ProgramFlashByte
|
||||
mov r9, r1
|
||||
ldr r1, _080F553C @ =0x00000fff
|
||||
mov r8, r1
|
||||
_080F54F6:
|
||||
movs r4, 0
|
||||
adds r5, r0, 0x1
|
||||
_080F54FA:
|
||||
mov r0, r9
|
||||
ldr r3, [r0]
|
||||
lsrs r0, r6, 16
|
||||
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 _080F54FA
|
||||
adds r0, r7, 0
|
||||
bl VerifySectorWipe
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
lsls r0, r5, 16
|
||||
lsrs r0, 16
|
||||
cmp r1, 0
|
||||
beq _080F5528
|
||||
cmp r0, 0x81
|
||||
bls _080F54F6
|
||||
_080F5528:
|
||||
adds r0, r1, 0
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080F5538: .4byte ProgramFlashByte
|
||||
_080F553C: .4byte 0x00000fff
|
||||
thumb_func_end WipeSector
|
||||
|
||||
thumb_func_start sub_80F5540
|
||||
sub_80F5540: @ 80F5540
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
movs r6, 0
|
||||
_080F5546:
|
||||
movs r4, 0x1
|
||||
lsls r4, r6
|
||||
adds r0, r5, 0
|
||||
ands r0, r4
|
||||
cmp r0, 0
|
||||
beq _080F555E
|
||||
adds r0, r6, 0
|
||||
bl WipeSector
|
||||
cmp r0, 0
|
||||
bne _080F555E
|
||||
bics r5, r4
|
||||
_080F555E:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x1F
|
||||
ble _080F5546
|
||||
cmp r5, 0
|
||||
beq _080F556C
|
||||
movs r0, 0x1
|
||||
b _080F556E
|
||||
_080F556C:
|
||||
movs r0, 0
|
||||
_080F556E:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80F5540
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -1 +1,4 @@
|
||||
gUnknown_3005E88
|
||||
sNumQuestLogs
|
||||
gUnknown_3005E90
|
||||
gUnknown_3005E94
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
sIsInSaveFailedScreen
|
||||
@@ -1,10 +0,0 @@
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/moves.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_841EE44:: @ 841EE44
|
||||
.incbin "graphics/interface/save_failed_screen.gbapal"
|
||||
+3
-3
@@ -2465,14 +2465,14 @@ gUnknown_8418C62:: @ 0x8418C62
|
||||
gUnknown_8418C6F:: @ 0x8418C6F
|
||||
.string "もう これいじょう たべない みたい‥$"
|
||||
|
||||
gUnknown_8418C83:: @ 8418C83
|
||||
gText_SaveFailedScreen_CheckingBackupMemory:: @ 8418C83
|
||||
.string "Save failed.\n"
|
||||
.string "Checking the backup memory‥\n"
|
||||
.string "Please wait.\n"
|
||||
.string "“Time required:\n"
|
||||
.string "about 1 minute”$"
|
||||
|
||||
gUnknown_8418CD9:: @ 8418CD9
|
||||
gText_SaveFailedScreen_BackupMemoryDamaged:: @ 8418CD9
|
||||
.string "The backup memory is damaged or\n"
|
||||
.string "the game's battery has run dry.\n"
|
||||
.string "The game can be played, but its\n"
|
||||
@@ -2493,7 +2493,7 @@ gUnknown_8418DC9:: @ 0x8418DC9
|
||||
.string "{COLOR RED}“このまま ぼうけんをつづけることは できません\n"
|
||||
.string "タイトルに もどります”$"
|
||||
|
||||
gUnknown_8418E09:: @ 8418E09
|
||||
gText_SaveFailedScreen_SaveCompleted:: @ 8418E09
|
||||
.string "Save completed.\n"
|
||||
.string "“Please press the A Button.”$"
|
||||
|
||||
|
||||
@@ -91,5 +91,6 @@ void PlaceListMenuCursor(void);
|
||||
bool8 MoveCursor(u8 by, u8 dirn);
|
||||
void HelpSystem_BackupSomeVariable(void);
|
||||
void HelpSystem_RestoreSomeVariable(void);
|
||||
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
|
||||
|
||||
#endif //GUARD_HELP_SYSTEM_H
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define GUARD_SAVE_FAILED_SCREEN_H
|
||||
|
||||
extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
|
||||
void sub_80F50F4(void);
|
||||
bool32 sub_80F5118(void);
|
||||
void SetNotInSaveFailedScreen(void);
|
||||
bool32 RunSaveFailedScreen(void);
|
||||
|
||||
#endif //GUARD_SAVE_FAILED_SCREEN_H
|
||||
|
||||
@@ -1033,4 +1033,9 @@ extern const u8 gText_RegionMap_AreaDesc_AlteringCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_PatternBush[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_DottedHole[];
|
||||
|
||||
// save_failed_screen
|
||||
extern const u8 gText_SaveFailedScreen_CheckingBackupMemory[];
|
||||
extern const u8 gText_SaveFailedScreen_BackupMemoryDamaged[];
|
||||
extern const u8 gText_SaveFailedScreen_SaveCompleted[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
||||
+2
-2
@@ -217,7 +217,7 @@ SECTIONS {
|
||||
src/hall_of_fame.o(.text);
|
||||
src/credits.o(.text);
|
||||
src/diploma.o(.text);
|
||||
asm/save_failed_screen.o(.text);
|
||||
src/save_failed_screen.o(.text);
|
||||
asm/clear_save_data_screen.o(.text);
|
||||
src/evolution_graphics.o(.text);
|
||||
src/fldeff_teleport.o(.text);
|
||||
@@ -505,7 +505,7 @@ SECTIONS {
|
||||
src/credits.o(.rodata);
|
||||
src/diploma.o(.rodata);
|
||||
data/strings.o(.rodata);
|
||||
data/save_failed_screen.o(.rodata);
|
||||
src/save_failed_screen.o(.rodata);
|
||||
data/clear_save_data_screen.o(.rodata);
|
||||
src/evolution_graphics.o(.rodata);
|
||||
src/new_menu_helpers.o(.rodata);
|
||||
|
||||
+254
-254
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,8 @@ static void sub_80C99A0(u8 taskId);
|
||||
static void sub_80C9A10(void);
|
||||
static void sub_80C9A60(void);
|
||||
|
||||
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {};
|
||||
|
||||
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
|
||||
{
|
||||
u8 mapObjId;
|
||||
|
||||
+2
-2
@@ -115,7 +115,7 @@ void AgbMain()
|
||||
gSoftResetDisabled = FALSE;
|
||||
gHelpSystemEnabled = FALSE;
|
||||
|
||||
sub_80F50F4();
|
||||
SetNotInSaveFailedScreen();
|
||||
|
||||
AGBPrintInit();
|
||||
|
||||
@@ -186,7 +186,7 @@ static void InitMainCallbacks(void)
|
||||
|
||||
static void CallCallbacks(void)
|
||||
{
|
||||
if (!sub_80F5118() && !RunHelpSystemCallback())
|
||||
if (!RunSaveFailedScreen() && !RunHelpSystemCallback())
|
||||
{
|
||||
if (gMain.callback1)
|
||||
gMain.callback1();
|
||||
|
||||
@@ -0,0 +1,231 @@
|
||||
#include "global.h"
|
||||
#include "decompress.h"
|
||||
#include "dma3.h"
|
||||
#include "gba/flash_internal.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "help_system.h"
|
||||
#include "m4a.h"
|
||||
#include "save.h"
|
||||
#include "save_failed_screen.h"
|
||||
#include "strings.h"
|
||||
#include "text.h"
|
||||
|
||||
bool32 sIsInSaveFailedScreen;
|
||||
|
||||
static EWRAM_DATA u16 sSaveType = SAVE_NORMAL;
|
||||
static EWRAM_DATA u16 unused_203AB4E = 0;
|
||||
static EWRAM_DATA u8 sSaveFailedScreenState = 0;
|
||||
|
||||
static void BlankPalettes(void);
|
||||
static void UpdateMapBufferWithText(void);
|
||||
static void ClearMapBuffer(void);
|
||||
static void PrintTextOnSaveFailedScreen(const u8 *a0);
|
||||
static bool32 TryWipeDamagedSectors(void);
|
||||
static bool32 WipeDamagedSectors(u32 damagedSectors);
|
||||
|
||||
static const u16 sSaveFailedScreenPals[] = INCBIN_U16("graphics/interface/save_failed_screen.gbapal");
|
||||
|
||||
void SetNotInSaveFailedScreen(void)
|
||||
{
|
||||
sIsInSaveFailedScreen = FALSE;
|
||||
}
|
||||
|
||||
void DoSaveFailedScreen(u8 saveType)
|
||||
{
|
||||
sSaveType = saveType;
|
||||
sIsInSaveFailedScreen = TRUE;
|
||||
}
|
||||
|
||||
bool32 RunSaveFailedScreen(void)
|
||||
{
|
||||
switch (sSaveFailedScreenState)
|
||||
{
|
||||
case 0:
|
||||
if (!sIsInSaveFailedScreen)
|
||||
return FALSE;
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128);
|
||||
SaveCallbacks();
|
||||
sSaveFailedScreenState = 1;
|
||||
break;
|
||||
case 1:
|
||||
SaveMapTiles();
|
||||
SaveMapGPURegs();
|
||||
SaveMapTextColors();
|
||||
BlankPalettes();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
sSaveFailedScreenState = 2;
|
||||
break;
|
||||
case 2:
|
||||
RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
|
||||
RequestDma3Copy(sSaveFailedScreenPals, (void *)PLTT, 0x20, 0);
|
||||
sSaveFailedScreenState = 3;
|
||||
break;
|
||||
case 3:
|
||||
ClearMapBuffer();
|
||||
PrintTextOnSaveFailedScreen(gText_SaveFailedScreen_CheckingBackupMemory);
|
||||
UpdateMapBufferWithText();
|
||||
sSaveFailedScreenState = 4;
|
||||
break;
|
||||
case 4:
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON);
|
||||
sSaveFailedScreenState = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (TryWipeDamagedSectors() == TRUE)
|
||||
{
|
||||
gSaveSucceeded = SAVE_STATUS_OK;
|
||||
PrintTextOnSaveFailedScreen(gText_SaveFailedScreen_SaveCompleted);
|
||||
}
|
||||
else
|
||||
{
|
||||
gSaveSucceeded = SAVE_STATUS_ERROR;
|
||||
PrintTextOnSaveFailedScreen(gText_SaveFailedScreen_BackupMemoryDamaged);
|
||||
}
|
||||
sSaveFailedScreenState = 6;
|
||||
break;
|
||||
case 6:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
sSaveFailedScreenState = 7;
|
||||
break;
|
||||
case 7:
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
RestoreMapTiles();
|
||||
BlankPalettes();
|
||||
sSaveFailedScreenState = 8;
|
||||
break;
|
||||
case 8:
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
|
||||
RestoreMapTextColors();
|
||||
RestoreGPURegs();
|
||||
RestoreCallbacks();
|
||||
sIsInSaveFailedScreen = FALSE;
|
||||
sSaveFailedScreenState = 0;
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void BlankPalettes(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < BG_PLTT_SIZE; i += sizeof(u16))
|
||||
{
|
||||
*((u16 *)(BG_PLTT + i)) = RGB_BLACK;
|
||||
*((u16 *)(OBJ_PLTT + i)) = RGB_BLACK;
|
||||
}
|
||||
}
|
||||
|
||||
static void RequestDmaCopyFromScreenBuffer(void)
|
||||
{
|
||||
RequestDma3Copy(gDecompressionBuffer + 0x3800, (void *)BG_SCREEN_ADDR(31), 0x500, 0);
|
||||
}
|
||||
|
||||
static void RequestDmaCopyFromCharBuffer(void)
|
||||
{
|
||||
RequestDma3Copy(gDecompressionBuffer + 0x020, (void *)BG_CHAR_ADDR(3) + 0x20, 0x2300, 0);
|
||||
}
|
||||
|
||||
static void FillBgMapBufferRect(u16 baseBlock, u8 left, u8 top, u8 width, u8 height, u16 blockOffset)
|
||||
{
|
||||
u16 i, j;
|
||||
|
||||
for (i = top; i < top + height; i++)
|
||||
{
|
||||
for (j = left; j < left + width; j++)
|
||||
{
|
||||
*((u16 *)(gDecompressionBuffer + 0x3800 + 64 * i + 2 * j)) = baseBlock;
|
||||
baseBlock += blockOffset;
|
||||
}
|
||||
}
|
||||
RequestDmaCopyFromScreenBuffer();
|
||||
}
|
||||
|
||||
static void UpdateMapBufferWithText(void)
|
||||
{
|
||||
FillBgMapBufferRect(0x001, 1, 5, 28, 10, 0x001);
|
||||
}
|
||||
|
||||
static void ClearMapBuffer(void)
|
||||
{
|
||||
FillBgMapBufferRect(0x000, 0, 0, 30, 20, 0x000);
|
||||
}
|
||||
|
||||
static void PrintTextOnSaveFailedScreen(const u8 *str)
|
||||
{
|
||||
GenerateFontHalfRowLookupTable(TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY);
|
||||
CpuFill16(PIXEL_FILL(1) | (PIXEL_FILL(1) << 8), gDecompressionBuffer + 0x20, 0x2300);
|
||||
HelpSystemRenderText(2, gDecompressionBuffer + 0x20, str, 2, 2, 28, 10);
|
||||
RequestDmaCopyFromCharBuffer();
|
||||
}
|
||||
|
||||
static bool32 TryWipeDamagedSectors(void)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; gDamagedSaveSectors != 0 && i < 3; i++)
|
||||
{
|
||||
if (WipeDamagedSectors(gDamagedSaveSectors))
|
||||
return FALSE;
|
||||
HandleSavingData(sSaveType);
|
||||
}
|
||||
if (gDamagedSaveSectors != 0)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool16 VerifySectorWipe(u32 sector)
|
||||
{
|
||||
u16 sector0 = sector;
|
||||
u16 i;
|
||||
u32 *saveDataBuffer = (void *)&gSaveDataBuffer;
|
||||
ReadFlash(sector0, 0, saveDataBuffer, 0x1000);
|
||||
for (i = 0; i < 0x1000 / sizeof(u32); i++, saveDataBuffer++)
|
||||
{
|
||||
if (*saveDataBuffer != 0)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 WipeSector(u32 sector)
|
||||
{
|
||||
bool32 result;
|
||||
u16 i, j;
|
||||
|
||||
i = 0;
|
||||
while (i < 130)
|
||||
{
|
||||
for (j = 0; j < 0x1000; j++)
|
||||
{
|
||||
ProgramFlashByte(sector, j, 0);
|
||||
}
|
||||
result = VerifySectorWipe(sector);
|
||||
i++;
|
||||
if (!result)
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool32 WipeDamagedSectors(u32 damagedSectors)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 32; i++)
|
||||
{
|
||||
if (damagedSectors & (1 << i))
|
||||
{
|
||||
if (!WipeSector(i))
|
||||
{
|
||||
damagedSectors &= ~(1 << i);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (damagedSectors == 0)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
+20
-15
@@ -1,13 +1,22 @@
|
||||
.align 2
|
||||
.include "main.o"
|
||||
.align 2
|
||||
.include "bg.o"
|
||||
.align 2
|
||||
.include "text_printer.o"
|
||||
.align 2
|
||||
.include "window.o"
|
||||
.align 2
|
||||
.include "text.o"
|
||||
.align 2
|
||||
.include "sprite.o"
|
||||
.align 2
|
||||
.include "link.o"
|
||||
.align 4
|
||||
.include "battle_main.o"
|
||||
.align 2
|
||||
.include "random.o"
|
||||
.align 2
|
||||
.include "load_save.o"
|
||||
|
||||
.align 2
|
||||
@@ -35,6 +44,7 @@ gUnknown_300502C: @ 300502C
|
||||
gUnknown_3005030: @ 3005030
|
||||
.space 0x10
|
||||
|
||||
.align 2
|
||||
.include "fieldmap.o"
|
||||
|
||||
.align 4
|
||||
@@ -47,16 +57,21 @@ gUnknown_3005068: @ 3005068
|
||||
gUnknown_300506C: @ 300506C
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "scrcmd.o"
|
||||
|
||||
.align 2
|
||||
gSelectedObjectEvent: @ 3005074
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005078: @ 3005078
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "event_data.o"
|
||||
.align 2
|
||||
.include "sound.o"
|
||||
.align 2
|
||||
.include "task.o"
|
||||
|
||||
@ what is this?
|
||||
@@ -71,10 +86,8 @@ gUnknown_3005078: @ 3005078
|
||||
.include "save.o"
|
||||
.align 2
|
||||
.include "battle_anim_special.o"
|
||||
|
||||
gUnknown_3005430: @ 3005430
|
||||
.space 0x10
|
||||
|
||||
.align 2
|
||||
.include "save_failed_screen.o"
|
||||
.align 4
|
||||
.include "link_rfu_2.o"
|
||||
.align 4
|
||||
@@ -83,31 +96,23 @@ gUnknown_3005430: @ 3005430
|
||||
.include "list_menu.o"
|
||||
.align 2
|
||||
.include "quest_log.o"
|
||||
|
||||
sNumQuestLogs: @ 3005E8C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005E90: @ 3005E90
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005E94: @ 3005E94
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "party_menu.o"
|
||||
.align 2
|
||||
.include "help_system_812B1E0.o"
|
||||
.align 4
|
||||
.include "fame_checker.o"
|
||||
.align 2
|
||||
.include "help_system.o"
|
||||
.align 4
|
||||
.include "mevent.o"
|
||||
|
||||
.align 4
|
||||
.include "battle_controller_pokedude.o"
|
||||
.align 4
|
||||
.include "berry_fix_program.o"
|
||||
.align 2
|
||||
.include "m4a.o"
|
||||
.align 2
|
||||
.include "agb_flash.o"
|
||||
.align 2
|
||||
.include "librfu_stwi.o"
|
||||
|
||||
+10
-21
@@ -16,7 +16,6 @@
|
||||
.align 2
|
||||
.include "src/link.o"
|
||||
.space 8
|
||||
|
||||
.align 2
|
||||
.include "src/battle_controllers.o"
|
||||
.align 2
|
||||
@@ -144,6 +143,7 @@ gUnknown_20386A4: @ 20386A4
|
||||
gUnknown_20386A8: @ 20386A8
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "src/battle_setup.o"
|
||||
.align 2
|
||||
.include "src/wild_encounter.o"
|
||||
@@ -154,7 +154,6 @@ gFieldEffectArguments: @ 20386E0
|
||||
|
||||
.align 2
|
||||
.include "src/scanline_effect.o"
|
||||
|
||||
.align 2
|
||||
.include "src/option_menu.o"
|
||||
.align 2
|
||||
@@ -268,14 +267,10 @@ gUnknown_203998C: @ 203998C
|
||||
.include "src/menu_helpers.o"
|
||||
.align 2
|
||||
.include "src/region_map.o"
|
||||
|
||||
.align 2
|
||||
gAIScriptPtr: @ 2039A00
|
||||
.space 0x4
|
||||
|
||||
gPlayerFacingPosition: @ 2039A04
|
||||
.space 0x8
|
||||
|
||||
.include "src/battle_ai_script_commands.o"
|
||||
.align 2
|
||||
.include "src/fldeff_rocksmash.o"
|
||||
.align 2
|
||||
.include "src/field_specials.o"
|
||||
.align 2
|
||||
@@ -310,15 +305,13 @@ gPlayerFacingPosition: @ 2039A04
|
||||
.include "src/diploma.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_203AB4C: @ 203AB4C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203AB50: @ 203AB50
|
||||
.space 0x4
|
||||
.include "src/save_failed_screen.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_203AB54: @ 203AB54
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "src/new_menu_helpers.o"
|
||||
.align 2
|
||||
.include "src/box_party_pokemon_dropdown.o"
|
||||
@@ -460,6 +453,7 @@ gUnknown_203B0E8: @ 203B0E8
|
||||
.include "src/oak_speech.o"
|
||||
.align 2
|
||||
.include "src/tm_case.o"
|
||||
.align 2
|
||||
.include "src/menu_indicators.o"
|
||||
|
||||
gUnknown_203B140: @ 203B140
|
||||
@@ -506,13 +500,8 @@ gUnknown_203B170: @ 203B170
|
||||
.include "src/berry_pouch.o"
|
||||
.align 2
|
||||
.include "src/slot_machine.o"
|
||||
|
||||
sLocationHistory: @ 203F3A8
|
||||
.space 0x6
|
||||
|
||||
sRoamerLocation: @ 203F3AE
|
||||
.space 0x2
|
||||
|
||||
.align 2
|
||||
.include "src/roamer.o"
|
||||
.align 2
|
||||
.include "src/mystery_gift_menu.o"
|
||||
.align 2
|
||||
|
||||
Reference in New Issue
Block a user