PrintYesNoFieldMessage

This commit is contained in:
DizzyEggg
2024-10-20 14:24:26 +02:00
parent 1896d9d4ab
commit 570250ebb9
21 changed files with 115 additions and 167 deletions

View File

@@ -2327,7 +2327,7 @@ sub_8010C10:
movs r3, 0
bl CreateMenuDialogueBoxAndPortrait
_08010C2C:
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
bl sub_8010960
add r0, sp, 0x14
bl sub_80144A4

View File

@@ -311,8 +311,8 @@ _080144BC: .4byte gUnknown_202EC1C
_080144C0: .4byte gUnknown_202E744
thumb_func_end sub_80144A4
thumb_func_start xxx_draw_string_80144C4
xxx_draw_string_80144C4:
thumb_func_start DrawDialogueBoxString
DrawDialogueBoxString:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1018,7 +1018,7 @@ _08014A72:
bx r0
.align 2, 0
_08014A84: .4byte gUnknown_202E744
thumb_func_end xxx_draw_string_80144C4
thumb_func_end DrawDialogueBoxString
thumb_func_start sub_8014A88
sub_8014A88:

View File

@@ -5,113 +5,6 @@
.text
thumb_func_start sub_8052B8C
sub_8052B8C:
push {r4-r7,lr}
sub sp, 0x14
adds r4, r0, 0
adds r6, r1, 0
adds r7, r2, 0
movs r0, 0xA
bl sub_8052740
movs r0, 0x2
movs r1, 0
bl sub_803EAF0
movs r0, 0
bl sub_8052210
movs r5, 0
str r5, [sp]
str r5, [sp, 0x4]
ldr r0, _08052C14
ldr r1, [r0]
ldr r2, _08052C18
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _08052C02
adds r2, 0x6
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _08052C02
cmp r4, 0
beq _08052C02
movs r1, 0
ldrsh r0, [r4, r1]
ldrb r1, [r4, 0x2]
bl IsPokemonDialogueSpriteAvail
lsls r0, 24
cmp r0, 0
beq _08052C02
movs r2, 0
ldrsh r0, [r4, r2]
bl GetDialogueSpriteDataPtr
str r0, [sp]
ldr r0, [r0, 0x4]
str r0, [sp, 0x4]
mov r1, sp
movs r2, 0
movs r0, 0x2
strh r0, [r1, 0x8]
movs r0, 0x9
strh r0, [r1, 0xA]
ldrb r0, [r4, 0x2]
strb r0, [r1, 0xC]
mov r0, sp
strb r2, [r0, 0xD]
strb r2, [r0, 0xE]
mov r5, sp
_08052C02:
cmp r7, 0x1
bne _08052C1C
movs r2, 0xC0
lsls r2, 2
adds r0, r6, 0
adds r1, r5, 0
bl sub_80141E0
b _08052C28
.align 2, 0
_08052C14: .4byte gDungeon
_08052C18: .4byte 0x0001820a
_08052C1C:
movs r2, 0xC0
lsls r2, 2
adds r0, r6, 0
adds r1, r5, 0
bl sub_8014214
_08052C28:
add r4, sp, 0x10
_08052C2A:
bl xxx_draw_string_80144C4
movs r0, 0x9
bl sub_803E46C
adds r0, r4, 0
bl sub_80144A4
cmp r0, 0
bne _08052C2A
ldr r0, [sp]
cmp r0, 0
beq _08052C48
bl CloseFile
_08052C48:
bl sub_8040238
movs r0, 0
movs r1, 0
bl sub_803EAF0
ldr r0, [sp, 0x10]
cmp r0, 0x1
beq _08052C5E
movs r0, 0
b _08052C60
_08052C5E:
movs r0, 0x1
_08052C60:
add sp, 0x14
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8052B8C
thumb_func_start sub_8052C68
sub_8052C68:
push {r4-r7,lr}
@@ -187,7 +80,7 @@ _08052CE6:
bl CreateMenuDialogueBoxAndPortrait
add r4, sp, 0x24
_08052D02:
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
movs r0, 0x9
bl sub_803E46C
adds r0, r4, 0
@@ -653,7 +546,7 @@ _080530BE:
cmp r0, 0
bne _080530F4
_080530CA:
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
movs r0, 0x9
bl sub_803E46C
b _08053002
@@ -690,7 +583,7 @@ _0805310C:
adds r5, 0x1
cmp r5, 0x7
ble _0805310C
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
movs r0, 0x9
bl sub_803E46C
mov r8, r7

View File

@@ -4914,7 +4914,7 @@ _0806414E:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
adds r3, r0, 0
b _08064162
.align 2, 0
@@ -6817,7 +6817,7 @@ _08065062:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08065088
ldr r0, _08065094
@@ -6846,7 +6846,7 @@ sub_806509C:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _080650B8
movs r0, 0
@@ -7001,7 +7001,7 @@ sub_80651D0:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _080651F4
bl GetLeaderActionContainer
@@ -7025,7 +7025,7 @@ sub_80651FC:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
adds r5, r0, 0
cmp r5, 0x1
bne _08065248

View File

@@ -709,7 +709,7 @@ _08068E8E:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08068E34
_08068EA2:
@@ -1071,7 +1071,7 @@ _08069104:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
adds r4, r0, 0
cmp r4, 0x1
bne _080691E0

View File

@@ -1257,7 +1257,7 @@ _08067834:
movs r0, 0
adds r1, r5, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _0806786C
ldr r4, _0806787C
@@ -1869,7 +1869,7 @@ _08067D20:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08067D32
b _08067ED8

View File

@@ -1244,7 +1244,7 @@ _0807F036:
ldr r1, [r0]
mov r0, sp
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
beq _0807F04E
b _0807F158
@@ -1440,7 +1440,7 @@ _0807F1CE:
ldr r1, [r0]
mov r0, sp
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
beq _0807F204
_0807F1E6:

View File

@@ -350,7 +350,7 @@ _08084484:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
beq _080844A4
b _080845D4
@@ -432,7 +432,7 @@ _08084540:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _080845D4
ldr r0, _080845B4
@@ -460,14 +460,14 @@ _08084582:
movs r0, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _080845C4
ldr r0, _080845C0
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
adds r1, r0, 0
cmp r1, 0x1
bne _08084582
@@ -488,7 +488,7 @@ _080845C4:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08084582
_080845D4:
@@ -651,14 +651,14 @@ _08084716:
movs r0, 0
ldr r1, [r4]
movs r2, 0x1
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08084758
ldr r0, _08084754
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
adds r1, r0, 0
cmp r1, 0x1
bne _08084716
@@ -679,7 +679,7 @@ _08084758:
ldr r1, [r0]
movs r0, 0
movs r2, 0
bl sub_8052B8C
bl PrintYesNoFieldMessage
cmp r0, 0x1
bne _08084716
_08084768:

View File

@@ -301,7 +301,7 @@ _0809959A:
_080995AE:
bl sub_809D25C
bl sub_80A59DC
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
movs r0, 0
movs r1, 0
bl sub_8005838

View File

@@ -1681,7 +1681,7 @@ _0809B578: .4byte gUnknown_3001B64
sub_809B57C:
push {r4,r5,lr}
sub sp, 0x8
bl xxx_draw_string_80144C4
bl DrawDialogueBoxString
ldr r5, _0809B5C8
ldr r0, [r5]
ldr r1, [r0]

View File

@@ -22,12 +22,14 @@ void sub_80140B4(UnkTextStruct2 *);
void sub_80140DC(void);
void sub_8014114(void);
void CreateDialogueBoxAndPortrait(const u8 *, u32, struct MonPortraitMsg *, u16);
void CreateYesNoDialogueBoxAndPortrait_DefaultYes(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3);
void CreateYesNoDialogueBoxAndPortrait_DefaultNo(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3);
void CreateMenuDialogueBoxAndPortrait(const u8 *, u32, u32, const MenuItem *, void *, u32, u32, struct MonPortraitMsg *, u32);
s32 sub_80144A4(s32 *);
void sub_80151C0(u32, u8 *);
u32 sub_80154F0(void);
void sub_80155F0(void);
void xxx_draw_string_80144C4(void);
void DrawDialogueBoxString(void);
void PrintFormatStringOnWindow(u32, u32, const u8 *, u32 windowId, u32);
u8 *xxx_format_string(const u8 *, u8 *, u8 *, u32);

View File

@@ -179,7 +179,7 @@ void GameLoop(void)
void xxx_update_stuff(u32 r0)
{
xxx_draw_string_80144C4();
DrawDialogueBoxString();
sub_8005838(NULL, 0);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();

View File

@@ -13,7 +13,7 @@ extern void xxx_call_update_bg_vram();
void sub_8012A18()
{
sub_8011860();
xxx_draw_string_80144C4();
DrawDialogueBoxString();
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();

View File

@@ -96,12 +96,12 @@ void CreateDialogueBoxAndPortrait(const u8 *text, u32 param_2, struct MonPortrai
CreateMenuDialogueBoxAndPortrait(text, param_2, -1, NULL, NULL, 3, 0, monPortraitPtr, param_4);
}
void sub_80141E0(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3)
void CreateYesNoDialogueBoxAndPortrait_DefaultYes(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3)
{
CreateMenuDialogueBoxAndPortrait(text, 0, -1, gUnknown_80D485C, NULL, 3, 0, monPortraitPtr, param_3 | 0x300);
}
void sub_8014214(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3)
void CreateYesNoDialogueBoxAndPortrait_DefaultNo(const u8 *text, struct MonPortraitMsg *monPortraitPtr, u16 param_3)
{
CreateMenuDialogueBoxAndPortrait(text, 0, -1, gUnknown_80D4880, NULL, 3, 0, monPortraitPtr, param_3 | 0x300);
}

View File

@@ -100,7 +100,7 @@ extern void sub_8063CF0(ActionContainer *, u32);
extern void sub_8063A70(ActionContainer *, u32);
extern u8 sub_8062F90(Entity *, u32, u32, u32, u32);
extern void sub_8044DF0(Entity *, u32, u32);
extern s32 sub_8052B8C(u32, u8 *, u32);
extern s32 PrintYesNoFieldMessage(u32, u8 *, u32);
extern void sub_803EAF0(u32, u32);
extern void sub_8044C10(bool8);
Entity *DrawFieldGiveItemMenu(u32, u32);
@@ -1011,7 +1011,7 @@ _clear:
if (sub_8062F90(entity2,1,0,0,1) != 0) {
if (bVar2)
{
if (sub_8052B8C(0,*gUnknown_80FECA0,1) == 1) {
if (PrintYesNoFieldMessage(0,*gUnknown_80FECA0,1) == 1) {
*actionPointer = actionContainer;
sub_8044DF0(entity,0,0x6e);
SetMonsterActionFields(actionPointer,0x2c);

View File

@@ -272,11 +272,22 @@ struct MonDialogueSpriteInfo
extern void sub_8040238(void);
// Prints string in dialogue box and waits for A/B button press
#define PRINT_STRING_WAIT_PRESS(chosenMenuIndex) \
{ \
s32 unkPrintRet; \
\
do { \
DrawDialogueBoxString(); \
sub_803E46C(9); \
unkPrintRet = sub_80144A4(chosenMenuIndex);\
} while (unkPrintRet != 0); \
}
void PrintFieldMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool8 a2)
{
s32 unkPrintRet;
struct MonPortraitMsg monPortrait, *monPortraitPtr;
s32 unkSpVar;
s32 chosenMenuIndex;
if (gUnknown_203B40C) {
sub_8052740(10);
@@ -305,11 +316,7 @@ void PrintFieldMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *st
CreateMenuDialogueBoxAndPortrait(str, 0, 0, NULL, NULL, 3, 0, monPortraitPtr, (a2 != FALSE) ? 0x701 : 0x400);
gDungeon->unk1BDD4.unk1C05F = 1;
do {
xxx_draw_string_80144C4();
sub_803E46C(9);
unkPrintRet = sub_80144A4(&unkSpVar);
} while (unkPrintRet != 0);
PRINT_STRING_WAIT_PRESS(&chosenMenuIndex);
gDungeon->unk1BDD4.unk1C05F = 0;
if (monPortrait.faceFile != NULL) {
@@ -365,10 +372,9 @@ extern u8 gUnknown_202DFE8[];
void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo)
{
s32 unkPrintRet;
struct MonPortraitMsg monPortrait;
s32 unkSpVar;
s32 leaderId, partnerId, dialogueMonId;
s32 chosenMenuIndex;
Entity *leader = xxx_call_GetLeader();
Entity *partner = GetPartnerEntity();
struct MonPortraitMsg *monPortraitPtr = NULL;
@@ -462,11 +468,7 @@ void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo)
sub_803EAF0(2, 0);
sub_8052210(0);
CreateDialogueBoxAndPortrait(dialogueInfo->str, 0, monPortraitPtr, gUnknown_80F7AEA[dialogueInfo->unk0]);
do {
xxx_draw_string_80144C4();
sub_803E46C(9);
unkPrintRet = sub_80144A4(&unkSpVar);
} while (unkPrintRet != 0);
PRINT_STRING_WAIT_PRESS(&chosenMenuIndex);
if (monPortraitPtr != NULL) {
CloseFile(monPortraitPtr->faceFile);
@@ -478,3 +480,54 @@ void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo)
}
sub_803E708(8, 9);
}
bool32 PrintYesNoFieldMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool32 defaultYes)
{
struct MonPortraitMsg monPortrait, *monPortraitPtr;
s32 chosenMenuIndex;
sub_8052740(10);
sub_803EAF0(2, 0);
sub_8052210(0);
monPortraitPtr = NULL;
monPortrait.faceFile = NULL;
monPortrait.faceData = NULL;
if (!gDungeon->unk181e8.blinded
&& !gDungeon->unk181e8.hallucinating
&& monSpriteInfo != NULL
&& IsPokemonDialogueSpriteAvail(monSpriteInfo->species, monSpriteInfo->spriteId))
{
monPortrait.faceFile = GetDialogueSpriteDataPtr(monSpriteInfo->species);
monPortrait.faceData = monPortrait.faceFile->data;
monPortrait.pos.x = 2;
monPortrait.pos.y = 9;
monPortrait.spriteId = monSpriteInfo->spriteId;
monPortrait.flip = FALSE;
monPortrait.unkE = 0;
monPortraitPtr = &monPortrait;
}
if (defaultYes == TRUE) {
CreateYesNoDialogueBoxAndPortrait_DefaultYes(str, monPortraitPtr, 0x300); // Yes/No - cursor starts at Yes
}
else {
CreateYesNoDialogueBoxAndPortrait_DefaultNo(str, monPortraitPtr, 0x300); // Yes/No - cursor starts at NO
}
PRINT_STRING_WAIT_PRESS(&chosenMenuIndex)
if (monPortrait.faceFile != NULL) {
CloseFile(monPortrait.faceFile);
}
sub_8040238();
sub_803EAF0(0, 0);
if (chosenMenuIndex == 1)
return TRUE;
else
return FALSE;
}

View File

@@ -70,7 +70,7 @@ extern void sub_806A6E8(Entity *);
extern bool8 sub_8047084(s32 itemFlag);
extern void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4);
extern void sub_8045DB4(Position *, u32);
extern s32 sub_8052B8C(u32, const u8 *, u32);
extern s32 PrintYesNoFieldMessage(u32, const u8 *, u32);
bool8 sub_807EF48(void);
void sub_806A2BC(Entity *a0, u8 a1);
bool8 sub_805E874(void);
@@ -2663,7 +2663,7 @@ bool8 sub_805EC4C(Entity *a0, u8 a1)
if (IsChargingAnyTwoTurnMove(tileMonster, FALSE)) return FALSE;
if (!sub_8070F80(a0, entityInfo->action.direction)) return FALSE;
if (a1 != 0 && sub_807049C(tileMonster, &a0->pos) && !sub_8052B8C(0, gUnknown_8100208, 0)) return FALSE;
if (a1 != 0 && sub_807049C(tileMonster, &a0->pos) && !PrintYesNoFieldMessage(0, gUnknown_8100208, 0)) return FALSE;
SetMonsterActionFields(&entityInfo->action, ACTION_WALK);
if (gRealInputs.held & B_BUTTON) {
@@ -3355,7 +3355,7 @@ bool8 sub_805FBE8(u8 *a0)
do
{
sub_803E46C(0xE);
xxx_draw_string_80144C4();
DrawDialogueBoxString();
r4 = sub_8016080();
} while (r4 == 0);
CleanConfirmNameMenu();

View File

@@ -45,7 +45,7 @@ extern u8 *gUnknown_80FA090[];
void sub_8068FE0(Entity *, u32, Entity *);
u8 sub_806B8CC();
bool8 sub_805FBE8(u8 *a0);
extern s32 sub_8052B8C(u32, const u8 *, u32);
extern s32 PrintYesNoFieldMessage(u32, const u8 *, u32);
extern void PrintFieldMessage(u32, const u8 *, u32);
void sub_8083D88();
u8 sub_808529C(s32);
@@ -749,7 +749,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa
sub_806CE68(entity2, direction);
CopyCyanMonsterNametoBuffer(gAvailablePokemonNames,param_3->id);
if (sub_8052B8C(0,*gUnknown_80F9FE8,1) == 0) {
if (PrintYesNoFieldMessage(0,*gUnknown_80F9FE8,1) == 0) {
if (param_3->id != MONSTER_JIRACHI) {
SendMessage(entity1,*gUnknown_80FA004);
}
@@ -811,7 +811,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa
else {
sub_8083D88();
sub_803E708(0xa0,0x46);
if (sub_8052B8C(0,*gUnknown_80FA090,1) == 1) {
if (PrintYesNoFieldMessage(0,*gUnknown_80FA090,1) == 1) {
while (sub_805FBE8(pokeStruct2->name) == 0) {
PrintFieldMessage(0,*gUnknown_80FA0C8,1);
}
@@ -1072,7 +1072,7 @@ bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr)
pokeStruct2->unk0 = 0;
}
else {
if (sub_8052B8C(0,*gUnknown_80FA090,1) == 1) {
if (PrintYesNoFieldMessage(0,*gUnknown_80FA090,1) == 1) {
while (!sub_805FBE8(buffer)) {
PrintFieldMessage(0,*gUnknown_80FA0C8,1);
}

View File

@@ -20,7 +20,7 @@ extern u8 *gUnknown_8105360[];
extern u8 *gUnknown_81053A8[];
extern u8 *gUnknown_8105434[];
extern s32 sub_8052B8C(u32, u8 *, u32);
extern s32 PrintYesNoFieldMessage(u32, u8 *, u32);
extern void PrintFieldMessage(u32, u8 *, u32);
extern void sub_80416E0(Position32 *r0, u32, bool8);
extern void sub_80421C0(Entity *, u32);
@@ -75,7 +75,7 @@ void sub_8046D20(void)
cVar1 = gDungeon->unk8;
gDungeon->unk8 = sub_8046D70();
if (((gDungeon->unk8 == 1) && (cVar1 == 0)) &&
(sub_8052B8C(0, *gUnknown_80FA408, 1) == 1)) {
(PrintYesNoFieldMessage(0, *gUnknown_80FA408, 1) == 1)) {
gDungeon->unk4 = 1;
gDungeon->unk11 = 2;
}

View File

@@ -418,7 +418,7 @@ static void sub_8037748(void)
if ((sUnknown_203B35C->unk14 & 8) != 0)
AddSprite(&sUnknown_203B35C->unkC, 0x100, NULL, NULL);
xxx_draw_string_80144C4();
DrawDialogueBoxString();
sUnknown_203B35C->unk14++;
}

View File

@@ -742,6 +742,6 @@ void sub_80391F8(void)
if (gRescuePasswordMenu->unk210 & 8)
AddSprite(spr, 0x100, NULL, NULL);
xxx_draw_string_80144C4();
DrawDialogueBoxString();
gRescuePasswordMenu->unk210++;
}