decompile sub_80318FC - unref_sub_8031BA0

This commit is contained in:
camthesaxman 2017-06-08 01:25:53 -05:00
parent 5847f81869
commit f597469988
3 changed files with 142 additions and 391 deletions

View File

@ -6,395 +6,6 @@
.text
thumb_func_start sub_80318FC
sub_80318FC: @ 80318FC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
mov r8, r0
lsls r1, 24
lsrs r1, 24
mov r9, r1
movs r1, 0
bl GetMonData
str r0, [sp, 0xC]
mov r0, r9
lsls r1, r0, 2
ldr r0, _08031938 @ =0x02017800
adds r2, r1, r0
ldrh r0, [r2, 0x2]
cmp r0, 0
bne _0803193C
mov r0, r8
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
ldr r7, [sp, 0xC]
b _08031944
.align 2, 0
_08031938: .4byte 0x02017800
_0803193C:
ldrh r6, [r2, 0x2]
ldr r0, _080319A0 @ =gUnknown_02024E70
adds r0, r1, r0
ldr r7, [r0]
_08031944:
mov r0, r8
movs r1, 0x1
bl GetMonData
mov r10, r0
mov r0, r9
bl battle_get_per_side_status
lsls r0, 24
lsls r5, r6, 3
ldr r1, _080319A4 @ =gMonBackPicTable
adds r5, r1
ldr r1, _080319A8 @ =gMonBackPicCoords
lsls r2, r6, 2
adds r2, r1
ldrb r1, [r2]
ldrb r2, [r2, 0x1]
movs r3, 0x80
lsls r3, 18
ldr r4, _080319AC @ =gUnknown_081FAF4C
lsrs r0, 22
adds r0, r4
ldr r0, [r0]
str r0, [sp]
str r6, [sp, 0x4]
str r7, [sp, 0x8]
adds r0, r5, 0
bl HandleLoadSpecialPokePic
mov r1, r9
lsls r2, r1, 4
movs r0, 0x80
lsls r0, 1
adds r7, r2, r0
lsls r1, 2
ldr r0, _080319B0 @ =0x02017800
adds r0, r1, r0
ldrh r0, [r0, 0x2]
str r1, [sp, 0x10]
adds r4, r2, 0
cmp r0, 0
bne _080319B4
mov r0, r8
bl pokemon_get_pal
b _080319BE
.align 2, 0
_080319A0: .4byte gUnknown_02024E70
_080319A4: .4byte gMonBackPicTable
_080319A8: .4byte gMonBackPicCoords
_080319AC: .4byte gUnknown_081FAF4C
_080319B0: .4byte 0x02017800
_080319B4:
adds r0, r6, 0
mov r1, r10
ldr r2, [sp, 0xC]
bl species_and_otid_get_pal
_080319BE:
adds r5, r0, 0
ldr r1, _08031A48 @ =0x02000000
mov r8, r1
adds r0, r5, 0
bl sub_800D238
mov r0, r8
adds r1, r7, 0
movs r2, 0x20
bl LoadPalette
adds r1, r4, 0
adds r1, 0x80
mov r0, r8
movs r2, 0x20
bl LoadPalette
ldr r0, _08031A4C @ =SPECIES_CASTFORM
cmp r6, r0
bne _08031A0A
subs r0, 0x81
adds r7, r4, r0
movs r4, 0xB2
lsls r4, 9
add r4, r8
adds r0, r5, 0
adds r1, r4, 0
bl sub_800D238
ldr r0, _08031A50 @ =gBattleMonForms
add r0, r9
ldrb r0, [r0]
lsls r0, 5
adds r0, r4
adds r1, r7, 0
movs r2, 0x20
bl LoadPalette
_08031A0A:
movs r0, 0xBC
lsls r0, 9
add r0, r8
ldr r1, [sp, 0x10]
adds r0, r1, r0
ldrh r0, [r0, 0x2]
cmp r0, 0
beq _08031A36
ldr r3, _08031A54 @ =0x00007fff
adds r0, r7, 0
movs r1, 0x10
movs r2, 0x6
bl BlendPalette
lsls r1, r7, 1
ldr r0, _08031A58 @ =gPlttBufferFaded
adds r0, r1, r0
ldr r2, _08031A5C @ =gPlttBufferUnfaded
adds r1, r2
ldr r2, _08031A60 @ =REG_BG0CNT
bl CpuSet
_08031A36:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08031A48: .4byte 0x02000000
_08031A4C: .4byte SPECIES_CASTFORM
_08031A50: .4byte gBattleMonForms
_08031A54: .4byte 0x00007fff
_08031A58: .4byte gPlttBufferFaded
_08031A5C: .4byte gPlttBufferUnfaded
_08031A60: .4byte REG_BG0CNT
thumb_func_end sub_80318FC
thumb_func_start unref_sub_8031A64
unref_sub_8031A64: @ 8031A64
bx lr
thumb_func_end unref_sub_8031A64
thumb_func_start nullsub_9
nullsub_9: @ 8031A68
bx lr
thumb_func_end nullsub_9
thumb_func_start sub_8031A6C
sub_8031A6C: @ 8031A6C
push {r4-r6,lr}
sub sp, 0x10
adds r4, r0, 0
adds r0, r1, 0
lsls r4, 16
lsrs r4, 16
lsls r0, 24
lsrs r0, 24
bl battle_get_per_side_status
lsls r0, 24
lsls r6, r4, 3
ldr r5, _08031ADC @ =gTrainerFrontPicTable
adds r5, r6, r5
ldr r1, _08031AE0 @ =gTrainerFrontPicCoords
lsls r4, 2
adds r4, r1
ldrb r1, [r4]
ldrb r2, [r4, 0x1]
movs r3, 0x80
lsls r3, 18
ldr r4, _08031AE4 @ =gUnknown_081FAF4C
lsrs r0, 22
adds r0, r4
ldr r4, [r0]
str r4, [sp]
movs r0, 0
str r0, [sp, 0x4]
adds r0, r5, 0
bl DecompressPicFromTable_2
str r4, [sp, 0x8]
ldrh r2, [r5, 0x4]
ldr r0, _08031AE8 @ =0xffff0000
ldr r1, [sp, 0xC]
ands r1, r0
orrs r1, r2
str r1, [sp, 0xC]
ldrh r2, [r5, 0x6]
lsls r2, 16
ldr r0, _08031AEC @ =0x0000ffff
ands r0, r1
orrs r0, r2
str r0, [sp, 0xC]
add r0, sp, 0x8
bl LoadCompressedObjectPic
ldr r0, _08031AF0 @ =gTrainerFrontPicPaletteTable
adds r6, r0
adds r0, r6, 0
bl LoadCompressedObjectPalette
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08031ADC: .4byte gTrainerFrontPicTable
_08031AE0: .4byte gTrainerFrontPicCoords
_08031AE4: .4byte gUnknown_081FAF4C
_08031AE8: .4byte 0xffff0000
_08031AEC: .4byte 0x0000ffff
_08031AF0: .4byte gTrainerFrontPicPaletteTable
thumb_func_end sub_8031A6C
thumb_func_start sub_8031AF4
sub_8031AF4: @ 8031AF4
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x8
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
adds r0, r5, 0
bl battle_get_per_side_status
lsls r0, 24
lsls r1, r4, 3
mov r8, r1
ldr r6, _08031B60 @ =gTrainerBackPicTable
add r6, r8
ldr r1, _08031B64 @ =gTrainerBackPicCoords
lsls r4, 2
adds r4, r1
ldrb r1, [r4]
ldrb r2, [r4, 0x1]
movs r3, 0x80
lsls r3, 18
ldr r4, _08031B68 @ =gUnknown_081FAF4C
lsrs r0, 22
adds r0, r4
ldr r0, [r0]
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
adds r0, r6, 0
bl DecompressPicFromTable_2
ldr r0, _08031B6C @ =gTrainerBackPicPaletteTable
add r8, r0
mov r1, r8
ldr r0, [r1]
lsls r5, 20
movs r1, 0x80
lsls r1, 17
adds r5, r1
lsrs r5, 16
adds r1, r5, 0
movs r2, 0x20
bl LoadCompressedPalette
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08031B60: .4byte gTrainerBackPicTable
_08031B64: .4byte gTrainerBackPicCoords
_08031B68: .4byte gUnknown_081FAF4C
_08031B6C: .4byte gTrainerBackPicPaletteTable
thumb_func_end sub_8031AF4
thumb_func_start nullsub_10
nullsub_10: @ 8031B70
bx lr
thumb_func_end nullsub_10
thumb_func_start sub_8031B74
sub_8031B74: @ 8031B74
push {r4,lr}
adds r4, r0, 0
lsls r4, 16
ldr r0, _08031B98 @ =gTrainerFrontPicPaletteTable
lsrs r4, 13
adds r0, r4, r0
ldrh r0, [r0, 0x4]
bl FreeSpritePaletteByTag
ldr r0, _08031B9C @ =gTrainerFrontPicTable
adds r4, r0
ldrh r0, [r4, 0x6]
bl FreeSpriteTilesByTag
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08031B98: .4byte gTrainerFrontPicPaletteTable
_08031B9C: .4byte gTrainerFrontPicTable
thumb_func_end sub_8031B74
thumb_func_start unref_sub_8031BA0
unref_sub_8031BA0: @ 8031BA0
push {r4-r7,lr}
ldr r4, _08031BCC @ =gUnknown_0820A4D4
adds r0, r4, 0
bl LoadSpritePalette
adds r4, 0x8
adds r0, r4, 0
bl LoadSpritePalette
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08031BD8
ldr r0, _08031BD0 @ =gUnknown_0820A47C
bl LoadCompressedObjectPic
ldr r0, _08031BD4 @ =gUnknown_0820A484
bl LoadCompressedObjectPic
movs r5, 0x2
b _08031BFA
.align 2, 0
_08031BCC: .4byte gUnknown_0820A4D4
_08031BD0: .4byte gUnknown_0820A47C
_08031BD4: .4byte gUnknown_0820A484
_08031BD8:
ldr r4, _08031C20 @ =gUnknown_0820A48C
adds r0, r4, 0
bl LoadCompressedObjectPic
adds r4, 0x8
adds r0, r4, 0
bl LoadCompressedObjectPic
ldr r4, _08031C24 @ =gUnknown_0820A49C
adds r0, r4, 0
bl LoadCompressedObjectPic
adds r4, 0x8
adds r0, r4, 0
bl LoadCompressedObjectPic
movs r5, 0x4
_08031BFA:
movs r4, 0
cmp r4, r5
bcs _08031C1A
ldr r7, _08031C28 @ =gUnknown_02024A72
ldr r6, _08031C2C @ =gUnknown_0820A4B4
_08031C04:
adds r0, r4, r7
ldrb r0, [r0]
lsls r0, 3
adds r0, r6
bl LoadCompressedObjectPic
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, r5
bcc _08031C04
_08031C1A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08031C20: .4byte gUnknown_0820A48C
_08031C24: .4byte gUnknown_0820A49C
_08031C28: .4byte gUnknown_02024A72
_08031C2C: .4byte gUnknown_0820A4B4
thumb_func_end unref_sub_8031BA0
thumb_func_start sub_8031C30
sub_8031C30: @ 8031C30
push {r4-r6,lr}

View File

@ -29,7 +29,7 @@ extern const union AnimCmd *const *const gUnknown_081EC2A4[];
extern const union AnimCmd *const *const gUnknown_081ECACC[];
extern struct MonCoords gTrainerBackPicCoords[];
extern struct SpriteSheet gTrainerBackPicTable[];
extern struct SpritePalette gTrainerBackPicPaletteTable[];
extern const struct SpritePalette gTrainerBackPicPaletteTable[];
extern u8 gEnemyMonElevation[];
extern const u8 gTrainerClassNames[][13];
extern const struct Trainer gTrainers[];
@ -40,7 +40,7 @@ extern const u8 gUnknown_081F96C8[];
extern struct SpriteSheet gUnknown_081FAEA4;
extern struct SpritePalette gUnknown_081FAEAC;
extern const struct SpriteTemplate gSpriteTemplate_81FAF0C;
extern void *gUnknown_081FAF4C[];
extern void *const gUnknown_081FAF4C[];
extern struct BattleMove gBattleMoves[];
#endif // GUARD_DATA2_H

View File

@ -58,6 +58,7 @@ extern u8 ewram[];
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
extern u8 gUnknown_02024A60;
extern u8 gUnknown_02024A72[];
extern u8 gUnknown_02024BE0[];
extern u16 gUnknown_02024DE8;
extern u32 gUnknown_02024E70[];
@ -68,6 +69,15 @@ extern void (*gAnimScriptCallback)(void);
extern u8 gAnimScriptActive;
extern const u8 *const gBattleAnims_Unknown1[];
extern const u8 *const gBattleAnims_Unknown2[];
extern const struct SpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct SpritePalette gTrainerFrontPicPaletteTable[];
extern const struct SpriteSheet gUnknown_0820A47C;
extern const struct SpriteSheet gUnknown_0820A484;
extern const struct SpriteSheet gUnknown_0820A48C[];
extern const struct SpriteSheet gUnknown_0820A49C[];
extern const struct SpriteSheet gUnknown_0820A4B4[];
extern const struct SpritePalette gUnknown_0820A4D4[];
extern const u16 *pokemon_get_pal(struct Pokemon *);
extern void sub_80105DC(struct Sprite *);
@ -304,3 +314,133 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
void sub_80318FC(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
u32 r7;
u32 otId;
u8 var;
u16 paletteOffset;
const u16 *palette;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
if (ewram17800[b].unk2 == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
species = ewram17800[b].unk2;
r7 = gUnknown_02024E70[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
var = battle_get_per_side_status(b);
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
0x02000000,
gUnknown_081FAF4C[var],
species,
r7);
paletteOffset = 0x100 + b * 16;
if (ewram17800[b].unk2 == 0)
palette = pokemon_get_pal(pkmn);
else
palette = species_and_otid_get_pal(species, otId, personalityValue);
sub_800D238(palette, ewram);
LoadPalette(ewram, paletteOffset, 0x20);
LoadPalette(ewram, 0x80 + b * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + b * 16;
sub_800D238(palette, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
if (ewram17800[b].unk2 != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
void unref_sub_8031A64(void)
{
}
void nullsub_9(u16 unused)
{
}
void sub_8031A6C(u16 a, u8 b)
{
u8 status;
struct SpriteSheet spriteSheet;
status = battle_get_per_side_status(b);
DecompressPicFromTable_2(
&gTrainerFrontPicTable[a],
gTrainerFrontPicCoords[a].coords,
gTrainerFrontPicCoords[a].y_offset,
(void *)0x02000000,
gUnknown_081FAF4C[status],
0);
spriteSheet.data = gUnknown_081FAF4C[status];
spriteSheet.size = gTrainerFrontPicTable[a].size;
spriteSheet.tag = gTrainerFrontPicTable[a].tag;
LoadCompressedObjectPic(&spriteSheet);
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
}
void sub_8031AF4(u16 a, u8 b)
{
u8 status;
status = battle_get_per_side_status(b);
DecompressPicFromTable_2(
&gTrainerBackPicTable[a],
gTrainerBackPicCoords[a].coords,
gTrainerBackPicCoords[a].y_offset,
(void *)0x02000000,
gUnknown_081FAF4C[status],
0);
LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32);
}
void nullsub_10(int unused)
{
}
void sub_8031B74(u16 a)
{
FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[a].tag);
FreeSpriteTilesByTag(gTrainerFrontPicTable[a].tag);
}
void unref_sub_8031BA0(void)
{
u8 count;
u8 i;
LoadSpritePalette(&gUnknown_0820A4D4[0]);
LoadSpritePalette(&gUnknown_0820A4D4[1]);
if (!IsDoubleBattle())
{
LoadCompressedObjectPic(&gUnknown_0820A47C);
LoadCompressedObjectPic(&gUnknown_0820A484);
count = 2;
}
else
{
LoadCompressedObjectPic(&gUnknown_0820A48C[0]);
LoadCompressedObjectPic(&gUnknown_0820A48C[1]);
LoadCompressedObjectPic(&gUnknown_0820A49C[0]);
LoadCompressedObjectPic(&gUnknown_0820A49C[1]);
count = 4;
}
for (i = 0; i < count; i++)
LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[i]]);
}