Merge pull request #234 from SethBarberee/oct_2024
Some checks failed
GithubCI / build (push) Has been cancelled

Oct 2024
This commit is contained in:
AnonymousRandomPerson 2024-10-27 12:53:29 -04:00 committed by GitHub
commit 03126263bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 1828 additions and 2217 deletions

View File

@ -1725,97 +1725,4 @@ _08015F34:
_08015F40: .4byte gUnknown_80DB098
thumb_func_end sub_8015EB4
thumb_func_start sub_8015F44
sub_8015F44:
push {r4,lr}
movs r2, 0
ldr r0, _08015F78
ldr r0, [r0]
ldrb r4, [r0, 0x1B]
cmp r2, r4
bge _08015F7C
adds r3, r0, 0
adds r3, 0xF8
ldr r0, [r3]
ldrb r0, [r0]
cmp r0, 0
beq _08015F7C
movs r2, 0x1
movs r1, 0x1
_08015F62:
cmp r1, r4
bge _08015F7C
ldr r0, [r3]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08015F7C
adds r2, r1, 0x1
adds r1, r2, 0
b _08015F62
.align 2, 0
_08015F78: .4byte gUnknown_203B1FC
_08015F7C:
adds r0, r2, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8015F44
thumb_func_start sub_8015F84
sub_8015F84:
push {r4-r7,lr}
movs r6, 0
movs r5, 0
ldr r3, _08015FBC
ldr r0, [r3]
ldrb r0, [r0, 0x1B]
cmp r5, r0
bge _08015FE4
adds r7, r3, 0
_08015F96:
ldr r1, [r7]
lsls r4, r5, 1
adds r0, r1, 0
adds r0, 0x1E
adds r0, r4
strh r6, [r0]
adds r0, r1, 0
adds r0, 0xF8
ldr r0, [r0]
adds r2, r0, r5
ldrb r0, [r2]
cmp r0, 0
bne _08015FC0
adds r0, r1, 0
adds r0, 0x8A
adds r0, r4
movs r1, 0x8
strh r1, [r0]
b _08015FE4
.align 2, 0
_08015FBC: .4byte gUnknown_203B1FC
_08015FC0:
ldrb r0, [r2]
bl ReturnIntFromChar2
bl GetCharacter
ldr r3, [r7]
adds r1, r3, 0
adds r1, 0x8A
adds r1, r4
ldrh r2, [r0, 0x6]
strh r2, [r1]
movs r1, 0x6
ldrsh r0, [r0, r1]
adds r6, r0
adds r5, 0x1
ldrb r3, [r3, 0x1B]
cmp r5, r3
blt _08015F96
_08015FE4:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8015F84
.align 2,0

View File

@ -5,91 +5,6 @@
.text
thumb_func_start sub_806A338
sub_806A338:
push {r4-r6,lr}
movs r5, 0
ldr r6, _0806A378
_0806A33E:
ldr r0, [r6]
lsls r1, r5, 2
ldr r2, _0806A37C
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806A384
ldr r0, [r4, 0x70]
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x3
bne _0806A384
ldr r1, [r6]
ldr r2, _0806A380
adds r0, r1, r2
str r4, [r0]
ldr r0, [r4, 0x70]
adds r2, 0xC
adds r1, r2
adds r0, 0x98
ldr r0, [r0]
str r0, [r1]
b _0806A38A
.align 2, 0
_0806A378: .4byte gDungeon
_0806A37C: .4byte 0x000135cc
_0806A380: .4byte 0x00017b30
_0806A384:
adds r5, 0x1
cmp r5, 0x13
ble _0806A33E
_0806A38A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_806A338
thumb_func_start sub_806A390
sub_806A390:
push {r4-r7,lr}
ldr r0, [r0, 0x70]
movs r7, 0
movs r1, 0x8C
lsls r1, 1
adds r4, r0, r1
adds r5, r4, 0
movs r6, 0x3
_0806A3A0:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806A3C2
ldrb r1, [r4, 0x1]
movs r0, 0xF7
ands r0, r1
movs r1, 0xEF
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r4, 0x1]
adds r0, r5, 0
bl GetMoveBasePP
strb r0, [r4, 0x4]
_0806A3C2:
adds r4, 0x8
adds r5, 0x8
subs r6, 0x1
cmp r6, 0
bge _0806A3A0
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_806A390
thumb_func_start sub_806A3D4
sub_806A3D4:
push {r4-r7,lr}

View File

@ -1,253 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start ZapdosPreFightDialogue
ZapdosPreFightDialogue:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x70
bl xxx_call_GetLeader
mov r9, r0
bl GetPartnerEntity
adds r6, r0, 0
movs r0, 0x8
bl GetEntityFromClientType
str r0, [sp, 0x68]
bl sub_8086448
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl SpriteLookAroundEffect
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
movs r1, 0x4
movs r2, 0x1
movs r3, 0x2
bl sub_80869E4
mov r0, r9
movs r1, 0x4
movs r2, 0x2
movs r3, 0x6
bl sub_80869E4
ldr r0, _08087470
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
movs r1, 0x4
movs r2, 0x2
movs r3, 0x4
bl sub_80869E4
mov r0, r9
movs r1, 0x4
movs r2, 0x1
movs r3, 0x4
bl sub_80869E4
ldr r0, _08087474
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r0, 0x3
bl ZapdosScreenFlash
bl DungeonStopBGM
movs r0, 0xED
lsls r0, 1
bl PlaySoundEffect
ldr r0, _08087478
bl DisplayDungeonDialogue
ldr r0, [sp, 0x68]
bl ZapdosDropInEffect
movs r0, 0x9
bl DungeonStartNewBGM
adds r0, r6, 0
movs r1, 0x6
movs r2, 0x4
bl sub_806CDD4
ldr r0, _0808747C
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
movs r1, 0x2
movs r2, 0x1
movs r3, 0x1
bl sub_80869E4
mov r1, sp
ldr r0, _08087480
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
str r0, [sp, 0x58]
str r6, [sp, 0x5C]
add r4, sp, 0x18
add r1, sp, 0x58
add r2, sp, 0x5C
adds r0, r4, 0
movs r3, 0x1
bl sub_8085B4C
ldr r0, [r6, 0x70]
ldr r2, _08087484
adds r1, r0, r2
movs r0, 0x1
strb r0, [r1]
add r7, sp, 0x28
add r3, sp, 0x48
mov r8, r3
add r0, sp, 0x60
mov r10, r0
mov r1, sp
adds r1, 0x64
str r1, [sp, 0x6C]
b _0808748E
.align 2, 0
_08087470: .4byte gUnknown_81014B0
_08087474: .4byte gUnknown_8101504
_08087478: .4byte gUnknown_81015A0
_0808747C: .4byte gUnknown_81015D4
_08087480: .4byte gUnknown_810744C
_08087484: .4byte 0x0000015f
_08087488:
movs r0, 0x46
bl sub_803E46C
_0808748E:
adds r0, r4, 0
bl sub_8085B80
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _08087488
ldr r0, [r6, 0x70]
ldr r2, _08087510
adds r0, r2
strb r5, [r0]
ldr r0, [r6, 0x70]
ldr r4, _08087514
adds r0, r4
movs r1, 0x1
strb r1, [r0]
adds r0, r6, 0
movs r1, 0x2
movs r2, 0x2
movs r3, 0x4
bl sub_80869E4
ldr r0, _08087518
bl DisplayDungeonDialogue
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
ldr r0, _0808751C
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
ldr r0, [r6, 0x70]
adds r0, r4
strb r5, [r0]
adds r0, r6, 0
movs r1, 0x2
movs r2, 0x2
movs r3, 0x5
bl sub_80869E4
adds r1, r7, 0
ldr r0, _08087520
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r3,r4}
stm r1!, {r3,r4}
str r7, [sp, 0x60]
str r6, [sp, 0x64]
mov r0, r8
mov r1, r10
ldr r2, [sp, 0x6C]
movs r3, 0x1
bl sub_8085B4C
mov r4, r9
adds r4, 0xC
b _0808752A
.align 2, 0
_08087510: .4byte 0x0000015f
_08087514: .4byte 0x0000015d
_08087518: .4byte gUnknown_81015E8
_0808751C: .4byte gUnknown_8101624
_08087520: .4byte gUnknown_8107464
_08087524:
movs r0, 0x46
bl sub_803E46C
_0808752A:
mov r0, r8
bl sub_8085B80
lsls r0, 24
cmp r0, 0
bne _08087524
adds r0, r6, 0
movs r1, 0x2
movs r2, 0x1
movs r3, 0x3
bl sub_80869E4
ldr r0, _080875B0
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r0, 0x3
bl ZapdosScreenFlash
ldr r0, _080875B4
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r0, 0x1
bl ZapdosScreenFlash
ldr r0, _080875B8
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r0, 0x2
bl ZapdosScreenFlash
ldr r0, _080875BC
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r1, 0x96
lsls r1, 1
ldr r0, [sp, 0x68]
movs r2, 0xB
bl SetupBossFightHP
adds r0, r4, 0
movs r1, 0x10
bl ShiftCameraToPosition
add sp, 0x70
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080875B0: .4byte gUnknown_810165C
_080875B4: .4byte gUnknown_8101750
_080875B8: .4byte gUnknown_810178C
_080875BC: .4byte gUnknown_81017B4
thumb_func_end ZapdosPreFightDialogue
.align 2,0

View File

@ -5,51 +5,6 @@
.text
thumb_func_start GetAdjustedGroundMap
GetAdjustedGroundMap:
push {r4,r5,lr}
lsls r0, 16
asrs r5, r0, 16
cmp r5, 0x9
beq _080A4D94
cmp r5, 0x9
bgt _080A4D90
cmp r5, 0x2
beq _080A4DB6
b _080A4DC4
_080A4D90:
cmp r5, 0xC
bne _080A4DC4
_080A4D94:
movs r0, 0
movs r1, 0x27
bl GetScriptVarValue
adds r4, r0, 0
movs r0, 0
movs r1, 0x28
bl GetScriptVarValue
lsls r1, r4, 1
adds r1, r4
lsls r1, 1
adds r1, r0
adds r1, r5, r1
lsls r1, 16
asrs r5, r1, 16
b _080A4DC4
_080A4DB6:
movs r0, 0x6
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080A4DC4
movs r5, 0x3
_080A4DC4:
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetAdjustedGroundMap
thumb_func_start GroundMap_Select
GroundMap_Select:
push {r4-r6,lr}

View File

@ -1,137 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802FBF4
sub_802FBF4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r0, 0
mov r8, r0
movs r1, 0
str r1, [sp]
_0802FC08:
ldr r1, [sp]
lsls r0, r1, 16
asrs r4, r0, 16
mov r10, r4
adds r0, r4, 0
bl sub_80A27CC
lsls r0, 24
cmp r0, 0
beq _0802FCCE
cmp r4, 0x13
beq _0802FCCE
cmp r4, 0x1D
beq _0802FCCE
ldr r7, _0802FC88
ldr r1, [r7]
mov r0, r8
lsls r6, r0, 1
adds r0, r1, r6
strh r4, [r0]
adds r1, 0x5C
add r1, r8
movs r0, 0
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x8A
add r0, r8
movs r1, 0
strb r1, [r0]
ldr r0, [r7]
adds r0, 0xB8
ldrb r0, [r0]
cmp r0, 0
beq _0802FCCA
cmp r4, 0xD
beq _0802FCCA
adds r0, r4, 0
bl sub_80A270C
lsls r0, 24
lsrs r0, 24
mov r9, r0
movs r5, 0
cmp r4, 0x1E
bgt _0802FCA8
adds r0, r4, 0
bl sub_8097384
lsls r0, 24
cmp r0, 0
bne _0802FCA6
cmp r4, 0x6
bne _0802FC8C
movs r0, 0x13
bl sub_8097384
lsls r0, 24
cmp r0, 0
beq _0802FCA8
ldr r0, [r7]
adds r0, r6
movs r1, 0x13
b _0802FCA4
.align 2, 0
_0802FC88: .4byte gUnknown_203B314
_0802FC8C:
mov r0, r10
cmp r0, 0xA
bne _0802FCA8
movs r0, 0x1D
bl sub_8097384
lsls r0, 24
cmp r0, 0
beq _0802FCA8
ldr r0, [r7]
adds r0, r6
movs r1, 0x1D
_0802FCA4:
strh r1, [r0]
_0802FCA6:
movs r5, 0x1
_0802FCA8:
ldr r4, _0802FCEC
ldr r0, [r4]
adds r0, 0x5C
add r0, r8
strb r5, [r0]
cmp r5, 0
bne _0802FCCA
mov r0, r9
bl CountJobsinDungeon
cmp r0, 0
ble _0802FCCA
ldr r0, [r4]
adds r0, 0x8A
add r0, r8
movs r1, 0x1
strb r1, [r0]
_0802FCCA:
movs r1, 0x1
add r8, r1
_0802FCCE:
ldr r0, [sp]
adds r0, 0x1
str r0, [sp]
cmp r0, 0x2D
ble _0802FC08
mov r0, r8
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0802FCEC: .4byte gUnknown_203B314
thumb_func_end sub_802FBF4
.align 2,0

View File

@ -38,6 +38,6 @@ void sub_8086854(void);
void sub_80868F4(Entity *entity);
void sub_8086910(Entity *entity);
void sub_808692C(void);
void sub_80869E4(Entity *, s32, u8, s8);
void sub_80869E4(Entity *, s32, u8, s8 direction);
#endif // GUARD_CODE_80869E4_H

142
include/dungeon_cutscenes.h Normal file
View File

@ -0,0 +1,142 @@
#ifndef GUARD_DUNGEON_CUTSCENE_H
#define GUARD_DUNGEON_CUTSCENE_H
#include "structs/dungeon_entity.h"
void ArticunoPostStoryPreFightDialogue(void);
void ArticunoPreFightDialogue(void);
void ArticunoReFightDialogue(void);
void CelebiJoinDialogue(void);
void DeoxysPreFightDialogue(void);
void DummyFightDialogue(void);
void EnteiPostStoryPreFightDialogue(void);
void EnteiPreFightDialogue(void);
void EnteiReFightDialogue(void);
void GroudonPostStoryPreFightDialogue(void);
void GroudonPreFightDialogue(void);
void GroudonReFightDialogue(void);
void HoOhPreFightDialogue(void);
void HoOhReFightDialogue(void);
void JirachiPreFightDialogue(void);
void JirachiReFightDialogue(void);
void KyogrePreFightDialogue(void);
void LatiosPreFightDialogue(void);
void LatiosReFightDialogue(void);
void LugiaPreFightDialogue(void);
void MagmaCavernMidDialogue(void);
void MedichamRescueDialogue(void);
void MewtwoPreFightDialogue(void);
void MewtwoReFightDialogue(void);
void MoltresPostStoryPreFightDialogue(void);
void MoltresPreFightDialogue(void);
void MoltresReFightDialogue(void);
void RaikouPostStoryPreFightDialogue(void);
void RaikouPreFightDialogue(void);
void RaikouReFightDialogue(void);
void RayquazaPostStoryPreFightDialogue(void);
void RayquazaPreFightDialogue(void);
void RayquazaReFightDialogue(void);
void RegicePreFightDialogue(void);
void RegirockPreFightDialogue(void);
void RegisteelPreFightDialogue(void);
void SkarmoryPreFightDialogue(void);
void SkarmoryReFightDialogue(void);
void SmeargleRescueDialogue(void);
void SuicunePostStoryPreFightDialogue(void);
void SuicunePreFightDialogue(void);
void SuicuneReFightDialogue(void);
void TeamMeaniesPreFightDialogue(void);
void TeamMeaniesReFightDialogue(void);
void ZapdosPostStoryPreFightDialogue(void);
void ZapdosPreFightDialogue(void);
void ZapdosReFightDialogue(void);
void nullsub_100(u8, u8, u8);
void sub_8086B14(void);
void sub_8086B94(void);
void sub_8086BDC(u8, s32); // TODO: should be u8
void sub_8086E40(void);
void sub_8086E9C(void);
void sub_8086F00(void);
void sub_8086F54(u8, u8);
void sub_8087130(void);
void sub_8087230(void);
void sub_808729C(void);
void sub_8087334(u8, u8);
void sub_80877E8(void);
void sub_8087848(void);
void sub_80878F4(u8, u8);
void sub_8087F54(void);
void sub_8087FB4(void);
void sub_8087FF8(void);
void sub_8088088(u8, u8);
void sub_80885A0(void);
void sub_80885C4(void);
void sub_8088608(void);
void sub_8088618(void);
void sub_808862C(void);
void sub_80886C4(void);
void sub_808875C(void);
void sub_8088818(u8, u8);
void sub_8088DC0(void);
void sub_8088E5C(void);
void sub_8089168(void);
void sub_80892C8(void);
void sub_8089328(void);
void sub_80893B4(u8, u8);
void sub_808970C(void);
void sub_808974C(void);
void sub_8089788(Entity *entity, u8, u8);
void sub_80897F0(void);
void sub_8089878(void);
void sub_80898E4(void);
void sub_8089914(void);
void sub_8089978(void);
void sub_8089A00(u8, u8);
void sub_8089C44(void);
void sub_8089C90(void);
void sub_8089CFC(u8, u8);
void sub_8089EFC(void);
void sub_8089F44(void);
void sub_8089F8C(void);
void sub_8089FF0(u8, u8);
void sub_808A264(void);
void sub_808A2C0(void);
void sub_808A308(void);
void sub_808A36C(u8, u8);
void sub_808A608(void);
void sub_808A668(void);
void sub_808A6E8(u8, u8);
void sub_808A9E4(void);
void sub_808AA3C(void);
void sub_808AA94(void);
void sub_808AAF0(u8, u8);
void sub_808AC3C(void);
void sub_808ACC0(void);
void sub_808AD48(void);
void sub_808ADCC(void);
void sub_808AE54(u8, u8, Position *pos);
void sub_808AEC8(u8, u8, Position *pos);
void sub_808AF3C(u8, u8, Position *pos);
void sub_808AFB0(u8);
void sub_808B030(u8);
void sub_808B0B0(u8);
void sub_808B2F4(void);
void sub_808B35C(void);
void sub_808B3E4(u8, u8, u8);
void sub_808BDEC(void);
void sub_808BE70(u8, u8, u8);
void sub_808C10C(void);
void sub_808C1A4(u8, u8, u8);
void sub_808C3A0(void);
void sub_808C414(u8, u8, u8);
void sub_808C5C0(void);
void sub_808C938(void);
void sub_808C948(Entity *entity, u8);
void sub_808C998(void);
void sub_808C9C4(void);
void sub_808CB5C(void);
void sub_808CBB0(void);
void sub_808CD44(void);
void sub_808CD9C(void);
#endif /* ifndef GUARD_DUNGEON_CUTSCENE_H */

View File

@ -29,5 +29,6 @@ void sub_80859F0(s32 direction);
bool8 IsMovingClient(Entity *entity);
void sub_8085B0C(Entity *pokemon);
void sub_8085B4C(struct_8085B80 a0[], s16 *a1[], Entity *a2[], s32 a3);
void sub_80857B8(void);
#endif

View File

@ -166,8 +166,6 @@ SECTIONS {
src/wonder_mail_3_mid.o(.text);
src/mission_reward.o(.text);
src/code_8072F3C.o(.text);
asm/wonder_mail_3_mid.o(.text);
src/wonder_mail_3_1.o(.text);
src/makuhita_dojo1.o(.text);
src/makuhita_dojo2.o(.text);
src/wonder_mail_4.o(.text);
@ -302,9 +300,7 @@ SECTIONS {
src/code_8085E98.o(.text);
src/code_80861A8.o(.text);
src/code_80869E4.o(.text);
src/code_8086A3C.o(.text);
asm/code_8086A3C.o(.text);
src/code_8057824_1.o(.text);
src/dungeon_cutscenes.o(.text);
src/pokemon.o(.text);
asm/pokemon.o(.text);
src/pokemon_mid.o(.text);

View File

@ -1,8 +1,84 @@
#include "global.h"
#include "code_8012A18_1.h"
#include "sprite_oam.h"
#include "text_util.h"
#include "text2.h"
struct unkStruct_203B1FC
{
// size: 0x198
u32 unk0;
u8 unk4;
SpriteOAM unk6;
SpriteOAM unkE;
u8 unk16;
u8 unk17;
u8 unk18;
u8 unk1B;
u8 unk1C;
s16 unk1E[1];
u8 fill20[0x8A - 0x20];
s16 unk8A[2];
u8 fill8E[0xF8 - 0x8E];
u8 *unkF8;
u8 unkFC[54];
};
extern struct unkStruct_203B1FC *gUnknown_203B1FC;
// https://decomp.me/scratch/6BUMI - Seth
s32 sub_8015F44(void)
{
#ifndef NONMATCHING
register s32 index asm("r2");
#else
s32 index;
#endif
s32 counter;
index = 0;
if(index < gUnknown_203B1FC->unk1B)
{
if(gUnknown_203B1FC->unkF8[0] == '\0')
return index;
index = 1;
counter = 1;
while (1) {
if(counter >= gUnknown_203B1FC->unk1B)
return index;
if(gUnknown_203B1FC->unkF8[counter] == '\0')
return index;
index = counter + 1;
counter = index;
}
}
return index;
}
void sub_8015F84(void)
{
u32 uVar2;
const struct unkChar *puVar3;
s32 index;
s32 total;
total = 0;
for(index = 0; index < gUnknown_203B1FC->unk1B; index++)
{
gUnknown_203B1FC->unk1E[index] = total;
if (gUnknown_203B1FC->unkF8[index] == 0) {
gUnknown_203B1FC->unk8A[index] = 8;
return;
}
uVar2 = ReturnIntFromChar2(gUnknown_203B1FC->unkF8[index]);
puVar3 = GetCharacter(uVar2);
gUnknown_203B1FC->unk8A[index] = puVar3->unk6;
total += puVar3->unk6;
}
}
// TODO: Above code is in code_80130A8.s
s32 sub_8015FEC(u8 *buffer, s32 size)

View File

@ -14,6 +14,7 @@
#include "dungeon_util.h"
#include "game_options.h"
#include "move_effects_target.h"
#include "moves.h"
#include "pokemon.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
@ -294,3 +295,42 @@ void sub_806A2BC(Entity *pokemon, u8 param_2)
void nullsub_95(void)
{}
void sub_806A338(void)
{
Entity *entity;
s32 index;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if (EntityExists(entity) && (GetEntInfo(entity)->waitingStruct.waitingStatus == STATUS_SNATCH))
{
gDungeon->snatchPokemon = entity;
ASM_MATCH_TRICK(entity);
gDungeon->unk17B3C = GetEntInfo(entity)->unk98;
break;
}
}
}
void sub_806A390(Entity *pokemon)
{
s32 index;
EntityInfo *info;
Move *move;
info = pokemon->info;
for(index = 0; index < MAX_MON_MOVES; index++)
{
move = &info->moves.moves[index];
if(move->moveFlags & MOVE_FLAG_EXISTS)
{
move->moveFlags2 &= 0xF7;
move->moveFlags2 &= 0xEF;
move->moveFlags2 |= MOVE_FLAG2_UNK4;
move->PP = GetMoveBasePP(move);
}
}
}

View File

@ -2,6 +2,8 @@
#include "globaldata.h"
#include "constants/input.h"
#include "code_80118A4.h"
#include "code_80958E8.h"
#include "code_80A26CC.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
@ -61,12 +63,13 @@ ALIGNED(4) const u8 gUnknown_80E0754[] = {0x83, 0xC0};
void sub_802F9C0(void);
void sub_802FA50(void);
const u8 *sub_80974A0(s16 index);
extern bool8 sub_802FCF0(u32);
extern s32 sub_802FBF4(void);
extern bool8 sub_802FCF0(void);
s32 sub_802FBF4(void);
extern u8 sub_8097384(s16);
u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3)
{
if (sub_802FCF0(r0))
if (sub_802FCF0())
return 0;
if (gUnknown_203B314 == NULL)
@ -223,3 +226,69 @@ void sub_802FA50(void)
}
sub_80073E0(gUnknown_203B314->sBC.s0.unk34);
}
static inline void sub_802FBF4_sub(u8 *test, s32 counter)
{
test[counter] = 0;
}
s32 sub_802FBF4(void)
{
bool8 bVar1;
u32 dungeonIndex;
s32 iVar6;
s32 counter;
s32 index;
counter = 0;
for(index = 0; index < 0x2E; index++)
{
iVar6 = iVar6 = (s16)index; // NOTE: LOLOL
if (((sub_80A27CC(index) != 0) && (iVar6 != 0x13)) && (iVar6 != 0x1d)) {
gUnknown_203B314->unk0[counter] = iVar6;
sub_802FBF4_sub(gUnknown_203B314->unk5C, counter);
sub_802FBF4_sub(gUnknown_203B314->unk8A, counter);
if ((gUnknown_203B314->unkB8 != 0) && (iVar6 != 0xd)) {
dungeonIndex = sub_80A270C(index);
bVar1 = FALSE;
if (0x1e >= iVar6)
{
if (sub_8097384(iVar6) == 0) {
if (iVar6 == 6) {
if (sub_8097384(0x13) != 0) {
gUnknown_203B314->unk0[counter] = 0x13;
bVar1 = TRUE;
}
}
else if ((iVar6 == 10) && (sub_8097384(0x1d) != 0)) {
gUnknown_203B314->unk0[counter] = 0x1d;
bVar1 = TRUE;
}
}
else {
bVar1 = TRUE;
}
}
gUnknown_203B314->unk5C[counter] = bVar1;
if ((!bVar1) && (0 < CountJobsinDungeon(dungeonIndex))) {
gUnknown_203B314->unk8A[counter] = 1;
}
}
counter++;
}
}
return counter;
}
bool8 sub_802FCF0(void)
{
s32 i;
for (i = 0; i < 0x2E; i++) {
if (sub_80A27CC(i))
return FALSE;
}
return TRUE;
}

View File

@ -1,150 +1,12 @@
#include "global.h"
#include "constants/weather.h"
#include "structs/str_dungeon.h"
#include "dungeon_cutscenes.h"
#include "dungeon_music.h"
#include "dungeon_util_1.h"
#include "exclusive_pokemon.h"
#include "weather.h"
extern void SkarmoryPreFightDialogue();
extern void SkarmoryReFightDialogue();
extern void sub_8086E40();
extern void TeamMeaniesPreFightDialogue();
extern void TeamMeaniesReFightDialogue();
extern void sub_8087130();
extern void ZapdosPreFightDialogue();
extern void ZapdosReFightDialogue();
extern void ZapdosPostStoryPreFightDialogue();
extern void MoltresPreFightDialogue();
extern void MoltresReFightDialogue();
extern void MoltresPostStoryPreFightDialogue();
extern void ArticunoPreFightDialogue();
extern void ArticunoReFightDialogue();
extern void ArticunoPostStoryPreFightDialogue();
extern void sub_8088608();
extern void sub_8088618();
extern void GroudonPreFightDialogue();
extern void GroudonReFightDialogue();
extern void GroudonPostStoryPreFightDialogue();
extern void MagmaCavernMidDialogue();
extern void sub_8089168();
extern void RayquazaPreFightDialogue();
extern void RayquazaReFightDialogue();
extern void RayquazaPostStoryPreFightDialogue();
extern void sub_80897F0();
extern void sub_8089878();
extern void sub_80898E4();
extern void MewtwoPreFightDialogue();
extern void MewtwoReFightDialogue();
extern void EnteiPreFightDialogue();
extern void EnteiReFightDialogue();
extern void EnteiPostStoryPreFightDialogue();
extern void RaikouPreFightDialogue();
extern void RaikouReFightDialogue();
extern void RaikouPostStoryPreFightDialogue();
extern void SuicunePreFightDialogue();
extern void SuicuneReFightDialogue();
extern void SuicunePostStoryPreFightDialogue();
extern void HoOhPreFightDialogue();
extern void HoOhReFightDialogue();
extern void LatiosPreFightDialogue();
extern void LatiosReFightDialogue();
extern void sub_808AC3C();
extern void RegirockPreFightDialogue();
extern void RegicePreFightDialogue();
extern void RegisteelPreFightDialogue();
extern void JirachiPreFightDialogue();
extern void JirachiReFightDialogue();
extern void LugiaPreFightDialogue();
extern void KyogrePreFightDialogue();
extern void DeoxysPreFightDialogue();
extern void CelebiJoinDialogue();
extern void sub_808C998();
extern void MedichamRescueDialogue();
extern void DummyFightDialogue();
extern void SmeargleRescueDialogue();
extern void sub_808CD9C();
extern void sub_8085764();
extern void sub_80857B8();
extern void sub_8086BDC(u32,u8);
extern void sub_8086F54(u32,u8);
extern void sub_8087334(u32,u8);
extern void sub_80878F4(u32,u8);
extern void sub_8088088(u32,u8);
extern void sub_8088818(u32,u8);
extern void sub_80893B4(u32,u8);
extern void sub_8089788(Entity *,u32,u8);
extern void sub_8089A00(u32,u8);
extern void sub_8089CFC(u32,u8);
extern void sub_8089FF0(u32,u8);
extern void sub_808A36C(u32,u8);
extern void sub_808A6E8(u32,u8);
extern void sub_808AAF0(u32,u8);
extern void sub_808AE54(u32,u8,s16 *);
extern void sub_808AEC8(u32,u8,s16 *);
extern void sub_808AF3C(u32,u8,s16 *);
extern void sub_808B3E4(u32,u8,u8);
extern void sub_808BE70(u32,u8,u8);
extern void sub_808C1A4(u32,u8,u8);
extern void sub_808C414(u32,u8,u8);
extern void nullsub_100(u32,u8,u8);
extern void sub_808C948(Entity *,u8);
extern void sub_808AFB0(u8);
extern void sub_808B030(u8);
extern void sub_808B0B0(u8);
extern void sub_8086B14(void);
extern void sub_8086B94(void);
extern void sub_8086E9C(void);
extern void sub_8086F00(void);
extern void sub_8087230(void);
extern void sub_808729C(void);
extern void sub_80877E8(void);
extern void sub_8087848(void);
extern void sub_8087F54(void);
extern void sub_8087FB4(void);
extern void sub_8087FF8(void);
extern void sub_80885A0(void);
extern void sub_80885C4(void);
extern void sub_808862C(void);
extern void sub_80886C4(void);
extern void sub_808875C(void);
extern void sub_8088DC0(void);
extern void sub_8088E5C(void);
extern void sub_80892C8(void);
extern void sub_8089328(void);
extern void sub_808970C(void);
extern void sub_808974C(void);
extern void sub_8089914(void);
extern void sub_8089978(void);
extern void sub_8089C44(void);
extern void sub_8089C90(void);
extern void sub_8089EFC(void);
extern void sub_8089F44(void);
extern void sub_8089F8C(void);
extern void sub_808A264(void);
extern void sub_808A2C0(void);
extern void sub_808A308(void);
extern void sub_808A608(void);
extern void sub_808A668(void);
extern void sub_808A9E4(void);
extern void sub_808AA3C(void);
extern void sub_808AA94(void);
extern void sub_808ACC0(void);
extern void sub_808AD48(void);
extern void sub_808ADCC(void);
extern void sub_808B2F4(void);
extern void sub_808B35C(void);
extern void sub_808BDEC(void);
extern void sub_808C10C(void);
extern void sub_808C3A0(void);
extern void sub_808C5C0(void);
extern void sub_808C938(void);
extern void sub_808C9C4(void);
extern void sub_808CB5C(void);
extern void sub_808CBB0(void);
extern void sub_808CD44(void);
extern void sub_8040A84(void);
struct unkData_8107234
@ -156,7 +18,6 @@ extern struct unkData_8107234 gUnknown_8107234[];
void sub_8084854(struct unkData_8107234 *);
void sub_80847D4(void)
{
u32 bossBattleIndex;
@ -647,13 +508,13 @@ void sub_8084E00(Entity *entity, u8 param_2, u8 param_3)
sub_808AAF0(param_2,gDungeon->unk3A0D);
break;
case 0x2e:
sub_808AE54(param_2,gDungeon->unk3A0D,&entity->pos.x);
sub_808AE54(param_2,gDungeon->unk3A0D,&entity->pos);
break;
case 0x2f:
sub_808AEC8(param_2,gDungeon->unk3A0D,&entity->pos.x);
sub_808AEC8(param_2,gDungeon->unk3A0D,&entity->pos);
break;
case 0x30:
sub_808AF3C(param_2,gDungeon->unk3A0D,&entity->pos.x);
sub_808AF3C(param_2,gDungeon->unk3A0D,&entity->pos);
break;
case 0x31:
case 0x32:

View File

@ -1,474 +0,0 @@
#include "global.h"
#include "code_8086A3C.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "code_80869E4.h"
#include "constants/bg_music.h"
#include "constants/direction.h"
#include "constants/monster.h"
#include "dungeon_music.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util_1.h"
#include "dungeon_util.h"
#include "exclusive_pokemon.h"
#include "pokemon_3.h"
#include "pokemon.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
extern u8 sub_8044B28(void);
extern u8 gUnknown_202E038[];
extern void sub_8085374();
extern void sub_8068FE0(Entity *, u32, u32);
extern void sub_8086448(void);
extern void SkarmoryEntry(Entity *);
extern void sub_8086A54(Entity *);
extern void sub_8087144();
extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
extern bool8 sub_8085B80(struct_8085B80 *);
extern const u8 gUnknown_810739C[];
extern const u8 gUnknown_81073D4[];
extern const u8 gUnknown_810740C[];
extern const s16 gUnknown_80F57CC;
extern const struct DungeonDialogueStruct gUnknown_8101440;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_1;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_2;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_3;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_4;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_5;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_6;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_7;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_8;
extern const struct DungeonDialogueStruct gSkarmoryPreFightDialogue_9;
extern const struct DungeonDialogueStruct gSkarmoryReFightDialogue_1;
extern const struct DungeonDialogueStruct gSkarmoryReFightDialogue_2;
extern const struct DungeonDialogueStruct gSkarmoryReFightDialogue_3;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_1;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_2;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_3;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_4;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_5;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_6;
extern const struct DungeonDialogueStruct gTeamMeaniesPreFightDialogue_7;
extern const struct DungeonDialogueStruct gTeamMeaniesReFightDialogue_1;
extern const struct DungeonDialogueStruct gTeamMeaniesReFightDialogue_2;
extern const struct DungeonDialogueStruct gTeamMeaniesReFightDialogue_3;
extern const struct DungeonDialogueStruct gTeamMeaniesReFightDialogue_4;
extern const struct DungeonDialogueStruct gTeamMeaniesReFightDialogue_5;
extern const struct DungeonDialogueStruct gUnknown_8100D3C;
void sub_8086A3C(Entity *pokemon)
{
pokemon->info->unk15C = 1;
pokemon->info->unk15E = 1;
}
void sub_8086A54(Entity *pokemon)
{
pokemon->info->unk15C = 1;
pokemon->info->unk15E = 0;
}
void SetupBossFightHP(Entity *pokemon, s32 newHP, u16 songIndex)
{
EntityInfo *entityInfo = GetEntInfo(pokemon);
entityInfo->bossFlag = TRUE;
// BUG: Source of the Reviver Seed Boss Glitch
//
// Video to demonstration:
// https://www.youtube.com/watch?v=rHu7EehrZ68
entityInfo->originalHP = entityInfo->maxHPStat;
if (newHP != 0) {
entityInfo->maxHPStat = newHP;
entityInfo->HP = newHP;
}
gDungeon->bossSongIndex = songIndex;
SetDefaultIQSkills(entityInfo->IQSkillMenuFlags, entityInfo->bossFlag);
LoadIQSkills(pokemon);
}
void sub_8086AC0(void)
{
if(!sub_8044B28())
if(gDungeon->unk2 == 0)
sub_8097FF8();
}
u8 sub_8086AE4(s16 _index)
{
s32 pokeIndex = _index;
if(gDungeon->unk65C == 0)
return 1;
else
return HasRecruitedMon(pokeIndex);
}
void sub_8086B14(void)
{
Entity * LeaderEntity;
Entity * DiglettEntity;
Entity * SkarmoryEntity;
LeaderEntity = xxx_call_GetLeader();
DiglettEntity = GetEntityFromClientType(4);
SkarmoryEntity = GetEntityFromClientType(3);
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
sub_8085374();
sub_80854D4();
sub_8085930(DIRECTION_NORTH);
sub_80855E4(sub_8086A3C);
sub_8086A3C(SkarmoryEntity);
DiglettEntity->info->unk15C = 1;
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 2);
CopyMonsterNametoBuffer(gUnknown_202E038,MONSTER_DIGLETT);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_SKARMORY);
}
void sub_8086B94(void)
{
Entity * LeaderEntity;
Entity * DiglettEntity;
Entity * SkarmoryEntity;
LeaderEntity = xxx_call_GetLeader();
DiglettEntity = GetEntityFromClientType(4);
SkarmoryEntity = GetEntityFromClientType(3);
sub_8068FE0(SkarmoryEntity,0x21c,0);
sub_8068FE0(DiglettEntity,0x21c,0);
sub_80854D4();
sub_8085930(DIRECTION_NORTH);
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y);
}
void sub_8086BDC(char param_1, s32 param_2)
{
if ((((param_2 * 0x1000000) - 0x1000000U) >> 0x18 < 2) && (param_1 == 3)) {
sub_8097FA8(1);
gDungeon->unk2 = 1;
}
}
void SkarmoryPreFightDialogue(void)
{
Entity *LeaderEntity;
Entity *PartnerEntity;
Entity * DiglettEntity;
Entity * SkarmoryEntity;
Position32 pos1;
Position32 pos2;
LeaderEntity = xxx_call_GetLeader(); // Player
PartnerEntity = GetPartnerEntity(); // Partner
DiglettEntity = GetEntityFromClientType(4); // Diglett
SkarmoryEntity = GetEntityFromClientType(3); // Skarmory
pos1.x = DiglettEntity->pixelPos.x;
pos1.y = DiglettEntity->pixelPos.y + 0x3000;
pos2.x = SkarmoryEntity->pixelPos.x;
pos2.y = SkarmoryEntity->pixelPos.y + 0x2000;
sub_8086448();
sub_803E708(10,0x46);
SpriteShockEffect(PartnerEntity);
sub_803E708(0x20,0x46);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_1);
ShiftCameraToPosition(&pos1,0x40);
sub_803E708(0x40,0x46);
ShiftCameraToPosition(&pos2,0x30);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_2);
sub_803E708(10,0x46);
DiglettEntity->info->unk15D = 1;
ShiftCameraToPosition(&pos1,0x30);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_3); // Diglett: ...I...\nI'm scared.
sub_803E708(10,0x46);
ShiftCameraToPosition(&pos2,0x20);
sub_803E708(0x20,0x46);
SkarmoryEntry(SkarmoryEntity);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_4); // Skarmory: You!\nWhat do you think you're doing here?!
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_5);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_6);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_7);
sub_803E708(10,0x46);
sub_806CDD4(SkarmoryEntity,0xd,0);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_8);
sub_803E708(10,0x46);
sub_80869E4(PartnerEntity,4,1,2);
sub_80869E4(LeaderEntity,4,2,6);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_9);
sub_80869E4(PartnerEntity,4,2,4);
sub_80869E4(LeaderEntity,4,1,4);
sub_803E708(10,0x46);
DungeonStartNewBGM(MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
void SkarmoryReFightDialogue(void)
{
Entity * LeaderEntity;
Entity * SkarmoryEntity;
Position32 pos;
LeaderEntity = xxx_call_GetLeader();
SkarmoryEntity = GetEntityFromClientType(3);
pos.x = SkarmoryEntity->pixelPos.x;
pos.y = SkarmoryEntity->pixelPos.y + 0x2000;
sub_8086448();
sub_803E708(10,0x46);
SkarmoryEntry(SkarmoryEntity);
ShiftCameraToPosition(&pos,0x10);
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_1);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_2);
sub_803E708(10,0x46);
sub_806CDD4(SkarmoryEntity,0xd,0);
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_3);
sub_803E708(10,0x46);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
DungeonStartNewBGM(MUS_BOSS_BATTLE);
}
void sub_8086E40(void)
{
SpriteLookAroundEffect(xxx_call_GetLeader());
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gUnknown_8100D3C);
sub_803E708(10,0x46);
gDungeon->unk2 = 1;
}
void SkarmoryEntry(Entity * skarmoryEntity)
{
sub_806CDD4(skarmoryEntity,0xf,0);
sub_8086A54(skarmoryEntity);
PlaySoundEffect(0x1f8);
sub_803E708(0x44,0x46);
}
void sub_8086E9C(void)
{
Entity * LeaderEntity;
LeaderEntity = xxx_call_GetLeader();
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
sub_8085374();
sub_80854D4();
sub_8085930(DIRECTION_NORTH);
sub_80855E4(sub_8086A3C);
sub_808563C(sub_8086A3C);
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 3);
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_METAPOD);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_GENGAR);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0xA0, MONSTER_CATERPIE);
}
void sub_8086F00(void)
{
Entity * LeaderEntity;
LeaderEntity = xxx_call_GetLeader();
sub_80854D4();
sub_8085930(DIRECTION_NORTH);
sub_80855E4(sub_8086A3C);
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 3);
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_METAPOD);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_GENGAR);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0xA0, MONSTER_CATERPIE);
}
// From @jiangzhengwenjz:
// Matches this way for -O2 but can match w/o this hack on -O1
// https://decomp.me/scratch/BTqWo
void sub_8086F54(u8 param_1, u8 param_2)
{
Entity *entity;
s32 index;
u32 unk1 = 0;
if (param_2 == 4 || param_2 == 5) {
void *labels[2];
labels[0] = labels[1] = &&label;
for(index = 0; index < 0x10; index++)
{
entity = gDungeon->wildPokemon[index];
if ((EntityExists(entity)) && (entity->info->clientType != param_1)) {
return;
}
}
if(!unk1)
{
sub_8097FA8(3);
label:
gDungeon->unk2 = 1;
}
}
}
void TeamMeaniesPreFightDialogue(void)
{
Entity *LeaderEntity;
LeaderEntity = xxx_call_GetLeader();
sub_8086448();
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_1);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
sub_803E708(10, 0x46);
sub_8087144();
DungeonStartNewBGM(MUS_THERES_TROUBLE);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_3);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_4);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_5);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_6);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_7);
sub_803E708(10, 0x46);
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
}
void TeamMeaniesReFightDialogue(void)
{
Entity *LeaderEntity;
Entity *PartnerEntity;
LeaderEntity = xxx_call_GetLeader();
PartnerEntity = GetPartnerEntity();
sub_8086448();
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_1);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
sub_803E708(10, 0x46);
sub_8087144();
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_2);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_3);
sub_803E708(10, 0x46);
sub_806CDD4(LeaderEntity, 6, 4);
sub_806CDD4(PartnerEntity, 6, 4);
sub_803E708(10, 0x46);
sub_806CDD4(LeaderEntity, 7, 4);
sub_806CDD4(PartnerEntity, 7, 4);
sub_803E708(10, 0x46);
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_4);
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_5);
sub_803E708(10, 0x46);
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
}
void sub_8087130(void)
{
sub_8086448();
sub_80866C4(&gUnknown_8101440);
}
void sub_8087144(void)
{
Entity *iVar2;
Entity *iVar3;
Entity *iVar4;
s16 auStack_10c[28];
s16 puStack_60[28];
s16 puStack_5c[28];
s16 *puStack_64[3];
Entity *pEStack_58[3];
struct_8085B80 auStack_4c[3];
iVar2 = GetEntityFromClientType(5);
iVar3 = GetEntityFromClientType(6);
iVar4 = GetEntityFromClientType(7);
memcpy(auStack_10c,gUnknown_810739C, 0x38);
memcpy(puStack_60, gUnknown_81073D4, 0x38);
memcpy(puStack_5c, gUnknown_810740C, 0x38);
puStack_64[0] = auStack_10c;
puStack_64[1] = puStack_60;
puStack_64[2] = puStack_5c;
pEStack_58[0] = iVar2;
pEStack_58[1] = iVar3;
pEStack_58[2] = iVar4;
DungeonStartNewBGM(MUS_THERES_TROUBLE);
sub_8086A54(iVar2);
sub_8086A54(iVar3);
sub_8086A54(iVar4);
sub_8085B4C(auStack_4c,puStack_64,pEStack_58,3);
iVar2->info->unk15F = 1;
iVar3->info->unk15F = 1;
iVar4->info->unk15F = 1;
while( TRUE ) {
if (!sub_8085B80(auStack_4c)) break;
sub_803E46C(0x46);
}
iVar2->info->unk15F = 0;
iVar3->info->unk15F = 0;
iVar4->info->unk15F = 0;
}
void sub_8087230(void)
{
Entity *LeaderEntity;
Entity *ZapdosEntity;
LeaderEntity = xxx_call_GetLeader();
ZapdosEntity = GetEntityFromClientType(0x8);
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
SetFacingDirection(ZapdosEntity, 0);
sub_8086A3C(ZapdosEntity);
sub_8085860(LeaderEntity->pos.x, LeaderEntity->pos.y - 3);
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_SHIFTRY);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_ZAPDOS);
}
void sub_808729C(void)
{
Entity *LeaderEntity;
Entity *ZapdosEntity;
LeaderEntity = xxx_call_GetLeader();
ZapdosEntity = GetEntityFromClientType(8);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if (sub_8086AE4(0x91) != 0) {
sub_8068FE0(ZapdosEntity,0x21c,0);
}
else {
sub_8072008(ZapdosEntity,ZapdosEntity,gUnknown_80F57CC,0,0);
SetFacingDirection(ZapdosEntity,0);
sub_8086A3C(ZapdosEntity);
}
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 3);
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_SHIFTRY);
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_ZAPDOS);
}
void sub_8087334(u8 param_1, u8 param_2)
{
if ((param_2 == 7 || param_2 == 8 || param_2 == 9) && (param_1 == 8)) {
sub_8097FA8(5);
gDungeon->unk2 = 1;
}
}

View File

@ -1,8 +0,0 @@
#include "global.h"
#include "dungeon.h"
#include "memory.h"
#include "pokemon.h"
#include "random.h"
#include "save.h"
#include "text_util.h"
#include "code_8094F88.h"

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
#include "global.h"
#include "debug.h"
#include "event_flag.h"
#include "ground_main.h"
#include "ground_map_1.h"
#include "ground_script.h"
@ -94,3 +95,27 @@ bool8 sub_80A4D48(s16 index)
if (gGroundConversion_811BAF4[index].unk0 != 8) return TRUE;
return FALSE;
}
s32 GetAdjustedGroundMap(s16 param_1)
{
s32 iVar5;
iVar5 = param_1;
switch(iVar5)
{
case 9:
case 0xC:
iVar5 = (s16)(iVar5 + ((GetScriptVarValue(NULL, BASE_KIND) * 6) + GetScriptVarValue(NULL, BASE_LEVEL)));
break;
case 2:
if (sub_80023E4(6)) {
iVar5 = 3;
}
break;
default:
break;
}
return iVar5;
}

View File

@ -1,14 +0,0 @@
#include "global.h"
#include "code_80A26CC.h"
bool8 sub_802FCF0(void)
{
s32 i;
for (i = 0; i < 0x2E; i++) {
if (sub_80A27CC(i))
return FALSE;
}
return TRUE;
}

View File

@ -141,7 +141,7 @@ void sub_8030E48(void)
case WONDER_MAIL_TYPE_AOK:
stack.mailDescriptionType = 10;
break;
case 5:
case WONDER_MAIL_TYPE_THANK_YOU:
stack.mailDescriptionType = 11;
break;
case WONDER_MAIL_TYPE_NONE: