through sub_80F5334

This commit is contained in:
PikalaxALT
2020-01-17 09:51:32 -05:00
parent 9af01f5fad
commit fc9a008481
4 changed files with 131 additions and 283 deletions
-283
View File
@@ -5,289 +5,6 @@
.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}
+5
View File
@@ -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 gUnknown_8418C83[];
extern const u8 gUnknown_8418CD9[];
extern const u8 gUnknown_8418E09[];
#endif //GUARD_STRINGS_H
+1
View File
@@ -217,6 +217,7 @@ SECTIONS {
src/hall_of_fame.o(.text);
src/credits.o(.text);
src/diploma.o(.text);
src/save_failed_screen.o(.text);
asm/save_failed_screen.o(.text);
asm/clear_save_data_screen.o(.text);
src/evolution_graphics.o(.text);
+125
View File
@@ -0,0 +1,125 @@
#include "global.h"
#include "decompress.h"
#include "dma3.h"
#include "gpu_regs.h"
#include "help_system.h"
#include "m4a.h"
#include "save.h"
#include "save_failed_screen.h"
#include "strings.h"
bool32 gUnknown_3005430;
EWRAM_DATA u16 gUnknown_203AB4C = SAVE_NORMAL;
EWRAM_DATA u8 gUnknown_203AB50 = 0;
void sub_80F52EC(void);
void sub_80F53CC(void);
void sub_80F53E8(void);
void sub_80F5404(const u8 *a0);
bool32 sub_80F5458(void);
extern const u16 gUnknown_841EE44[];
void sub_80F50F4(void)
{
gUnknown_3005430 = FALSE;
}
void DoSaveFailedScreen(u8 saveType)
{
gUnknown_203AB4C = saveType;
gUnknown_3005430 = TRUE;
}
bool32 sub_80F5118(void)
{
switch (gUnknown_203AB50)
{
case 0:
if (!gUnknown_3005430)
return FALSE;
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128);
SaveCallbacks();
gUnknown_203AB50 = 1;
break;
case 1:
SaveMapTiles();
SaveMapGPURegs();
SaveMapTextColors();
sub_80F52EC();
SetGpuReg(REG_OFFSET_DISPCNT, 0);
gUnknown_203AB50 = 2;
break;
case 2:
RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
RequestDma3Copy(gUnknown_841EE44, (void *)PLTT, 0x20, 0);
gUnknown_203AB50 = 3;
break;
case 3:
sub_80F53E8();
sub_80F5404(gUnknown_8418C83);
sub_80F53CC();
gUnknown_203AB50 = 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);
gUnknown_203AB50 = 5;
break;
case 5:
if (sub_80F5458() == TRUE)
{
gSaveSucceeded = SAVE_STATUS_OK;
sub_80F5404(gUnknown_8418E09);
}
else
{
gSaveSucceeded = SAVE_STATUS_ERROR;
sub_80F5404(gUnknown_8418CD9);
}
gUnknown_203AB50 = 6;
break;
case 6:
if (JOY_NEW(A_BUTTON))
gUnknown_203AB50 = 7;
break;
case 7:
SetGpuReg(REG_OFFSET_DISPCNT, 0);
RestoreMapTiles();
sub_80F52EC();
gUnknown_203AB50 = 8;
break;
case 8:
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
RestoreMapTextColors();
RestoreGPURegs();
RestoreCallbacks();
gUnknown_3005430 = FALSE;
gUnknown_203AB50 = 0;
break;
}
return TRUE;
}
void sub_80F52EC(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;
}
}
void sub_80F5318(void)
{
RequestDma3Copy(gDecompressionBuffer + 0x3800, (void *)BG_SCREEN_ADDR(31), 0x500, 0);
}
void sub_80F5334(void)
{
RequestDma3Copy(gDecompressionBuffer + 0x020, (void *)BG_CHAR_ADDR(3) + 0x20, 0x2300, 0);
}