mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 15:46:18 -05:00
sub_8052FB8
This commit is contained in:
parent
4a4b637e79
commit
200744bfa4
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user