Decompile all frontier pass

This commit is contained in:
DizzyEggg
2019-01-26 19:20:14 +01:00
parent 0688725afb
commit 03549349f8
3 changed files with 607 additions and 17 deletions
+162 -2
View File
@@ -463,8 +463,6 @@ EWRAM_DATA static u8 sMovingMonOrigBoxId = 0;
EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
EWRAM_DATA static bool8 sCanOnlyMove = 0;
extern void sub_80C6D80(u8 *arg0, void *arg1, u8 arg2, u8 arg3, s32 arg4);
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
// This file's functions.
@@ -1543,6 +1541,168 @@ static const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cu
static const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
// code
void sub_80C6D80(u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4)
{
s32 i, val, val2;
u16 windowId;
u8 txtColor[3];
u8 *tileData1, *tileData2;
struct WindowTemplate winTemplate = {0};
winTemplate.width = 24;
winTemplate.height = 2;
windowId = AddWindow(&winTemplate);
FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3);
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
if (!arg2)
txtColor[0] = 0;
else
txtColor[0] = arg3;
txtColor[1] = 0xF;
txtColor[2] = 0xE;
AddTextPrinterParameterized4(windowId, 1, 0, 1, 0, 0, txtColor, -1, string);
val = arg4;
if (val > 6u)
val = 6;
val2 = arg4 - 6;
if (val > 0)
{
for (i = val; i != 0; i--)
{
CpuCopy16(tileData1, dst, 0x80);
CpuCopy16(tileData2, dst + 0x80, 0x80);
tileData1 += 0x80;
tileData2 += 0x80;
dst += 0x100;
}
}
if (val2 > 0)
CpuFill16((arg3 << 4) | arg3, dst, (u32)(val2) * 0x100);
RemoveWindow(windowId);
}
NAKED
void sub_80C6EAC()
{
asm_unified("\n\
push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, 0x2C\n\
str r0, [sp, 0x20]\n\
str r1, [sp, 0x24]\n\
adds r6, r3, 0\n\
ldr r0, [sp, 0x4C]\n\
mov r9, r0\n\
ldr r1, [sp, 0x50]\n\
mov r10, r1\n\
lsls r2, 16\n\
lsrs r2, 16\n\
str r2, [sp, 0x28]\n\
lsls r6, 24\n\
lsrs r6, 24\n\
mov r2, r9\n\
lsls r2, 24\n\
lsrs r2, 24\n\
mov r9, r2\n\
mov r0, r10\n\
lsls r0, 24\n\
lsrs r0, 24\n\
mov r10, r0\n\
movs r0, 0\n\
movs r1, 0\n\
str r0, [sp, 0x18]\n\
str r1, [sp, 0x1C]\n\
ldr r0, [sp, 0x20]\n\
bl StringLength_Multibyte\n\
lsls r0, 24\n\
ldr r2, =0x00ffffff\n\
ldr r1, [sp, 0x18]\n\
ands r1, r2\n\
orrs r1, r0\n\
str r1, [sp, 0x18]\n\
ldr r1, =0xffffff00\n\
add r2, sp, 0x18\n\
mov r8, r2\n\
ldr r0, [r2, 0x4]\n\
ands r0, r1\n\
movs r1, 0x2\n\
orrs r0, r1\n\
str r0, [r2, 0x4]\n\
ldr r5, [sp, 0x18]\n\
lsrs r5, 24\n\
lsls r5, 5\n\
mov r0, r8\n\
bl AddWindow\n\
adds r4, r0, 0\n\
lsls r4, 24\n\
lsrs r4, 24\n\
lsls r1, r6, 4\n\
orrs r1, r6\n\
lsls r1, 24\n\
lsrs r1, 24\n\
adds r0, r4, 0\n\
bl FillWindowPixelBuffer\n\
adds r0, r4, 0\n\
movs r1, 0x7\n\
bl GetWindowAttribute\n\
adds r7, r0, 0\n\
mov r0, r8\n\
ldrb r0, [r0, 0x3]\n\
lsls r0, 5\n\
mov r8, r0\n\
add r8, r7\n\
add r0, sp, 0x14\n\
movs r1, 0\n\
strb r6, [r0]\n\
mov r2, r9\n\
strb r2, [r0, 0x1]\n\
mov r2, r10\n\
strb r2, [r0, 0x2]\n\
str r1, [sp]\n\
str r1, [sp, 0x4]\n\
str r0, [sp, 0x8]\n\
movs r0, 0x1\n\
negs r0, r0\n\
str r0, [sp, 0xC]\n\
ldr r0, [sp, 0x20]\n\
str r0, [sp, 0x10]\n\
adds r0, r4, 0\n\
movs r1, 0x1\n\
movs r2, 0\n\
movs r3, 0x2\n\
bl AddTextPrinterParameterized4\n\
lsrs r5, 1\n\
adds r0, r7, 0\n\
ldr r1, [sp, 0x24]\n\
adds r2, r5, 0\n\
bl CpuSet\n\
ldr r2, [sp, 0x24]\n\
ldr r0, [sp, 0x28]\n\
adds r1, r2, r0\n\
mov r0, r8\n\
adds r2, r5, 0\n\
bl CpuSet\n\
adds r0, r4, 0\n\
bl RemoveWindow\n\
add sp, 0x2C\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
pop {r4-r7}\n\
pop {r0}\n\
bx r0\n\
.pool");
}
u8 CountMonsInBox(u8 boxId)
{
u16 i, count;