diff --git a/asm/code_2.s b/asm/code_2.s index 96cb0c1b1..03f93b406 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -1059,556 +1059,4 @@ _08000EC6: bx r1 thumb_func_end sub_80009D0 - thumb_func_start SaveLoadRelated_8000EDC -SaveLoadRelated_8000EDC: - push {r4-r7,lr} - sub sp, 0x8 - adds r4, r0, 0 - movs r5, 0x1 - ldr r0, _08000F24 - str r5, [r0] - movs r0, 0x3 - bl sub_800A8F8 - bl sub_8014144 - add r1, sp, 0x4 - mov r0, sp - bl sub_8043D50 - ldr r0, [sp] - movs r1, 0x7 - bl MemoryAlloc - str r0, [r4, 0x74] - ldr r0, [sp, 0x4] - movs r1, 0x7 - bl MemoryAlloc - str r0, [r4, 0x78] - ldrb r0, [r4, 0x8] - cmp r0, 0 - beq _08000F68 - ldr r0, [r4, 0x74] - ldr r1, [sp] - bl PrepareQuickSaveRead - adds r7, r4, 0 - adds r7, 0x7C - b _08000F2E - .align 2, 0 -_08000F24: .4byte gUnknown_203B03C -_08000F28: - movs r0, 0 - bl xxx_update_stuff -_08000F2E: - bl ReadQuickSave - lsls r0, 24 - cmp r0, 0 - bne _08000F28 - bl IsQuickSaveValid - lsls r0, 24 - lsrs r5, r0, 24 - bl FinishQuickSaveRead - bl sub_8011830 - cmp r5, 0 - beq _08000F58 - ldr r0, _08000F54 - bl sub_80121E0 - b _08000F5E - .align 2, 0 -_08000F54: .4byte 0x000f1208 -_08000F58: - ldr r0, _08000F64 - bl sub_80121E0 -_08000F5E: - bl xxx_call_start_bg_music - b _08000F78 - .align 2, 0 -_08000F64: .4byte 0x000f1209 -_08000F68: - bl GeneratePelipperJobs - bl sub_80961B4 - bl sub_808ED00 - adds r7, r4, 0 - adds r7, 0x7C -_08000F78: - cmp r5, 0 - beq _08000F92 - adds r0, r4, 0 - bl xxx_dungeon_8001340 - bl sub_8099648 - bl SetWindowBGColor - movs r0, 0 - bl sub_8099690 - b _08000F96 -_08000F92: - movs r0, 0x5 - strh r0, [r7] -_08000F96: - adds r5, r7, 0 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r6, 0x2 - negs r6, r6 - cmp r0, r6 - bne _08000FAC - adds r0, r4, 0 - adds r0, 0x84 - bl sub_809542C -_08000FAC: - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x3 - beq _08000FB8 - cmp r0, r6 - bne _0800100C -_08000FB8: - adds r0, r4, 0 - adds r0, 0x80 - bl SetDungeonLocationInfo - bl xxx_call_stop_bgm - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, r6 - bne _08000FD8 - ldr r0, [r4, 0x74] - ldr r1, [sp] - movs r2, 0x1 - bl PrepareQuickSaveWrite - b _08000FFA -_08000FD8: - ldr r0, [r4, 0x74] - ldr r1, [sp] - movs r2, 0 - bl PrepareQuickSaveWrite - b _08000FFA -_08000FE4: - cmp r0, 0x1 - bne _08000FF4 - ldr r0, [r4, 0x78] - bl MemoryFree - ldr r0, [r4, 0x74] - bl MemoryFree -_08000FF4: - movs r0, 0 - bl xxx_update_stuff -_08000FFA: - bl WriteQuickSave - cmp r0, 0x2 - beq _08001006 - cmp r0, 0x3 - bne _08000FE4 -_08001006: - bl FinishQuickSaveWrite - b _0800101C -_0800100C: - bl sub_808ED00 - ldr r0, [r4, 0x78] - bl MemoryFree - ldr r0, [r4, 0x74] - bl MemoryFree -_0800101C: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SaveLoadRelated_8000EDC - - thumb_func_start sub_8001024 -sub_8001024: - push {r4,lr} - ldr r1, _08001040 - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08001040: .4byte gPersonalityRelated_203B040 - thumb_func_end sub_8001024 - - thumb_func_start sub_8001044 -sub_8001044: - push {r4,lr} - ldr r1, _08001060 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08001060: .4byte gPersonalityRelated_203B040 - thumb_func_end sub_8001044 - - thumb_func_start sub_8001064 -sub_8001064: - push {r4,r5,lr} - sub sp, 0x28 - bl GetPlayerPokemonStruct - cmp r0, 0 - bne _080010AE - ldr r5, _0800109C - ldrb r0, [r5, 0x8] - cmp r0, 0 - bne _080010A0 - add r4, sp, 0x14 - movs r0, 0x4 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl CopyMonsterNameToBuffer - mov r0, sp - adds r1, r4, 0 - bl CopyStringtoBuffer - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r1, 0x1 - mov r2, sp - bl sub_808CE74 - b _080010AE - .align 2, 0 -_0800109C: .4byte gPersonalityRelated_203B040 -_080010A0: - movs r4, 0x4 - ldrsh r0, [r5, r4] - adds r2, r5, 0 - adds r2, 0x8 - movs r1, 0x1 - bl sub_808CE74 -_080010AE: - bl sub_808D378 - cmp r0, 0 - bne _080010F2 - ldr r5, _080010E0 - ldrb r0, [r5, 0x1C] - cmp r0, 0 - bne _080010E4 - add r4, sp, 0x14 - movs r0, 0x6 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl CopyMonsterNameToBuffer - mov r0, sp - adds r1, r4, 0 - bl CopyStringtoBuffer - movs r1, 0x6 - ldrsh r0, [r5, r1] - movs r1, 0 - mov r2, sp - bl sub_808CE74 - b _080010F2 - .align 2, 0 -_080010E0: .4byte gPersonalityRelated_203B040 -_080010E4: - movs r4, 0x6 - ldrsh r0, [r5, r4] - adds r2, r5, 0 - adds r2, 0x1C - movs r1, 0 - bl sub_808CE74 -_080010F2: - ldr r3, _08001164 - movs r0, 0x4 - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _08001126 - ldr r2, _08001168 - movs r4, 0x4 - ldrsh r0, [r2, r4] - cmp r0, 0 - beq _0800111C - cmp r1, r0 - beq _0800111C -_0800110A: - adds r2, 0x8 - movs r0, 0x4 - ldrsh r1, [r2, r0] - cmp r1, 0 - beq _0800111C - movs r4, 0x4 - ldrsh r0, [r3, r4] - cmp r0, r1 - bne _0800110A -_0800111C: - ldr r2, [r2] - movs r0, 0 - movs r1, 0x27 - bl SetScriptVarValue -_08001126: - ldr r3, _08001164 - movs r0, 0x6 - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _0800115A - ldr r2, _0800116C - movs r4, 0x4 - ldrsh r0, [r2, r4] - cmp r0, 0 - beq _08001150 - cmp r1, r0 - beq _08001150 -_0800113E: - adds r2, 0x8 - movs r0, 0x4 - ldrsh r1, [r2, r0] - cmp r1, 0 - beq _08001150 - movs r4, 0x6 - ldrsh r0, [r3, r4] - cmp r0, r1 - bne _0800113E -_08001150: - ldr r2, [r2] - movs r0, 0 - movs r1, 0x26 - bl SetScriptVarValue -_0800115A: - add sp, 0x28 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08001164: .4byte gPersonalityRelated_203B040 -_08001168: .4byte gBaseKindTable -_0800116C: .4byte gTalkKindTable - thumb_func_end sub_8001064 - - thumb_func_start sub_8001170 -sub_8001170: - push {r4,lr} - sub sp, 0x8 - add r4, sp, 0x4 - movs r0, 0x63 - strb r0, [r4] - mov r1, sp - adds r1, 0x2 - mov r0, sp - bl sub_80992E0 - lsls r0, 24 - cmp r0, 0 - beq _08001196 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80A2740 - b _080011BE -_08001196: - adds r0, r4, 0 - bl sub_8099328 - lsls r0, 24 - cmp r0, 0 - bne _080011C0 - adds r0, r4, 0 - bl sub_8099360 - lsls r0, 24 - cmp r0, 0 - bne _080011C0 - mov r0, sp - adds r0, 0x5 - bl sub_8099394 - lsls r0, 24 - cmp r0, 0 - beq _080011C0 - movs r0, 0x3F -_080011BE: - strb r0, [r4] -_080011C0: - ldrb r0, [r4] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8001170 - - thumb_func_start sub_80011CC -sub_80011CC: - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - strb r1, [r4] - strb r5, [r4, 0x1] - bl sub_80011E8 - strb r5, [r4, 0xB] - strb r5, [r4, 0x4] - strb r5, [r4, 0xC] - strb r5, [r4, 0xD] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80011CC - - thumb_func_start sub_80011E8 -sub_80011E8: - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x8 - bl sub_80023E4 - strb r0, [r4, 0x5] - movs r0, 0x3 - bl sub_80023E4 - strb r0, [r4, 0x6] - movs r0, 0x7 - bl sub_80023E4 - strb r0, [r4, 0x8] - movs r0, 0 - bl sub_80023E4 - strb r0, [r4, 0x9] - movs r0, 0x5 - bl sub_80023E4 - strb r0, [r4, 0xA] - movs r0, 0x18 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0800123C - movs r0, 0x19 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0800123C - movs r0, 0x1A - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0800123C - movs r0, 0x1 - b _0800123E -_0800123C: - movs r0, 0 -_0800123E: - strb r0, [r4, 0x7] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80011E8 - - thumb_func_start sub_8001248 -sub_8001248: - push {r4,r5,lr} - movs r4, 0 - movs r5, 0 -_0800124E: - movs r0, 0x64 - bl RandInt - cmp r0, 0x31 - bgt _08001266 - lsls r0, r4, 2 - ldr r1, _080012B8 - ldr r1, [r1] - adds r0, r1 - strb r5, [r0, 0x2] - strb r5, [r0, 0x1] - strb r5, [r0] -_08001266: - adds r4, 0x1 - cmp r4, 0x13 - ble _0800124E - bl FillInventoryGaps - movs r4, 0 - ldr r5, _080012BC - movs r3, 0x1 -_08001276: - movs r0, 0x58 - adds r1, r4, 0 - muls r1, r0 - ldr r0, [r5] - adds r1, r0, r1 - ldrh r2, [r1] - adds r0, r3, 0 - ands r0, r2 - cmp r0, 0 - beq _08001298 - lsrs r0, r2, 1 - ands r0, r3 - cmp r0, 0 - beq _08001298 - adds r1, 0x28 - movs r0, 0 - strb r0, [r1] -_08001298: - adds r4, 0x1 - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - ble _08001276 - ldr r0, _080012B8 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080012B8: .4byte gTeamInventoryRef -_080012BC: .4byte gRecruitedPokemonRef - thumb_func_end sub_8001248 - - thumb_func_start sub_80012C0 -sub_80012C0: - push {r4,r5,lr} - movs r3, 0 - ldr r4, _08001324 - movs r2, 0 -_080012C8: - lsls r1, r3, 2 - ldr r0, [r4] - adds r1, r0 - strb r2, [r1, 0x2] - strb r2, [r1, 0x1] - strb r2, [r1] - adds r3, 0x1 - cmp r3, 0x13 - ble _080012C8 - bl FillInventoryGaps - movs r3, 0 - ldr r5, _08001328 - movs r4, 0x1 -_080012E4: - movs r0, 0x58 - adds r1, r3, 0 - muls r1, r0 - ldr r0, [r5] - adds r1, r0, r1 - ldrh r2, [r1] - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _08001306 - lsrs r0, r2, 1 - ands r0, r4 - cmp r0, 0 - beq _08001306 - adds r1, 0x28 - movs r0, 0 - strb r0, [r1] -_08001306: - adds r3, 0x1 - movs r0, 0xCE - lsls r0, 1 - cmp r3, r0 - ble _080012E4 - ldr r0, _08001324 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08001324: .4byte gTeamInventoryRef -_08001328: .4byte gRecruitedPokemonRef - thumb_func_end sub_80012C0 - - .align 2,0 + .align 2,0 diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s index 3cc9971d1..6f1003350 100644 --- a/data/data_80D47B8.s +++ b/data/data_80D47B8.s @@ -3,61 +3,9 @@ @ START code_80130A8 - .global gUnknown_80D48A0 -gUnknown_80D48A0: @ 80D48A0 - .byte 0x07, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .global gUnknown_80D48AC -gUnknown_80D48AC: @ 80D48AC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80D48C4 -gUnknown_80D48C4: @ 80D48C4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x0f, 0x00 - .byte 0x1a, 0x00, 0x05, 0x00 - .byte 0x07, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80D48DC -gUnknown_80D48DC: @ 80D48DC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x08, 0x00 - .byte 0x1a, 0x00, 0x05, 0x00 - .byte 0x07, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gSpeakerNameSeparator -gSpeakerNameSeparator: @ 80D48F4 - .byte 0x3A, 0x20, 0x00, 0x00 @ maybe just a colon and space - - .global gUnknown_80D48F8 -gUnknown_80D48F8: @ 80D48F8 - .string "????\0" - .align 2,0 - - .global gUnknown_80D4900 -gUnknown_80D4900: @ 80D4900 - .string "%d\0" - .align 2,0 - - .global gUnknown_80D4904 -gUnknown_80D4904: @ 80D4904 - .string "%*d\0" - .align 2,0 - .global gUnknown_80D4908 gUnknown_80D4908: @ 80D4908 - .string "%0*d\0" + .asciz "%0*d" .align 2,0 .global gUnknown_80D4910 diff --git a/include/structs/str_dungeon_8042F6C.h b/include/structs/str_dungeon_8042F6C.h new file mode 100644 index 000000000..536d093e4 --- /dev/null +++ b/include/structs/str_dungeon_8042F6C.h @@ -0,0 +1,36 @@ +#ifndef GUARD_STR_DUNGEON_8042F6C_H +#define GUARD_STR_DUNGEON_8042F6C_H + +#include "structs/str_dungeon.h" +#include "structs/str_dungeon_location.h" +#include "structs/str_pokemon.h" +#include "structs/str_wonder_mail.h" + +struct UnkStruct_xxx_dungeon_8042F6C +{ + u8 unk0; + DungeonLocation unk4; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + u8 unk10; + u8 unk11; + unkStruct_Dungeon64C unk14; + PokemonStruct1 unk1C; + u8 *unk74; + Dungeon *unk78; + s16 unk7C; + u8 unk7E; + DungeonLocation unk80; + WonderMailSub unk84; +}; + +void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8); + +#endif // GUARD_STR_DUNGEON_8042F6C_H + diff --git a/include/structs/str_wonder_mail.h b/include/structs/str_wonder_mail.h index 101e96928..04f2bbd61 100644 --- a/include/structs/str_wonder_mail.h +++ b/include/structs/str_wonder_mail.h @@ -79,4 +79,4 @@ typedef struct WonderMailStruct_203B2C0_sub /* 0x30 */ PokemonStruct1 pokemon; } WonderMailStruct_203B2C0_sub; -#endif // GUARD_STR_WONDER_MAIL_H \ No newline at end of file +#endif // GUARD_STR_WONDER_MAIL_H diff --git a/src/code.c b/src/code.c index 2bff18715..fcb41a7a5 100644 --- a/src/code.c +++ b/src/code.c @@ -1,16 +1,276 @@ #include "global.h" +#include "structs/str_dungeon_8042F6C.h" +#include "structs/str_wonder_mail.h" +#include "code_80118A4.h" +#include "code_80A26CC.h" +#include "code_8099360.h" #include "event_flag.h" +#include "items.h" +#include "memory.h" +#include "pokemon.h" +#include "quick_save_read.h" +#include "quick_save_write.h" +#include "random.h" +#include "save.h" +#include "string_format.h" +#include "text_util.h" -extern void xxx_dungeon_8042F6C(u32 r0); extern void NDS_LoadOverlay_GroundMain(); extern u32 xxx_script_related_8098468(u32); +extern u8 sub_80992E0(s16 *, s16 *); +extern bool8 sub_8099328(u8 *dungeonId); +extern bool8 sub_8099360(u8 *); +extern u8 sub_8099394(u8 *); +extern void GeneratePelipperJobs(); +extern void sub_8043D50(s32 *a0, s32 *a1); +extern void xxx_update_stuff(u32); +extern void sub_80961B4(); +extern void sub_808ED00(); +extern void SetDungeonLocationInfo(DungeonLocation *dl); +extern void sub_808CE74(s16, bool32, u8*); + +void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0); +void sub_80011E8(u8 *param_1); +void sub_809542C(WonderMailSub *param_1); + +struct unkTalkTable +{ + u32 unk0; + s16 species; +}; + +extern struct unkTalkTable gTalkKindTable[]; +extern struct unkTalkTable gBaseKindTable[]; + +// size: 0x30 +struct PersonalityRelated +{ + u8 fill0[4]; + s16 speciesID1; + s16 speciesID2; + u8 speciesName1[0x14]; + u8 speciesName2[0x14]; +}; +struct PersonalityRelated gPersonalityRelated_203B040; +extern u32 gUnknown_203B03C; + +void SaveLoadRelated_8000EDC(struct UnkStruct_xxx_dungeon_8042F6C *param_1) +{ + u8 quickSaveValid; + s32 quickSaveStatus; + s32 local_1c; // 0x4800 + s32 local_18; // sizeof(Dungeon) + + quickSaveValid = TRUE; + gUnknown_203B03C = 1; + sub_800A8F8(3); + sub_8014144(); + sub_8043D50(&local_1c,&local_18); + param_1->unk74 = MemoryAlloc(local_1c,7); // size: 0x4800 + param_1->unk78 = MemoryAlloc(local_18,7); // size: sizeof(Dungeon) + if (param_1->unk8) { + PrepareQuickSaveRead(param_1->unk74,local_1c); + while( TRUE ) { + if (!ReadQuickSave()) break; + xxx_update_stuff(0); + } + quickSaveValid = IsQuickSaveValid(); + FinishQuickSaveRead(); + sub_8011830(); + if (quickSaveValid) { + sub_80121E0(0xf1208); + } + else { + sub_80121E0(0xf1209); + } + xxx_call_start_bg_music(); + } + else { + GeneratePelipperJobs(); + sub_80961B4(); + sub_808ED00(); + } + if (quickSaveValid) { + xxx_dungeon_8001340(param_1); + sub_8099648(); + SetWindowBGColor(); + sub_8099690(0); + } + else { + param_1->unk7C = 5; + } + if (param_1->unk7C == -2) { + sub_809542C(¶m_1->unk84); + } + if ((param_1->unk7C == 3) || (param_1->unk7C == -2)) { + SetDungeonLocationInfo(¶m_1->unk80); + xxx_call_stop_bgm(); + if (param_1->unk7C == -2) { + PrepareQuickSaveWrite(param_1->unk74,local_1c,1); + } + else { + PrepareQuickSaveWrite(param_1->unk74,local_1c,0); + } + while ((quickSaveStatus = WriteQuickSave(), (quickSaveStatus != 2))) { + if (quickSaveStatus == 3) break; + if (quickSaveStatus == 1) { + MemoryFree(param_1->unk78); + MemoryFree(param_1->unk74); + } + xxx_update_stuff(0); + } + FinishQuickSaveWrite(); + } + else { + sub_808ED00(); + MemoryFree(param_1->unk78); + MemoryFree(param_1->unk74); + } +} + +void sub_8001024(struct PersonalityRelated *r0) +{ + *r0 = gPersonalityRelated_203B040; +} + +void sub_8001044(struct PersonalityRelated *r0) +{ + gPersonalityRelated_203B040 = *r0; +} + +void sub_8001064(void) +{ + struct unkTalkTable *psVar2; + u8 buffer2 [20]; + u8 buffer1 [20]; + + if (GetPlayerPokemonStruct() == NULL) { + if (gPersonalityRelated_203B040.speciesName1[0] == '\0') { + CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID1); + CopyStringtoBuffer(buffer2,buffer1); + sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,buffer2); + } + else { + sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,gPersonalityRelated_203B040.speciesName1); + } + } + if (sub_808D378() == NULL) { + if (gPersonalityRelated_203B040.speciesName2[0] == '\0') { + CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID2); + CopyStringtoBuffer(buffer2,buffer1); + sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,buffer2); + } + else { + sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,gPersonalityRelated_203B040.speciesName2); + } + } + if (gPersonalityRelated_203B040.speciesID1 != MONSTER_NONE) { + psVar2 = &gBaseKindTable[0]; + while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID1 != psVar2->species))) { + psVar2++; + } + SetScriptVarValue(NULL,BASE_KIND,psVar2->unk0); + } + if (gPersonalityRelated_203B040.speciesID2 != MONSTER_NONE) { + psVar2 = &gTalkKindTable[0]; + while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID2 != psVar2->species))) { + psVar2++; + } + SetScriptVarValue(NULL,PARTNER_TALK_KIND,psVar2->unk0); + } +} + +u8 sub_8001170(void) +{ + s16 local_10; + s16 auStack_e; + u8 dungeonID; + u8 auStack_b; + + dungeonID = 0x63; + if (sub_80992E0(&local_10,&auStack_e) != 0) { + dungeonID = sub_80A2740(local_10); + } + else { + if (!sub_8099328(&dungeonID) && (!sub_8099360(&dungeonID) && sub_8099394(&auStack_b) != 0)) { + dungeonID = 0x3F; + } + } + return dungeonID; +} + +void sub_80011CC(u8 *param_1,u8 param_2) +{ + u32 zero = 0; + param_1[0] = param_2; + param_1[1] = zero; + sub_80011E8(param_1); + param_1[0xb] = 0; + param_1[4] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; +} + +void sub_80011E8(u8 *param_1) +{ + param_1[5] = sub_80023E4(8); + param_1[6] = sub_80023E4(3); + param_1[8] = sub_80023E4(7); + param_1[9] = sub_80023E4(0); + param_1[10] = sub_80023E4(5); + if (sub_80023E4(0x18) && sub_80023E4(0x19) && sub_80023E4(0x1a)) { + param_1[7] = 1; + } + else { + param_1[7] = 0; + } +} + +void sub_8001248(void) +{ + s32 index; + s32 counter; + + for(index = 0; index < INVENTORY_SIZE; index++) + { + counter = RandInt(100); + if(counter < 50) + ZeroOutItem(&gTeamInventoryRef->teamItems[index]); + } + FillInventoryGaps(); + for(index = 0; index < NUM_MONSTERS; index++) + { + PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index]; + if(PokemonFlag1(mon) && PokemonFlag2(mon)) + mon->heldItem.id = ITEM_NOTHING; + } + gTeamInventoryRef->teamMoney = 0; +} + +void sub_80012C0(void) +{ + s32 index; + + for(index = 0; index < INVENTORY_SIZE; index++) + { + ZeroOutItem(&gTeamInventoryRef->teamItems[index]); + } + FillInventoryGaps(); + for(index = 0; index < NUM_MONSTERS; index++) + { + PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index]; + if(PokemonFlag1(mon) && PokemonFlag2(mon)) + mon->heldItem.id = ITEM_NOTHING; + } + gTeamInventoryRef->teamMoney = 0; +} void NDS_LoadOverlay_GroundMain() { } -void nullsub_2(u32 r0) +void nullsub_2(struct UnkStruct_xxx_dungeon_8042F6C *r0) { } @@ -20,7 +280,7 @@ u32 xxx_script_related_8001334(u32 r0) return xxx_script_related_8098468(r0); } -void xxx_dungeon_8001340(u32 r0) +void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0) { nullsub_2(r0); xxx_dungeon_8042F6C(r0); diff --git a/src/code_8042B34.c b/src/code_8042B34.c index ee6f28b6f..a4ffb82b3 100644 --- a/src/code_8042B34.c +++ b/src/code_8042B34.c @@ -2,6 +2,7 @@ #include "dungeon_util_1.h" #include "memory.h" #include "structs/rgb.h" +#include "structs/str_dungeon_8042F6C.h" #include "code_803E46C.h" #include "code_800E9E4.h" #include "code_800DAC0.h" @@ -250,35 +251,6 @@ extern u8 gUnknown_203B40C; extern DungeonPos gUnknown_203B410; extern u8 *gSerializedData_203B41C; -struct Substruct_xxx_dungeon_8042F6C -{ - DungeonLocation a0; - u32 a4; -}; - -struct UnkStruct_xxx_dungeon_8042F6C -{ - u8 unk0; - DungeonLocation unk4; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; - u8 unkC; - u8 unkD; - u8 unkE; - u8 unkF; - u8 unk10; - u8 unk11; - unkStruct_Dungeon64C unk14; - PokemonStruct1 unk1C; - u8 *unk74; - Dungeon *unk78; - s16 unk7C; - u8 unk7E; - DungeonLocation unk80; - struct Substruct_xxx_dungeon_8042F6C unk84; -}; extern void sub_8040094(u8 r0); extern void sub_8068BDC(u8 r0); @@ -915,8 +887,8 @@ void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8) r8->unk7C = -2; memset(&r8->unk84, 0, sizeof(r8->unk84)); r8->unk80 = gDungeon->unk644.dungeonLocation; - r8->unk84.a0 = gDungeon->unk644.dungeonLocation; - r8->unk84.a4 = gDungeon->unk644.unk38; + r8->unk84.dungeon = gDungeon->unk644.dungeonLocation; + r8->unk84.seed = gDungeon->unk644.unk38; } else { diff --git a/src/string_format.c b/src/string_format.c index fcd6b0938..4e4f5dd82 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -83,7 +83,7 @@ struct SubStruct_203B198 u16 unkC; // x3C u16 unkE; // x3E u16 unk10; // x40 - u8 fill12[0x48-0x42]; // x42 + u8 fill12[6]; // x42 }; struct UnkStruct_203B198 @@ -104,16 +104,42 @@ extern struct UnkStruct_203B198 gUnknown_203B198; extern UnkTextStruct1 gUnknown_2027370[4]; extern void (*gUnknown_203B088)(s32 a0); -extern const struct SubStruct_203B198 gUnknown_80D48AC; -extern const struct UnkTextStruct2 gUnknown_80D48DC; -extern const struct UnkTextStruct2 gUnknown_80D48C4; -extern const u32 gUnknown_80D48A0[]; -extern const u8 gUnknown_80D48F8[]; -extern const u8 gUnknown_80D4900[]; -extern const u8 gUnknown_80D4904[]; +static const u32 gUnknown_80D48A0[] = {0x7, 0x2, 0x2}; +static const struct SubStruct_203B198 gUnknown_80D48AC = { + 0x00, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + +}; + +static const UnkTextStruct2 gUnknown_80D48C4 = { + 0x00, 0x00, 0x00, 0x00, + 0x00, + 0x02, 0x0F, + 0x1A, 0x05, + 0x07, 0x00, + NULL +}; + +static const UnkTextStruct2 gUnknown_80D48DC = { + 0x00, 0x00, 0x00, 0x00, + 0x02, + 0x02, 0x08, + 0x1A, 0x05, + 0x07, 0x00, + NULL +}; + + +ALIGNED(4) static const u8 sSpeakerNameSeparator[] = ": "; +ALIGNED(4) static const u8 sUnknownTeamName[] = "????"; +ALIGNED(4) static const u8 gUnknown_80D4900[] = "%d"; +ALIGNED(4) static const u8 gUnknown_80D4904[] = "%*d" ; extern const u8 gUnknown_80D4908[]; extern const u8 gUnknown_80D4910[]; -extern const u8 gSpeakerNameSeparator[]; extern void SetCharacterMask(int a0); extern void DisplayMonPortraitSprite(s32 a0, const u8 *compressedData, s32 a2); @@ -705,7 +731,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags) r9 = FALSE; if (flags & 8) { AppendString(gSpeakerNameBuffer, &dst, dstMax, flags); - AppendString(gSpeakerNameSeparator, &dst, dstMax, flags); + AppendString(sSpeakerNameSeparator, &dst, dstMax, flags); } } else if (r9) { @@ -759,7 +785,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags) sub_80920D8(sFormatBuffer_TeamName); } else { - strcpy(sFormatBuffer_TeamName, gUnknown_80D48F8); // ???? + strcpy(sFormatBuffer_TeamName, sUnknownTeamName); // ???? } txtPtr = sFormatBuffer_TeamName; break;