sub_8052FB8

This commit is contained in:
DizzyEggg 2024-10-21 11:23:07 +02:00
parent 4a4b637e79
commit 200744bfa4
4 changed files with 99 additions and 237 deletions

View File

@ -7,222 +7,6 @@
thumb_func_start sub_8052FB8
sub_8052FB8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
adds r3, r0, 0
movs r0, 0
mov r8, r0
ldr r0, _08053030
movs r2, 0
adds r0, 0x2
movs r1, 0x1C
_08052FD2:
strh r2, [r0]
adds r0, 0x2
subs r1, 0x1
cmp r1, 0
bge _08052FD2
movs r0, 0
str r0, [sp]
movs r1, 0x2
str r1, [sp, 0x4]
str r0, [sp, 0x8]
str r0, [sp, 0xC]
movs r0, 0x30
str r0, [sp, 0x10]
adds r0, r3, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateMenuDialogueBoxAndPortrait
movs r1, 0
mov r9, r1
ldr r7, _08053034
ldr r2, _08053038
mov r10, r2
_08053002:
mov r3, r8
cmp r3, 0x3D
bgt _08053040
movs r4, 0x1
add r8, r4
movs r5, 0
mov r1, r8
lsrs r0, r1, 31
adds r6, r1, r0
ldr r4, _0805303C
_08053016:
adds r0, r5, 0
adds r0, 0xF0
adds r1, r4, 0
asrs r2, r6, 1
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r4, 0x4
adds r5, 0x1
cmp r5, 0x7
ble _08053016
b _080530CA
.align 2, 0
_08053030: .4byte gUnknown_202B038
_08053034: .4byte gUnknown_202F1F0
_08053038: .4byte 0x0000f3ff
_0805303C: .4byte gFontPalette
_08053040:
movs r2, 0x1
add r9, r2
movs r0, 0x8
mov r3, r9
ands r0, r3
cmp r0, 0
beq _080530BE
ldrh r0, [r7]
ldr r4, _080530D8
adds r1, r4, 0
ands r0, r1
ldr r2, _080530DC
adds r1, r2, 0
ands r0, r1
mov r3, r10
ands r0, r3
ldr r4, _080530E0
adds r1, r4, 0
ands r0, r1
ldr r2, _080530E4
adds r1, r2, 0
ands r0, r1
ldr r3, _080530E8
ands r0, r3
movs r4, 0x80
lsls r4, 7
orrs r0, r4
strh r0, [r7]
movs r2, 0xFC
lsls r2, 2
ldrh r0, [r7, 0x4]
movs r3, 0xFC
lsls r3, 8
adds r1, r3, 0
ands r0, r1
orrs r0, r2
movs r4, 0
orrs r0, r4
mov r1, r10
ands r0, r1
movs r2, 0xF
movs r3, 0xF0
lsls r3, 8
ldr r4, _080530EC
adds r1, r4, 0
ands r0, r1
orrs r0, r3
strh r0, [r7, 0x4]
movs r1, 0xF0
lsls r1, 3
ldrh r0, [r7, 0x6]
ands r2, r0
orrs r2, r1
strh r2, [r7, 0x6]
movs r0, 0x70
strh r0, [r7, 0x2]
adds r0, r7, 0
movs r1, 0x80
lsls r1, 1
movs r2, 0
movs r3, 0
bl AddSprite
_080530BE:
ldr r0, _080530F0
ldrh r1, [r0, 0x2]
movs r0, 0x3
ands r0, r1
cmp r0, 0
bne _080530F4
_080530CA:
bl DrawDialogueBoxString
movs r0, 0x9
bl sub_803E46C
b _08053002
.align 2, 0
_080530D8: .4byte 0x0000feff
_080530DC: .4byte 0x0000fdff
_080530E0: .4byte 0x0000efff
_080530E4: .4byte 0x0000dfff
_080530E8: .4byte 0x00003fff
_080530EC: .4byte 0x00000fff
_080530F0: .4byte gRealInputs
_080530F4:
mov r0, r8
cmp r0, 0
blt _08053134
ldr r1, _08053178
mov r9, r1
_080530FE:
movs r5, 0
mov r7, r8
subs r7, 0x1
mov r2, r8
lsrs r0, r2, 31
adds r6, r2, r0
mov r4, r9
_0805310C:
adds r0, r5, 0
adds r0, 0xF0
adds r1, r4, 0
asrs r2, r6, 1
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r4, 0x4
adds r5, 0x1
cmp r5, 0x7
ble _0805310C
bl DrawDialogueBoxString
movs r0, 0x9
bl sub_803E46C
mov r8, r7
mov r3, r8
cmp r3, 0
bge _080530FE
_08053134:
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
movs r0, 0x9
bl sub_803E46C
bl sub_8040238
movs r5, 0
ldr r4, _08053178
_0805314C:
adds r0, r5, 0
adds r0, 0xF0
adds r1, r4, 0
bl SetBGPaletteBufferColorArray
adds r4, 0x4
adds r5, 0x1
cmp r5, 0x7
ble _0805314C
movs r0, 0x8
movs r1, 0x9
bl sub_803E708
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
_08053178: .4byte gFontPalette
thumb_func_end sub_8052FB8
thumb_func_start sub_805317C
sub_805317C:
push {lr}

View File

@ -6,6 +6,7 @@
#include "code_80130A8.h"
#include "code_800E9E4.h"
#include "code_803E668.h"
#include "bg_palette_buffer.h"
#include "input.h"
#include "text2.h"
#include "pokemon.h"
@ -16,6 +17,7 @@
#include "code_8045A00.h"
#include "exclusive_pokemon.h"
#include "dungeon_leader.h"
#include "text1.h"
void sub_80526D0(s32 r0);
extern bool8 sub_8045888(Entity *r0);
@ -146,7 +148,7 @@ void sub_80523A8(Entity *r0, const char *str, bool8 r2)
r9 = TRUE;
dst = gDungeon->unk1BDD4.unk0[gDungeon->unk1BDD4.unk1C060];
dst++;dst--; // TODO: use ASM_MATCH_TRICK
ASM_MATCH_TRICK(dst);
strncpy(dst, txt, 64);
if (++gDungeon->unk1BDD4.unk1C060 == UNK_1BBD4_STR_COUNT) {
gDungeon->unk1BDD4.unk1C060 = 0;
@ -659,7 +661,7 @@ void sub_8052DD0(void)
void HandleOnPickupTutorial(u8 itemId)
{
u8 itemCategory = GetItemCategory(itemId);
u32 itemCategory = GetItemCategory(itemId);
if (itemCategory == CATEGORY_FOOD_GUMMIES) {
DislayTutorialMsg(NULL, &gFoodTutorial, FALSE);
@ -699,3 +701,92 @@ void DisplayYouReachedDestFloorStr(void)
DisplayDungeonMessage(NULL, gUnknown_80FF6A4, 1);
}
}
extern SpriteOAM gUnknown_202F1F0;
extern u8 gFontPalette[];
void sub_8052FB8(const u8 *str)
{
s32 r8 = 0, r9, j;
{
s32 i;
for (i = 1; i < 30; i++) {
gUnknown_202B038[0][0][i] = 0;
}
}
CreateMenuDialogueBoxAndPortrait(str, 0, 0, NULL, NULL, 2, 0, NULL, 0x30);
r9 = 0;
while (1) {
if (r8 < 62) {
r8++;
for (j = 0; j < 8; j++) {
SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j * 4], r8 / 2, NULL);
}
}
else {
r9++;
if (r9 & 8) {
u32 shape, tileNum, unk6, spriteX, mask, palNum;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_OBJMODE;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_MOSAIC;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_BPP;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_SHAPE;
shape = 1;
shape <<= SPRITEOAM_SHIFT_SHAPE;
ASM_MATCH_TRICK(shape);
gUnknown_202F1F0.attrib1 |= shape;
tileNum = 0x3F0 << SPRITEOAM_SHIFT_TILENUM;
gUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_TILENUM;
gUnknown_202F1F0.attrib3 |= tileNum;
gUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
mask = 0xF;
palNum = (15 & SPRITEOAM_MAX_PALETTENUM) << SPRITEOAM_SHIFT_PALETTENUM;
gUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
gUnknown_202F1F0.attrib3 |= palNum;
unk6 = 0x78 << SPRITEOAM_SHIFT_UNK6_4;
gUnknown_202F1F0.unk6 &= mask;
gUnknown_202F1F0.unk6 |= unk6;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_X;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
spriteX = 0x70 & SPRITEOAM_MAX_X;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_SIZE;
gUnknown_202F1F0.attrib2 |= spriteX;
AddSprite(&gUnknown_202F1F0, 0x100, NULL, NULL);
}
if (gRealInputs.pressed & AB_BUTTONS)
break;
}
DrawDialogueBoxString();
sub_803E46C(9);
}
while (r8 >= 0) {
for (j = 0; j < 8; j++) {
SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j * 4], r8 / 2, NULL);
}
DrawDialogueBoxString();
sub_803E46C(9);
r8--;
}
xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE);
sub_803E46C(9);
sub_8040238();
for (j = 0; j < 8; j++) {
SetBGPaletteBufferColorArray(240 + j, &gFontPalette[j * 4]);
}
sub_803E708(8, 9);
}

View File

@ -145,22 +145,12 @@ bool8 sub_8098100(u8 param_1)
bool8 sub_8098134(s16 pokeID)
{
s32 index;
s32 pokeID_s32;
s32 pokeID_s32_1;
struct ExclusivePokemonData *ptr;
pokeID_s32 = pokeID;
pokeID_s32_1 = pokeID_s32;
ptr = gUnknown_203B498;
if (pokeID < 0) {
index = pokeID_s32 + 0x1f;
}
else
{
index = pokeID_s32;
}
return ((ptr->unk4[(index >> 5)] & (1 << (s16)(pokeID_s32_1 - ((index >> 5) * 0x20)))) != 0);
return ((gUnknown_203B498->unk4[pokeID_s32 / 32] & (1 << (s16)(pokeID_s32_1 - ((pokeID_s32 / 32) * 0x20)))) != 0);
}
void SetTutorialFlag(s32 index)

View File

@ -508,16 +508,14 @@ s16 GetPokemonEvolveConditions(s16 index, unkEvolve *r1)
u8 GetPokemonOverworldPalette(s16 index, u32 r1)
{
// Had to have this cast to match
u32 temp;
temp = index;
s32 id = SpeciesId(index);
if (r1 != 0)
{
return 10;
}
else
{
return gMonsterParameters[temp].overworldPalette;
return gMonsterParameters[id].overworldPalette;
}
}
@ -538,14 +536,13 @@ OpenedFile *GetDialogueSpriteDataPtr(s32 index)
{
// Looks like this loads the dialogue sprite for the pokemon
char buffer[0xC];
// TODO: Use the static inline function for indexing
s16 index_ = index;
s16 id = SpeciesId(index);
if(gMonsterParameters[index_].dialogueSprites == 0)
if(gMonsterParameters[id].dialogueSprites == 0)
{
return NULL;
}
sprintf(buffer, gUnknown_8107684, index_); // "kao%03d"
sprintf(buffer, gUnknown_8107684, id); // "kao%03d"
return OpenFileAndGetFileDataPtr(buffer, &gMonsterFileArchive);
}