sub_812C3F8

This commit is contained in:
PikalaxALT
2018-11-24 13:08:18 -05:00
parent 351ee943db
commit 5a262eec73
5 changed files with 130 additions and 271 deletions
-241
View File
@@ -5,247 +5,6 @@
.text
thumb_func_start sub_812C3F8
sub_812C3F8: @ 812C3F8
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0xC
ldr r0, _0812C41C @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x7
bls _0812C410
b _0812C626
_0812C410:
lsls r0, 2
ldr r1, _0812C420 @ =_0812C424
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0812C41C: .4byte gMain
_0812C420: .4byte _0812C424
.align 2, 0
_0812C424:
.4byte _0812C444
.4byte _0812C450
.4byte _0812C456
.4byte _0812C4C0
.4byte _0812C540
.4byte _0812C578
.4byte _0812C5A0
.4byte _0812C5D4
_0812C444:
movs r0, 0
bl SetVBlankCallback
bl sub_812D420
b _0812C5BE
_0812C450:
bl sub_812D558
b _0812C5BE
_0812C456:
ldr r6, _0812C4B0 @ =gUnknown_203B0F0
movs r4, 0x80
lsls r4, 4
adds r0, r4, 0
bl AllocZeroed
str r0, [r6]
ldr r1, _0812C4B4 @ =gUnknown_203B0F4
mov r8, r1
movs r0, 0x80
lsls r0, 5
bl AllocZeroed
mov r1, r8
str r0, [r1]
ldr r5, _0812C4B8 @ =gUnknown_203B0F8
adds r0, r4, 0
bl AllocZeroed
str r0, [r5]
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _0812C4BC @ =gUnknown_845FBF4
movs r0, 0
movs r2, 0x4
bl InitBgsFromTemplates
ldr r1, [r6]
movs r0, 0x3
bl SetBgTilemapBuffer
ldr r1, [r5]
movs r0, 0x2
bl SetBgTilemapBuffer
mov r0, r8
ldr r1, [r0]
movs r0, 0x1
bl SetBgTilemapBuffer
bl sub_812D594
b _0812C5BE
.align 2, 0
_0812C4B0: .4byte gUnknown_203B0F0
_0812C4B4: .4byte gUnknown_203B0F4
_0812C4B8: .4byte gUnknown_203B0F8
_0812C4BC: .4byte gUnknown_845FBF4
_0812C4C0:
ldr r1, _0812C52C @ =gUnknown_8E9F260
movs r2, 0xA5
lsls r2, 5
movs r0, 0x3
movs r3, 0
bl LoadBgTiles
ldr r1, _0812C530 @ =gUnknown_8EA0700
movs r5, 0x20
str r5, [sp]
str r5, [sp, 0x4]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBufferRect
ldr r4, _0812C534 @ =gUnknown_8E9F220
adds r0, r4, 0
movs r1, 0
movs r2, 0x40
bl LoadPalette
adds r4, 0x20
adds r0, r4, 0
movs r1, 0x10
movs r2, 0x20
bl LoadPalette
ldr r1, _0812C538 @ =gUnknown_8EA0F00
str r5, [sp]
str r5, [sp, 0x4]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBufferRect
ldr r1, _0812C53C @ =gUnknown_845C600
str r5, [sp]
str r5, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x1
movs r2, 0x1E
movs r3, 0
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0x2
bl stdpal_get
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
b _0812C5BE
.align 2, 0
_0812C52C: .4byte gUnknown_8E9F260
_0812C530: .4byte gUnknown_8EA0700
_0812C534: .4byte gUnknown_8E9F220
_0812C538: .4byte gUnknown_8EA0F00
_0812C53C: .4byte gUnknown_845C600
_0812C540:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0812C626
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
movs r0, 0x3
bl ShowBg
movs r0, 0x3
bl CopyBgTilemapBufferToVram
movs r0, 0x2
bl CopyBgTilemapBufferToVram
movs r0, 0x1
bl CopyBgTilemapBufferToVram
b _0812C5BE
_0812C578:
ldr r0, _0812C598 @ =gUnknown_845FC04
bl InitWindows
bl DeactivateAllTextPrinters
bl sub_812CEC0
ldr r4, _0812C59C @ =gUnknown_203B100
movs r0, 0x88
bl AllocZeroed
str r0, [r4]
bl sub_812DB28
b _0812C5BE
.align 2, 0
_0812C598: .4byte gUnknown_845FC04
_0812C59C: .4byte gUnknown_203B100
_0812C5A0:
bl sub_812C648
movs r0, 0
bl sub_812D1A8
bl sub_812CE9C
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
_0812C5BE:
ldr r1, _0812C5D0 @ =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0812C626
.align 2, 0
_0812C5D0: .4byte gMain
_0812C5D4:
bl sub_812D584
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r0, 0x52
movs r1, 0x7
bl SetGpuReg
movs r0, 0x54
movs r1, 0x8
bl SetGpuReg
ldr r0, _0812C634 @ =sub_812C380
bl SetVBlankCallback
ldr r0, _0812C638 @ =gUnknown_203B0FC
ldr r1, [r0]
movs r4, 0
movs r0, 0
strh r0, [r1, 0x4]
bl sub_812E000
movs r0, 0x1
movs r1, 0x4
bl sub_812E178
ldr r0, _0812C63C @ =sub_812C664
movs r1, 0x8
bl CreateTask
ldr r0, _0812C640 @ =sub_812C394
bl SetMainCallback2
ldr r0, _0812C644 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
strb r4, [r0]
_0812C626:
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0812C634: .4byte sub_812C380
_0812C638: .4byte gUnknown_203B0FC
_0812C63C: .4byte sub_812C664
_0812C640: .4byte sub_812C394
_0812C644: .4byte gMain
thumb_func_end sub_812C3F8
thumb_func_start sub_812C648
sub_812C648: @ 812C648
push {lr}
+3 -3
View File
@@ -77,9 +77,9 @@ void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
+9 -9
View File
@@ -391,7 +391,7 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT
}
}
#else
__attribute__((naked))
NAKED
void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates)
{
asm(".syntax unified\n\
@@ -634,7 +634,7 @@ bool8 IsDma3ManagerBusyWithBgCopy(void)
return FALSE;
}
#else
__attribute__((naked))
NAKED
bool8 IsDma3ManagerBusyWithBgCopy(void)
{
asm("push {r4-r7,lr}\n\
@@ -1065,7 +1065,7 @@ void CopyBgTilemapBufferToVram(u8 bg)
}
}
void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height)
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
{
u16 destX16;
u16 destY16;
@@ -1077,7 +1077,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
{
case 0:
{
u16 * srcCopy = src;
const u16 * srcCopy = src;
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
@@ -1089,7 +1089,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
}
case 1:
{
u8 * srcCopy = src;
const u8 * srcCopy = src;
mode = GetBgMetricAffineMode(bg, 0x1);
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
@@ -1104,7 +1104,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
}
}
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
{
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
}
@@ -1151,8 +1151,8 @@ void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWid
}
}
}*/
__attribute__((naked))
void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
NAKED
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
{
asm("push {r4-r7,lr}\n\
mov r7, r10\n\
@@ -1598,7 +1598,7 @@ void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 pal
*dest = test;
}
#else
__attribute__((naked))
NAKED
void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
{
asm("push {r4-r6,lr}\n\
+117 -1
View File
@@ -1,15 +1,21 @@
#include "global.h"
#include "constants/songs.h"
#include "bg.h"
#include "gpu_regs.h"
#include "palette.h"
#include "task.h"
#include "malloc.h"
#include "main.h"
#include "sound.h"
#include "text.h"
#include "window.h"
#include "text_window.h"
struct FameCheckerData
{
u32 unk_00;
u8 filler_04[5];
u16 unk_04;
u8 filler_06[3];
u8 unk_09;
u8 unk_0A;
u8 unk_0B;
@@ -18,9 +24,40 @@ struct FameCheckerData
u8 unk_23_1:7;
};
struct FameCheckerData2
{
u8 filler_00[0x88];
};
EWRAM_DATA u16 * gUnknown_203B0F0 = NULL;
EWRAM_DATA u16 * gUnknown_203B0F4 = NULL;
EWRAM_DATA u16 * gUnknown_203B0F8 = NULL;
EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL;
EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL;
EWRAM_DATA u32 gUnknown_203B104 = 0;
void sub_812C3F8(void);
void sub_812C648(void);
void sub_812C664(u8 taskId);
void sub_812CE9C(void);
void sub_812CEC0(void);
void sub_812D1A8(u8 a0);
void sub_812D420(void);
void sub_812D558(void);
void sub_812D584(void);
void sub_812D594(void);
void sub_812DB28(void);
void sub_812E000(void);
void sub_812E178(u8 a0, s16 a1);
extern const struct BgTemplate gUnknown_845FBF4[4];
extern const struct WindowTemplate gUnknown_845FC04[];
extern const u16 gUnknown_845C600[0x40];
extern const u16 gUnknown_8E9F220[0x30];
extern const u16 gUnknown_8E9F260[0xa50];
extern const u16 gUnknown_8EA0700[0x400];
extern const u16 gUnknown_8EA0F00[0x400];
void sub_812C380(void)
{
@@ -49,3 +86,82 @@ void sub_812C3AC(u32 a0)
PlaySE(SE_W202);
SetMainCallback2(sub_812C3F8);
}
void sub_812C3F8(void)
{
switch (gMain.state)
{
case 0:
SetVBlankCallback(NULL);
sub_812D420();
gMain.state++;
break;
case 1:
sub_812D558();
gMain.state++;
break;
case 2:
gUnknown_203B0F0 = AllocZeroed(0x800);
gUnknown_203B0F4 = AllocZeroed(0x1000);
gUnknown_203B0F8 = AllocZeroed(0x800);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_845FBF4, ARRAY_COUNT(gUnknown_845FBF4));
SetBgTilemapBuffer(3, gUnknown_203B0F0);
SetBgTilemapBuffer(2, gUnknown_203B0F8);
SetBgTilemapBuffer(1, gUnknown_203B0F4);
sub_812D594();
gMain.state++;
break;
case 3:
LoadBgTiles(3, gUnknown_8E9F260, sizeof(gUnknown_8E9F260), 0);
CopyToBgTilemapBufferRect(3, gUnknown_8EA0700, 0, 0, 32, 32);
LoadPalette(gUnknown_8E9F220 + 0x00, 0x00, 0x40);
LoadPalette(gUnknown_8E9F220 + 0x10, 0x10, 0x20);
CopyToBgTilemapBufferRect(2, gUnknown_8EA0F00, 0, 0, 32, 32);
CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_845C600, 30, 0, 32, 32, 0x11);
LoadPalette(stdpal_get(2), 0xF0, 0x20);
gMain.state++;
break;
case 4:
if (IsDma3ManagerBusyWithBgCopy() != TRUE)
{
ShowBg(0);
ShowBg(1);
ShowBg(2);
ShowBg(3);
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
gMain.state++;
}
break;
case 5:
InitWindows(gUnknown_845FC04);
DeactivateAllTextPrinters();
sub_812CEC0();
gUnknown_203B100 = AllocZeroed(sizeof(struct FameCheckerData2));
sub_812DB28();
gMain.state++;
break;
case 6:
sub_812C648();
sub_812D1A8(0);
sub_812CE9C();
BeginNormalPaletteFade(0xFFFFFFFF,0, 16, 0, 0);
gMain.state++;
break;
case 7:
sub_812D584();
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
SetGpuReg(REG_OFFSET_BLDALPHA, 0x07);
SetGpuReg(REG_OFFSET_BLDY, 0x08);
SetVBlankCallback(sub_812C380);
gUnknown_203B0FC->unk_04 = 0;
sub_812E000();
sub_812E178(1, 4);
CreateTask(sub_812C664, 0x08);
SetMainCallback2(sub_812C394);
gMain.state = 0;
break;
}
}
+1 -17
View File
@@ -1556,23 +1556,7 @@ gUnknown_203B0EC: @ 203B0EC
gUnknown_203B0EE: @ 203B0EE
.space 0x2
gUnknown_203B0F0: @ 203B0F0
.space 0x4
gUnknown_203B0F4: @ 203B0F4
.space 0x4
gUnknown_203B0F8: @ 203B0F8
.space 0x4
gUnknown_203B0FC: @ 203B0FC
.space 0x4
gUnknown_203B100: @ 203B100
.space 0x4
gUnknown_203B104: @ 203B104
.space 0x4
.include "src/fame_checker.o"
gUnknown_203B108: @ 203B108
.space 0x4