through sub_80C0A88
This commit is contained in:
@@ -5,367 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80C07D0
|
||||
sub_80C07D0: @ 80C07D0
|
||||
ldr r1, _080C07DC @ =gUnknown_20399D4
|
||||
ldr r1, [r1]
|
||||
ldr r2, _080C07E0 @ =0x000047b8
|
||||
adds r1, r2
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080C07DC: .4byte gUnknown_20399D4
|
||||
_080C07E0: .4byte 0x000047b8
|
||||
thumb_func_end sub_80C07D0
|
||||
|
||||
thumb_func_start sub_80C07E4
|
||||
sub_80C07E4: @ 80C07E4
|
||||
ldr r0, _080C07F0 @ =gUnknown_20399D4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080C07F4 @ =0x000047b8
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080C07F0: .4byte gUnknown_20399D4
|
||||
_080C07F4: .4byte 0x000047b8
|
||||
thumb_func_end sub_80C07E4
|
||||
|
||||
thumb_func_start sub_80C07F8
|
||||
sub_80C07F8: @ 80C07F8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080C0814 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
ldr r0, _080C0818 @ =gUnknown_20399D4
|
||||
ldr r0, [r0]
|
||||
ldr r2, _080C081C @ =0x000047b8
|
||||
adds r0, r2
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080C0814: .4byte gTasks
|
||||
_080C0818: .4byte gUnknown_20399D4
|
||||
_080C081C: .4byte 0x000047b8
|
||||
thumb_func_end sub_80C07F8
|
||||
|
||||
thumb_func_start sub_80C0820
|
||||
sub_80C0820: @ 80C0820
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
movs r0, 0x2
|
||||
bl sub_80C0E04
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _080C0838
|
||||
bl sub_80C25BC
|
||||
_080C0838:
|
||||
bl sub_80C4A04
|
||||
bl sub_80C3188
|
||||
bl sub_80C4348
|
||||
bl sub_80C4D30
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
bl FreeAllWindowBuffers
|
||||
ldr r0, _080C086C @ =gUnknown_20399D4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080C0870 @ =0x000047bc
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080C0878
|
||||
ldr r0, _080C0874 @ =gMain
|
||||
ldr r0, [r0, 0x8]
|
||||
bl SetMainCallback2
|
||||
b _080C087C
|
||||
.align 2, 0
|
||||
_080C086C: .4byte gUnknown_20399D4
|
||||
_080C0870: .4byte 0x000047bc
|
||||
_080C0874: .4byte gMain
|
||||
_080C0878:
|
||||
bl SetMainCallback2
|
||||
_080C087C:
|
||||
ldr r4, _080C0894 @ =gUnknown_20399D4
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080C088C
|
||||
bl Free
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_080C088C:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C0894: .4byte gUnknown_20399D4
|
||||
thumb_func_end sub_80C0820
|
||||
|
||||
thumb_func_start sub_80C0898
|
||||
sub_80C0898: @ 80C0898
|
||||
push {r4,lr}
|
||||
ldr r4, _080C08B0 @ =gUnknown_20399D4
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080C08AA
|
||||
bl Free
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_080C08AA:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C08B0: .4byte gUnknown_20399D4
|
||||
thumb_func_end sub_80C0898
|
||||
|
||||
thumb_func_start sub_80C08B4
|
||||
sub_80C08B4: @ 80C08B4
|
||||
push {lr}
|
||||
bl RunTasks
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C08B4
|
||||
|
||||
thumb_func_start sub_80C08CC
|
||||
sub_80C08CC: @ 80C08CC
|
||||
push {lr}
|
||||
bl LoadOam
|
||||
bl ProcessSpriteCopyRequests
|
||||
bl TransferPlttBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C08CC
|
||||
|
||||
thumb_func_start sub_80C08E0
|
||||
sub_80C08E0: @ 80C08E0
|
||||
push {lr}
|
||||
movs r0, 0
|
||||
bl SetVBlankCallback
|
||||
movs r0, 0
|
||||
bl SetHBlankCallback
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C08E0
|
||||
|
||||
thumb_func_start sub_80C08F4
|
||||
sub_80C08F4: @ 80C08F4
|
||||
push {lr}
|
||||
ldr r0, _080C0900 @ =sub_80C08CC
|
||||
bl SetVBlankCallback
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C0900: .4byte sub_80C08CC
|
||||
thumb_func_end sub_80C08F4
|
||||
|
||||
thumb_func_start sub_80C0904
|
||||
sub_80C0904: @ 80C0904
|
||||
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, _080C0A18 @ =0x040000d4
|
||||
movs r5, 0x80
|
||||
lsls r5, 5
|
||||
ldr r7, _080C0A1C @ =0x81000800
|
||||
movs r0, 0x81
|
||||
lsls r0, 24
|
||||
mov r12, r0
|
||||
_080C092A:
|
||||
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 _080C092A
|
||||
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, _080C0A18 @ =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, _080C0A20 @ =gUnknown_83F1A50
|
||||
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
|
||||
ldr r0, _080C0A24 @ =gUnknown_83F1A60
|
||||
bl InitWindows
|
||||
bl DeactivateAllTextPrinters
|
||||
ldr r1, _080C0A28 @ =0x00006040
|
||||
movs r0, 0
|
||||
bl SetGpuReg
|
||||
bl sub_80C0A2C
|
||||
bl sub_80C0AB8
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C0A18: .4byte 0x040000d4
|
||||
_080C0A1C: .4byte 0x81000800
|
||||
_080C0A20: .4byte gUnknown_83F1A50
|
||||
_080C0A24: .4byte gUnknown_83F1A60
|
||||
_080C0A28: .4byte 0x00006040
|
||||
thumb_func_end sub_80C0904
|
||||
|
||||
thumb_func_start sub_80C0A2C
|
||||
sub_80C0A2C: @ 80C0A2C
|
||||
push {r4,lr}
|
||||
ldr r4, _080C0A5C @ =gUnknown_20399D4
|
||||
ldr r1, [r4]
|
||||
ldr r0, _080C0A60 @ =0x00001796
|
||||
adds r1, r0
|
||||
movs r0, 0
|
||||
bl SetBgTilemapBuffer
|
||||
ldr r1, [r4]
|
||||
ldr r0, _080C0A64 @ =0x00002796
|
||||
adds r1, r0
|
||||
movs r0, 0x1
|
||||
bl SetBgTilemapBuffer
|
||||
ldr r1, [r4]
|
||||
ldr r0, _080C0A68 @ =0x00003796
|
||||
adds r1, r0
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C0A5C: .4byte gUnknown_20399D4
|
||||
_080C0A60: .4byte 0x00001796
|
||||
_080C0A64: .4byte 0x00002796
|
||||
_080C0A68: .4byte 0x00003796
|
||||
thumb_func_end sub_80C0A2C
|
||||
|
||||
thumb_func_start sub_80C0A6C
|
||||
sub_80C0A6C: @ 80C0A6C
|
||||
push {lr}
|
||||
bl ResetSpriteData
|
||||
bl ResetPaletteFade
|
||||
bl FreeAllSpritePalettes
|
||||
bl ResetTasks
|
||||
bl ScanlineEffect_Stop
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C0A6C
|
||||
|
||||
thumb_func_start sub_80C0A88
|
||||
sub_80C0A88: @ 80C0A88
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
beq _080C0A98
|
||||
cmp r0, 0x1
|
||||
beq _080C0AA6
|
||||
b _080C0AB2
|
||||
_080C0A98:
|
||||
movs r0, 0
|
||||
bl ShowBg
|
||||
movs r0, 0x3
|
||||
bl ShowBg
|
||||
b _080C0AB2
|
||||
_080C0AA6:
|
||||
movs r0, 0
|
||||
bl HideBg
|
||||
movs r0, 0x3
|
||||
bl HideBg
|
||||
_080C0AB2:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C0A88
|
||||
|
||||
thumb_func_start sub_80C0AB8
|
||||
sub_80C0AB8: @ 80C0AB8
|
||||
push {r4,lr}
|
||||
|
||||
+142
-5
@@ -1,5 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "palette.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "task.h"
|
||||
#include "malloc.h"
|
||||
#include "overworld.h"
|
||||
@@ -17,7 +19,10 @@ struct UnkStruct_20399D4
|
||||
{
|
||||
u8 filler_0000[0x0026];
|
||||
u16 field_0026[5][600];
|
||||
u8 filler_1796[0x3000];
|
||||
// Inefficiency: these should be u8 or have half the elements each
|
||||
u16 field_1796[BG_SCREEN_SIZE];
|
||||
u16 field_2796[BG_SCREEN_SIZE];
|
||||
u16 field_3796[BG_SCREEN_SIZE];
|
||||
u8 field_4796;
|
||||
u8 field_4797[4];
|
||||
u8 field_479B;
|
||||
@@ -54,8 +59,10 @@ void sub_80C08B4(void);
|
||||
void sub_80C08E0(void);
|
||||
void sub_80C08F4(void);
|
||||
void sub_80C0904(void);
|
||||
void sub_80C0A2C(void);
|
||||
void sub_80C0A6C(void);
|
||||
void sub_80C0A88(u8 a0);
|
||||
void sub_80C0AB8(void);
|
||||
void sub_80C0B18(void);
|
||||
void sub_80C0B9C(void);
|
||||
void sub_80C0BB0(void);
|
||||
@@ -65,25 +72,30 @@ u8 sub_80C0E20(void);
|
||||
void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc);
|
||||
void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc);
|
||||
void sub_80C2208(u8 taskId, TaskFunc taskFunc);
|
||||
void sub_80C25BC(void);
|
||||
void sub_80C2C1C(u8 taskId);
|
||||
void sub_80C3008(u16 a0, u16 a1);
|
||||
void sub_80C3154(u8 a0);
|
||||
void sub_80C3178(void);
|
||||
u8 sub_80C3400(void);
|
||||
u16 sub_80C3508(void);
|
||||
u16 sub_80C3514(void);
|
||||
u16 sub_80C3580(void);
|
||||
void sub_80C3188(void);
|
||||
u8 sub_80C3AC8(u8 a0);
|
||||
u8 sub_80C3400(void);
|
||||
u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3);
|
||||
void sub_80C41D8(u16 a0, u16 a1);
|
||||
void sub_80C4324(u8 a0);
|
||||
void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
|
||||
void sub_80C4348(void);
|
||||
void sub_80C48BC(u8 a0, u8 a1, u8 a2);
|
||||
void sub_80C4960(u8 a0, u8 a1, u8 a2);
|
||||
void sub_80C4A04(void);
|
||||
void sub_80C4D30(void);
|
||||
void sub_80C4E18(const u8 *str);
|
||||
void sub_80C4E74(const u8 *str);
|
||||
void sub_80C4ED0(bool8 a0);
|
||||
void sub_80C4F08(u8 taskId);
|
||||
u16 sub_80C3508(void);
|
||||
u16 sub_80C3514(void);
|
||||
u16 sub_80C3580(void);
|
||||
|
||||
#include "data/text/map_section_names.h"
|
||||
|
||||
@@ -96,6 +108,8 @@ extern const u32 gUnknown_83F0C0C[];
|
||||
extern const u32 gUnknown_83F0CF0[];
|
||||
extern const u32 gUnknown_83F1978[];
|
||||
extern const u32 gUnknown_83F19A0[];
|
||||
extern const struct BgTemplate gUnknown_83F1A50[4];
|
||||
extern const struct WindowTemplate gUnknown_83F1A60[];
|
||||
extern const u8 sSeviiMapsecs[3][30];
|
||||
extern const u8 gUnknown_83F1B00[3][4];
|
||||
|
||||
@@ -462,3 +476,126 @@ void sub_80C04E4(u8 taskId)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80C07D0(TaskFunc taskFunc)
|
||||
{
|
||||
gUnknown_20399D4->field_47B8 = taskFunc;
|
||||
}
|
||||
|
||||
TaskFunc sub_80C07E4(void)
|
||||
{
|
||||
return gUnknown_20399D4->field_47B8;
|
||||
}
|
||||
|
||||
void sub_80C07F8(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = gUnknown_20399D4->field_47B8;
|
||||
}
|
||||
|
||||
void sub_80C0820(u8 taskId)
|
||||
{
|
||||
if (sub_80C0E04(2) == TRUE)
|
||||
sub_80C25BC();
|
||||
sub_80C4A04();
|
||||
sub_80C3188();
|
||||
sub_80C4348();
|
||||
sub_80C4D30();
|
||||
DestroyTask(taskId);
|
||||
FreeAllWindowBuffers();
|
||||
if (gUnknown_20399D4->field_47BC == NULL)
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
else
|
||||
SetMainCallback2(gUnknown_20399D4->field_47BC);
|
||||
if (gUnknown_20399D4 != NULL)
|
||||
{
|
||||
FREE_AND_SET_NULL(gUnknown_20399D4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80C0898(void)
|
||||
{
|
||||
if (gUnknown_20399D4 != NULL)
|
||||
{
|
||||
FREE_AND_SET_NULL(gUnknown_20399D4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80C08B4(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_80C08CC(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void sub_80C08E0(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
SetHBlankCallback(NULL);
|
||||
}
|
||||
|
||||
void sub_80C08F4(void)
|
||||
{
|
||||
SetVBlankCallback(sub_80C08CC);
|
||||
}
|
||||
|
||||
void sub_80C0904(void)
|
||||
{
|
||||
DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
|
||||
DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
|
||||
DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
ResetBgsAndClearDma3BusyFlags(FALSE);
|
||||
InitBgsFromTemplates(0, gUnknown_83F1A50, NELEMS(gUnknown_83F1A50));
|
||||
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);
|
||||
InitWindows(gUnknown_83F1A60);
|
||||
DeactivateAllTextPrinters();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
|
||||
sub_80C0A2C();
|
||||
sub_80C0AB8();
|
||||
}
|
||||
|
||||
void sub_80C0A2C(void)
|
||||
{
|
||||
SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796);
|
||||
SetBgTilemapBuffer(1, gUnknown_20399D4->field_2796);
|
||||
SetBgTilemapBuffer(2, gUnknown_20399D4->field_3796);
|
||||
}
|
||||
|
||||
void sub_80C0A6C(void)
|
||||
{
|
||||
ResetSpriteData();
|
||||
ResetPaletteFade();
|
||||
FreeAllSpritePalettes();
|
||||
ResetTasks();
|
||||
ScanlineEffect_Stop();
|
||||
}
|
||||
|
||||
void sub_80C0A88(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
ShowBg(0);
|
||||
ShowBg(3);
|
||||
break;
|
||||
case 1:
|
||||
HideBg(0);
|
||||
HideBg(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user