Merge pull request #104 from SethBarberee/6_10_weekend

6_10 weekend decomp
This commit is contained in:
Seth Barberee
2022-06-25 11:26:43 -05:00
committed by GitHub
48 changed files with 3021 additions and 3840 deletions

View File

@@ -452,7 +452,7 @@ sub_80009D0:
mov r10, r0
bl sub_801180C
movs r0, 0x10
bl sub_80118C4
bl FadeOutAllMusic
cmp r7, 0x7
bne _08000A30
cmp r4, 0x2
@@ -1161,7 +1161,7 @@ _08000FB8:
adds r0, r4, 0
adds r0, 0x80
bl SetDungeonLocationInfo
bl sub_8011924
bl xxx_call_stop_bgm
movs r1, 0
ldrsh r0, [r7, r1]
cmp r0, r6

View File

@@ -884,8 +884,8 @@ sub_803B6B0:
_0803B6D0: .4byte gUnknown_80E8B94
thumb_func_end sub_803B6B0
thumb_func_start sub_803B6D4
sub_803B6D4:
thumb_func_start CreateRescueTitle
CreateRescueTitle:
push {r4-r7,lr}
sub sp, 0x144
adds r7, r0, 0
@@ -1204,7 +1204,7 @@ _0803B968:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_803B6D4
thumb_func_end CreateRescueTitle
thumb_func_start CreateRescueDescription
CreateRescueDescription:

View File

@@ -37,8 +37,8 @@ sub_803C1F0:
_0803C1FC: .4byte gUnknown_80E8BF8
thumb_func_end sub_803C1F0
thumb_func_start sub_803C200
sub_803C200:
thumb_func_start GetDungeonTeamRankPts
GetDungeonTeamRankPts:
push {lr}
lsls r1, 24
lsrs r1, 24
@@ -51,7 +51,7 @@ sub_803C200:
bx r1
.align 2, 0
_0803C218: .4byte gUnknown_80E80A0
thumb_func_end sub_803C200
thumb_func_end GetDungeonTeamRankPts
thumb_func_start sub_803C21C
sub_803C21C:
@@ -225,7 +225,7 @@ _0803C35A:
strh r0, [r4, 0x14]
ldrb r1, [r6, 0x1]
adds r0, r5, 0
bl sub_803C200
bl GetDungeonTeamRankPts
str r0, [r4, 0x24]
pop {r3}
mov r8, r3

View File

@@ -3200,7 +3200,7 @@ _0805F1F8:
ldr r0, _0805F20C
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
b _0805F240
.align 2, 0
_0805F208: .4byte gDungeonGlobalData

View File

@@ -1232,7 +1232,7 @@ _08083CF2:
ldr r0, _08083D04
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
_08083CFC:
pop {r0}
bx r0
@@ -1248,7 +1248,7 @@ sub_8083D08:
lsls r0, 1
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D08
@@ -1259,7 +1259,7 @@ sub_8083D1C:
ldr r0, _08083D2C
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
.align 2, 0
@@ -1272,7 +1272,7 @@ sub_8083D30:
ldr r0, _08083D40
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
.align 2, 0
@@ -1286,7 +1286,7 @@ sub_8083D44:
lsls r0, 1
movs r1, 0x80
lsls r1, 1
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D44
@@ -1297,7 +1297,7 @@ sub_8083D58:
movs r1, 0x80
lsls r1, 1
movs r0, 0xC8
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D58
@@ -1308,7 +1308,7 @@ sub_8083D68:
movs r1, 0x80
lsls r1, 1
movs r0, 0xCF
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D68
@@ -1319,7 +1319,7 @@ sub_8083D78:
movs r1, 0x80
lsls r1, 1
movs r0, 0xD3
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D78
@@ -1330,7 +1330,7 @@ sub_8083D88:
movs r1, 0x80
lsls r1, 1
movs r0, 0xCC
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083D88
@@ -1409,7 +1409,7 @@ sub_8083E28:
movs r1, 0x80
lsls r1, 1
movs r0, 0xCF
bl sub_800C074
bl PlayFanfareSE
pop {r0}
bx r0
thumb_func_end sub_8083E28
@@ -1425,7 +1425,7 @@ PlaySoundEffect:
movs r1, 0x80
lsls r1, 1
adds r0, r2, 0
bl sub_800C074
bl PlayFanfareSE
_08083E4E:
pop {r0}
bx r0
@@ -1442,7 +1442,7 @@ sub_8083E58:
cmp r1, r0
beq _08083E6A
adds r0, r1, 0
bl sub_800C298
bl StopFanfareSE
_08083E6A:
pop {r0}
bx r0
@@ -1450,17 +1450,17 @@ _08083E6A:
_08083E70: .4byte 0x000003e5
thumb_func_end sub_8083E58
thumb_func_start sub_8083E74
sub_8083E74:
thumb_func_start IsFanfareSEPlaying_2
IsFanfareSEPlaying_2:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800C5D0
bl IsFanfareSEPlaying
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8083E74
thumb_func_end IsFanfareSEPlaying_2
thumb_func_start sub_8083E88
sub_8083E88:
@@ -1511,7 +1511,7 @@ sub_8083ED8:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_80118C4
bl FadeOutAllMusic
ldr r0, _08083F00
ldr r1, [r0]
ldr r2, _08083F04
@@ -1538,7 +1538,7 @@ _08083F10: .4byte 0x0001ceda
sub_8083F14:
push {lr}
bl sub_8083F34
bl sub_8011924
bl xxx_call_stop_bgm
pop {r0}
bx r0
thumb_func_end sub_8083F14
@@ -1716,7 +1716,7 @@ _0808406C:
ldr r0, _0808407C
cmp r1, r0
bne _08084080
bl sub_800BF80
bl StopBGM
movs r0, 0
b _08084082
.align 2, 0

View File

@@ -521,7 +521,7 @@ ZapdosPreFightDialogue:
ldr r0, _08087478
bl DisplayDungeonDialogue
ldr r0, [sp, 0x68]
bl sub_8087704
bl ZapdosDropInEffect
movs r0, 0x9
bl sub_8083E88
adds r0, r6, 0

View File

@@ -2009,8 +2009,8 @@ _080969C2:
bx r1
thumb_func_end GetNumAcceptedJobs
thumb_func_start sub_80969D0
sub_80969D0:
thumb_func_start CountJobsinDungeon
CountJobsinDungeon:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
@@ -2041,7 +2041,7 @@ _080969FA:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80969D0
thumb_func_end CountJobsinDungeon
thumb_func_start sub_8096A08
sub_8096A08:

View File

@@ -94,7 +94,7 @@ _08098504:
cmp r0, 0
bne _08098522
movs r0, 0x10
bl sub_80118C4
bl FadeOutAllMusic
_08098522:
ldr r1, _080985B4
ldr r2, _080985B8
@@ -490,7 +490,7 @@ _080988E4:
movs r0, 0x1E
bl sub_8098F44
movs r0, 0x1E
bl sub_80118C4
bl FadeOutAllMusic
_080988F8:
bl GroundMap_Action
bl nullsub_124
@@ -572,7 +572,7 @@ _080989E8: .4byte gUnknown_20398A8
_080989EC: .4byte gUnknown_20398B9
_080989F0:
movs r0, 0x1E
bl sub_80118C4
bl FadeOutAllMusic
movs r0, 0xF
b _08098BD2
_080989FA:
@@ -779,7 +779,7 @@ _08098BC0:
movs r2, 0x1
bl sub_80018D8
movs r0, 0x10
bl sub_80118C4
bl FadeOutAllMusic
movs r0, 0xE
_08098BD2:
add sp, 0x8

View File

@@ -5,137 +5,6 @@
.text
thumb_func_start sub_8098FCC
sub_8098FCC:
push {r4,lr}
movs r0, 0
movs r1, 0x13
bl sub_8001658
lsls r0, 16
asrs r1, r0, 16
adds r2, r1, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0809909E
cmp r1, 0x51
bne _08098FF6
movs r0, 0
movs r1, 0x14
bl sub_8001658
lsls r0, 16
asrs r0, 16
b _08098FF8
_08098FF6:
adds r0, r2, 0
_08098FF8:
bl sub_80A2608
adds r4, r0, 0
ldr r0, _0809900C
ldr r0, [r0]
cmp r0, 0x9
bne _08099010
movs r1, 0x2
ldrsh r0, [r4, r1]
b _080990B2
.align 2, 0
_0809900C: .4byte gUnknown_20398B4
_08099010:
ldrh r0, [r4, 0x4]
subs r0, 0xB2
lsls r0, 16
asrs r0, 16
cmp r0, 0x17
bhi _080990AE
lsls r0, 2
ldr r1, _08099028
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08099028: .4byte _0809902C
.align 2, 0
_0809902C:
.4byte _0809908C
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
.4byte _080990AE
.4byte _080990AE
.4byte _080990A2
_0809908C:
movs r2, 0x1
negs r2, r2
movs r0, 0x3
movs r1, 0x2
bl sub_8001D44
lsls r0, 24
cmp r0, 0
beq _080990AE
_0809909E:
movs r0, 0xC
b _080990B2
_080990A2:
movs r0, 0x5
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _0809909E
_080990AE:
movs r1, 0x4
ldrsh r0, [r4, r1]
_080990B2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8098FCC
thumb_func_start sub_80990B8
sub_80990B8:
push {lr}
movs r0, 0xB
bl sub_8098FCC
lsls r0, 16
asrs r2, r0, 16
movs r0, 0x1
negs r0, r0
cmp r2, r0
bne _080990D2
bl sub_8098FB4
b _080990E4
_080990D2:
ldr r1, _080990E8
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bl sub_80A2B18
_080990E4:
pop {r1}
bx r1
.align 2, 0
_080990E8: .4byte gUnknown_811BAF4
thumb_func_end sub_80990B8
thumb_func_start sub_80990EC
sub_80990EC:
push {r4-r7,lr}
@@ -557,7 +426,7 @@ sub_80993F0:
mov r10, r0
bl sub_801180C
movs r0, 0x10
bl sub_80118C4
bl FadeOutAllMusic
ldr r1, _0809948C
ldr r2, _08099490
adds r0, r2, 0
@@ -792,7 +661,7 @@ _08099604:
_08099620: .4byte gUnknown_203B46C
_08099624:
movs r0, 0x10
bl sub_80118C4
bl FadeOutAllMusic
bl sub_80A4AC4
bl sub_8099768
bl nullsub_103
@@ -8230,126 +8099,4 @@ _0809CFDA:
bx r1
thumb_func_end sub_809CDC8
thumb_func_start sub_809CFE8
sub_809CFE8:
push {lr}
lsls r0, 16
lsrs r1, r0, 16
adds r2, r1, 0
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0809D014
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D004
movs r0, 0x3
b _0809D052
_0809D004:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0809D010
movs r0, 0x5
b _0809D052
_0809D010:
movs r0, 0x4
b _0809D052
_0809D014:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0809D038
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D028
movs r0, 0x1
b _0809D052
_0809D028:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0809D034
movs r0, 0x7
b _0809D052
_0809D034:
movs r0, 0
b _0809D052
_0809D038:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0809D044
movs r0, 0x2
b _0809D052
_0809D044:
movs r0, 0x20
ands r2, r0
cmp r2, 0
bne _0809D050
subs r0, 0x21
b _0809D052
_0809D050:
movs r0, 0x6
_0809D052:
pop {r1}
bx r1
thumb_func_end sub_809CFE8
thumb_func_start sub_809D058
sub_809D058:
push {lr}
ldr r1, [r0, 0x4]
cmp r1, 0x3F
bgt _0809D076
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D06A
movs r0, 0x5
b _0809D0A6
_0809D06A:
cmp r0, 0x88
ble _0809D072
movs r0, 0x3
b _0809D0A6
_0809D072:
movs r0, 0x4
b _0809D0A6
_0809D076:
cmp r1, 0x60
ble _0809D090
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D084
movs r0, 0x7
b _0809D0A6
_0809D084:
cmp r0, 0x88
ble _0809D08C
movs r0, 0x1
b _0809D0A6
_0809D08C:
movs r0, 0
b _0809D0A6
_0809D090:
ldr r0, [r0]
cmp r0, 0x67
bgt _0809D09A
movs r0, 0x6
b _0809D0A6
_0809D09A:
cmp r0, 0x88
bgt _0809D0A4
movs r0, 0x1
negs r0, r0
b _0809D0A6
_0809D0A4:
movs r0, 0x2
_0809D0A6:
pop {r1}
bx r1
thumb_func_end sub_809D058
.align 2,0

View File

@@ -1453,7 +1453,7 @@ _08033512:
strb r1, [r0]
adds r0, r2, 0x4
movs r1, 0
bl sub_803C200
bl GetDungeonTeamRankPts
ldr r1, [r4]
movs r3, 0xAC
lsls r3, 3

View File

@@ -768,7 +768,7 @@ _0809DF24:
str r0, [r1]
add r0, sp, 0x4
ldrh r0, [r0, 0x2]
bl sub_80119C0
bl IsFanfareSEPlaying_1
lsls r0, 24
cmp r0, 0
bne _0809DF42
@@ -4176,7 +4176,7 @@ _0809FCCE:
.align 2, 0
_0809FCE4: .4byte gUnknown_2039D98
_0809FCE8:
bl sub_80118A4
bl StopAllMusic_1
bl _0809EAE0
_0809FCF0:
add r0, sp, 0x8
@@ -4190,7 +4190,7 @@ _0809FCF0:
_0809FD00:
movs r0, 0x1E
_0809FD02:
bl sub_80118C4
bl FadeOutAllMusic
bl _0809EAE0
_0809FD0A:
add r0, sp, 0x8
@@ -4266,7 +4266,7 @@ _0809FD90:
.align 2, 0
_0809FD9C: .4byte 0x000003e7
_0809FDA0:
bl sub_8011924
bl xxx_call_stop_bgm
bl _0809EAE0
_0809FDA8:
add r0, sp, 0x8
@@ -4294,7 +4294,7 @@ _0809FDD4:
ldr r0, [sp, 0xC]
lsls r0, 16
lsrs r0, 16
bl sub_801199C
bl xxx_call_stop_fanfare_se
bl _0809EAE0
_0809FDE2:
ldr r0, [sp, 0xC]
@@ -7349,7 +7349,7 @@ _080A1730:
bl sub_80A2740
lsls r0, 24
lsrs r0, 24
bl sub_80969D0
bl CountJobsinDungeon
movs r1, 0
cmp r0, 0
ble _080A1750
@@ -8734,7 +8734,7 @@ _080A229E:
bl sub_8098F00
lsls r0, r5, 16
lsrs r0, 16
bl sub_80118C4
bl FadeOutAllMusic
b _080A236A
_080A22AE:
bl GetCurrentBGSong

View File

@@ -1,660 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start JirachiWish
JirachiWish:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x78
movs r0, 0x1A
bl GetEntityFromClientType
adds r6, r0, 0
ldr r0, _0808B82C
ldr r1, _0808B830
bl CopySpeciesNametoBuffer
ldr r4, _0808B834
adds r0, r4, 0
bl sub_80855E4
adds r0, r6, 0
bl _call_via_r4
movs r0, 0
bl sub_8041888
ldr r0, [r6, 0x70]
movs r1, 0xAE
lsls r1, 1
adds r0, r1
movs r1, 0
movs r4, 0x1
strb r4, [r0]
ldr r0, [r6, 0x70]
movs r2, 0xAF
lsls r2, 1
adds r0, r2
strb r1, [r0]
adds r0, r6, 0
movs r1, 0xE
movs r2, 0
bl sub_80861B8
ldr r0, _0808B838
bl sub_80855E4
ldr r0, _0808B83C
ldr r0, [r0]
ldr r1, _0808B840
adds r0, r1
strb r4, [r0]
movs r0, 0x1E
bl sub_8083ED8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _0808B844
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
ldr r0, _0808B848
bl PlaySoundEffect
movs r0, 0x96
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl sub_80862BC
ldr r0, _0808B84C
bl DisplayDungeonDialogue
movs r0, 0x79
bl sub_8083E88
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
movs r1, 0
bl sub_80856E0
movs r0, 0xB5
lsls r0, 1
bl PlaySoundEffect
ldr r0, _0808B850
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl SpriteLookAroundEffect
ldr r0, _0808B854
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
_0808B690:
ldr r4, _0808B858
_0808B692:
movs r0, 0
ldr r1, [r4]
ldr r2, _0808B85C
ldr r3, _0808B860
bl sub_8052C68
mov r9, r0
cmp r0, 0
ble _0808B692
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
mov r2, r9
cmp r2, 0x1
bne _0808B754
ldr r0, _0808B864
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl JirachiWishGrantDialogue
movs r0, 0
add r7, sp, 0x6C
_0808B6CA:
adds r0, 0x1
mov r8, r0
mov r4, sp
movs r5, 0x8
_0808B6D2:
adds r0, r4, 0
movs r1, 0x69
movs r2, 0
bl sub_8045C28
adds r4, 0x4
subs r5, 0x1
cmp r5, 0
bge _0808B6D2
movs r0, 0x3
bl DungeonRandomCapped
ldrh r1, [r6, 0x4]
adds r1, r0
subs r1, 0x1
lsls r1, 16
lsrs r1, 16
ldr r2, _0808B868
ldr r0, [sp, 0x6C]
ands r0, r2
orrs r0, r1
str r0, [sp, 0x6C]
movs r0, 0x3
bl DungeonRandomCapped
ldrh r2, [r6, 0x6]
adds r2, r0
subs r2, 0x1
lsls r2, 16
ldr r0, _0808B86C
ldr r1, [sp, 0x6C]
ands r1, r0
orrs r1, r2
str r1, [sp, 0x6C]
movs r2, 0
ldrsh r0, [r7, r2]
asrs r1, 16
bl GetMapTile_2
ldrh r1, [r0]
movs r0, 0x3
ands r0, r1
cmp r0, 0
beq _0808B744
movs r0, 0xA6
lsls r0, 1
bl PlaySoundEffect
adds r0, r7, 0
bl sub_808BB3C
adds r0, r6, 0
adds r1, r7, 0
mov r2, sp
movs r3, 0x9
bl sub_8046860
_0808B744:
mov r0, r8
cmp r0, 0x5
ble _0808B6CA
ldr r0, [r6, 0x70]
ldr r2, _0808B870
adds r1, r0, r2
movs r0, 0
strb r0, [r1]
_0808B754:
mov r0, r9
cmp r0, 0x2
bne _0808B80A
ldr r0, _0808B874
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl JirachiWishGrantDialogue
movs r0, 0
add r1, sp, 0x24
mov r8, r1
add r7, sp, 0x70
_0808B776:
adds r0, 0x1
mov r10, r0
mov r4, r8
movs r5, 0x8
_0808B77E:
movs r0, 0
bl sub_803D73C
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
movs r2, 0
bl sub_8045C28
adds r4, 0x4
subs r5, 0x1
cmp r5, 0
bge _0808B77E
movs r0, 0x3
bl DungeonRandomCapped
ldrh r1, [r6, 0x4]
adds r1, r0
subs r1, 0x1
lsls r1, 16
lsrs r1, 16
ldr r2, _0808B868
ldr r0, [sp, 0x70]
ands r0, r2
orrs r0, r1
str r0, [sp, 0x70]
movs r0, 0x3
bl DungeonRandomCapped
ldrh r2, [r6, 0x6]
adds r2, r0
subs r2, 0x1
lsls r2, 16
ldr r0, _0808B86C
ldr r1, [sp, 0x70]
ands r1, r0
orrs r1, r2
str r1, [sp, 0x70]
movs r2, 0
ldrsh r0, [r7, r2]
asrs r1, 16
bl GetMapTile_2
ldrh r1, [r0]
movs r0, 0x3
ands r0, r1
cmp r0, 0
beq _0808B7FA
movs r0, 0xC8
lsls r0, 1
bl PlaySoundEffect
adds r0, r7, 0
bl sub_808BB3C
adds r0, r6, 0
adds r1, r7, 0
mov r2, r8
movs r3, 0x9
bl sub_8046860
_0808B7FA:
mov r0, r10
cmp r0, 0x5
ble _0808B776
ldr r0, [r6, 0x70]
ldr r2, _0808B870
adds r1, r0, r2
movs r0, 0
strb r0, [r1]
_0808B80A:
mov r0, r9
cmp r0, 0x3
bne _0808B8CA
bl JirachiFriendAreaSearch
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x3A
bne _0808B87C
ldr r0, _0808B878
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
b _0808B690
.align 2, 0
_0808B82C: .4byte gUnknown_202E038
_0808B830: .4byte 0x0000019d
_0808B834: .4byte sub_808BBA8
_0808B838: .4byte sub_80861A8
_0808B83C: .4byte gDungeonGlobalData
_0808B840: .4byte 0x0001356c
_0808B844: .4byte gUnknown_8105668
_0808B848: .4byte 0x000001a7
_0808B84C: .4byte gUnknown_8105674
_0808B850: .4byte gUnknown_81056B8
_0808B854: .4byte gUnknown_81056DC
_0808B858: .4byte gUnknown_8105798
_0808B85C: .4byte gUnknown_810579C
_0808B860: .4byte 0x00000705
_0808B864: .4byte gUnknown_810581C
_0808B868: .4byte 0xffff0000
_0808B86C: .4byte 0x0000ffff
_0808B870: .4byte 0x0000015d
_0808B874: .4byte gUnknown_8105974
_0808B878: .4byte gUnknown_8105A08
_0808B87C:
ldr r0, _0808BA30
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl JirachiWishGrantDialogue
ldr r0, [r6, 0x70]
ldr r2, _0808BA34
adds r1, r0, r2
movs r0, 0
strb r0, [r1]
ldr r0, _0808BA38
bl DisplayDungeonDialogue
adds r0, r4, 0
bl UnlockFriendArea
movs r0, 0xD4
bl PlaySoundEffect
bl GetLeaderEntity
adds r1, r0, 0
ldr r0, _0808BA3C
movs r2, 0
bl SetMessageArgument
ldr r0, _0808BA40
adds r1, r4, 0
movs r2, 0
bl sub_8092578
ldr r0, _0808BA44
bl DisplayDungeonDialogue
_0808B8CA:
mov r0, r9
cmp r0, 0x4
bne _0808B98E
ldr r0, _0808BA48
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl JirachiWishGrantDialogue
movs r0, 0
add r1, sp, 0x48
mov r8, r1
add r7, sp, 0x74
_0808B8EC:
adds r0, 0x1
mov r10, r0
mov r4, r8
movs r5, 0x3
_0808B8F4:
movs r0, 0x8
bl DungeonRandomCapped
ldr r2, _0808BA4C
adds r0, r2
ldrb r1, [r0]
adds r0, r4, 0
movs r2, 0
bl sub_8045C28
adds r4, 0x4
subs r5, 0x1
cmp r5, 0
bge _0808B8F4
movs r0, 0x3
bl DungeonRandomCapped
ldrh r1, [r6, 0x4]
adds r1, r0
subs r1, 0x1
lsls r1, 16
lsrs r1, 16
ldr r2, _0808BA50
ldr r0, [sp, 0x74]
ands r0, r2
orrs r0, r1
str r0, [sp, 0x74]
movs r0, 0x3
bl DungeonRandomCapped
ldrh r2, [r6, 0x6]
adds r2, r0
subs r2, 0x1
lsls r2, 16
ldr r0, _0808BA54
ldr r1, [sp, 0x74]
ands r1, r0
orrs r1, r2
str r1, [sp, 0x74]
movs r2, 0
ldrsh r0, [r7, r2]
asrs r1, 16
bl GetMapTile_2
ldrh r1, [r0]
movs r0, 0x3
ands r0, r1
cmp r0, 0
beq _0808B970
movs r0, 0xC8
lsls r0, 1
bl PlaySoundEffect
adds r0, r7, 0
bl sub_808BB3C
adds r0, r6, 0
adds r1, r7, 0
mov r2, r8
movs r3, 0x4
bl sub_8046860
_0808B970:
mov r0, r10
cmp r0, 0x4
ble _0808B8EC
ldr r0, [r6, 0x70]
ldr r2, _0808BA34
adds r1, r0, r2
movs r0, 0
strb r0, [r1]
ldr r0, _0808BA58
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
_0808B98E:
mov r0, r9
cmp r0, 0x5
bne _0808B9F8
ldr r0, _0808BA5C
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
adds r0, r6, 0
bl JirachiWishGrantDialogue
ldr r0, [r6, 0x70]
ldr r2, _0808BA34
adds r1, r0, r2
movs r0, 0
strb r0, [r1]
ldr r0, _0808BA60
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
bl GetLeaderEntity
adds r1, r0, 0
adds r1, 0x4
adds r0, r6, 0x4
bl CalculateFacingDir
adds r1, r0, 0
adds r0, r6, 0
bl SetFacingDirection
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
ldr r0, _0808BA64
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
ldr r0, _0808BA68
ldr r0, [r0]
ldr r1, _0808BA6C
adds r0, r1
movs r1, 0x1
strb r1, [r0]
_0808B9F8:
ldr r0, _0808BA70
bl DisplayDungeonDialogue
adds r0, r6, 0
bl JirachiSpinEffect
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
ldr r0, _0808BA74
bl DisplayDungeonDialogue
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
bl sub_808BD38
add sp, 0x78
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0808BA30: .4byte gUnknown_8105AD4
_0808BA34: .4byte 0x0000015d
_0808BA38: .4byte gUnknown_8105B20
_0808BA3C: .4byte gAvailablePokemonNames
_0808BA40: .4byte gUnknown_202DE58
_0808BA44: .4byte gUnknown_8105B68
_0808BA48: .4byte gUnknown_8105BA8
_0808BA4C: .4byte gUnknown_81074FC
_0808BA50: .4byte 0xffff0000
_0808BA54: .4byte 0x0000ffff
_0808BA58: .4byte gUnknown_8105BF4
_0808BA5C: .4byte gUnknown_8105D2C
_0808BA60: .4byte gUnknown_8105D80
_0808BA64: .4byte gUnknown_8105D9C
_0808BA68: .4byte gDungeonGlobalData
_0808BA6C: .4byte 0x00000674
_0808BA70: .4byte gUnknown_81058E0
_0808BA74: .4byte gUnknown_810593C
thumb_func_end JirachiWish
thumb_func_start JirachiReFightDialogue
JirachiReFightDialogue:
push {lr}
ldr r0, _0808BA94
bl HasRecruitedMon
lsls r0, 24
cmp r0, 0
beq _0808BA9C
bl sub_8086448
ldr r0, _0808BA98
bl sub_80866C4
b _0808BAA0
.align 2, 0
_0808BA94: .4byte 0x0000019d
_0808BA98: .4byte gJirachiReFightDialogue_1
_0808BA9C:
bl JirachiPreFightDialogue
_0808BAA0:
pop {r0}
bx r0
thumb_func_end JirachiReFightDialogue
thumb_func_start JirachiWishGrantFlash
JirachiWishGrantFlash:
push {r4,r5,lr}
sub sp, 0x4
ldr r0, _0808BB34
bl PlaySoundEffect
ldr r1, _0808BB38
movs r0, 0x1F
str r0, [r1]
movs r4, 0xFA
movs r5, 0x1
_0808BAB8:
str r5, [sp]
adds r0, r4, 0
adds r1, r4, 0
adds r2, r4, 0
movs r3, 0x1
bl SetDungeonBGColorRGB
movs r0, 0x46
bl sub_803E46C
subs r4, 0xA
cmp r4, 0x95
bgt _0808BAB8
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r4, 0xFA
movs r5, 0x1
_0808BADE:
str r5, [sp]
adds r0, r4, 0
adds r1, r4, 0
adds r2, r4, 0
movs r3, 0x1
bl SetDungeonBGColorRGB
movs r0, 0x46
bl sub_803E46C
subs r4, 0xA
cmp r4, 0xC7
bgt _0808BADE
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
movs r4, 0xFA
movs r5, 0x1
_0808BB04:
str r5, [sp]
adds r0, r4, 0
adds r1, r4, 0
adds r2, r4, 0
movs r3, 0x1
bl SetDungeonBGColorRGB
movs r0, 0x46
bl sub_803E46C
subs r4, 0xA
cmp r4, 0
bge _0808BB04
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
bl sub_8085EB0
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0808BB34: .4byte 0x000002c1
_0808BB38: .4byte gUnknown_202EDC8
thumb_func_end JirachiWishGrantFlash
thumb_func_start sub_808BB3C
sub_808BB3C:
push {lr}
sub sp, 0x8
adds r3, r0, 0
movs r0, 0
ldrsh r1, [r3, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 11
movs r1, 0xC0
lsls r1, 4
adds r0, r1
cmp r0, 0
bge _0808BB58
adds r0, 0xFF
_0808BB58:
lsls r0, 8
lsrs r0, 16
ldr r1, _0808BBA0
ldr r2, [sp, 0x4]
ands r2, r1
orrs r2, r0
str r2, [sp, 0x4]
movs r0, 0x2
ldrsh r1, [r3, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 11
movs r1, 0x80
lsls r1, 5
adds r0, r1
cmp r0, 0
bge _0808BB7C
adds r0, 0xFF
_0808BB7C:
lsls r0, 8
lsrs r0, 16
lsls r0, 16
ldr r1, _0808BBA4
ands r2, r1
orrs r2, r0
str r2, [sp, 0x4]
movs r0, 0
str r0, [sp]
movs r0, 0x64
movs r1, 0
movs r2, 0
add r3, sp, 0x4
bl sub_8085EC8
add sp, 0x8
pop {r0}
bx r0
.align 2, 0
_0808BBA0: .4byte 0xffff0000
_0808BBA4: .4byte 0x0000ffff
thumb_func_end sub_808BB3C
.align 2,0

View File

@@ -54,7 +54,7 @@ _0800C6A0:
strh r0, [r2]
b _0800C8A2
.align 2, 0
_0800C6B4: .4byte gUnknown_202D68E
_0800C6B4: .4byte gCurrentFanfareSong
_0800C6B8: .4byte 0x000003e5
_0800C6BC:
ldrh r0, [r3]
@@ -66,7 +66,7 @@ _0800C6C0:
cmp r1, r0
beq _0800C6D8
movs r0, 0
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
beq _0800C6D8
@@ -86,7 +86,7 @@ _0800C6E4:
.align 2, 0
_0800C6F0: .4byte gCurrentBGSong
_0800C6F4: .4byte 0x000003e7
_0800C6F8: .4byte gUnknown_202D68E
_0800C6F8: .4byte gCurrentFanfareSong
_0800C6FC: .4byte 0x000003e5
_0800C700:
ldr r0, _0800C724
@@ -95,7 +95,7 @@ _0800C700:
cmp r1, r0
beq _0800C718
movs r0, 0x1
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
bne _0800C718
@@ -108,7 +108,7 @@ _0800C718:
strh r0, [r1]
b _0800C8A2
.align 2, 0
_0800C724: .4byte gUnknown_202D68E
_0800C724: .4byte gCurrentFanfareSong
_0800C728: .4byte 0x000003e5
_0800C72C: .4byte gUnknown_202D692
_0800C730:
@@ -118,7 +118,7 @@ _0800C730:
cmp r1, r0
beq _0800C754
movs r0, 0x1
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
beq _0800C748
@@ -126,7 +126,7 @@ _0800C730:
_0800C748:
b _0800C75A
.align 2, 0
_0800C74C: .4byte gUnknown_202D68E
_0800C74C: .4byte gCurrentFanfareSong
_0800C750: .4byte 0x000003e5
_0800C754:
ldr r0, _0800C76C
@@ -141,7 +141,7 @@ _0800C75A:
strh r0, [r1]
b _0800C8A2
.align 2, 0
_0800C76C: .4byte gUnknown_2000970
_0800C76C: .4byte gMPlayInfo_Fanfare
_0800C770: .4byte gUnknown_202D692
_0800C774:
ldr r3, _0800C794
@@ -163,7 +163,7 @@ _0800C774:
_0800C794: .4byte gCurrentBGSong
_0800C798: .4byte 0x000003e7
_0800C79C: .4byte gBGMusicPlayerState
_0800C7A0: .4byte gUnknown_202D694
_0800C7A0: .4byte gRestartBGM
_0800C7A4:
ldr r0, _0800C7B0
movs r1, 0x4
@@ -187,7 +187,7 @@ _0800C7BE:
_0800C7CC: .4byte gBGMusicPlayerState
_0800C7D0: .4byte gMPlayInfo_BGM
_0800C7D4: .4byte gUnknown_202D690
_0800C7D8: .4byte gUnknown_202D68E
_0800C7D8: .4byte gCurrentFanfareSong
_0800C7DC: .4byte 0x000003e5
_0800C7E0:
ldr r5, _0800C810
@@ -206,7 +206,7 @@ _0800C7E0:
cmp r1, r0
beq _0800C80A
movs r0, 0
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
beq _0800C8A2
@@ -225,7 +225,7 @@ _0800C81C:
cmp r1, r0
beq _0800C83C
movs r0, 0
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
bne _0800C8A2
@@ -253,7 +253,7 @@ _0800C85C: .4byte gCurrentBGSong
_0800C860: .4byte 0x000003e7
_0800C864:
movs r0, 0
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -309,7 +309,7 @@ _0800C8D0:
beq _0800C8E4
lsls r0, r5, 16
lsrs r0, 16
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
cmp r0, 0
beq _0800C926
@@ -322,7 +322,7 @@ _0800C8EC: .4byte 0x000003e7
_0800C8F0:
lsls r0, r5, 16
lsrs r0, 16
bl sub_800CAF0
bl IsMusicPlayerPlaying
lsls r0, 24
lsrs r0, 24
cmp r0, 0

View File

@@ -1,673 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802BF30
sub_802BF30:
push {r4,lr}
ldr r4, _0802BF9C
ldr r0, [r4]
adds r0, 0xA0
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xA1
strb r2, [r0]
ldr r0, [r4]
adds r0, 0xA2
movs r1, 0xC
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xA3
strb r2, [r0]
ldr r0, [r4]
movs r1, 0x1E
ldrsh r0, [r0, r1]
movs r1, 0x18
bl sub_8009614
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x38]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4E
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x38]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x50
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x40
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BF9C: .4byte gUnknown_203B2D8
thumb_func_end sub_802BF30
thumb_func_start CreateMailMenu
CreateMailMenu:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xDC
ldr r4, _0802C060
ldr r0, [r4]
ldr r0, [r0, 0x38]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x38]
bl sub_80073B8
ldr r1, [r4]
movs r2, 0x22
ldrsh r0, [r1, r2]
lsls r0, 3
adds r0, 0xA
ldr r2, _0802C064
ldr r3, [r1, 0x38]
movs r1, 0
str r1, [sp]
bl xxx_call_draw_string
movs r6, 0
ldr r0, [r4]
movs r3, 0x1E
ldrsh r0, [r0, r3]
cmp r6, r0
bge _0802C09A
adds r7, r4, 0
ldr r0, _0802C068
mov r9, r0
add r1, sp, 0x5C
mov r8, r1
_0802BFE8:
ldr r1, [r7]
movs r3, 0x22
ldrsh r2, [r1, r3]
movs r3, 0x20
ldrsh r0, [r1, r3]
muls r0, r2
adds r0, r6
adds r1, r0
ldrb r0, [r1]
bl sub_8095FE8
adds r5, r0, 0
ldr r0, [r7]
ldr r1, [r0, 0x38]
str r1, [sp, 0x4]
adds r0, 0x4
adds r1, r6, 0
bl sub_8013800
str r0, [sp, 0x4C]
ldrb r0, [r5]
cmp r0, 0x1
bne _0802C06C
ldr r0, [r7]
adds r0, 0x4
adds r1, r6, 0
bl sub_8013800
adds r4, r0, 0
ldr r0, [r7]
ldr r3, [r0, 0x38]
movs r0, 0xA
adds r1, r4, 0
movs r2, 0x6
bl sub_803B6B0
bl GetPlayerPokemonStruct
adds r1, r0, 0
mov r0, r9
bl PrintPokeNameToBuffer
ldrb r0, [r5, 0x5]
bl GetPokemonMailHeadline
adds r1, r0, 0
mov r0, r8
mov r2, r9
bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x38]
movs r0, 0
str r0, [sp]
movs r0, 0x15
adds r1, r4, 0
mov r2, r8
bl xxx_call_draw_string
b _0802C08E
.align 2, 0
_0802C060: .4byte gUnknown_203B2D8
_0802C064: .4byte gMailboxText
_0802C068: .4byte gAvailablePokemonNames
_0802C06C:
adds r0, r5, 0
add r1, sp, 0x4
bl sub_803B35C
adds r0, r5, 0
bl sub_80968B0
lsls r0, 24
cmp r0, 0
beq _0802C088
mov r1, sp
adds r1, 0x47
movs r0, 0x2
strb r0, [r1]
_0802C088:
add r0, sp, 0x4
bl sub_803B6D4
_0802C08E:
adds r6, 0x1
ldr r0, [r7]
movs r1, 0x1E
ldrsh r0, [r0, r1]
cmp r6, r0
blt _0802BFE8
_0802C09A:
ldr r0, _0802C0B4
ldr r0, [r0]
ldr r0, [r0, 0x38]
bl sub_80073E0
add sp, 0xDC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C0B4: .4byte gUnknown_203B2D8
thumb_func_end CreateMailMenu
thumb_func_start CountEmptyMailSlots
CountEmptyMailSlots:
push {r4,r5,lr}
movs r5, 0
movs r4, 0
_0802C0BE:
lsls r0, r4, 24
lsrs r0, 24
bl IsMailSlotEmpty
lsls r0, 24
cmp r0, 0
bne _0802C0D6
ldr r0, _0802C0E4
ldr r0, [r0]
adds r0, r5
strb r4, [r0]
adds r5, 0x1
_0802C0D6:
adds r4, 0x1
cmp r4, 0x3
ble _0802C0BE
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0802C0E4: .4byte gUnknown_203B2D8
thumb_func_end CountEmptyMailSlots
thumb_func_start HasNoMailinMailbox
HasNoMailinMailbox:
push {r4,lr}
movs r4, 0
_0802C0EC:
lsls r0, r4, 24
lsrs r0, 24
bl IsMailSlotEmpty
lsls r0, 24
cmp r0, 0
bne _0802C0FE
movs r0, 0
b _0802C106
_0802C0FE:
adds r4, 0x1
cmp r4, 0x3
ble _0802C0EC
movs r0, 0x1
_0802C106:
pop {r4}
pop {r1}
bx r1
thumb_func_end HasNoMailinMailbox
thumb_func_start sub_802C10C
sub_802C10C:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
adds r4, r1, 0
mov r8, r2
bl sub_802C4A4
lsls r0, 24
cmp r0, 0
beq _0802C126
movs r0, 0
b _0802C1CC
_0802C126:
ldr r5, _0802C1D8
ldr r0, [r5]
cmp r0, 0
bne _0802C138
movs r0, 0xA8
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
_0802C138:
ldr r0, [r5]
str r6, [r0, 0x3C]
lsls r1, r6, 1
adds r1, r6
lsls r1, 3
adds r1, 0x44
adds r1, r0, r1
str r1, [r0, 0x40]
adds r0, 0x44
bl sub_8006518
ldr r1, [r5]
ldr r2, [r1, 0x3C]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x44
ldr r0, _0802C1DC
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r2, [r5]
ldr r1, [r2, 0x40]
adds r0, r2, 0
adds r0, 0xA4
str r0, [r1, 0x14]
cmp r4, 0
beq _0802C186
ldr r1, [r2, 0x3C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r1, r2, 0
adds r1, 0x4C
adds r1, r0
ldr r0, [r4]
str r0, [r1]
_0802C186:
ldr r0, [r5]
ldr r0, [r0, 0x40]
mov r1, r8
bl sub_8012D34
bl ResetUnusedInputStruct
ldr r0, [r5]
adds r0, 0x44
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r5]
adds r4, 0x8
bl sub_802C474
adds r1, r0, 0
adds r0, r4, 0
mov r2, r8
adds r3, r6, 0
bl sub_8013848
ldr r0, [r5]
ldr r1, _0802C1E0
ldrh r1, [r1]
strh r1, [r0, 0x20]
adds r0, 0x8
bl sub_8013984
bl sub_802C328
bl sub_802C39C
movs r0, 0x1
_0802C1CC:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0802C1D8: .4byte gUnknown_203B2E0
_0802C1DC: .4byte gUnknown_80DFCB4
_0802C1E0: .4byte gUnknown_203B2E4
thumb_func_end sub_802C10C
thumb_func_start sub_802C1E4
sub_802C1E4:
push {lr}
lsls r0, 24
cmp r0, 0
bne _0802C200
ldr r0, _0802C1FC
ldr r0, [r0]
adds r0, 0x8
bl sub_8013660
movs r0, 0
b _0802C266
.align 2, 0
_0802C1FC: .4byte gUnknown_203B2E0
_0802C200:
ldr r0, _0802C218
ldr r0, [r0]
adds r0, 0x8
bl GetKeyPress
cmp r0, 0x2
beq _0802C222
cmp r0, 0x2
bgt _0802C21C
cmp r0, 0x1
beq _0802C22C
b _0802C240
.align 2, 0
_0802C218: .4byte gUnknown_203B2E0
_0802C21C:
cmp r0, 0x4
beq _0802C236
b _0802C240
_0802C222:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0802C266
_0802C22C:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0802C266
_0802C236:
movs r0, 0x4
bl PlayMenuSoundEffect
movs r0, 0x4
b _0802C266
_0802C240:
ldr r0, _0802C258
ldr r0, [r0]
adds r0, 0x8
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0802C25C
movs r0, 0
b _0802C266
.align 2, 0
_0802C258: .4byte gUnknown_203B2E0
_0802C25C:
bl sub_802C328
bl sub_802C39C
movs r0, 0x1
_0802C266:
pop {r1}
bx r1
thumb_func_end sub_802C1E4
thumb_func_start sub_802C26C
sub_802C26C:
ldr r0, _0802C288
ldr r1, [r0]
movs r0, 0x26
ldrsh r2, [r1, r0]
movs r3, 0x24
ldrsh r0, [r1, r3]
muls r0, r2
movs r3, 0x20
ldrsh r2, [r1, r3]
adds r0, r2
adds r1, r0
ldrb r0, [r1]
bx lr
.align 2, 0
_0802C288: .4byte gUnknown_203B2E0
thumb_func_end sub_802C26C
thumb_func_start sub_802C28C
sub_802C28C:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ResetUnusedInputStruct
ldr r5, _0802C2D0
ldr r0, [r5]
adds r0, 0x44
movs r1, 0
movs r2, 0
bl sub_800641C
bl sub_802C474
adds r1, r0, 0
ldr r0, [r5]
strh r1, [r0, 0x2A]
adds r0, 0x8
bl sub_8013984
bl sub_802C328
bl sub_802C39C
cmp r4, 0
beq _0802C2CA
ldr r0, [r5]
adds r0, 0x8
bl AddMenuCursorSprite
_0802C2CA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802C2D0: .4byte gUnknown_203B2E0
thumb_func_end sub_802C28C
thumb_func_start sub_802C2D4
sub_802C2D4:
push {r4,r5,lr}
ldr r4, _0802C31C
ldr r2, [r4]
cmp r2, 0
beq _0802C314
ldr r1, _0802C320
ldrh r0, [r2, 0x20]
strh r0, [r1]
ldr r0, [r2, 0x3C]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x44
ldr r0, _0802C324
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x44
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0802C314:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802C31C: .4byte gUnknown_203B2E0
_0802C320: .4byte gUnknown_203B2E4
_0802C324: .4byte gUnknown_80DFC9C
thumb_func_end sub_802C2D4
thumb_func_start sub_802C328
sub_802C328:
push {r4,lr}
ldr r4, _0802C398
ldr r0, [r4]
ldrh r1, [r0, 0x28]
adds r0, 0xA4
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
ldrh r1, [r0, 0x26]
adds r0, 0xA5
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xA6
movs r1, 0xC
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xA7
strb r2, [r0]
ldr r0, [r4]
movs r1, 0x22
ldrsh r0, [r0, r1]
movs r1, 0x18
bl sub_8009614
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x3C]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x52
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x3C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x54
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x44
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C398: .4byte gUnknown_203B2E0
thumb_func_end sub_802C328
thumb_func_start sub_802C39C
sub_802C39C:
push {r4-r7,lr}
sub sp, 0x60
ldr r7, _0802C3F8
ldr r0, [r7]
ldr r0, [r0, 0x3C]
bl sub_8008C54
ldr r0, [r7]
ldr r0, [r0, 0x3C]
bl sub_80073B8
ldr r0, [r7]
movs r1, 0x26
ldrsh r4, [r0, r1]
lsls r4, 3
adds r5, r4, 0
adds r5, 0xA
ldr r2, _0802C3FC
ldr r3, [r0, 0x3C]
movs r0, 0
str r0, [sp]
adds r0, r5, 0
movs r1, 0
bl xxx_call_draw_string
adds r4, 0x4
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0xA6
ldrb r0, [r0]
lsls r0, 3
adds r5, r4, r0
movs r3, 0x26
ldrsh r2, [r1, r3]
adds r2, 0x1
movs r0, 0x7
str r0, [sp]
ldr r0, [r1, 0x3C]
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0
movs r3, 0x2
bl sub_8012BC4
movs r6, 0
b _0802C452
.align 2, 0
_0802C3F8: .4byte gUnknown_203B2E0
_0802C3FC: .4byte gBulletinBoardText
_0802C400:
ldr r1, [r7]
movs r3, 0x26
ldrsh r2, [r1, r3]
movs r3, 0x24
ldrsh r0, [r1, r3]
muls r0, r2
adds r0, r6
adds r1, r0
ldrb r5, [r1]
adds r0, r5, 0
bl sub_8096574
adds r4, r0, 0
ldr r0, [r7]
ldr r1, [r0, 0x3C]
str r1, [sp, 0x8]
adds r0, 0x8
adds r1, r6, 0
bl sub_8013800
str r0, [sp, 0x50]
adds r0, r4, 0
add r1, sp, 0x8
bl sub_803B35C
adds r0, r5, 0
bl sub_8096574
bl sub_80968B0
lsls r0, 24
cmp r0, 0
beq _0802C44A
mov r1, sp
adds r1, 0x4B
movs r0, 0x2
strb r0, [r1]
_0802C44A:
add r0, sp, 0x8
bl sub_803B6D4
adds r6, 0x1
_0802C452:
ldr r0, [r7]
movs r1, 0x22
ldrsh r0, [r0, r1]
cmp r6, r0
blt _0802C400
ldr r0, _0802C470
ldr r0, [r0]
ldr r0, [r0, 0x3C]
bl sub_80073E0
add sp, 0x60
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C470: .4byte gUnknown_203B2E0
thumb_func_end sub_802C39C
.align 2,0

View File

@@ -379,7 +379,7 @@ _0802FCA8:
cmp r5, 0
bne _0802FCCA
mov r0, r9
bl sub_80969D0
bl CountJobsinDungeon
cmp r0, 0
ble _0802FCCA
ldr r0, [r4]

View File

@@ -5,239 +5,6 @@
.text
thumb_func_start sub_80308A0
sub_80308A0:
push {r4,lr}
ldr r4, _08030928
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0x44
ldrh r1, [r1]
adds r0, 0xC0
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0x42
ldrh r1, [r1]
adds r0, 0xC1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xC2
movs r1, 0xC
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xC3
strb r2, [r0]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x3E
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x58]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x6E
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x58]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x70
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08030928: .4byte gUnknown_203B320
thumb_func_end sub_80308A0
thumb_func_start sub_803092C
sub_803092C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x60
ldr r7, _08030A24
ldr r0, [r7]
ldr r0, [r0, 0x58]
bl sub_8008C54
ldr r0, [r7]
ldr r0, [r0, 0x58]
bl sub_80073B8
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0x42
movs r2, 0
ldrsh r4, [r0, r2]
lsls r4, 3
adds r5, r4, 0
adds r5, 0xA
ldr r2, _08030A28
ldr r0, [r1, 0x20]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
ldr r3, [r1, 0x58]
movs r0, 0
str r0, [sp]
adds r0, r5, 0
movs r1, 0
bl xxx_call_draw_string
adds r4, 0x4
ldr r3, [r7]
adds r0, r3, 0
adds r0, 0xC2
ldrb r0, [r0]
lsls r0, 3
adds r5, r4, r0
adds r0, r3, 0
adds r0, 0x42
movs r1, 0
ldrsh r2, [r0, r1]
adds r2, 0x1
movs r0, 0x7
str r0, [sp]
ldr r0, [r3, 0x58]
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0
movs r3, 0x1
bl sub_8012BC4
movs r6, 0
ldr r0, [r7]
movs r2, 0x3E
ldrsh r0, [r0, r2]
cmp r6, r0
bge _08030A56
mov r9, r7
mov r8, r6
add r7, sp, 0x8
mov r5, sp
adds r5, 0x4B
_080309B0:
mov r3, r9
ldr r1, [r3]
adds r0, r1, 0
adds r0, 0x42
movs r3, 0
ldrsh r2, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r2
adds r0, r6
adds r1, r0
ldrb r0, [r1]
bl sub_8095228
adds r4, r0, 0
mov r1, r9
ldr r0, [r1]
ldr r1, [r0, 0x58]
str r1, [sp, 0x8]
adds r0, 0x24
adds r1, r6, 0
bl sub_8013800
str r0, [sp, 0x50]
add r1, sp, 0x48
movs r0, 0x7
strb r0, [r1]
mov r0, sp
adds r0, 0x4A
mov r2, r8
strb r2, [r0]
add r0, sp, 0x4C
strb r2, [r0]
adds r0, r4, 0x4
str r0, [sp, 0x10]
adds r0, 0x10
str r0, [sp, 0x14]
ldrh r0, [r4, 0xC]
strh r0, [r7, 0x10]
ldrh r0, [r4, 0xC]
strh r0, [r7, 0x12]
strb r2, [r7, 0x14]
subs r1, 0x12
movs r0, 0x5
strb r0, [r1]
ldrb r0, [r4]
cmp r0, 0x4
beq _08030A32
cmp r0, 0x4
bgt _08030A2C
cmp r0, 0x2
bgt _08030A3E
cmp r0, 0x1
blt _08030A3E
movs r0, 0x1
strb r0, [r5]
b _08030A42
.align 2, 0
_08030A24: .4byte gUnknown_203B320
_08030A28: .4byte gUnknown_80E086C
_08030A2C:
cmp r0, 0x5
beq _08030A38
b _08030A3E
_08030A32:
movs r0, 0x3
strb r0, [r5]
b _08030A42
_08030A38:
movs r0, 0x4
strb r0, [r5]
b _08030A42
_08030A3E:
mov r3, r8
strb r3, [r5]
_08030A42:
add r0, sp, 0x8
bl sub_803B6D4
adds r6, 0x1
mov r1, r9
ldr r0, [r1]
movs r2, 0x3E
ldrsh r0, [r0, r2]
cmp r6, r0
blt _080309B0
_08030A56:
ldr r0, _08030A70
ldr r0, [r0]
ldr r0, [r0, 0x58]
bl sub_80073E0
add sp, 0x60
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08030A70: .4byte gUnknown_203B320
thumb_func_end sub_803092C
thumb_func_start sub_8030A74
sub_8030A74:
push {r4,r5,lr}

View File

@@ -736,7 +736,7 @@ _0802D034:
ldr r0, [r4, 0x14]
str r0, [sp, 0x54]
add r0, sp, 0x8
bl sub_803B6D4
bl CreateRescueTitle
adds r5, 0x1
_0802D076:
ldr r0, [r6]

17
include/code_80A26CC.h Normal file
View File

@@ -0,0 +1,17 @@
struct unkStruct_80A2608
{
/* 0x0 */ s16 unk0;
/* 0x2 */ s16 unk2;
/* 0x4 */ s16 unk4;
/* 0x6 */ u16 unk6;
/* 0x8 */ u16 unk8;
/* 0xA */ u16 unkA;
/* 0xC */ u8 unkC;
/* 0xD */ u8 unkD;
/* 0xE */ s16 unkE;
/* 0x10 */ u8 unk10;
/* 0x11 */ u8 unk11;
};
struct unkStruct_80A2608 *sub_80A2608(s16 r0);
struct unkStruct_80A2608 *sub_80A2620(s16 r0);

View File

@@ -2,5 +2,6 @@
#define GUARD_CONSTANTS_MAILBOX_H
#define MAX_ACCEPTED_JOBS 8
#define NUM_MAILBOX_SLOTS 4
#endif // GUARD_CONSTANTS_MAILBOX_H

View File

@@ -58,7 +58,8 @@ struct DungeonGlobalData
u8 fill66C[0x671 - 0x66C];
/* 0x671 */ bool8 monsterHouseActive;
/* 0x672 */ u8 unk672;
u8 fill673[0x675 - 0x673];
u8 fill673[0x674 - 0x673];
u8 unk674;
u8 unk675;
u8 unk676[0x68A - 0x676];
/* 0x68A */ u8 unk68A;

View File

@@ -22,6 +22,12 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16
void m4aSoundVSync(void);
extern struct MusicPlayerInfo gMPlayInfo_BGM; // BGM??
extern struct MusicPlayerInfo gUnknown_2000970;
extern struct MusicPlayerInfo gMPlayInfo_Fanfare;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_SE3;
extern struct MusicPlayerInfo gMPlayInfo_SE4;
extern struct MusicPlayerInfo gMPlayInfo_SE5;
extern struct MusicPlayerInfo gMPlayInfo_SE6;
#endif //GUARD_M4A_H

View File

@@ -3,23 +3,44 @@
void StopBGMusicVSync(void);
void StartBGMusicVSync(void);
u8 sub_800CA38(u32 songIndex);
bool8 IsValidSong(u32 songIndex);
void StartNewBGM(u16 songIndex);
bool8 IsBGSong(u32 songIndex);
bool8 sub_800CAAC(u32 songIndex);
bool8 sub_800CACC(u32 songIndex);
bool8 IsSoundEffect(u32 songIndex);
bool8 IsFanfare(u32 songIndex);
u16 GetMusicPlayerIndex(u16 songIndex);
bool8 sub_800CAF0(u16 songIndex);
bool8 IsMusicPlayerPlaying(u16 songIndex);
void StartNewBGM(u16 songIndex);
void FadeInNewBGM(u16 SongIndex, u16 speed);
u16 GetCurrentBGSong(void);
void sub_800BF48(u16 SongIndex);
void sub_800BF80(void);
void StopBGM(void); // stops all BGM, fanfares and SE's
void FadeOutBGM(u16 speed);
void sub_800C074(u16 SongIndex, u16 param_2);
void sub_800C298(u16 songIndex);
void PlayFanfareSE(u16 SongIndex, u16 param_2);
void StopFanfareSE(u16 songIndex);
void FadeOutFanfareSE(u16 songIndex, u16 speed);
bool8 IsFanfareSEPlaying(u16 songIndex);
void nullsub_19(void);
void nullsub_20(u16 songIndex);
enum MusicPlayerIndex
{
INDEX_BGM,
INDEX_FANFARE,
INDEX_SE1,
INDEX_SE2,
INDEX_SE3,
INDEX_SE4,
INDEX_SE5,
INDEX_SE6,
};
enum BG_Player_State
{
BG_PLAYER_STATE_INITIALIZE = 0,
BG_PLAYER_STATE_PLAYING = 1,
BG_PLAYER_STATE_STOPPED = 4,
};
#endif //GUARD_MUSIC_H

View File

@@ -24,6 +24,26 @@ struct RescuePasswordMenu
u32 unk210;
};
#define PASSWORD_ENTRY_DUPLICATE_SOS_MAIL 0x7
#define PASSWORD_ENTRY_DUPLICATE_AOK_MAIL 0x9
#define PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL 0xB
#define PASSWORD_ENTRY_INCORRECT_PASSWORD 0x11
#define PASSWORD_ENTRY_NOT_SOS_MAIL 0x12
#define PASSWORD_ENTRY_NOT_AOK_MAIL 0x13
#define PASSWORD_ENTRY_NOT_THANK_YOU_MAIL 0x14
#define PASSWORD_ENTRY_SOS_MAIL_SUCCESS 0x16
#define PASSWORD_ENTRY_AOK_MAIL_SUCCESS 0x17
#define PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS 0x18
#define PASSWORD_ENTRY_SOS_MAIL_MODE 0x1C
#define PASSWORD_ENTRY_AOK_MAIL_MODE 0x1E
#define PASSWORD_ENTRY_THANK_YOU_MAIL_MODE 0x20
void CreateRescuePasswordMenu(u32 currMenu);
s32 UpdateRescuePasswordMenu(void);
void CleanRescuePasswordMenu(void);

View File

@@ -7,8 +7,7 @@ struct unkStruct_8095228
/* 0x1 */ u8 missionType; // mission type
/* 0x2 */ u8 unk2;
/* 0x3 */ u8 unk3;
/* 0x4 */ u8 dungeon; // dungeon
/* 0x5 */ u8 floor; // floor
/* 0x4 */ struct DungeonLocation dungeon; // dungeon
/* 0x8 */ u32 unk8;
/* 0xC */ s16 clientSpecies; // client pokemon
/* 0xE */ s16 targetSpecies; // target

View File

@@ -125,7 +125,7 @@ SECTIONS {
src/wonder_mail.o(.text);
src/thank_you_wonder_mail.o(.text);
src/wonder_mail_2.o(.text);
asm/wonder_mail_2.o(.text);
src/wonder_mail_2_mid.o(.text);
src/wonder_mail_2_1.o(.text);
asm/wonder_mail_802C860.o(.text);
src/wonder_mail_3.o(.text);
@@ -274,8 +274,6 @@ SECTIONS {
src/code_8086A3C.o(.text);
asm/code_8086A3C.o(.text);
src/code_8057824_1.o(.text);
asm/jirachi_wish.o(.text);
src/code_80521D0_1.o(.text);
src/pokemon.o(.text);
asm/pokemon.o(.text);
src/pokemon_mid.o(.text);

View File

@@ -1,10 +1,10 @@
.align 2
gMPlayTable:: @ 9E8665C
music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0 @ BGM
music_player gUnknown_2000970, gMPlayTrack_Unknown1, 6, 0 @ SE?
music_player 0x20009B0, gMPlayTrack_Unknown2, 1, 0
music_player 0x2000A40, gMPlayTrack_Unknown3, 1, 0
music_player 0x20009F0, gMPlayTrack_Unknown4, 2, 0
music_player 0x2000870, gMPlayTrack_Unknown5, 2, 0
music_player 0x20008B0, gMPlayTrack_Unknown6, 2, 0
music_player 0x2000930, gMPlayTrack_Unknown7, 1, 0
music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0
music_player gMPlayInfo_Fanfare, gMPlayTrack_Fanfare, 6, 0
music_player gMPlayInfo_SE1, gMPlayTrack_SE1, 1, 0
music_player gMPlayInfo_SE2, gMPlayTrack_SE2, 1, 0
music_player gMPlayInfo_SE3, gMPlayTrack_SE3, 2, 0
music_player gMPlayInfo_SE4, gMPlayTrack_SE4, 2, 0
music_player gMPlayInfo_SE5, gMPlayTrack_SE5, 2, 0
music_player gMPlayInfo_SE6, gMPlayTrack_SE6, 1, 0

View File

@@ -9,13 +9,10 @@
#include "config.h"
void sub_8011924(void);
void xxx_call_stop_bgm(void);
extern u8 sub_80023E4(u8);
extern void sub_800C3F8(u16 r0, u16 r1);
extern void sub_801199C(u16 r0);
extern void sub_800C298(u16 r0);
extern u8 sub_800C5D0(u16 r0);
extern void xxx_call_stop_fanfare_se(u16 r0);
struct UnkSaveStruct1
{
@@ -118,19 +115,19 @@ void sub_80117C4(void)
// Some sound effect
void sub_80117D0(void)
{
sub_800C074(302, 256);
PlayFanfareSE(302, 256);
}
// Some sound effect
void sub_80117E4(void)
{
sub_800C074(303, 256);
PlayFanfareSE(303, 256);
}
// Some sound effect
void sub_80117F8(void)
{
sub_800C074(301, 256);
PlayFanfareSE(301, 256);
}
void sub_801180C(void)
@@ -170,18 +167,18 @@ void sub_8011860(void)
}
}
void sub_80118A4(void)
void StopAllMusic_1(void)
{
sub_8011924();
sub_801199C(0x3e6);
sub_801199C(0x3e5);
xxx_call_stop_bgm();
xxx_call_stop_fanfare_se(998);
xxx_call_stop_fanfare_se(997);
}
void sub_80118C4(u16 r0)
void FadeOutAllMusic(u16 speed)
{
FadeOutBGM(r0);
sub_800C3F8(0x3e6, r0);
sub_800C3F8(0x3e5, r0);
FadeOutBGM(speed);
FadeOutFanfareSE(998, speed);
FadeOutFanfareSE(997, speed);
}
void xxx_call_start_new_bgm(u16 songIndex)
@@ -199,9 +196,9 @@ void sub_8011914(u16 songIndex)
sub_800BF48(songIndex);
}
void sub_8011924()
void xxx_call_stop_bgm()
{
sub_800BF80();
StopBGM();
}
void xxx_call_fade_out_bgm(u16 speed)
@@ -222,34 +219,34 @@ u32 IsEqualtoBGTrack(u16 songIndex)
void sub_8011974(u16 songIndex, u16 r1)
{
sub_800C074(songIndex, r1);
PlayFanfareSE(songIndex, r1);
}
void PlaySound(u16 songIndex)
{
sub_800C074(songIndex, 256);
PlayFanfareSE(songIndex, 256);
}
void sub_801199C(u16 songIndex)
void xxx_call_stop_fanfare_se(u16 songIndex)
{
sub_800C298(songIndex);
StopFanfareSE(songIndex);
}
void sub_80119AC(u16 songIndex, u16 r1)
{
sub_800C3F8(songIndex, r1);
FadeOutFanfareSE(songIndex, r1);
}
u8 sub_80119C0(u16 songIndex)
bool8 IsFanfareSEPlaying_1(u16 songIndex)
{
return sub_800C5D0(songIndex);
return IsFanfareSEPlaying(songIndex);
}
void PlayMenuSoundEffect(u32 r0)
{
if(gUnknown_202DE20 > 0)
return;
sub_800C074(gUnknown_80D4144[r0], 256);
PlayFanfareSE(gUnknown_80D4144[r0], 256);
gUnknown_202DE20 = 4;
}
@@ -258,7 +255,7 @@ void sub_8011A04(void)
if(gUnknown_202DE22 > 0)
return;
gUnknown_202DE22 = 3;
sub_800C074(305, 256);
PlayFanfareSE(305, 256);
}
void sub_8011A2C(u32 r0)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -18,14 +18,14 @@ EWRAM_DATA struct unkStruct_202F3D0 gUnknown_202F3D0;
s8 sub_8002984(s8, u8);
void sub_803E708(u32, u32);
void sub_80869E4(struct DungeonEntity *r0, u32, u8, s8);
void sub_80869E4(struct DungeonEntity *entity, u32, u8, s8);
extern void sub_80859F0(u32);
extern void sub_803E46C(u32);
extern void sub_803E9D0(void);
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
extern void PlaySoundEffect(u32);
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
void SpriteLookAroundEffect(struct DungeonEntity *r0);
void SpriteLookAroundEffect(struct DungeonEntity *entity);
extern void DisplayDungeonDialogue(u32);
void sub_8086494();
@@ -39,7 +39,7 @@ extern void sub_80855E4(void *);
extern s32 GetCameraXPos(void);
extern s32 GetCameraYPos(void);
extern void sub_803F878(u32, u32);
extern void sub_8086384(struct DungeonEntity *r0);
extern void sub_8086384(struct DungeonEntity *entity);
extern void sub_8085930(u32);
extern void sub_804539C(struct DungeonEntity *, u32, u32);
extern void sub_806CE68(struct DungeonEntity *, u32);
@@ -50,100 +50,100 @@ extern void sub_8086A3C(struct DungeonEntity *);
extern void PlaySoundEffect(u32);
extern void sub_80861F8(u32, struct DungeonEntity *, u32);
void sub_80862BC(struct DungeonEntity *r0)
void SpriteShockEffect(struct DungeonEntity *entity)
{
PlaySoundEffect(0xE8 << 1);
sub_80861F8(0x143, r0, 0);
sub_80861F8(0x143, entity, 0);
}
void sub_80862DC(struct DungeonEntity *r0)
void sub_80862DC(struct DungeonEntity *entity)
{
u32 array[2];
array[0] = r0->posPixel.x;
array[1] = r0->posPixel.y + (0xE0 << 6);
array[0] = entity->posPixel.x;
array[1] = entity->posPixel.y + (0xE0 << 6);
sub_804535C(r0, array);
sub_806CDD4(r0, 0, DIRECTION_NORTH);
sub_8086A54(r0);
sub_804535C(entity, array);
sub_806CDD4(entity, 0, DIRECTION_NORTH);
sub_8086A54(entity);
}
void sub_8086310(struct DungeonEntity *r0)
void sub_8086310(struct DungeonEntity *entity)
{
u32 array[2];
array[0] = r0->posPixel.x;
array[1] = r0->posPixel.y + (0x90 << 8);
array[0] = entity->posPixel.x;
array[1] = entity->posPixel.y + (0x90 << 8);
sub_804535C(r0, array);
sub_806CE68(r0, DIRECTION_SOUTH);
sub_8086A3C(r0);
r0->visible = 0;
sub_804535C(entity, array);
sub_806CE68(entity, DIRECTION_SOUTH);
sub_8086A3C(entity);
entity->visible = 0;
}
void sub_8086348(struct DungeonEntity *r0)
void sub_8086348(struct DungeonEntity *entity)
{
u32 array[2];
array[0] = r0->posPixel.x + (0xF0 << 7);
array[1] = r0->posPixel.y + 0xffffe000;
array[0] = entity->posPixel.x + (0xF0 << 7);
array[1] = entity->posPixel.y + 0xffffe000;
sub_804535C(r0, array);
sub_806CDD4(r0, 0, DIRECTION_WEST);
sub_8086A54(r0);
sub_804535C(entity, array);
sub_806CDD4(entity, 0, DIRECTION_WEST);
sub_8086A54(entity);
}
void sub_8086384(struct DungeonEntity *r0)
void sub_8086384(struct DungeonEntity *entity)
{
u32 array[2];
array[0] = r0->posPixel.x + (0xF0 << 7);
array[1] = r0->posPixel.y;
array[0] = entity->posPixel.x + (0xF0 << 7);
array[1] = entity->posPixel.y;
sub_804535C(r0, array);
sub_806CDD4(r0, 0, DIRECTION_WEST);
sub_8086A54(r0);
sub_804535C(entity, array);
sub_806CDD4(entity, 0, DIRECTION_WEST);
sub_8086A54(entity);
}
void sub_80863B8(struct DungeonEntity *r0)
void sub_80863B8(struct DungeonEntity *entity)
{
sub_806CDD4(r0, 0, DIRECTION_NORTH);
sub_806CDD4(entity, 0, DIRECTION_NORTH);
}
void sub_80863C8(struct DungeonEntity *r0)
void sub_80863C8(struct DungeonEntity *entity)
{
sub_806CDD4(r0, 0, DIRECTION_SOUTH);
sub_806CDD4(entity, 0, DIRECTION_SOUTH);
}
void sub_80863D8(struct DungeonEntity *r0)
void sub_80863D8(struct DungeonEntity *entity)
{
sub_806CDD4(r0, 0, DIRECTION_WEST);
sub_806CDD4(entity, 0, DIRECTION_WEST);
}
void sub_80863E8(struct DungeonEntity *r0)
void sub_80863E8(struct DungeonEntity *entity)
{
sub_806CDD4(r0, 6, DIRECTION_NORTH);
sub_806CDD4(entity, 6, DIRECTION_NORTH);
}
void sub_80863F8(struct DungeonEntity *r0)
void sub_80863F8(struct DungeonEntity *entity)
{
sub_806CE68(r0, DIRECTION_NORTH);
sub_806CE68(entity, DIRECTION_NORTH);
}
void sub_8086404(struct DungeonEntity *r0)
void sub_8086404(struct DungeonEntity *entity)
{
sub_806CE68(r0, DIRECTION_WEST);
sub_806CE68(entity, DIRECTION_WEST);
}
void sub_8086410(struct DungeonEntity *r0)
void sub_8086410(struct DungeonEntity *entity)
{
sub_804539C(r0, 0, 0xffffff00);
sub_804539C(entity, 0, 0xffffff00);
}
void sub_8086424(struct DungeonEntity *r0)
void sub_8086424(struct DungeonEntity *entity)
{
sub_804539C(r0, 0, 0x80 << 1);
sub_804539C(entity, 0, 0x80 << 1);
}
void sub_8086434(struct DungeonEntity *r0)
void sub_8086434(struct DungeonEntity *entity)
{
sub_804539C(r0, 0xffffff00, 0);
sub_804539C(entity, 0xffffff00, 0);
}
void sub_8086448(void)
@@ -306,12 +306,12 @@ void sub_8086690(void)
}
void sub_80866C4(u32 r0)
void sub_80866C4(u32 entity)
{
SpriteLookAroundEffect(xxx_call_GetLeaderEntity());
sub_803E708(0xA, 0x46);
DisplayDungeonDialogue(r0);
DisplayDungeonDialogue(entity);
sub_803E708(0xA, 0x46);
sub_8086494();
gDungeonGlobalData->unk2 = 1;
@@ -395,21 +395,21 @@ void sub_808680C(void)
PlaySoundEffect(0x1F9);
}
void sub_808682C(u8 r0)
void sub_808682C(u8 entity)
{
gUnknown_202F3D0.unk0 = 0;
}
void sub_8086838(u8 r0, u8 r1, u8 r2)
void sub_8086838(u8 entity, u8 r1, u8 r2)
{
gUnknown_202F3D0.unk1 = r0;
gUnknown_202F3D0.unk1 = entity;
gUnknown_202F3D0.unk2 = r1;
gUnknown_202F3D0.unk3 = r2;
}
void sub_8086848(u8 r0, u8 r1)
void sub_8086848(u8 entity, u8 r1)
{
gUnknown_202F3D0.unk4 = r0;
gUnknown_202F3D0.unk4 = entity;
gUnknown_202F3D0.unk5 = r1;
}
@@ -446,16 +446,16 @@ void sub_8086854(void)
}
}
void sub_80868F4(struct DungeonEntity *r0)
void sub_80868F4(struct DungeonEntity *entity)
{
r0->entityData->unk15C = 1;
r0->entityData->unk15D = 1;
entity->entityData->unk15C = 1;
entity->entityData->unk15D = 1;
}
void sub_8086910(struct DungeonEntity *r0)
void sub_8086910(struct DungeonEntity *entity)
{
r0->entityData->unk15C = 0;
r0->entityData->unk15D = 0;
entity->entityData->unk15C = 0;
entity->entityData->unk15D = 0;
}
void sub_808692C(void)
@@ -473,26 +473,26 @@ void sub_808692C(void)
sub_803E708(0x4, 0x46);
}
void SpriteLookAroundEffect(struct DungeonEntity *r0)
void SpriteLookAroundEffect(struct DungeonEntity *entity)
{
s8 r4;
s8 r3;
r4 = sub_8002984(r0->entityData->action.facingDir, 4);
r4 = sub_8002984(entity->entityData->action.facingDir, 4);
sub_80869E4(r0, 4, 2, r4);
sub_80869E4(entity, 4, 2, r4);
sub_803E708(0xF, 0x46);
r4 = sub_8002984(r4, 5);
sub_80869E4(r0, 4, 1, r4);
sub_80869E4(entity, 4, 1, r4);
sub_803E708(0xF, 0x46);
r3 = sub_8002984(r4, 4);
sub_80869E4(r0, 4, 2, r3);
sub_80869E4(entity, 4, 2, r3);
sub_803E708(0xF, 0x46);
}

View File

@@ -28,8 +28,8 @@ extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
extern void sub_8083E88(u32);
extern void sub_803E708(u32, u32);
extern void sub_8086448(void);
extern void sub_80862BC(struct DungeonEntity *);
extern void sub_8086E74(struct DungeonEntity *);
extern void SpriteShockEffect(struct DungeonEntity *);
extern void SkarmoryEntry(struct DungeonEntity *);
extern void SpriteLookAroundEffect(struct DungeonEntity *);
extern void sub_8086A54(struct DungeonEntity *);
extern void PlaySoundEffect(u32);
@@ -174,7 +174,7 @@ void SkarmoryPreFightDialogue(void)
sub_8086448();
sub_803E708(10,0x46);
sub_80862BC(PartnerEntity);
SpriteShockEffect(PartnerEntity);
sub_803E708(0x20,0x46);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_1);
@@ -189,7 +189,7 @@ void SkarmoryPreFightDialogue(void)
sub_803E708(10,0x46);
ShiftCameraToPosition(&local_20,0x20);
sub_803E708(0x20,0x46);
sub_8086E74(SkarmoryEntity);
SkarmoryEntry(SkarmoryEntity);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_4); // Skarmory: You!\nWhat do you think you're doing here?!
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_5);
@@ -223,7 +223,7 @@ void SkarmoryReFightDialogue(void)
local_14.y = SkarmoryEntity->posPixel.y + 0x2000;
sub_8086448();
sub_803E708(10,0x46);
sub_8086E74(SkarmoryEntity);
SkarmoryEntry(SkarmoryEntity);
ShiftCameraToPosition(&local_14,0x10);
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_1);
sub_803E708(10,0x46);
@@ -245,10 +245,10 @@ void sub_8086E40(void)
gDungeonGlobalData->unk2 = 1;
}
void sub_8086E74(struct DungeonEntity * param_1)
void SkarmoryEntry(struct DungeonEntity * skarmoryEntity)
{
sub_806CDD4(param_1,0xf,0);
sub_8086A54(param_1);
sub_806CDD4(skarmoryEntity,0xf,0);
sub_8086A54(skarmoryEntity);
PlaySoundEffect(0x1f8);
sub_803E708(0x44,0x46);
}

View File

@@ -2,6 +2,7 @@
#include "play_time.h"
#include "input.h"
#include "debug.h"
#include "code_80A26CC.h"
extern u32 gUnknown_20398A8;
extern u32 gUnknown_20398AC;
@@ -21,6 +22,15 @@ extern const char gUnknown_8115FA4;
extern const char gUnknown_8115FC8;
extern const char gUnknown_8115FE8;
struct unkStruct_811BAF4
{
u16 unk0;
s16 unk2;
u8 fill4[8];
};
extern struct unkStruct_811BAF4 gUnknown_811BAF4[10];
extern void sub_809B57C();
extern void GroundScript_Unlock();
extern void sub_809D25C();
@@ -61,11 +71,11 @@ extern void ClearAllItems_8091FB4();
extern const char *sub_80A2B18(s16);
extern u8 sub_8001CC4(u8, u8, u8);
extern void xxx_inv_unk250_random_8091980(u32);
extern u8 sub_80023E4(u32);
extern void sub_80118C4(u16);
extern void FadeOutAllMusic(u16);
extern u8 sub_809C730();
extern s16 sub_80A2750(s16);
extern u8 sub_8001D44(u32, u32, s32);
void sub_8098BDC(void)
{
@@ -199,7 +209,7 @@ bool8 sub_8098D80(u32 r0)
sub_809C730();
if(sub_80023E4(0xD) == 0)
{
sub_80118C4(r0);
FadeOutAllMusic(r0);
}
return TRUE;
}
@@ -216,7 +226,7 @@ bool8 sub_8098DCC(u32 r0)
sub_809C730();
if(sub_80023E4(0xD) == 0)
{
sub_80118C4(r0);
FadeOutAllMusic(r0);
}
return TRUE;
}
@@ -319,3 +329,54 @@ const char *sub_8098FB4(void)
{
return sub_80A2B18(sub_8001658(0, 0x11));
}
s32 sub_8098FCC(u32 unused)
{
s32 iVar4;
s32 iVar5;
s32 iVar6;
struct unkStruct_80A2608 *iVar3;
iVar5 = (s16)sub_8001658(0,0x13);
iVar6 = iVar5;
if (iVar5 == -1) return 0xC;
if (iVar5 == 0x51)
iVar4 = (s16)sub_8001658(0,0x14);
else
iVar4 = iVar6;
iVar3 = sub_80A2608(iVar4);
if (gUnknown_20398B4 == 9) {
return iVar3->unk2;
}
switch((s16)(iVar3->unk4 - 0xb2)) {
case 0:
if (sub_8001D44(3,2,-1) != 0) return 0xc;
break;
case 0xf:
case 0x11:
case 0x14:
case 0x17:
if (sub_80023E4(5) == 0) return 0xC;
break;
default:
break;
}
return iVar3->unk4;
}
const char *sub_80990B8(void)
{
s16 index;
index = sub_8098FCC(0xB);
if(index != -1)
{
return sub_80A2B18(gUnknown_811BAF4[index].unk2);
}
else
{
return sub_8098FB4();
}
}

View File

@@ -33,6 +33,67 @@ extern struct unkStruct_20399E8 gUnknown_20399E8;
void sub_809D0BC(void);
s32 sub_809CFE8(u16 param_1)
{
if ((param_1 & 0x40) != 0) {
if ((param_1 & 0x10) != 0)
return 3;
else if ((param_1 & 0x20) != 0)
return 5;
else
return 4;
}
else if ((param_1 & 0x80) != 0) {
if ((param_1 & 0x10) != 0)
return 1;
else if ((param_1 & 0x20) != 0)
return 7;
else
return 0;
}
else if ((param_1 & 0x10) != 0)
return 2;
else if ((param_1 & 0x20) != 0)
return 6;
else
return -1;
}
// Unused
s32 sub_809D058(s32 *param_1)
{
if (param_1[1] < 0x40) {
if (param_1[0] < 0x68) {
return 5;
}
else if (param_1[0] > 0x88) {
return 3;
}
else {
return 4;
}
}
else if (param_1[1] > 0x60) {
if (param_1[0] < 0x68) {
return 7;
}
else if (param_1[0] > 0x88) {
return 1;
}
else {
return 0;
}
}
else if (param_1[0] < 0x68) {
return 6;
}
else if (param_1[0] > 0x88) {
return 2;
}
else {
return -1;
}
}
void sub_809D0AC(void)
{

View File

@@ -1,18 +1,5 @@
#include "global.h"
struct unkStruct_80A2608
{
/* 0x0 */ s16 unk0;
/* 0x2 */ u16 padding;
/* 0x4 */ u32 padding2;
/* 0x8 */ u16 padding3;
/* 0xA */ u16 padding4;
/* 0xC */ u8 unkC;
/* 0xD */ u8 padding5;
/* 0xE */ s16 unkE;
/* 0x10 */ u8 unk10;
/* 0x11 */ u8 unk11;
};
#include "code_80A26CC.h"
extern u8 sub_80023E4(u32);
extern u8 sub_80973F4(s16);

View File

@@ -9,6 +9,7 @@
#include "sub_8095228.h"
#include "item.h"
#include "code_8094F88.h"
#include "rescue_password_menu.h"
extern struct TeamInventory *gTeamInventory_203B460;
extern u8 *gUnknown_203B484;
@@ -447,44 +448,44 @@ void sub_8033DBC(void)
switch(gUnknown_203B33C->unk528)
{
case 3:
input_var = 0x1C;
input_var = PASSWORD_ENTRY_SOS_MAIL_MODE;
break;
case 0x12:
input_var = 0x1E;
input_var = PASSWORD_ENTRY_AOK_MAIL_MODE;
break;
default:
break;
}
switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x1B);
break;
case 18:
case PASSWORD_ENTRY_NOT_SOS_MAIL:
sub_80141B4(gUnknown_80E48E8, 0, 0, 0x101);
SetFriendRescueMenuState(8);
break;
case 7:
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
sub_80141B4(gUnknown_80E460C, 0, 0, 0x101);
SetFriendRescueMenuState(8);
break;
case 22:
case PASSWORD_ENTRY_SOS_MAIL_SUCCESS:
sub_8095274(temp.unk10);
temp.mailType = 2;
sub_80951BC(&temp);
sub_80141B4(gUnknown_80E4928, 0, 0, 0x101);
SetFriendRescueMenuState(0x16);
break;
case 19:
case PASSWORD_ENTRY_NOT_AOK_MAIL:
sub_80141B4(gUnknown_80E4964, 0, 0, 0x101);
SetFriendRescueMenuState(8);
break;
case 9:
case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL:
sub_80141B4(gUnknown_80E499C, 0, 0, 0x101);
SetFriendRescueMenuState(8);
break;
case 23:
case PASSWORD_ENTRY_AOK_MAIL_SUCCESS:
temp.mailType = 5;
sub_80951FC(&temp);
temp2 = sub_8095228(sub_809539C(1, temp.unk10));
@@ -1340,21 +1341,21 @@ void sub_8034D74(void)
switch(return_var)
{
case 3:
switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp))
switch(sub_8039068(PASSWORD_ENTRY_THANK_YOU_MAIL_MODE, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x74);
break;
case 20:
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
sub_80141B4(gUnknown_80E49C4, 0, 0, 0x101);
SetFriendRescueMenuState(0x6B);
break;
case 11:
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
sub_80141B4(gUnknown_80E4704, 0, 0, 0x101);
SetFriendRescueMenuState(0x6B);
break;
case 24:
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
temp2 = sub_8095228(sub_809539C(4, temp.unk10));
*temp2 = temp;
temp2->mailType = 6;

View File

@@ -96,7 +96,7 @@ extern void UpdateLuminousCaveDialogue(void);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u16 *, u32, u32, struct OpenedFile **r5, u32);
void xxx_call_fade_out_bgm(u16 speed);
void sub_801199C(u16 songIndex);
void xxx_call_stop_fanfare_se(u16 songIndex);
void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed);
void sub_80977D0(void);
void PlaySound(u32);
@@ -397,7 +397,7 @@ void UpdateLuminousCaveDialogue(void)
ClearItemSlotAt(gUnknown_203B2B0->evoItem2_InvIndex);
}
FillInventoryGaps();
sub_801199C(0x1ff);
xxx_call_stop_fanfare_se(0x1ff);
PlaySound(0xd2);
if (gUnknown_203B2B0->pokeRenamed) {
BoundedCopyStringtoBuffer(gUnknown_203B2B0->pokeStruct->name,GetMonSpecies(gUnknown_203B2B0->pokeStruct->speciesNum),POKEMON_NAME_LENGTH);

View File

@@ -4,13 +4,12 @@
#include "music.h"
extern u8 sub_80023E4(u32);
extern void sub_80118C4(u16);
extern void FadeOutAllMusic(u16);
extern void sub_809C730();
extern bool8 DisableInterrupts();
extern bool8 EnableInterrupts();
extern void sub_800C3F8(u16, u16);
extern void Random();
extern void sub_800BA5C();
extern void xxx_update_bg_sound_input();
@@ -24,7 +23,7 @@ extern u16 gBGMusicPlayerState;
extern u16 gCurrentBGSong;
extern u16 gUnknown_202D690;
extern u8 gUnknown_202D694;
extern u8 gRestartBGM;
extern u32 gUnknown_203B0B8;
extern u16 gRawKeyInput;
@@ -33,8 +32,8 @@ void StopBGMusicVSync(void)
bool8 interrupt_flag;
u16 temp;
sub_800C3F8(0x3e5, 0x10);
sub_800C3F8(0x3e6, 0x10);
FadeOutFanfareSE(0x3e5, 0x10);
FadeOutFanfareSE(0x3e6, 0x10);
interrupt_flag = DisableInterrupts();
if(gUnknown_202D690 == 0)
@@ -46,13 +45,13 @@ void StopBGMusicVSync(void)
{
if(gBGMusicPlayerState == 2)
{
gUnknown_202D694 = 0;
gRestartBGM = FALSE;
}
else if(gBGMusicPlayerState == 1)
else if(gBGMusicPlayerState == BG_PLAYER_STATE_PLAYING)
{
gUnknown_202D694 = 1;
gRestartBGM = TRUE;
}
gBGMusicPlayerState = 4;
gBGMusicPlayerState = BG_PLAYER_STATE_STOPPED;
}
}
}
@@ -72,10 +71,10 @@ void StartBGMusicVSync(void)
{
if(gCurrentBGSong != 999)
{
if(gBGMusicPlayerState == 4)
if(gBGMusicPlayerState == BG_PLAYER_STATE_STOPPED)
{
gBGMusicPlayerState = 1;
if(gUnknown_202D694 != 0)
gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING;
if(gRestartBGM)
{
m4aSongNumStart(gCurrentBGSong);
}
@@ -98,30 +97,30 @@ void nullsub_179(void)
}
// Unused
u8 sub_800CA38(u32 songIndex)
bool8 IsValidSong(u32 songIndex)
{
if(IsBGSong(songIndex))
{
if(GetMusicPlayerIndex(songIndex) == 0)
if(GetMusicPlayerIndex(songIndex) == INDEX_BGM)
{
return 1;
return TRUE;
}
}
if(sub_800CACC(songIndex))
if(IsFanfare(songIndex))
{
if(GetMusicPlayerIndex(songIndex) == 1)
if(GetMusicPlayerIndex(songIndex) == INDEX_FANFARE)
{
return 1;
return TRUE;
}
}
else if(sub_800CAAC(songIndex))
else if(IsSoundEffect(songIndex))
{
if(GetMusicPlayerIndex(songIndex) > 1)
if(GetMusicPlayerIndex(songIndex) >= INDEX_SE1)
{
return 1;
return TRUE;
}
}
return 0;
return FALSE;
}
void nullsub_19(void)
@@ -137,7 +136,7 @@ bool8 IsBGSong(u32 songIndex)
return FALSE;
}
bool8 sub_800CAAC(u32 songIndex)
bool8 IsSoundEffect(u32 songIndex)
{
if(songIndex - 300 <= 639)
{
@@ -146,7 +145,7 @@ bool8 sub_800CAAC(u32 songIndex)
return FALSE;
}
bool8 sub_800CACC(u32 songIndex)
bool8 IsFanfare(u32 songIndex)
{
if(songIndex - 200 <= 19)
{
@@ -160,14 +159,14 @@ u16 GetMusicPlayerIndex(u16 songIndex)
return gSongTable[songIndex].ms;
}
bool8 sub_800CAF0(u16 songIndex)
bool8 IsMusicPlayerPlaying(u16 playerIndex)
{
// Had to cast this.. m4a_internal header has this as u32
if((u16)gMPlayTable[songIndex].info->status == 0)
if((u16)gMPlayTable[playerIndex].info->status == 0)
{
return 0;
return FALSE;
}
return 1;
return TRUE;
}
void nullsub_20(u16 songIndex)

View File

@@ -4,6 +4,7 @@
#include "bg.h"
#include "music.h"
#include "input.h"
#include "constants/bg_music.h"
extern bool8 EnableInterrupts(void);
extern bool8 DisableInterrupts(void);
@@ -33,10 +34,10 @@ extern u32 gUnknown_203B0A4;
extern u16 gBGMusicPlayerState;
extern u16 gCurrentBGSong;
extern u16 gUnknown_202D68C;
extern u16 gUnknown_202D68E;
extern u16 gCurrentFanfareSong;
extern u16 gUnknown_202D690;
extern u16 gUnknown_202D692;
extern u8 gUnknown_202D694;
extern bool8 gRestartBGM;
extern u8 gUnknown_203B099;
extern u8 gUnknown_203B09B;
extern u32 gUnknown_203B09C;
@@ -49,7 +50,8 @@ extern s16 gUnknown_203B0AE;
extern s16 gUnknown_203B0B0;
extern s16 gUnknown_203B0B2;
struct unkStruct_3000FD8
// PMD keeps it's own copy of music players for some reason
struct PMDMusicPlayer
{
u16 unk0;
u16 songIndex;
@@ -57,8 +59,8 @@ struct unkStruct_3000FD8
u8 unk6;
};
extern struct unkStruct_3000FD8 gUnknown_3000FD8[8];
extern struct unkStruct_3000FD8 gUnknown_3000FE8[4];
extern struct PMDMusicPlayer gUnknown_3000FD8[8];
extern struct PMDMusicPlayer gUnknown_3000FE8[8];
extern u8 gUnknown_202D7FE;
extern u16 gBldCnt;
@@ -79,7 +81,7 @@ enum
extern void SoundVSync();
extern void BlinkSavingIcon();
void sub_800BF80(void);
void StopBGM(void);
void xxx_update_bg_sound_input(void);
void UnusedIntrFunc(void)
@@ -393,9 +395,9 @@ void UpdateBGControlRegisters(void)
void InitMusic(void)
{
s32 counter;
s32 playerIndex;
struct unkStruct_3000FD8 *preload;
struct PMDMusicPlayer *musicPlayer;
DmaStop(0);
DmaStop(1);
@@ -407,29 +409,28 @@ void InitMusic(void)
gBGMusicPlayerState = 0;
gCurrentBGSong = 999;
gUnknown_202D68C = 999;
gUnknown_202D68E = 997;
gCurrentFanfareSong = 997;
gUnknown_202D690 = 0;
gUnknown_202D692 = 0;
gUnknown_202D694 = 0;
gRestartBGM = FALSE;
for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++)
for(playerIndex = INDEX_BGM, musicPlayer = &gUnknown_3000FD8[0]; playerIndex < INDEX_SE6 + 1; playerIndex++, musicPlayer++)
{
preload->unk0 = 0;
preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
musicPlayer->unk0 = 0;
musicPlayer->songIndex = 997;
musicPlayer->unk4 = 0;
musicPlayer->unk6 = 0;
}
nullsub_19();
}
void sub_800BDDC(void)
void StopAllMusic(void)
{
sub_800BF80();
sub_800C298(998);
sub_800C298(997);
StopBGM();
StopFanfareSE(998);
StopFanfareSE(997);
}
void StartNewBGM(u16 songIndex)
{
bool8 interrupt_flag;
@@ -443,33 +444,33 @@ void StartNewBGM(u16 songIndex)
if((u16)(gBGMusicPlayerState - 1) <= 1)
return;
}
if(GetMusicPlayerIndex(songIndex))
if(GetMusicPlayerIndex(songIndex) != INDEX_BGM)
{
nullsub_20(songIndex);
return;
}
interrupt_flag = DisableInterrupts();
gCurrentBGSong = songIndex;
gUnknown_202D694 = 1;
gRestartBGM = TRUE;
if(gUnknown_202D690 == 0)
{
gBGMusicPlayerState = 1;
gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING;
m4aSongNumStart(songIndex);
}
if(interrupt_flag)
EnableInterrupts();
}
void FadeInNewBGM(u16 SongIndex, u16 speed)
void FadeInNewBGM(u16 songIndex, u16 speed)
{
bool8 interrupt_flag;
if(!IsBGSong(SongIndex))
if(!IsBGSong(songIndex))
return;
if(SongIndex == 999)
if(songIndex == 999)
return;
if(SongIndex == gCurrentBGSong)
if(songIndex == gCurrentBGSong)
{
if((u16)(gBGMusicPlayerState - 1) <= 1)
return;
@@ -489,35 +490,35 @@ void FadeInNewBGM(u16 SongIndex, u16 speed)
}
interrupt_flag = DisableInterrupts();
gCurrentBGSong = SongIndex;
gUnknown_202D694 = 1;
gCurrentBGSong = songIndex;
gRestartBGM = TRUE;
if(gUnknown_202D690 == 0)
{
gBGMusicPlayerState = 1;
m4aSongNumStart(SongIndex);
gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING;
m4aSongNumStart(songIndex);
m4aMPlayImmInit(&gMPlayInfo_BGM);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFF, 0);
m4aSongNumStop(SongIndex);
m4aSongNumStop(songIndex);
m4aMPlayFadeIn(&gMPlayInfo_BGM, speed);
}
if(interrupt_flag)
EnableInterrupts();
}
void sub_800BF48(u16 SongIndex)
void sub_800BF48(u16 songIndex)
{
u16 preload = gCurrentBGSong;
if(preload == 999)
{
StartNewBGM(SongIndex);
StartNewBGM(songIndex);
gUnknown_202D68C = preload;
return;
}
gUnknown_202D68C = SongIndex;
gUnknown_202D68C = songIndex;
}
void sub_800BF80(void)
void StopBGM(void)
{
bool8 interrupt_flag = DisableInterrupts();
if(gUnknown_202D690 == 0)
@@ -583,23 +584,23 @@ u16 GetCurrentBGSong(void)
return gCurrentBGSong;
}
void sub_800C074(u16 SongIndex, u16 param_2)
void PlayFanfareSE(u16 songIndex, u16 param_2)
{
bool8 interrupt_flag;
bool8 interrupt_flag2;
u16 msVar;
struct unkStruct_3000FD8 *preload;
u16 playerIndex;
struct PMDMusicPlayer *musicPlayer;
if (SongIndex == 997)
if (songIndex == 997)
return;
if (param_2 > 256)
param_2 = 256;
if (sub_800CACC(SongIndex))
if (IsFanfare(songIndex))
{
if (GetMusicPlayerIndex(SongIndex) == 1) {
if (GetMusicPlayerIndex(songIndex) == INDEX_FANFARE) {
interrupt_flag = DisableInterrupts();
gUnknown_202D68E = SongIndex;
gCurrentFanfareSong = songIndex;
if(gUnknown_202D690 == 0)
{
if (gCurrentBGSong != 999)
@@ -608,7 +609,7 @@ void sub_800C074(u16 SongIndex, u16 param_2)
{
gUnknown_202D690 = 1;
gUnknown_202D692 = 16;
gUnknown_202D694 = 0;
gRestartBGM = FALSE;
m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, 1);
}
else if (gBGMusicPlayerState == 3)
@@ -617,14 +618,14 @@ void sub_800C074(u16 SongIndex, u16 param_2)
{
gUnknown_202D690 = 3;
m4aMPlayStop(&gMPlayInfo_BGM);
m4aSongNumStart(gUnknown_202D68E);
m4aSongNumStart(gCurrentFanfareSong);
}
}
else
{
gUnknown_202D690 = 3;
m4aMPlayStop(&gMPlayInfo_BGM);
m4aSongNumStart(gUnknown_202D68E);
m4aSongNumStart(gCurrentFanfareSong);
}
}
else
@@ -632,28 +633,28 @@ void sub_800C074(u16 SongIndex, u16 param_2)
if (1 < (u16)(gUnknown_202D690 - 1))
{
m4aMPlayStop(&gMPlayInfo_BGM);
m4aSongNumStart(gUnknown_202D68E);
m4aSongNumStart(gCurrentFanfareSong);
gUnknown_202D690 = 3;
}
}
switch(gCurrentBGSong)
{
case 26: // 0x1A
case 27: // 0x1B
case 28: // 0x1C
case 29: // 0x1D
case 30: // 0x1E
case 31: // 0x1F
case 34: // 0x22
case 35: // 0x23
case 37: // 0x25
case 38: // 0x26
case 117: // 0x75
case 118: // 0x76
case 119: // 0x77
case 122: // 0x7A
case 127: // 0x7F
gUnknown_202D694 = 1;
case MUS_RAYQUAZAS_DOMAIN:
case MUS_FRIEND_AREA_STRATOS_LOOKOUT:
case MUS_FRIEND_AREA_RAINBOW_PEAK:
case MUS_DREAM_EATER:
case MUS_FRIEND_AREA_DEEPSEA_CURRENT:
case MUS_FRIEND_AREA_SEAFLOOR_CAVE:
case MUS_FRIEND_AREA_VOLCANIC_PIT:
case MUS_FRIEND_AREA_CRYPTIC_CAVE:
case MUS_THE_OTHER_SIDE:
case MUS_THE_MOUNTAIN_OF_FIRE:
case MUS_FRIEND_AREA_LEGENDARY_ISLAND:
case MUS_FRIEND_AREA_SOUTHERN_ISLAND:
case MUS_FRIEND_AREA_ENCLOSED_ISLAND:
case MUS_FRIEND_AREA_FINAL_ISLAND:
case MUS_FRIEND_AREA_HEALING_FOREST:
gRestartBGM = TRUE;
break;
default:
break;
@@ -663,56 +664,56 @@ void sub_800C074(u16 SongIndex, u16 param_2)
}
else
{
nullsub_20(SongIndex);
nullsub_20(songIndex);
}
}
else
{
if (!sub_800CAAC(SongIndex))
if (!IsSoundEffect(songIndex))
return;
msVar = GetMusicPlayerIndex(SongIndex);
preload = &gUnknown_3000FD8[msVar]; // need to load this before comparison to match
if (msVar <= 1)
nullsub_20(SongIndex);
playerIndex = GetMusicPlayerIndex(songIndex);
musicPlayer = &gUnknown_3000FD8[playerIndex]; // need to load this before comparison to match
if (playerIndex < INDEX_SE1)
nullsub_20(songIndex);
else
{
interrupt_flag2 = DisableInterrupts();
m4aSongNumStart(SongIndex);
preload->unk0 = 1;
preload->songIndex = SongIndex;
m4aSongNumStart(songIndex);
musicPlayer->unk0 = 1;
musicPlayer->songIndex = songIndex;
if(param_2 == 256)
{
preload->unk6 = 0;
musicPlayer->unk6 = 0;
}
else
{
preload->unk6 = 1;
musicPlayer->unk6 = 1;
}
preload->unk4 = param_2;
musicPlayer->unk4 = param_2;
if (interrupt_flag2)
EnableInterrupts();
}
}
}
void sub_800C214(u16 songIndex, u16 volume)
void SetSoundEffectVolume(u16 songIndex, u16 volume)
{
bool8 interrupt_flag;
u16 msVar;
u16 playerIndex;
struct MusicPlayerInfo *info;
struct unkStruct_3000FD8 *preload;
struct PMDMusicPlayer *musicPlayer;
if (256 < volume) {
volume = 256;
}
if ((!sub_800CACC(songIndex)) && (sub_800CAAC(songIndex))) {
msVar = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[msVar].info;
preload = &gUnknown_3000FD8[msVar];
if (msVar > 1) {
if ((!IsFanfare(songIndex)) && (IsSoundEffect(songIndex))) {
playerIndex = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[playerIndex].info;
musicPlayer = &gUnknown_3000FD8[playerIndex];
if (playerIndex >= INDEX_SE1) {
interrupt_flag = DisableInterrupts();
if (preload->songIndex == songIndex) {
if (musicPlayer->songIndex == songIndex) {
m4aMPlayVolumeControl(info, 0xf, volume);
}
if (interrupt_flag)
@@ -721,7 +722,7 @@ void sub_800C214(u16 songIndex, u16 volume)
}
}
void sub_800C298(u16 songIndex)
void StopFanfareSE(u16 songIndex)
{
// Each section needs a var for interrupts..
char cVar1;
@@ -729,43 +730,43 @@ void sub_800C298(u16 songIndex)
char cVar3;
char cVar4;
u32 uVar2;
int iVar4;
struct MusicPlayerInfo *puVar6;
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
u32 playerIndex;
s32 playerIndex2;
struct MusicPlayerInfo *info;
struct PMDMusicPlayer *musicPlayer;
struct PMDMusicPlayer *musicPlayer1;
if (songIndex == 997) {
cVar1 = DisableInterrupts();
for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++)
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
{
m4aMPlayStop(gMPlayTable[iVar4].info);
puVar3->unk0 = 0;
puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
m4aMPlayStop(gMPlayTable[playerIndex2].info);
musicPlayer1->unk0 = 0;
musicPlayer1->songIndex = 997;
musicPlayer1->unk4 = 0;
musicPlayer1->unk6 = 0;
}
if (cVar1 != '\0') {
EnableInterrupts();
}
}
else if (sub_800CAAC(songIndex))
else if (IsSoundEffect(songIndex))
{
uVar2 = GetMusicPlayerIndex(songIndex);
puVar6 = gMPlayTable[uVar2].info;
preload = &gUnknown_3000FD8[uVar2];
if (uVar2 < 2) {
playerIndex = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[playerIndex].info;
musicPlayer = &gUnknown_3000FD8[playerIndex];
if (playerIndex < INDEX_SE1) {
nullsub_21(songIndex);
}
else {
cVar2 = DisableInterrupts();
if (preload->songIndex == songIndex) {
m4aMPlayStop(puVar6);
preload->unk0 = 0;
preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
if (musicPlayer->songIndex == songIndex) {
m4aMPlayStop(info);
musicPlayer->unk0 = 0;
musicPlayer->songIndex = 997;
musicPlayer->unk4 = 0;
musicPlayer->unk6 = 0;
}
if (cVar2 != '\0') {
EnableInterrupts();
@@ -776,22 +777,22 @@ void sub_800C298(u16 songIndex)
{
cVar3 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E != 997) {
gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
if (gCurrentFanfareSong != 997) {
gCurrentFanfareSong = 997;
m4aMPlayStop(&gMPlayInfo_Fanfare);
}
}
if (cVar3 != '\0') {
EnableInterrupts();
}
}
else if (sub_800CACC(songIndex))
else if (IsFanfare(songIndex))
{
cVar4 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E == songIndex) {
gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
if (gCurrentFanfareSong == songIndex) {
gCurrentFanfareSong = 997;
m4aMPlayStop(&gMPlayInfo_Fanfare);
}
}
if (cVar4 != '\0') {
@@ -800,18 +801,18 @@ void sub_800C298(u16 songIndex)
}
}
void sub_800C3F8(u16 songIndex, u16 speed)
void FadeOutFanfareSE(u16 songIndex, u16 speed)
{
char cVar1;
char cVar2;
char cVar3;
char cVar4;
u32 comparison;
s32 uVar6;
u32 uVar8;
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
struct MusicPlayerInfo *puVar5;
s32 playerIndex2;
u32 playerIndex;
struct PMDMusicPlayer *musicPlayer;
struct PMDMusicPlayer *musicPlayer1;
struct MusicPlayerInfo *playerInfo;
comparison = 0x80 << 17; // 16777216
if((speed * 65536) > comparison)
@@ -828,18 +829,18 @@ void sub_800C3F8(u16 songIndex, u16 speed)
if (songIndex == 997) {
cVar1 = DisableInterrupts();
for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++)
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
{
if (puVar3->songIndex != 997) {
if (sub_800CAF0(uVar6) != '\0') {
m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed);
if (musicPlayer1->songIndex != 997) {
if (IsMusicPlayerPlaying(playerIndex2)) {
m4aMPlayFadeOut(gMPlayTable[playerIndex2].info,speed);
}
else {
m4aMPlayStop(gMPlayTable[uVar6].info);
puVar3->unk0 = 0;
puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
m4aMPlayStop(gMPlayTable[playerIndex2].info);
musicPlayer1->unk0 = 0;
musicPlayer1->songIndex = 997;
musicPlayer1->unk4 = 0;
musicPlayer1->unk6 = 0;
}
}
}
@@ -847,142 +848,86 @@ void sub_800C3F8(u16 songIndex, u16 speed)
EnableInterrupts();
}
}
else {
if (sub_800CAAC(songIndex)) {
uVar8 = GetMusicPlayerIndex(songIndex);
preload = &gUnknown_3000FD8[uVar8];
puVar5 = gMPlayTable[uVar8].info;
cVar2 = DisableInterrupts();
if (preload->songIndex != 997) {
if (sub_800CAF0(uVar8) != '\0') {
m4aMPlayFadeOut(puVar5,speed);
}
else {
m4aMPlayStop(puVar5);
preload->unk0 = 0;
preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
else if (IsSoundEffect(songIndex)) {
playerIndex = GetMusicPlayerIndex(songIndex);
musicPlayer = &gUnknown_3000FD8[playerIndex];
playerInfo = gMPlayTable[playerIndex].info;
cVar2 = DisableInterrupts();
if (musicPlayer->songIndex != 997) {
if (IsMusicPlayerPlaying(playerIndex)) {
m4aMPlayFadeOut(playerInfo,speed);
}
if (cVar2 != '\0') {
EnableInterrupts();
else {
m4aMPlayStop(playerInfo);
musicPlayer->unk0 = 0;
musicPlayer->songIndex = 997;
musicPlayer->unk4 = 0;
musicPlayer->unk6 = 0;
}
}
else if (songIndex == 998) {
cVar3 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 997)) {
if (sub_800CAF0(1) != '\0') {
m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
else {
m4aMPlayStop(&gUnknown_2000970);
gUnknown_202D68E = 997;
}
if (cVar2 != '\0') {
EnableInterrupts();
}
}
else if (songIndex == 998) {
cVar3 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong != 997)) {
if (IsMusicPlayerPlaying(INDEX_FANFARE)) {
m4aMPlayFadeOut(&gMPlayInfo_Fanfare,speed);
}
if (cVar3 != '\0') {
EnableInterrupts();
else {
m4aMPlayStop(&gMPlayInfo_Fanfare);
gCurrentFanfareSong = 997;
}
}
else if (sub_800CACC(songIndex)) {
cVar4 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
if (sub_800CAF0(1) != '\0') {
m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
else {
m4aMPlayStop(&gUnknown_2000970);
gUnknown_202D68E = 997;
}
if (cVar3 != '\0') {
EnableInterrupts();
}
}
else if (IsFanfare(songIndex)) {
cVar4 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong == songIndex)) {
if (IsMusicPlayerPlaying(INDEX_FANFARE)) {
m4aMPlayFadeOut(&gMPlayInfo_Fanfare,speed);
}
if (cVar4 != '\0') {
EnableInterrupts();
else {
m4aMPlayStop(&gMPlayInfo_Fanfare);
gCurrentFanfareSong = 997;
}
}
if (cVar4 != '\0') {
EnableInterrupts();
}
}
}
#ifdef NONMATCHING
u8 sub_800C5D0(u16 param_1)
bool8 IsFanfareSEPlaying(u16 songIndex)
{
u32 uVar3;
struct unkStruct_3000FD8 *preload;
u32 playerIndex;
struct PMDMusicPlayer *musicPlayer;
register u32 songIndex_u32 asm("r4");
register u32 songIndex_u32_2 asm("r5");
if (sub_800CACC(param_1) != '\0') {
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == param_1)) {
return 1;
songIndex_u32 = songIndex;
songIndex_u32_2 = songIndex_u32;
if (IsFanfare(songIndex_u32)) {
if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong == songIndex_u32)) {
return TRUE;
}
}
else
{
// NOTE: regswap of r5 for r4 here... but is functionally matching
if (sub_800CAAC(param_1) != '\0') {
uVar3 = GetMusicPlayerIndex(param_1);
preload = &gUnknown_3000FD8[uVar3];
if ((1 < uVar3) && (preload->songIndex == param_1)) {
return 1;
if (IsSoundEffect(songIndex_u32)) {
playerIndex = GetMusicPlayerIndex(songIndex_u32);
musicPlayer = &gUnknown_3000FD8[playerIndex];
if ((INDEX_SE1 <= playerIndex) && (musicPlayer->songIndex == songIndex_u32_2)) {
return TRUE;
}
}
}
return 0;
return FALSE;
}
#else
NAKED
u8 sub_800C5D0(u16 param_1)
{
asm_unified("\tpush {r4,r5,lr}\n"
"\tlsls r0, 16\n"
"\tlsrs r4, r0, 16\n"
"\tadds r5, r4, 0\n"
"\tadds r0, r4, 0\n"
"\tbl sub_800CACC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0800C600\n"
"\tldr r0, _0800C5F8\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, 0\n"
"\tbeq _0800C630\n"
"\tldr r0, _0800C5FC\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, r4\n"
"\tbne _0800C630\n"
"\tmovs r0, 0x1\n"
"\tb _0800C632\n"
"\t.align 2, 0\n"
"_0800C5F8: .4byte gUnknown_202D690\n"
"_0800C5FC: .4byte gUnknown_202D68E\n"
"_0800C600:\n"
"\tadds r0, r4, 0\n"
"\tbl sub_800CAAC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0800C630\n"
"\tadds r0, r4, 0\n"
"\tbl GetMusicPlayerIndex\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tlsls r2, r0, 3\n"
"\tldr r1, _0800C62C\n"
"\tadds r2, r1\n"
"\tcmp r0, 0x1\n"
"\tbls _0800C630\n"
"\tldrh r0, [r2, 0x2]\n"
"\tcmp r0, r5\n"
"\tbne _0800C630\n"
"\tmovs r0, 0x1\n"
"\tb _0800C632\n"
"\t.align 2, 0\n"
"_0800C62C: .4byte gUnknown_3000FD8\n"
"_0800C630:\n"
"\tmovs r0, 0\n"
"_0800C632:\n"
"\tpop {r4,r5}\n"
"\tpop {r1}\n"
"\tbx r1");
}
#endif
void SoundVSync(void)
{

View File

@@ -2,6 +2,7 @@
#include "pokemon.h"
#include "file_system.h"
#include "input.h"
#include "constants/mailbox.h"
#include "menu.h"
#include "memory.h"
#include "text.h"
@@ -185,7 +186,7 @@ extern void DisplayMissionObjectives();
extern u8 *GetCurrentMissionText(s16 r0);
extern u8 *sub_80975DC(u32 r0);
extern u8 sub_8099360(u8 *);
extern u8 sub_8099394(u8 *);
extern u8 sub_8099394(volatile u8 *);
extern struct WonderMail *GetJobSlotInfo(u8);
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
extern void sub_80073B8(u32);
@@ -208,7 +209,7 @@ extern void ReturntoGoRescueMenu();
extern void HandlePostOfficeHelpGetHelpMenuSelection();
extern void ReturnToGetHelpMenu();
extern s32 sub_80144A4(s32 *);
extern s32 sub_80969D0(u8);
extern s32 CountJobsinDungeon(u8);
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
@@ -582,7 +583,7 @@ void sub_8031A84(void)
sub_8006518(gUnknown_203B330->unk18);
gUnknown_203B330->unk18[gUnknown_203B330->unk10] = gUnknown_80E1F18;
if (gUnknown_203B330->unkC == 2) {
iVar1 = sub_80969D0(gUnknown_203B330->dungeonIndex);
iVar1 = CountJobsinDungeon(gUnknown_203B330->dungeonIndex);
if (iVar1 == 0) {
iVar1 = 1;
}
@@ -599,7 +600,7 @@ void DisplayMissionObjectives(void)
struct unkStruct_8095228 *iVar8;
struct WonderMail *jobInfo;
u8 auStack248 [100];
u8 local_94 [4];
volatile u8 local_94;
u8 auStack144 [100];
short auStack44;
short local_2a;
@@ -611,18 +612,18 @@ void DisplayMissionObjectives(void)
switch(gUnknown_203B330->unkC)
{
case 1:
sub_8099394(local_94);
iVar8 = sub_8095228(local_94[0]);
sub_8099394(&local_94);
iVar8 = sub_8095228(local_94);
sub_803B6B0(10,16,3,gUnknown_203B330->unk10);
// %dF
sprintf_2(auStack248,gUnknown_80E1F3C,iVar8->floor);
sprintf_2(auStack248,gUnknown_80E1F3C,iVar8->dungeon.dungeonFloor);
xxx_call_draw_string(0x15,16,auStack248,gUnknown_203B330->unk10,0);
// Rescue #C6%s#R
sprintf_2(auStack248,gUnknown_80E1F40,GetMonSpecies(iVar8->clientSpecies));
xxx_call_draw_string(0x28,16,auStack248,gUnknown_203B330->unk10,0);
break;
case 2:
if (sub_80969D0(gUnknown_203B330->dungeonIndex) == 0) {
if (CountJobsinDungeon(gUnknown_203B330->dungeonIndex) == 0) {
// Just go!
xxx_call_draw_string(10,16,gUnknown_80E1F54,gUnknown_203B330->unk10,0);
}
@@ -631,7 +632,7 @@ void DisplayMissionObjectives(void)
yCoord = 16;
// 8 Job Slots... check each of them
for(jobSlotIdx = 0; jobSlotIdx < 8; jobSlotIdx++)
for(jobSlotIdx = 0; jobSlotIdx < MAX_ACCEPTED_JOBS; jobSlotIdx++)
{
jobInfo = GetJobSlotInfo(jobSlotIdx);
if ((((jobInfo->dungeon == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)

View File

@@ -12,7 +12,7 @@
#include "code_8094F88.h"
#include "wonder_mail.h"
extern u8 gUnknown_202EC50[];
extern u8 gRescuePasswordBuffer[];
extern u32 gUnknown_202EC4C;
extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct UnkTextStruct2 gUnknown_80E71E4;
@@ -28,10 +28,10 @@ extern u32 ConvertMenutoRescuePasswordState(u32);
extern void sub_8039174(void);
extern void sub_80155F0(void);
extern void sub_8031E10(void);
extern void sub_8038F98(void);
extern void DisplayPasswordAcceptScreen(void);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_8095228 *r0);
extern void sub_80951BC(struct unkStruct_8095228 *r0);
extern void sub_80951FC(struct unkStruct_8095228 *r0);
@@ -43,7 +43,7 @@ extern void sub_8095274(u32);
extern u32 sub_8031DCC(void);
extern void sub_80391F8(void);
extern void sub_8031E00();
extern void sub_8038DC0(u32);
extern void DisplayRescuePasswordError(u32);
extern struct MainMenu *GetMainMenu(void);
@@ -99,7 +99,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) {
for(counter = 0; counter < 0x36; counter++)
{
gUnknown_202EC50[counter] = 0;
gRescuePasswordBuffer[counter] = 0;
}
gUnknown_203B368 = 0;
}
@@ -117,7 +117,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
case 0x1C:
case 0x1E:
case 0x20:
sub_80151C0(4, gUnknown_202EC50);
sub_80151C0(4, gRescuePasswordBuffer);
break;
case MENU_DISPLAY_RESCUE_PASSWORD:
temp = sub_8095228(0x1F);
@@ -127,7 +127,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
sub_8031D70(0x1F, 0);
break;
case MENU_RESCUE_PASSWORD_ENTRY:
sub_80151C0(4, gUnknown_202EC50);
sub_80151C0(4, gRescuePasswordBuffer);
break;
}
@@ -198,53 +198,53 @@ s32 UpdateRescuePasswordMenu(void)
nextMenu = MENU_FRIEND_RESCUE;
break;
case 3:
switch(sub_8039068(gRescuePasswordMenu->currMenu, gUnknown_202EC50, &local_44)) {
case 0x11:
nextMenu = 0x11;
sub_8038DC0(nextMenu);
switch(sub_8039068(gRescuePasswordMenu->currMenu, gRescuePasswordBuffer, &local_44)) {
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
nextMenu = PASSWORD_ENTRY_INCORRECT_PASSWORD;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0xd:
nextMenu = 0xD;
sub_8038DC0(nextMenu);
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0x12:
nextMenu = 0x12;
sub_8038DC0(nextMenu);
case PASSWORD_ENTRY_NOT_SOS_MAIL:
nextMenu = PASSWORD_ENTRY_NOT_SOS_MAIL;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 7:
nextMenu = 7;
sub_8038DC0(nextMenu);
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
nextMenu = PASSWORD_ENTRY_DUPLICATE_SOS_MAIL;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0x16:
case PASSWORD_ENTRY_SOS_MAIL_SUCCESS:
sub_8095274(local_44.unk10);
sub_8038F98();
DisplayPasswordAcceptScreen();
gRescuePasswordMenu->state = 9;
nextMenu = MENU_NO_SCREEN_CHANGE;
local_44.mailType = 2;
sub_80951BC(&local_44);
break;
case 0x13:
nextMenu = 0x13;
sub_8038DC0(nextMenu);
case PASSWORD_ENTRY_NOT_AOK_MAIL:
nextMenu = PASSWORD_ENTRY_NOT_AOK_MAIL;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 9:
nextMenu = 0x9;
sub_8038DC0(nextMenu);
case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL:
nextMenu = PASSWORD_ENTRY_DUPLICATE_AOK_MAIL;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0x17:
sub_8038F98();
case PASSWORD_ENTRY_AOK_MAIL_SUCCESS:
DisplayPasswordAcceptScreen();
gRescuePasswordMenu->state = 9;
nextMenu = MENU_NO_SCREEN_CHANGE;
local_44.mailType = 5;
@@ -253,22 +253,20 @@ s32 UpdateRescuePasswordMenu(void)
puVar5->mailType = 7;
MemoryFill8((u8 *)&gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
break;
default:
break;
case 0x14:
nextMenu = 0x14;
sub_8038DC0(nextMenu);
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
nextMenu = PASSWORD_ENTRY_NOT_THANK_YOU_MAIL;
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0xb:
nextMenu = 0xb;
sub_8038DC0(nextMenu);
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0x18:
sub_8038F98();
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
DisplayPasswordAcceptScreen();
gRescuePasswordMenu->state = 9;
nextMenu = MENU_NO_SCREEN_CHANGE;
puVar6 = sub_8095228(sub_809539C(4, local_44.unk10));
@@ -291,7 +289,7 @@ s32 UpdateRescuePasswordMenu(void)
{
case 3:
nextMenu = 0x15;
sub_8038DC0(nextMenu);
DisplayRescuePasswordError(nextMenu);
gRescuePasswordMenu->state = 8;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
@@ -323,7 +321,7 @@ s32 UpdateRescuePasswordMenu(void)
sub_8039174();
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_80151C0(4,gUnknown_202EC50);
sub_80151C0(4,gRescuePasswordBuffer);
gRescuePasswordMenu->state = 8;
subtract = gRescuePasswordMenu->currMenu - 0x21;
nextMenu = MENU_FRIEND_RESCUE;
@@ -351,7 +349,7 @@ s32 UpdateRescuePasswordMenu(void)
sub_8039174();
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_80151C0(4,gUnknown_202EC50);
sub_80151C0(4,gRescuePasswordBuffer);
gRescuePasswordMenu->state = ConvertMenutoRescuePasswordState(gRescuePasswordMenu->currMenu);
subtract = gRescuePasswordMenu->currMenu - 0x21;
nextMenu = 0x2a;
@@ -369,35 +367,35 @@ s32 UpdateRescuePasswordMenu(void)
return nextMenu;
}
void sub_8038DC0(u32 param_1)
void DisplayRescuePasswordError(u32 passwordError)
{
sub_8006518(gRescuePasswordMenu->unk1A8);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_80155F0();
switch(param_1) {
case 0x11:
switch(passwordError) {
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0);
break;
case 0x12:
case PASSWORD_ENTRY_NOT_SOS_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0);
break;
case 7:
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0);
break;
case 0xd:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0);
break;
case 0x13:
case PASSWORD_ENTRY_NOT_AOK_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0);
break;
case 9:
case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0);
break;
case 0x14:
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0);
break;
case 0xb:
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0);
break;
case 0x15:
@@ -409,7 +407,7 @@ void sub_8038DC0(u32 param_1)
sub_8035CF4(&gRescuePasswordMenu->unk8,0,1);
}
void sub_8038F98(void)
void DisplayPasswordAcceptScreen(void)
{
sub_8006518(gRescuePasswordMenu->unk1A8);
ResetUnusedInputStruct();
@@ -453,51 +451,51 @@ u32 ConvertMenutoRescuePasswordState(u32 unused)
return uVar1;
}
u32 sub_8039068(u32 param_1, u8 *param_2,struct unkStruct_8095228 *param_3)
u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_8095228 *param_3)
{
if ( (!sub_803D204(param_2,param_3)) || (7 < param_3->mailType) ||
(param_3->floor >= GetDungeonFloorCount(param_3->dungeon)) ||
if ( (!sub_803D204(passwordBuffer, param_3)) || (7 < param_3->mailType) ||
(param_3->dungeon.dungeonFloor >= GetDungeonFloorCount(param_3->dungeon.dungeonIndex)) ||
(param_3->clientSpecies == SPECIES_NONE) || (SPECIES_RAYQUAZA_CUTSCENE < param_3->clientSpecies) ||
(IsInvalidItemReward(param_3->unk20.itemIndex))) {
return 0x11;
return PASSWORD_ENTRY_INCORRECT_PASSWORD;
}
else
switch(param_1)
switch(mailMode)
{
case 0x1C:
case PASSWORD_ENTRY_SOS_MAIL_MODE:
if (param_3->mailType != WONDER_MAIL_TYPE_SOS) {
return 0x12;
return PASSWORD_ENTRY_NOT_SOS_MAIL;
}
else if ( (sub_80952F0(2, param_3->unk10)) || (sub_80952F0(4, param_3->unk10)) || (sub_80952F0(6, param_3->unk10)) || (sub_8095298(param_3->unk10))) {
return 0x7;
return PASSWORD_ENTRY_DUPLICATE_SOS_MAIL;
}
else if (sub_8095190() == -1) {
return 0xd;
}
else {
return 0x16;
return PASSWORD_ENTRY_SOS_MAIL_SUCCESS;
}
break;
case 0x1E:
case PASSWORD_ENTRY_AOK_MAIL_MODE:
if (param_3->mailType != WONDER_MAIL_TYPE_AOK) {
return 0x13;
return PASSWORD_ENTRY_NOT_AOK_MAIL;
}
else if (!sub_80952F0(1, param_3->unk10)) {
return 0x9;
return PASSWORD_ENTRY_DUPLICATE_AOK_MAIL;
}
else {
return 0x17;
return PASSWORD_ENTRY_AOK_MAIL_SUCCESS;
}
break;
case 0x20:
case PASSWORD_ENTRY_THANK_YOU_MAIL_MODE:
if (param_3->mailType != WONDER_MAIL_TYPE_THANK_YOU) {
return 0x14;
return PASSWORD_ENTRY_NOT_THANK_YOU_MAIL;
}
else if ((!sub_80952F0(4, param_3->unk10)) || (param_3->unk28 != sub_8011C34())) {
return 0xb;
return PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL;
}
else {
return 0x18;
return PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS;
}
break;
default:

View File

@@ -8,6 +8,7 @@
#include "memory.h"
#include "menu.h"
#include "input.h"
#include "rescue_password_menu.h"
#include "text.h"
#include "team_inventory.h"
#include "code_800D090.h"
@@ -236,7 +237,7 @@ extern s32 sub_80381F4(u32, void *, void *);
extern void sub_801C8C4(u32, u32, s32 * , u32);
extern u8 sub_809539C(u32, u32);
extern u8 sub_800D588(void);
extern u32 sub_803C200(u8 *, u32);
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void sub_8031D70(u8, u32);
extern void sub_803092C(void);
@@ -829,25 +830,21 @@ void HandleThankYouMailPasswordMenu(void)
switch(return_var)
{
case 3:
switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp))
switch(sub_8039068(PASSWORD_ENTRY_THANK_YOU_MAIL_MODE,gUnknown_203B2C4->passwordBuffer,&temp))
{
case 0x11:
// Wrong password
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80DF1C0, 0, 7, gUnknown_80DEE44, 0, 4, 0, &gUnknown_203B2C4->faceFile, 0xc);
SetThankYouMailMenuState(THANK_YOU_PASSWORD_WRONG);
break;
case 0x14:
// Incorrect password
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
sub_80141B4(gUnknown_80DF208, 0, &gUnknown_203B2C4->faceFile, 0x10d);
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
break;
case 0xB:
// Not eligible to receive
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
break;
case 0x18:
// I think this is when password works successfully
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
uVar1 = sub_809539C(4,temp.unk10);
puVar5 = sub_8095228(uVar1);
*puVar5 = temp;
@@ -1423,7 +1420,7 @@ void UpdateThankYouMailText(void)
else
gUnknown_203B2C4->unk53C.itemRewards[0] = 0; // unk558
gUnknown_203B2C4->unk53C.numItems = 1; // unk55B
gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->dungeon, 0); // unk560
gUnknown_203B2C4->unk53C.teamRankPtsReward = GetDungeonTeamRankPts(&puVar4->dungeon, 0); // unk560
gUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559
gUnknown_203B2C4->unk53C.itemRewards[2] = 0; // unk55A
gUnknown_203B2C4->unk53C.friendAreaReward = 0; // unk55C

View File

@@ -9,6 +9,7 @@
#include "menu.h"
#include "text.h"
#include "team_inventory.h"
#include "rescue_password_menu.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
@@ -1171,7 +1172,7 @@ void sub_8028FDC(void)
{
case 8:
return_var = sub_8095228(gUnknown_203B2C0->unk218);
if(sub_80A2824(return_var->dungeon) == 0)
if(sub_80A2824(return_var->dungeon.dungeonIndex) == 0)
{
sub_8028B04(0x1C);
}
@@ -1459,21 +1460,21 @@ void sub_80293F4(void)
switch(return_var)
{
case 3:
switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp))
switch(sub_8039068(PASSWORD_ENTRY_SOS_MAIL_MODE, (gUnknown_203B2C0->passwordBuffer), &temp))
{
case 17:
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, gUnknown_80DDA48, 0, 4, 0, &gUnknown_203B2C0->faceFile, 0xC);
sub_8028B04(40);
break;
case 18:
case PASSWORD_ENTRY_NOT_SOS_MAIL:
sub_80141B4(gWonderMailSOSPasswordIncorrectText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 7:
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
sub_80141B4(gWonderMailDuplicateText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 22:
case PASSWORD_ENTRY_SOS_MAIL_SUCCESS:
sub_8095274(temp.unk10);
temp.mailType = 2;
sub_80951BC(&temp);

View File

@@ -141,8 +141,8 @@ extern void sub_802B5FC(void);
extern void sub_802B624(void);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
extern void sub_803C37C(u8 *, u32, u8 *);
extern u32 sub_803C200(u8 *, u32);
extern void sub_803C37C(struct DungeonLocation *, u32, u8 *);
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern u8 sub_80023E4(u32);
extern void nullsub_131(void);
@@ -387,7 +387,7 @@ void sub_802B3E0(void)
sub_8097790();
iVar3 = sub_8095228(gUnknown_203B2C8->unk1);
sub_803C37C(&iVar3->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards);
gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->dungeon, 0);
gUnknown_203B2C8->unk114.teamRankPtsReward = GetDungeonTeamRankPts(&iVar3->dungeon, 0);
gUnknown_203B2C8->unk114.itemRewards[1] = 0;
gUnknown_203B2C8->unk114.itemRewards[2] = 0;
gUnknown_203B2C8->unk114.numItems = 10;
@@ -643,7 +643,7 @@ void sub_802B880(void)
void sub_802B8D4(void)
{
s32 iVar2;
s32 retvar;
s32 y;
s32 new_index;
u8 mailIndex;
@@ -654,12 +654,12 @@ void sub_802B8D4(void)
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C);
for(iVar2 = 0; iVar2 < gUnknown_203B2CC->unk52; iVar2++)
{
retvar = sub_8013800(&gUnknown_203B2CC->unk38, iVar2);
y = sub_8013800(&gUnknown_203B2CC->unk38, iVar2);
new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + iVar2;
mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index];
sub_803B6B0(0xA, retvar, 6, gUnknown_203B2CC->unk6C);
sub_803B6B0(0xA, y, 6, gUnknown_203B2CC->unk6C);
sub_802BC7C();
xxx_format_and_draw(0x15, retvar, GetPokemonMailHeadline(mailIndex), gUnknown_203B2CC->unk6C, 0);
xxx_format_and_draw(0x15, y, GetPokemonMailHeadline(mailIndex), gUnknown_203B2CC->unk6C, 0);
}
sub_80073E0(gUnknown_203B2CC->unk6C);
}
@@ -953,3 +953,63 @@ void sub_802BEDC(void)
gUnknown_203B2D8 = NULL;
}
}
NAKED
void sub_802BF30(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _0802BF9C\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA0\n"
"\tmovs r2, 0\n"
"\tmovs r1, 0x1\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA1\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA2\n"
"\tmovs r1, 0xC\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA3\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x1E\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0x18\n"
"\tbl sub_8009614\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x38]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x4E\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x38]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x50\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x40\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0802BF9C: .4byte gUnknown_203B2D8"
);
}

View File

@@ -5,6 +5,21 @@
#include "text.h"
#include "menu.h"
struct unkStruct_802C39C
{
/* 0x0 */ u32 unk0[2];
/* 0x8 */ struct DungeonLocation *unk8;
/* 0xC */ u8 *unkC;
/* 0x10 */ s16 unk10;
/* 0x12 */ s16 unk12;
/* 0x14 */ u8 unk14;
/* 0x15 */ u8 fill15[0x1B];
/* 0x36 */ u8 fill36[0x3C - 0x36];
/* 0x3C */ u8 unk3C[0xC];
/* 0x48 */ u8 fill48[4];
/* 0x4C */ u32 unk4C;
/* 0x50 */ u32 unk50[3];
};
struct unkStruct_203B2E8
{
@@ -143,7 +158,7 @@ extern s32 sub_8013800(void *, u32);
extern void sub_803B35C(void *, u32 *);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_803B6D4(u32 *);
extern void CreateRescueTitle(void *);
extern void sub_8013984(u32 *);
extern void sub_802C6DC(void);
@@ -356,8 +371,7 @@ void sub_802C750(void)
int iVar2;
s32 r4;
s32 r5;
u32 auStack104 [18];
u32 uStack32[4];
struct unkStruct_802C39C local;
sub_8008C54(gUnknown_203B2E8->unk3C);
sub_80073B8(gUnknown_203B2E8->unk3C);
@@ -374,10 +388,10 @@ void sub_802C750(void)
do
{
uVar1 = GetJobSlotInfo(gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + iVar2]);
auStack104[0] = gUnknown_203B2E8->unk3C;
uStack32[0] = sub_8013800(&gUnknown_203B2E8->unk8,iVar2);
sub_803B35C(uVar1,auStack104);
sub_803B6D4(auStack104);
local.unk0[0] = gUnknown_203B2E8->unk3C;
local.unk4C = sub_8013800(&gUnknown_203B2E8->unk8,iVar2);
sub_803B35C(uVar1,local.unk0);
CreateRescueTitle(&local);
iVar2++;
} while( iVar2 < gUnknown_203B2E8->unk22);
sub_80073E0(gUnknown_203B2E8->unk3C);

367
src/wonder_mail_2_mid.c Normal file
View File

@@ -0,0 +1,367 @@
#include "global.h"
#include "constants/mailbox.h"
#include "code_800D090.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "pokemon_mail.h"
bool8 IsMailSlotEmpty(u8);
extern void sub_8013984(void *);
extern void sub_8013848(u32 *, s32, u32, u32);
extern s32 sub_802C474(void);
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern void sub_802C328(void);
extern void sub_802C39C(void);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013660(u32 *);
extern s32 GetKeyPress(u32 *);
extern bool8 sub_80138B8(u32 *, u32);
extern void AddMenuCursorSprite(u32 *);
extern u8 sub_802C4A4(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern s32 sub_8013800(u32 *, s32);
extern u8 *sub_8096574(u32);
extern void sub_803B35C(u8 *, u32 *);
extern u8 gBulletinBoardText[];
extern u8 sub_80968B0(u8 *);
extern void CreateRescueTitle(void *);
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
extern void sub_8012BC4(s32, s32, s32, s32 ,s32 ,s32);
struct unkStruct_203B2D8
{
// size: 0xA4
u8 unk0[4];
u32 unk4;
u8 fill8[0x1C - 0x8];
s16 unk1C;
s16 unk1E;
s16 unk20;
s16 unk22;
s16 fill24;
/* 0x26 */ s16 emptyMailSlots;
u8 fill28[0x38 - 0x28];
u32 unk38;
struct UnkTextStruct2 *unk3C;
struct UnkTextStruct2 unk40[4];
u8 unkA0[4];
};
extern struct unkStruct_203B2D8 *gUnknown_203B2D8;
struct unkStruct_203B2E0
{
// size: 0xA8
u8 unk0[0x8];
u32 unk8;
u8 unkC[0x20 - 0xC];
s16 unk20;
s16 unk22;
s16 unk24;
s16 unk26;
s16 unk28;
s16 unk2A;
u8 fill22[0x3C - 0x2C];
s32 unk3C;
struct UnkTextStruct2 *unk40;
struct UnkTextStruct2 unk44[4];
u8 unkA4[4];
};
extern struct unkStruct_203B2E0 *gUnknown_203B2E0;
struct unkStruct_802C39C
{
/* 0x0 */ u32 unk0[2];
/* 0x8 */ struct DungeonLocation *unk8;
/* 0xC */ u8 *unkC;
/* 0x10 */ s16 unk10;
/* 0x12 */ s16 unk12;
/* 0x14 */ u8 unk14;
/* 0x15 */ u8 fill15[0x1B];
/* 0x34 */ u8 fill34[2];
/* 0x36 */ u8 fill36[0x3C - 0x36];
/* 0x3C */ u8 unk3C[0xC];
/* 0x48 */ u8 fill48[4];
/* 0x4C */ u32 unk4C;
/* 0x50 */ u32 unk50[3];
};
extern struct UnkTextStruct2 gUnknown_80DFCB4;
extern struct UnkTextStruct2 gUnknown_80DFC9C;
extern u16 gUnknown_203B2E4;
extern u8 *sub_8095FE8(u8);
extern u8 sub_80968B0(u8 *);
extern void sub_803B35C(u8 *, u32 *);
extern void CreateRescueTitle(void *);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern u8 gMailboxText[];
extern u8 gAvailablePokemonNames[];
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern void sub_803B6B0(u32, u32, u32, u32);
void CreateMailMenu(void)
{
u8 *pcVar2;
s32 y;
s32 iVar5;
struct unkStruct_802C39C local;
u8 buffer [128];
sub_8008C54(gUnknown_203B2D8->unk38);
sub_80073B8(gUnknown_203B2D8->unk38);
xxx_call_draw_string(gUnknown_203B2D8->unk22 * 8 + 10,0,gMailboxText,gUnknown_203B2D8->unk38,0);
iVar5 = 0;
if (iVar5 < gUnknown_203B2D8->unk1E) {
do {
pcVar2 = sub_8095FE8(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + iVar5]);
local.unk0[0] = gUnknown_203B2D8->unk38;
local.unk4C = sub_8013800(&gUnknown_203B2D8->unk4, iVar5);
if (*pcVar2 == 1) {
y = sub_8013800(&gUnknown_203B2D8->unk4, iVar5);
sub_803B6B0(10,y,6,gUnknown_203B2D8->unk38);
PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct());
sprintf_2(buffer, GetPokemonMailHeadline(pcVar2[5]), gAvailablePokemonNames);
xxx_call_draw_string(0x15,y,buffer,gUnknown_203B2D8->unk38,0);
}
else {
sub_803B35C(pcVar2,local.unk0);
if (sub_80968B0(pcVar2) != 0) {
local.unk3C[11] = 2;
}
CreateRescueTitle(&local);
}
iVar5++;
} while (iVar5 < gUnknown_203B2D8->unk1E);
}
sub_80073E0(gUnknown_203B2D8->unk38);
}
s32 CountEmptyMailSlots(void)
{
s32 mailSlots;
s32 index;
mailSlots = 0;
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
if(!IsMailSlotEmpty(index))
{
gUnknown_203B2D8->unk0[mailSlots] = index;
mailSlots++;
}
}
return mailSlots;
}
bool8 HasNoMailinMailbox(void)
{
s32 index;
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
if(!IsMailSlotEmpty(index))
return FALSE;
}
return TRUE;
}
bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3)
{
if (sub_802C4A4() != 0) {
return FALSE;
}
else
{
if (gUnknown_203B2E0 == NULL) {
gUnknown_203B2E0 = MemoryAlloc(sizeof(struct unkStruct_203B2E0),8);
}
gUnknown_203B2E0->unk3C = param_1;
gUnknown_203B2E0->unk40 = &gUnknown_203B2E0->unk44[param_1];
sub_8006518(gUnknown_203B2E0->unk44);
gUnknown_203B2E0->unk44[gUnknown_203B2E0->unk3C] = gUnknown_80DFCB4;
gUnknown_203B2E0->unk40->unk14 = gUnknown_203B2E0->unkA4;
if (param_2 != NULL) {
gUnknown_203B2E0->unk44[gUnknown_203B2E0->unk3C].unk08 = *param_2;
}
sub_8012D34(gUnknown_203B2E0->unk40,param_3);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E0->unk44,1,1);
sub_8013848(&gUnknown_203B2E0->unk8,sub_802C474(),param_3,param_1);
gUnknown_203B2E0->unk20 = gUnknown_203B2E4;
sub_8013984(&gUnknown_203B2E0->unk8);
sub_802C328();
sub_802C39C();
return TRUE;
}
}
u32 sub_802C1E4(u8 param_1)
{
if (param_1 == '\0') {
sub_8013660(&gUnknown_203B2E0->unk8);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B2E0->unk8))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
if (sub_80138B8(&gUnknown_203B2E0->unk8,1)) {
sub_802C328();
sub_802C39C();
return 1;
}
else {
return 0;
}
}
}
}
u8 sub_802C26C(void)
{
return gUnknown_203B2E0->unk0[(gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24) + gUnknown_203B2E0->unk20];
}
void sub_802C28C(u32 r0)
{
u8 r0_u8;
r0_u8 = r0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E0->unk44, 0, 0);
gUnknown_203B2E0->unk2A = sub_802C474();
sub_8013984(&gUnknown_203B2E0->unk8);
sub_802C328();
sub_802C39C();
if(r0_u8)
AddMenuCursorSprite(&gUnknown_203B2E0->unk8);
}
void sub_802C2D4(void)
{
if(gUnknown_203B2E0 != NULL)
{
gUnknown_203B2E4 = gUnknown_203B2E0->unk20;
gUnknown_203B2E0->unk44[gUnknown_203B2E0->unk3C] = gUnknown_80DFC9C;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E0->unk44, 1, 1);
MemoryFree(gUnknown_203B2E0);
gUnknown_203B2E0 = NULL;
}
}
NAKED
void sub_802C328(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _0802C398\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x28]\n"
"\tadds r0, 0xA4\n"
"\tmovs r2, 0\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x26]\n"
"\tadds r0, 0xA5\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA6\n"
"\tmovs r1, 0xC\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA7\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x22\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0x18\n"
"\tbl sub_8009614\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x3C]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x52\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x3C]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x54\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x44\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0802C398: .4byte gUnknown_203B2E0");
}
void sub_802C39C(void)
{
u32 uVar1;
u8 *uVar3;
s32 iVar4;
s32 x;
s32 iVar6;
struct unkStruct_802C39C local;
sub_8008C54(gUnknown_203B2E0->unk3C);
sub_80073B8(gUnknown_203B2E0->unk3C);
iVar4 = gUnknown_203B2E0->unk26 * 8;
x = iVar4;
x += 10;
xxx_call_draw_string(x,0,gBulletinBoardText,gUnknown_203B2E0->unk3C,0);
iVar4 += 4;
x = iVar4 + gUnknown_203B2E0->unkA4[2] * 8;
sub_8012BC4(x,0,gUnknown_203B2E0->unk26 + 1,2,7,gUnknown_203B2E0->unk3C);
iVar6 = 0;
if(iVar6 < gUnknown_203B2E0->unk22)
do
{
uVar1 = (gUnknown_203B2E0->unk0[gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24 + iVar6]);
uVar3 = sub_8096574(uVar1);
local.unk0[0] = gUnknown_203B2E0->unk3C;
local.unk4C = sub_8013800(&gUnknown_203B2E0->unk8,iVar6);
sub_803B35C(uVar3,local.unk0);
if (sub_80968B0(sub_8096574(uVar1)) != '\0') {
local.unk3C[11] = 2;
}
CreateRescueTitle(&local);
iVar6++;
} while (iVar6 < gUnknown_203B2E0->unk22);
sub_80073E0(gUnknown_203B2E0->unk3C);
}

View File

@@ -44,8 +44,8 @@ struct unkStruct_203B310
{
// size: 0x84
/* 0x0 */ u32 state;
u32 unk4;
u8 unk8;
/* 0x4 */ u32 nextState;
/* 0x8 */ bool8 displayClientDialogueSprite; // true to display the dialogue sprite for the client
/* 0x9 */ u8 currTeamRank; // team rank
u8 unkA;
u8 unkB;
@@ -354,7 +354,7 @@ void sub_802F1E8(void)
u32 sub_802F204(struct unkStruct_802F204 *r0, u8 r1)
u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 r1)
{
struct unkStruct_203B310 *preload;
@@ -363,7 +363,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, u8 r1)
gUnknown_203B310 = MemoryAlloc(sizeof(struct unkStruct_203B310), 8);
gUnknown_203B310->unk10 = r0;
gUnknown_203B310->itemRewardIndex = 0;
gUnknown_203B310->unk8 = r1;
gUnknown_203B310->displayClientDialogueSprite = r1;
// NOTE: dumb var to get correct ordering
preload = gUnknown_203B310;
@@ -459,9 +459,9 @@ void HandleMissionReward(void)
}
else {
gUnknown_202DE30 = moneyReward;
if (gUnknown_203B310->unk8 != '\0') {
if (gUnknown_203B310->displayClientDialogueSprite) {
sub_80141B4(gUnknown_80E0434,0,&gUnknown_203B310->faceFile,0x10d);
gUnknown_203B310->unk4 = 1;
gUnknown_203B310->nextState = 1;
}
else {
sub_802F2E8(1);
@@ -477,7 +477,7 @@ void HandleMissionReward(void)
else {
sub_80141B4(gUnknown_80E0484,0,0,0x101);
}
gUnknown_203B310->unk4 = 2;
gUnknown_203B310->nextState = 2;
break;
case 2:
if (gUnknown_203B310->unk10->friendAreaReward == '\0') {
@@ -486,9 +486,9 @@ void HandleMissionReward(void)
}
else {
sub_8092578(gUnknown_202E628,gUnknown_203B310->unk10->friendAreaReward,0);
if (gUnknown_203B310->unk8 != '\0') {
if (gUnknown_203B310->displayClientDialogueSprite) {
sub_80141B4(gUnknown_80E04B4,0,&gUnknown_203B310->faceFile,0x10d);
gUnknown_203B310->unk4 = 3;
gUnknown_203B310->nextState = 3;
}
else {
sub_802F2E8(3);
@@ -516,7 +516,7 @@ void HandleMissionReward(void)
sub_80141B4(gUnknown_80E05FC,0,0,0x101);
}
}
gUnknown_203B310->unk4 = 4;
gUnknown_203B310->nextState = 4;
break;
case 4:
uVar7 = gUnknown_203B310->unk10->itemRewards[0];
@@ -542,9 +542,9 @@ void HandleMissionReward(void)
local_20.unk4 = 0;
local_20.unk8 = 1;
sub_8090E14(gUnknown_202DEA8,(struct ItemSlot *)&local_14,&local_20);
if (gUnknown_203B310->unk8 != '\0') {
if (gUnknown_203B310->displayClientDialogueSprite) {
sub_80141B4(gUnknown_80E0640,0,&gUnknown_203B310->faceFile,0x10d);
gUnknown_203B310->unk4 = 5;
gUnknown_203B310->nextState = 5;
}
else
{
@@ -594,11 +594,11 @@ void HandleMissionReward(void)
PlaySound(0xcb);
if (gUnknown_203B310->currTeamRank != GetRescueTeamRank()) {
// Rank up time
gUnknown_203B310->unk4 = 8;
gUnknown_203B310->nextState = 8;
}
else {
// No rank up.. close out
gUnknown_203B310->unk4 = 9;
gUnknown_203B310->nextState = 9;
}
gUnknown_202DE30 = gUnknown_203B310->unk10->teamRankPtsReward;
sub_80141B4(gUnknown_80E0670,0,0,0x101);
@@ -607,7 +607,7 @@ void HandleMissionReward(void)
case 8:
// Rank up
PlaySound(0xc9);
gUnknown_203B310->unk4 = 9;
gUnknown_203B310->nextState = 9;
rankString = GetTeamRankString(gUnknown_203B310->currTeamRank);
strcpy(gUnknown_202E038,rankString);
rankString = GetTeamRankString(GetRescueTeamRank());
@@ -639,7 +639,7 @@ void sub_802F718(void)
s32 temp;
if (sub_80144A4(&temp) == 0) {
sub_802F2E8(gUnknown_203B310->unk4);
sub_802F2E8(gUnknown_203B310->nextState);
}
}

View File

@@ -2,6 +2,8 @@
#include "text.h"
#include "input.h"
#include "memory.h"
#include "item.h"
#include "sub_8095228.h"
struct unkStruct_203B320
{
@@ -9,7 +11,8 @@ struct unkStruct_203B320
u8 unk0[4];
u8 fill4[0x20 - 4];
u32 unk20;
u8 fill24[0x3C - 0x24];
u32 unk24;
u8 fill28[0x3C - 0x28];
s16 unk3C;
s16 unk3E;
s16 unk40;
@@ -25,6 +28,23 @@ struct unkStruct_203B320
extern struct unkStruct_203B320 *gUnknown_203B320;
extern struct UnkTextStruct2 gUnknown_80E083C;
extern struct UnkTextStruct2 gUnknown_80E0854;
extern u8 *gUnknown_80E086C[];
struct unkStruct_802C39C
{
/* 0x0 */ u32 unk0[2];
/* 0x8 */ struct DungeonLocation *unk8;
/* 0xC */ u8 *unkC;
/* 0x10 */ s16 unk10;
/* 0x12 */ s16 unk12;
/* 0x14 */ u8 unk14;
/* 0x15 */ u8 fill15[0x1B];
/* 0x34 */ u8 fill34[2];
/* 0x36 */ u8 fill36[0x3C - 0x36];
/* 0x3C */ u8 unk3C[0x10];
/* 0x4C */ u32 unk4C;
/* 0x50 */ u32 unk50[3];
};
extern u8 sub_8030C20(u32);
extern s32 sub_8030A74(void);
@@ -33,12 +53,19 @@ extern void sub_803092C(void);
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
extern void sub_8013818(void *, u32, u32, u32);
extern u8 sub_80138B8(u8 *, u32);
extern void sub_8013660(u8 *);
extern s32 GetKeyPress(u8 *);
extern u8 sub_80138B8(u32 *, u32);
extern void sub_8013660(u32 *);
extern s32 GetKeyPress(u32 *);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(u8 *);
extern void AddMenuCursorSprite(u8 *);
extern void sub_8013984(u32 *);
extern void AddMenuCursorSprite(u32 *);
extern s32 sub_8013800(void *, u32);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void CreateRescueTitle(void *);
u32 sub_80306A8(u32 r0, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
{
@@ -63,7 +90,7 @@ u32 sub_80306A8(u32 r0, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
sub_8012D08(gUnknown_203B320->unk5C, r3);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B320->unk60, 1, 1);
sub_8013818(gUnknown_203B320->fill24, sub_8030A74(), r3, r1);
sub_8013818(&gUnknown_203B320->unk24, sub_8030A74(), r3, r1);
sub_80308A0();
sub_803092C();
return 1;
@@ -73,10 +100,10 @@ u32 sub_8030768(u8 r0)
{
if(r0 == 0)
{
sub_8013660(gUnknown_203B320->fill24);
sub_8013660(&gUnknown_203B320->unk24);
return 0;
}
switch(GetKeyPress(gUnknown_203B320->fill24))
switch(GetKeyPress(&gUnknown_203B320->unk24))
{
case 4:
PlayMenuSoundEffect(4);
@@ -88,7 +115,7 @@ u32 sub_8030768(u8 r0)
PlayMenuSoundEffect(0);
return 3;
default:
if(sub_80138B8(gUnknown_203B320->fill24, 1) != 0)
if(sub_80138B8(&gUnknown_203B320->unk24, 1) != 0)
{
sub_80308A0();
sub_803092C();
@@ -111,12 +138,12 @@ void sub_8030810(u32 r0)
r0_u8 = r0; // cast needed..
gUnknown_203B320->unk46 = sub_8030A74();
sub_8013984(gUnknown_203B320->fill24);
sub_8013984(&gUnknown_203B320->unk24);
sub_80308A0();
sub_803092C();
if(r0_u8 != 0)
AddMenuCursorSprite(gUnknown_203B320->fill24);
AddMenuCursorSprite(&gUnknown_203B320->unk24);
}
void sub_803084C()
@@ -135,3 +162,132 @@ u8 *sub_8030894()
{
return gUnknown_203B320->unk0;
}
NAKED
void sub_80308A0(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _08030928\n"
"\tldr r0, [r4]\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x44\n"
"\tldrh r1, [r1]\n"
"\tadds r0, 0xC0\n"
"\tmovs r2, 0\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x42\n"
"\tldrh r1, [r1]\n"
"\tadds r0, 0xC1\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xC2\n"
"\tmovs r1, 0xC\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xC3\n"
"\tstrb r2, [r0]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x60\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x3E\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x58]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x6E\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x58]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x70\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x60\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08030928: .4byte gUnknown_203B320");
}
void sub_803092C(void)
{
struct unkStruct_8095228 *pbVar2;
s32 r4;
s32 r5;
s32 r6;
struct unkStruct_802C39C local;
sub_8008C54(gUnknown_203B320->unk58);
sub_80073B8(gUnknown_203B320->unk58);
r4 = gUnknown_203B320->unk42 * 8;
r5 = r4;
r5 += 10;
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->unk20],gUnknown_203B320->unk58,0);
r4 += 4;
r5 = r4 + gUnknown_203B320->unkC0[2] * 8;
sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58);
r6 = 0;
if (r6 < gUnknown_203B320->unk3E) {
do {
pbVar2 = sub_8095228(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + r6]);
local.unk0[0] = gUnknown_203B320->unk58;
local.unk4C = sub_8013800(&gUnknown_203B320->unk24,r6);
local.unk3C[8] = 7;
local.unk3C[10] = 0;
local.unk3C[12] = 0;
local.unk8 = &pbVar2->dungeon;
local.unkC = pbVar2->padding2;
local.unk10 = (pbVar2->clientSpecies);
local.unk12 = (pbVar2->clientSpecies);
local.unk14 = 0;
local.fill15[0x19] = 5;
switch(pbVar2->mailType)
{
case 4:
local.unk3C[11] = 3;
break;
case 5:
local.unk3C[11] = 4;
break;
case 1:
case 2:
local.unk3C[11]= 1;
break;
default:
local.unk3C[11]= 0;
break;
}
CreateRescueTitle(&local);
r6++;
} while (r6 < gUnknown_203B320->unk3E);
}
sub_80073E0(gUnknown_203B320->unk58);
}

View File

@@ -1,38 +1,53 @@
gMPlayTrack_BGM = .; /* 2000000 */
. += 0x3C0;
gMPlayTrack_Unknown1 = .; /* 20003C0 */
gMPlayTrack_Fanfare = .; /* 20003C0 */
. += 0x1E0;
gMPlayTrack_Unknown2 = .; /* 20005A0 */
gMPlayTrack_SE1 = .; /* 20005A0 */
. += 0x50;
gMPlayTrack_Unknown3 = .; /* 20005F0 */
gMPlayTrack_SE2 = .; /* 20005F0 */
. += 0x50;
gMPlayTrack_Unknown4 = .; /* 2000640 */
gMPlayTrack_SE3 = .; /* 2000640 */
. += 0xA0;
gMPlayTrack_Unknown5 = .; /* 20006E0 */
gMPlayTrack_SE4 = .; /* 20006E0 */
. += 0xA0;
gMPlayTrack_Unknown6 = .; /* 2000780 */
gMPlayTrack_SE5 = .; /* 2000780 */
. += 0xA0;
gMPlayTrack_Unknown7 = .; /* 2000820 */
gMPlayTrack_SE6 = .; /* 2000820 */
. += 0x50;
gUnknown_2000870 = .; /* 2000870 */
. += 0x80;
gMPlayInfo_SE4 = .; /* 2000870 */
. += 0x40;
gMPlayInfo_SE5 = .; /* 20008B0 */
. += 0x40;
gMPlayInfo_BGM = .; /* 20008F0 */
. += 0x80;
. += 0x40;
gUnknown_2000970 = .; /* 2000970 */
. += 0xC0;
gMPlayInfo_SE6 = .; /* 2000930 */
. += 0x40;
gMPlayInfo_Fanfare = .; /* 2000970 */
. += 0x40;
gMPlayInfo_SE1 = .; /* 20009B0 */
. += 0x40;
gMPlayInfo_SE3 = .; /* 20009F0 */
. += 0x40;
gMPlayMemAccArea = .; /* 2000A30 */
. += 0x50;
. += 0x10;
gMPlayInfo_SE2 = .; /* 2000A40 */
. += 0x40;
gUnknown_2000A80 = .; /* 2000A80 */
. += 0x8;
@@ -305,7 +320,7 @@ gCurrentBGSong = .; /* 202D68A */
gUnknown_202D68C = .; /* 202D68C */
. += 0x2;
gUnknown_202D68E = .; /* 202D68E */
gCurrentFanfareSong = .; /* 202D68E */
. += 0x2;
gUnknown_202D690 = .; /* 202D690 */
@@ -314,7 +329,7 @@ gUnknown_202D690 = .; /* 202D690 */
gUnknown_202D692 = .; /* 202D692 */
. += 0x2;
gUnknown_202D694 = .; /* 202D694 */
gRestartBGM = .; /* 202D694 */
. += 0x4;
gBG0Control = .; /* 202D698 */
@@ -537,7 +552,7 @@ gUnknown_202EC48 = .; /* 202EC48 */
gUnknown_202EC4C = .; /* 202EC4C */
. += 0x4;
gUnknown_202EC50 = .; /* 202EC50 */
gRescuePasswordBuffer = .; /* 202EC50 */
. += 0x38;
gDungeonNameBannerPalette = .; /* 202EC88 */