mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-28 13:24:02 -05:00
Decompile 12 more callees; clear the head of overlay_11_02308D1C
Twelve contiguous functions from the head of asm/overlay_11_02308D1C.s,
merged into src/overlay_11_02307334.c so the .s splits rather than the
source file:
ov11_02308D1C ov11_02308D48 ov11_02308DD8 ov11_02308EB4
ov11_02308EDC ov11_02308F14 ov11_02308F4C ov11_02308FD0
ov11_02308FEC ov11_0230901C ov11_02309040 ov11_02309084
Ten are callees of ov11_02307334; ov11_02308D1C and ov11_02308D48 are the
head neighbours that had to clear first for the run to reach a file
boundary. The remainder of the file becomes asm/overlay_11_023090DC.s,
which keeps the OV11_02309084_OFFSET definition its 24 users need.
include/overlay_11_02307334.h gains struct unk_02309DAC, struct
unk_02308F4C and the twelve prototypes; nine superseded void*-typed
forward declarations in src/overlay_11_02307334.c are removed.
Two file-local types in src/overlay_11_02307334.c change. struct
unk_02324D90 is added, its second member region-split (JP 0xF0 against
0x110 elsewhere). struct unk_02324D8C's u8 field_0x104[0x134] splits into
u8 field_0x104[0x32] plus char field_0x136[0x102] -- same size, same
layout, naming the offset ov11_02308DD8 writes through. Neither type
appears outside this file.
Authored by Claude (Opus 5) under human direction. Confirmed by matching
builds of all three regions: build/pmdsky.us/pmdsky.us.nds: OK,
build/pmdsky.eu/pmdsky.eu.nds: OK, build/pmdsky.jp/pmdsky.jp.nds: OK.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,17 +4,13 @@
|
||||
.public CheckTeamMemberIdx
|
||||
.public CloseAdvancedTextBox
|
||||
.public CloseCollectionMenu
|
||||
.public CloseDialogueBox
|
||||
.public CloseInventoryMenu
|
||||
.public CloseParentMenu
|
||||
.public CloseScrollBox
|
||||
.public CloseSynthBin
|
||||
.public CloseTextBox2
|
||||
.public CountNbItemsOfTypeInBag
|
||||
.public CountNbItemsOfTypeInStorage
|
||||
.public CreateAdvancedTextBox
|
||||
.public CreateCollectionMenu
|
||||
.public CreateDialogueBox
|
||||
.public CreateMonsterSummaryFromTeamMember
|
||||
.public CreateParentMenu
|
||||
.public CreateParentMenuFromStringIds
|
||||
@@ -85,7 +81,6 @@
|
||||
.public ov11_0230D220
|
||||
.public ov11_0230D92C
|
||||
.public ov11_02310BDC
|
||||
.public ov11_02322DB8
|
||||
.public ov11_02322DC8
|
||||
.public ov11_02322DD0
|
||||
.public ov11_02322DE0
|
||||
@@ -110,7 +105,6 @@
|
||||
.public ov11_02322FD4
|
||||
.public ov11_02322FE4
|
||||
.public ov11_02322FF4
|
||||
.public ov11_02324D8C
|
||||
.public ov11_02324D90
|
||||
.public ov11_02324D94
|
||||
.public ov11_02324D98
|
||||
@@ -186,4 +180,3 @@
|
||||
.public sub_020564B0
|
||||
.public sub_020586F0
|
||||
.public sub_02058794
|
||||
.public vsprintf
|
||||
@@ -1,329 +1,13 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_11_02308D1C.inc"
|
||||
.include "overlay_11_023090DC.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov11_02308D1C
|
||||
ov11_02308D1C: ; 0x02308D1C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _02308D44 ; =ov11_02324D8C
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
bl MemFree
|
||||
ldr r0, _02308D44 ; =ov11_02324D8C
|
||||
mov r1, #0
|
||||
str r1, [r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02308D44: .word ov11_02324D8C
|
||||
arm_func_end ov11_02308D1C
|
||||
|
||||
arm_func_start ov11_02308D48
|
||||
ov11_02308D48: ; 0x02308D48
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
ldrsb r0, [r0, #6]
|
||||
cmp r0, r1
|
||||
beq _02308D78
|
||||
bl CloseParentMenu
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
strb r1, [r0, #6]
|
||||
_02308D78:
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
ldrsb r0, [r0, #5]
|
||||
cmp r0, r1
|
||||
beq _02308DA4
|
||||
bl CloseTextBox2
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
strb r1, [r0, #5]
|
||||
_02308DA4:
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
ldrsb r0, [r0, #4]
|
||||
cmp r0, r1
|
||||
ldmeqia sp!, {r3, pc}
|
||||
bl CloseInventoryMenu
|
||||
ldr r0, _02308DD4 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
strb r1, [r0, #4]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02308DD4: .word ov11_02324D8C
|
||||
arm_func_end ov11_02308D48
|
||||
|
||||
arm_func_start ov11_02308DD8
|
||||
ov11_02308DD8: ; 0x02308DD8
|
||||
stmdb sp!, {r3, r4, lr}
|
||||
sub sp, sp, #0xc
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
bne _02308E20
|
||||
ldrsh r0, [r0, #4]
|
||||
bl GetTeamMember
|
||||
mov r4, r0
|
||||
bl sub_02055894
|
||||
bl sub_020564B0
|
||||
ldr r1, _02308EAC ; =ov11_02324D8C
|
||||
mov r2, r0
|
||||
ldr r0, [r1]
|
||||
mov r1, r4
|
||||
add r0, r0, #0x36
|
||||
add r0, r0, #0x100
|
||||
bl sub_02056094
|
||||
b _02308E94
|
||||
_02308E20:
|
||||
cmp r1, #1
|
||||
bne _02308E94
|
||||
ldrsh r0, [r0, #4]
|
||||
bl GetActiveTeamMember
|
||||
mov r4, r0
|
||||
add r0, sp, #0
|
||||
add r1, r4, #0x5e
|
||||
mov r2, #0xa
|
||||
bl StrncpySimpleNoPadSafe
|
||||
ldrb r0, [r4]
|
||||
mov r2, #0x44
|
||||
ldr r1, _02308EB0 ; =ov11_02322DB8
|
||||
tst r0, #2
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
ldrb r0, [r4, #1]
|
||||
movne r2, #0x46
|
||||
add r3, sp, #0
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
ldr r0, _02308EAC ; =ov11_02324D8C
|
||||
movne r2, #0x59
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x36
|
||||
add r0, r0, #0x100
|
||||
bl ov11_02308EB4
|
||||
_02308E94:
|
||||
ldr r0, _02308EAC ; =ov11_02324D8C
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x36
|
||||
add r0, r0, #0x100
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
.align 2, 0
|
||||
_02308EAC: .word ov11_02324D8C
|
||||
_02308EB0: .word ov11_02322DB8
|
||||
arm_func_end ov11_02308DD8
|
||||
|
||||
arm_func_start ov11_02308EB4
|
||||
ov11_02308EB4: ; 0x02308EB4
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, lr}
|
||||
add r2, sp, #0xc
|
||||
bic r2, r2, #3
|
||||
ldr r1, [sp, #0xc]
|
||||
add r2, r2, #4
|
||||
bl vsprintf
|
||||
ldmia sp!, {r3, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
arm_func_end ov11_02308EB4
|
||||
|
||||
arm_func_start ov11_02308EDC
|
||||
ov11_02308EDC: ; 0x02308EDC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r1, _02308F10 ; =ov11_02324D8C
|
||||
mvn r0, #1
|
||||
ldr r1, [r1]
|
||||
ldrsb r1, [r1, #8]
|
||||
cmp r1, r0
|
||||
ldmneia sp!, {r3, pc}
|
||||
mov r0, #0
|
||||
bl CreateDialogueBox
|
||||
ldr r1, _02308F10 ; =ov11_02324D8C
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, #8]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02308F10: .word ov11_02324D8C
|
||||
arm_func_end ov11_02308EDC
|
||||
|
||||
arm_func_start ov11_02308F14
|
||||
ov11_02308F14: ; 0x02308F14
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _02308F48 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
ldrsb r0, [r0, #8]
|
||||
cmp r0, r1
|
||||
ldmeqia sp!, {r3, pc}
|
||||
bl CloseDialogueBox
|
||||
ldr r0, _02308F48 ; =ov11_02324D8C
|
||||
mvn r1, #1
|
||||
ldr r0, [r0]
|
||||
strb r1, [r0, #8]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02308F48: .word ov11_02324D8C
|
||||
arm_func_end ov11_02308F14
|
||||
|
||||
arm_func_start ov11_02308F4C
|
||||
ov11_02308F4C: ; 0x02308F4C
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r2, [r1]
|
||||
ldr r1, [r1, #4]
|
||||
mov r4, r0
|
||||
str r2, [r4]
|
||||
str r1, [r4, #4]
|
||||
ldr r0, [r4]
|
||||
cmp r0, #0
|
||||
bne _02308F9C
|
||||
ldrsh r0, [r4, #4]
|
||||
bl GetTeamMember
|
||||
ldrsh r3, [r0, #4]
|
||||
add r2, r0, #0x14
|
||||
add r1, r0, #8
|
||||
strh r3, [r4, #8]
|
||||
ldrb r0, [r0, #2]
|
||||
strb r0, [r4, #0xa]
|
||||
str r2, [r4, #0xc]
|
||||
str r1, [r4, #0x10]
|
||||
ldmia sp!, {r4, pc}
|
||||
_02308F9C:
|
||||
cmp r0, #1
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldrsh r0, [r4, #4]
|
||||
bl GetActiveTeamMember
|
||||
ldrsh r3, [r0, #0xc]
|
||||
add r2, r0, #0x4c
|
||||
add r1, r0, #6
|
||||
strh r3, [r4, #8]
|
||||
ldrb r0, [r0, #3]
|
||||
strb r0, [r4, #0xa]
|
||||
str r2, [r4, #0xc]
|
||||
str r1, [r4, #0x10]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ov11_02308F4C
|
||||
|
||||
arm_func_start ov11_02308FD0
|
||||
ov11_02308FD0: ; 0x02308FD0
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r1, [r0]
|
||||
cmp r1, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
ldrsh r0, [r0, #4]
|
||||
bl sub_02058794
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov11_02308FD0
|
||||
|
||||
arm_func_start ov11_02308FEC
|
||||
ov11_02308FEC: ; 0x02308FEC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
bne _02309008
|
||||
ldrsh r0, [r0, #4]
|
||||
bl sub_0203FA64
|
||||
ldmia sp!, {r3, pc}
|
||||
_02309008:
|
||||
cmp r1, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
ldrsh r0, [r0, #4]
|
||||
bl sub_0203FBD4
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov11_02308FEC
|
||||
|
||||
arm_func_start ov11_0230901C
|
||||
ov11_0230901C: ; 0x0230901C
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
ldreqsh r0, [r0, #4]
|
||||
orreq r0, r0, #0x20000
|
||||
bxeq lr
|
||||
cmp r1, #1
|
||||
ldreqsh r0, [r0, #4]
|
||||
orreq r0, r0, #0x30000
|
||||
bx lr
|
||||
arm_func_end ov11_0230901C
|
||||
|
||||
arm_func_start ov11_02309040
|
||||
ov11_02309040: ; 0x02309040
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldr r0, _0230907C ; =0x00000794
|
||||
mov r1, #8
|
||||
bl MemAlloc
|
||||
ldr r1, _02309080 ; =ov11_02324D90
|
||||
cmp r0, #0
|
||||
str r0, [r1]
|
||||
moveq r0, #0
|
||||
#ifdef JAPAN
|
||||
strne r4, [r0, #0xf4]
|
||||
#else
|
||||
strne r4, [r0, #0x114]
|
||||
#endif
|
||||
ldrne r0, [r1]
|
||||
movne r1, #0
|
||||
strne r1, [r0]
|
||||
movne r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0230907C: .word 0x00000774
|
||||
#else
|
||||
_0230907C: .word 0x00000794
|
||||
#endif
|
||||
_02309080: .word ov11_02324D90
|
||||
arm_func_end ov11_02309040
|
||||
|
||||
arm_func_start ov11_02309084
|
||||
ov11_02309084: ; 0x02309084
|
||||
#ifdef JAPAN
|
||||
#define OV11_02309084_OFFSET -0x20
|
||||
#else
|
||||
#define OV11_02309084_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldr r0, _023090D4 ; =0x00000794
|
||||
mov r1, #8
|
||||
bl MemAlloc
|
||||
ldr r1, _023090D8 ; =ov11_02324D90
|
||||
cmp r0, #0
|
||||
str r0, [r1]
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r2, #2
|
||||
str r2, [r0, #0x114 + OV11_02309084_OFFSET]
|
||||
ldr r0, [r1]
|
||||
mov r2, #0
|
||||
str r2, [r0]
|
||||
ldr r1, [r1]
|
||||
mov r0, #1
|
||||
#ifdef JAPAN
|
||||
strh r4, [r1, #0xf8]
|
||||
#else
|
||||
add r1, r1, #0x100
|
||||
strh r4, [r1, #0x18]
|
||||
#endif
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_023090D4: .word 0x00000774
|
||||
#else
|
||||
_023090D4: .word 0x00000794
|
||||
#endif
|
||||
_023090D8: .word ov11_02324D90
|
||||
arm_func_end ov11_02309084
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov11_023090DC
|
||||
ov11_023090DC: ; 0x023090DC
|
||||
@@ -1,6 +1,36 @@
|
||||
#ifndef PMDSKY_OVERLAY_11_02307334_H
|
||||
#define PMDSKY_OVERLAY_11_02307334_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
struct unk_02309DAC {
|
||||
s32 field_0x0;
|
||||
s16 field_0x4;
|
||||
};
|
||||
|
||||
struct unk_02308F4C {
|
||||
s32 field_0x0;
|
||||
s16 field_0x4;
|
||||
u8 field_0x6[2];
|
||||
s16 field_0x8;
|
||||
u8 field_0xa;
|
||||
u8 field_0xb;
|
||||
u32 *field_0xc;
|
||||
s16 *field_0x10;
|
||||
};
|
||||
|
||||
s32 ov11_02307334(void);
|
||||
void ov11_02308D1C(void);
|
||||
void ov11_02308D48(void);
|
||||
char* ov11_02308DD8(struct unk_02308F4C *a);
|
||||
void ov11_02308EB4(char *str, const char *format, ...);
|
||||
void ov11_02308EDC(void);
|
||||
void ov11_02308F14(void);
|
||||
void ov11_02308F4C(struct unk_02308F4C *dst, const struct unk_02309DAC *src);
|
||||
void ov11_02308FD0(struct unk_02308F4C *a);
|
||||
void ov11_02308FEC(struct unk_02308F4C *a);
|
||||
s32 ov11_0230901C(struct unk_02308F4C *a);
|
||||
int ov11_02309040(s32 param_1);
|
||||
int ov11_02309084(s16 param_1);
|
||||
|
||||
#endif
|
||||
|
||||
2
main.lsf
2
main.lsf
@@ -661,7 +661,7 @@ Overlay OVY_11
|
||||
Object src/overlay_11_022FE58C.o
|
||||
Object asm/overlay_11_022FE5F8.o
|
||||
Object src/overlay_11_02307334.o
|
||||
Object asm/overlay_11_02308D1C.o
|
||||
Object asm/overlay_11_023090DC.o
|
||||
Object src/overlay_11_0230CB88.o
|
||||
Object src/overlay_11_0230CD48.o
|
||||
Object asm/overlay_11_0230CE30.o
|
||||
|
||||
@@ -20,22 +20,34 @@
|
||||
#include "overlay_31_02382820.h"
|
||||
#include "main_020114F8.h"
|
||||
#include "main_0203088C.h"
|
||||
#include "main_02001188.h"
|
||||
#include "common.h"
|
||||
#include <stdarg.h>
|
||||
extern void sub_02056094(char *dst, struct ground_monster *ground_monster,
|
||||
bool8 is_leader);
|
||||
|
||||
struct unk_02309DAC {
|
||||
struct unk_02324D90 {
|
||||
s32 field_0x0;
|
||||
s16 field_0x4;
|
||||
#ifdef JAPAN
|
||||
u8 field_0x4[0xF0];
|
||||
#else
|
||||
u8 field_0x4[0x110];
|
||||
#endif
|
||||
s32 field_0x114;
|
||||
s16 field_0x118;
|
||||
u8 field_0x11a[0x67A];
|
||||
};
|
||||
|
||||
struct unk_02308F4C {
|
||||
s32 field_0x0;
|
||||
s16 field_0x4;
|
||||
u8 field_0x6[2];
|
||||
s16 field_0x8;
|
||||
u8 field_0xa;
|
||||
u8 field_0xb;
|
||||
u32 *field_0xc;
|
||||
s16 *field_0x10;
|
||||
};
|
||||
extern struct unk_02324D90 *ov11_02324D90;
|
||||
extern char ov11_02322DB8[];
|
||||
extern void StrncpySimpleNoPadSafe(u8 *dest, const u8 *src, u32 n);
|
||||
extern s32 sub_02055894(struct ground_monster *member);
|
||||
extern bool8 sub_020564B0(int idx);
|
||||
extern s32 vsprintf(u8 *str, const u8 *format, va_list ap);
|
||||
extern s8 CreateDialogueBox(s8);
|
||||
extern void CloseDialogueBox(s8);
|
||||
extern void sub_0203FA64(s16 idx);
|
||||
extern void sub_0203FBD4(s16 idx);
|
||||
|
||||
struct unk_02324D8C {
|
||||
s32 field_0x0; s8 field_0x4;
|
||||
@@ -51,7 +63,8 @@ struct unk_02324D8C {
|
||||
s32 field_0x10;
|
||||
s32 field_0x14;
|
||||
s32 field_0x18;
|
||||
struct struct_2 field_0x1c; struct preprocessor_args field_0xb4; u8 field_0x104[0x134];
|
||||
struct struct_2 field_0x1c; struct preprocessor_args field_0xb4; u8 field_0x104[0x32];
|
||||
char field_0x136[0x102];
|
||||
struct unk_02308F4C field_0x238; s16 field_0x24c;
|
||||
s16 field_0x24e;
|
||||
s16 field_0x250;
|
||||
@@ -108,16 +121,6 @@ extern u8 PopInventoryMenuField0x1A3(s32 window_id);
|
||||
extern void SetItemAcquired(struct item *);
|
||||
extern void SortItemsInBag(void);
|
||||
extern void *memcpy(void *, const void *, u32);
|
||||
extern void ov11_02308D48(void);
|
||||
extern void *ov11_02308DD8(void *);
|
||||
extern void ov11_02308EDC(void);
|
||||
extern void ov11_02308F14(void);
|
||||
extern void ov11_02308F4C(void *dst, const void *src);
|
||||
extern void ov11_02308FD0(void *);
|
||||
extern void ov11_02308FEC(void *);
|
||||
extern s32 ov11_0230901C(void *);
|
||||
extern int ov11_02309040(s32);
|
||||
extern int ov11_02309084(s16);
|
||||
extern int ov11_023090DC(void);
|
||||
extern void ov11_02309DAC(void *out);
|
||||
extern void ov11_02309DF8(void);
|
||||
@@ -894,3 +897,148 @@ s32 ov11_02307334(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ov11_02308D1C(void)
|
||||
{
|
||||
if (ov11_02324D8C != 0) {
|
||||
MemFree(ov11_02324D8C);
|
||||
ov11_02324D8C = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ov11_02308D48(void)
|
||||
{
|
||||
if (ov11_02324D8C->field_0x6 != -2) {
|
||||
CloseParentMenu(ov11_02324D8C->field_0x6);
|
||||
ov11_02324D8C->field_0x6 = -2;
|
||||
}
|
||||
if (ov11_02324D8C->field_0x5 != -2) {
|
||||
CloseTextBox2(ov11_02324D8C->field_0x5);
|
||||
ov11_02324D8C->field_0x5 = -2;
|
||||
}
|
||||
if (ov11_02324D8C->field_0x4 != -2) {
|
||||
CloseInventoryMenu(ov11_02324D8C->field_0x4);
|
||||
ov11_02324D8C->field_0x4 = -2;
|
||||
}
|
||||
}
|
||||
|
||||
char* ov11_02308DD8(struct unk_02308F4C *a)
|
||||
{
|
||||
u8 name[12];
|
||||
struct ground_monster *ground_monster;
|
||||
struct team_member *team_member;
|
||||
u32 color;
|
||||
bool8 f;
|
||||
bool8 leader;
|
||||
|
||||
if (a->field_0x0 == 0) {
|
||||
ground_monster = GetTeamMember(a->field_0x4);
|
||||
sub_02056094(ov11_02324D8C->field_0x136, ground_monster,
|
||||
sub_020564B0(sub_02055894(ground_monster)));
|
||||
} else if (a->field_0x0 == 1) {
|
||||
team_member = GetActiveTeamMember(a->field_0x4);
|
||||
StrncpySimpleNoPadSafe(name, (const u8 *)team_member->name, 10);
|
||||
color = 0x44;
|
||||
f = (*(u8 *)team_member & 2) != 0;
|
||||
if (f) {
|
||||
color = 0x46;
|
||||
}
|
||||
leader = team_member->is_leader != 0;
|
||||
if (leader) {
|
||||
color = 0x59;
|
||||
}
|
||||
ov11_02308EB4(ov11_02324D8C->field_0x136, ov11_02322DB8, color, name);
|
||||
}
|
||||
return ov11_02324D8C->field_0x136;
|
||||
}
|
||||
|
||||
void ov11_02308EB4(char *str, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vsprintf(str, format, args);
|
||||
}
|
||||
|
||||
void ov11_02308EDC(void)
|
||||
{
|
||||
if (ov11_02324D8C->field_0x8 == -2) {
|
||||
ov11_02324D8C->field_0x8 = CreateDialogueBox(0);
|
||||
}
|
||||
}
|
||||
|
||||
void ov11_02308F14(void)
|
||||
{
|
||||
if (ov11_02324D8C->field_0x8 != -2) {
|
||||
CloseDialogueBox(ov11_02324D8C->field_0x8);
|
||||
ov11_02324D8C->field_0x8 = -2;
|
||||
}
|
||||
}
|
||||
|
||||
void ov11_02308F4C(struct unk_02308F4C *dst, const struct unk_02309DAC *src)
|
||||
{
|
||||
*(struct unk_02309DAC *)dst = *src;
|
||||
if (dst->field_0x0 == 0) {
|
||||
struct ground_monster *mon = GetTeamMember(dst->field_0x4);
|
||||
|
||||
dst->field_0x8 = mon->id;
|
||||
dst->field_0xa = mon->joined_at;
|
||||
dst->field_0xc = mon->iq_skill_flags;
|
||||
dst->field_0x10 = (s16 *)&mon->iq;
|
||||
} else if (dst->field_0x0 == 1) {
|
||||
struct team_member *mem = GetActiveTeamMember(dst->field_0x4);
|
||||
|
||||
dst->field_0x8 = *(s16 *)&mem->id;
|
||||
dst->field_0xa = mem->joined_at;
|
||||
dst->field_0xc = mem->iq_skill_flags;
|
||||
dst->field_0x10 = (s16 *)&mem->iq;
|
||||
}
|
||||
}
|
||||
|
||||
void ov11_02308FD0(struct unk_02308F4C *a)
|
||||
{
|
||||
if (a->field_0x0 == 1) {
|
||||
sub_02058794(a->field_0x4);
|
||||
}
|
||||
}
|
||||
|
||||
void ov11_02308FEC(struct unk_02308F4C *a)
|
||||
{
|
||||
if (a->field_0x0 == 0) {
|
||||
sub_0203FA64(a->field_0x4);
|
||||
} else if (a->field_0x0 == 1) {
|
||||
sub_0203FBD4(a->field_0x4);
|
||||
}
|
||||
}
|
||||
|
||||
s32 ov11_0230901C(struct unk_02308F4C *a)
|
||||
{
|
||||
if (a->field_0x0 == 0) {
|
||||
return a->field_0x4 | 0x20000;
|
||||
}
|
||||
if (a->field_0x0 == 1) {
|
||||
return a->field_0x4 | 0x30000;
|
||||
}
|
||||
}
|
||||
|
||||
int ov11_02309040(s32 param_1)
|
||||
{
|
||||
ov11_02324D90 = MemAlloc(sizeof(struct unk_02324D90), 8);
|
||||
if (ov11_02324D90 == 0) {
|
||||
return 0;
|
||||
}
|
||||
ov11_02324D90->field_0x114 = param_1;
|
||||
ov11_02324D90->field_0x0 = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ov11_02309084(s16 param_1)
|
||||
{
|
||||
ov11_02324D90 = MemAlloc(sizeof(struct unk_02324D90), 8);
|
||||
if (ov11_02324D90 == NULL) {
|
||||
return 0;
|
||||
}
|
||||
ov11_02324D90->field_0x114 = 2;
|
||||
ov11_02324D90->field_0x0 = 0;
|
||||
ov11_02324D90->field_0x118 = param_1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user