Merge pull request #206 from SethBarberee/july_august_2024

July august 2024
This commit is contained in:
AnonymousRandomPerson
2024-08-22 23:02:45 -04:00
committed by GitHub
78 changed files with 5973 additions and 8213 deletions

File diff suppressed because it is too large Load Diff

1281
asm/code_800ED38.s Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1821
asm/code_8015080.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -5,376 +5,6 @@
.text
thumb_func_start sub_803D204
sub_803D204:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xA4
adds r2, r0, 0
mov r9, r1
movs r6, 0
add r4, sp, 0x5C
adds r0, r4, 0
adds r1, r2, 0
movs r2, 0x36
bl MemoryCopy8
movs r2, 0
mov r8, r4
add r5, sp, 0x24
ldr r4, _0803D2A8
mov r12, r4
mov r10, r5
_0803D22E:
movs r1, 0
mov r3, r12
adds r0, r2, r3
adds r3, r2, 0x1
ldrb r0, [r0]
cmp r1, r0
beq _0803D24A
adds r0, r2, r4
_0803D23E:
adds r1, 0x1
cmp r1, 0x35
bgt _0803D24A
ldrb r7, [r0]
cmp r1, r7
bne _0803D23E
_0803D24A:
mov r7, r10
adds r0, r7, r2
add r1, r8
ldrb r1, [r1]
strb r1, [r0]
adds r2, r3, 0
cmp r2, 0x35
ble _0803D22E
adds r0, r5, 0
mov r1, sp
movs r2, 0x36
bl sub_803D110
lsls r0, 24
cmp r0, 0
beq _0803D2AC
movs r2, 0x1
_0803D26C:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
adds r2, 0x1
cmp r2, 0x21
ble _0803D26C
mov r0, sp
ldrb r0, [r0]
cmp r0, r6
bne _0803D2AC
add r4, sp, 0x94
adds r1, 0x1
adds r0, r4, 0
movs r2, 0x21
bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl sub_8095774
adds r0, r4, 0
bl nullsub_102
movs r0, 0x1
b _0803D2AE
.align 2, 0
_0803D2A8: .4byte gUnknown_80F43F0
_0803D2AC:
movs r0, 0
_0803D2AE:
add sp, 0xA4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_803D204
thumb_func_start sub_803D2C0
sub_803D2C0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xA4
mov r9, r0
adds r6, r1, 0
movs r5, 0
add r4, sp, 0x94
mov r1, sp
adds r1, 0x1
add r7, sp, 0x24
add r0, sp, 0x5C
mov r8, r0
movs r2, 0
mov r0, sp
adds r0, 0x21
_0803D2E2:
strb r2, [r0]
subs r0, 0x1
cmp r0, sp
bge _0803D2E2
adds r0, r4, 0
movs r2, 0x21
bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl sub_8095824
adds r0, r4, 0
bl nullsub_102
movs r2, 0x1
_0803D302:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r5, r0
lsls r0, 24
lsrs r5, r0, 24
adds r2, 0x1
cmp r2, 0x21
ble _0803D302
mov r0, sp
strb r5, [r0]
adds r0, r7, 0
movs r2, 0x36
bl sub_803D1A8
movs r2, 0
mov r4, r8
ldr r5, _0803D354
adds r3, r7, 0
_0803D32A:
adds r0, r2, r5
ldrb r1, [r0]
adds r1, r4, r1
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x35
ble _0803D32A
mov r0, r9
mov r1, r8
movs r2, 0x36
bl MemoryCopy8
add sp, 0xA4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803D354: .4byte gUnknown_80F43F0
thumb_func_end sub_803D2C0
thumb_func_start DecodeWonderMailPassword
DecodeWonderMailPassword:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x50
adds r2, r0, 0
mov r9, r1
movs r6, 0
add r4, sp, 0x28
adds r0, r4, 0
adds r1, r2, 0
movs r2, 0x18
bl MemoryCopy8
movs r2, 0
mov r8, r4
add r5, sp, 0x10
ldr r4, _0803D3FC
mov r12, r4
mov r10, r5
_0803D382:
movs r1, 0
mov r3, r12
adds r0, r2, r3
adds r3, r2, 0x1
ldrb r0, [r0]
cmp r1, r0
beq _0803D39E
adds r0, r2, r4
_0803D392:
adds r1, 0x1
cmp r1, 0x17
bgt _0803D39E
ldrb r7, [r0]
cmp r1, r7
bne _0803D392
_0803D39E:
mov r7, r10
adds r0, r7, r2
add r1, r8
ldrb r1, [r1]
strb r1, [r0]
adds r2, r3, 0
cmp r2, 0x17
ble _0803D382
adds r0, r5, 0
mov r1, sp
movs r2, 0x18
bl sub_803D110
lsls r0, 24
cmp r0, 0
beq _0803D400
movs r2, 0x1
_0803D3C0:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
adds r2, 0x1
cmp r2, 0xE
ble _0803D3C0
mov r0, sp
ldrb r0, [r0]
cmp r0, r6
bne _0803D400
add r4, sp, 0x40
adds r1, 0x1
adds r0, r4, 0
movs r2, 0xC
bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl RestoreWonderMail
adds r0, r4, 0
bl nullsub_102
movs r0, 0x1
b _0803D402
.align 2, 0
_0803D3FC: .4byte gUnknown_80F4426
_0803D400:
movs r0, 0
_0803D402:
add sp, 0x50
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end DecodeWonderMailPassword
thumb_func_start sub_803D414
sub_803D414:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x50
mov r9, r0
adds r6, r1, 0
movs r5, 0
add r4, sp, 0x40
mov r1, sp
adds r1, 0x1
add r7, sp, 0x10
add r0, sp, 0x28
mov r8, r0
movs r2, 0
mov r0, sp
adds r0, 0xE
_0803D436:
strb r2, [r0]
subs r0, 0x1
cmp r0, sp
bge _0803D436
adds r0, r4, 0
movs r2, 0xC
bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl SaveWonderMail
adds r0, r4, 0
bl nullsub_102
movs r2, 0x1
_0803D456:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r5, r0
lsls r0, 24
lsrs r5, r0, 24
adds r2, 0x1
cmp r2, 0xE
ble _0803D456
mov r0, sp
strb r5, [r0]
adds r0, r7, 0
movs r2, 0x18
bl sub_803D1A8
movs r2, 0
mov r4, r8
ldr r5, _0803D4A8
adds r3, r7, 0
_0803D47E:
adds r0, r2, r5
ldrb r1, [r0]
adds r1, r4, r1
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x17
ble _0803D47E
mov r0, r9
mov r1, r8
movs r2, 0x18
bl MemoryCopy8
add sp, 0x50
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803D4A8: .4byte gUnknown_80F4426
thumb_func_end sub_803D414
thumb_func_start sub_803D4AC
sub_803D4AC:
ldr r2, _0803D4C4
ldr r0, [r2]
ldr r1, _0803D4C8
adds r0, r1
movs r1, 0x63
strb r1, [r0]
ldr r0, [r2]
ldr r1, _0803D4CC
adds r0, r1
movs r1, 0xFF
strb r1, [r0]
bx lr
.align 2, 0
_0803D4C4: .4byte gDungeon
_0803D4C8: .4byte 0x0001c570
_0803D4CC: .4byte 0x0001c571
thumb_func_end sub_803D4AC
thumb_func_start sub_803D4D0
sub_803D4D0:
push {r4-r7,lr}

View File

@@ -1,199 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803E490
sub_803E490:
push {r4,r5,lr}
sub sp, 0x8
ldr r1, _0803E4D8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bl xxx_draw_string_80524F0
bl sub_8085F78
movs r0, 0x1
bl sub_803F580
ldr r2, _0803E4DC
ldr r1, [r2]
ldr r3, _0803E4E0
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
beq _0803E4EC
ldr r4, _0803E4E4
adds r1, r4
movs r0, 0x2
strb r0, [r1]
ldr r1, [r2]
ldr r2, _0803E4E8
adds r0, r1, r2
movs r3, 0
ldrsh r0, [r0, r3]
subs r4, 0x16
adds r1, r4
movs r2, 0
ldrsh r1, [r1, r2]
bl SetBG2RegOffsets
b _0803E4FC
.align 2, 0
_0803E4D8: .4byte gUnknown_202EDD4
_0803E4DC: .4byte gDungeon
_0803E4E0: .4byte 0x0001821a
_0803E4E4: .4byte 0x00018208
_0803E4E8: .4byte 0x000181f0
_0803E4EC:
ldr r3, _0803E628
adds r1, r3
movs r0, 0x3
strb r0, [r1]
movs r0, 0
movs r1, 0
bl SetBG2RegOffsets
_0803E4FC:
ldr r4, _0803E62C
ldr r2, [r4]
ldr r5, _0803E630
adds r0, r2, r5
movs r1, 0
ldrsh r0, [r0, r1]
ldr r3, _0803E634
adds r1, r2, r3
movs r3, 0
ldrsh r1, [r1, r3]
ldr r3, _0803E638
adds r2, r3
ldr r2, [r2]
subs r1, r2
bl SetBG3RegOffsets
bl sub_806CC10
bl sub_804522C
bl sub_803F9CC
ldr r0, [r4]
adds r0, r5
bl sub_800F7D0
ldr r1, [r4]
ldrh r2, [r1, 0x12]
movs r3, 0x12
ldrsh r0, [r1, r3]
cmp r0, 0x63
bgt _0803E540
adds r0, r2, 0x1
strh r0, [r1, 0x12]
_0803E540:
ldr r0, [r4]
adds r0, r5
bl sub_800E90C
bl sub_8042E5C
ldr r0, _0803E63C
ldr r0, [r0]
cmp r0, 0
beq _0803E562
cmp r0, 0x3
beq _0803E562
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0x6
bne _0803E566
_0803E562:
bl sub_8040894
_0803E566:
bl sub_803ECE0
bl sub_803EDF0
ldr r0, _0803E62C
ldr r3, [r0]
ldr r4, _0803E644
adds r0, r3, r4
ldrb r0, [r0]
cmp r0, 0
beq _0803E5A2
ldr r1, _0803E648
adds r0, r3, r1
ldr r0, [r0]
cmp r0, 0x3
beq _0803E5A2
ldr r0, _0803E64C
ldrb r0, [r0]
ldr r1, _0803E650
ldr r2, _0803E654
ldr r2, [r2]
str r2, [sp]
movs r4, 0xBE
lsls r4, 1
adds r2, r3, r4
str r2, [sp, 0x4]
movs r2, 0xA0
movs r3, 0x20
bl sub_8004AF0
_0803E5A2:
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0xA]
bl nullsub_8
bl sub_8005180
bl nullsub_12
bl sub_80060EC
ldr r1, _0803E658
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0803E65C
ldr r0, [r0]
bl IncrementPlayTime
bl sub_800CB20
bl LoadBufferedInputs
bl CopySpritesToOam
bl nullsub_13
bl sub_8005304
bl nullsub_14
bl TransferBGPaletteBuffer
bl sub_8009908
bl xxx_call_update_bg_vram
bl sub_8040788
bl xxx_call_update_bg_sound_input
ldr r0, _0803E62C
ldr r0, [r0]
ldr r1, _0803E660
adds r0, r1
movs r1, 0
strb r1, [r0]
bl UpdateDungeonMusic
bl sub_8011860
bl sub_8040B60
movs r0, 0
bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r1, _0803E664
ldr r0, [r1]
subs r0, 0x1
str r0, [r1]
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E628: .4byte 0x00018208
_0803E62C: .4byte gDungeon
_0803E630: .4byte 0x000181f0
_0803E634: .4byte 0x000181f2
_0803E638: .4byte 0x000181fc
_0803E63C: .4byte gUnknown_202EDD0
_0803E640: .4byte gGameOptionsRef
_0803E644: .4byte 0x00018215
_0803E648: .4byte 0x0001c06c
_0803E64C: .4byte gUnknown_203B40D
_0803E650: .4byte gUnknown_202EE8C
_0803E654: .4byte gUnknown_202EDC8
_0803E658: .4byte gUnknown_202EDCC
_0803E65C: .4byte gPlayTimeRef
_0803E660: .4byte 0x00018213
_0803E664: .4byte gUnknown_202EDD4
thumb_func_end sub_803E490
@ https://decomp.me/scratch/biQXr (kermalis 100%) `void sub_803E668(u32)`
.align 2, 0

View File

@@ -5,176 +5,6 @@
.text
thumb_func_start sub_803E724
sub_803E724:
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _0803E744
movs r6, 0xF0
_0803E72C:
adds r0, r4, 0
bl sub_803E46C
ldrh r1, [r5]
adds r0, r6, 0
ands r0, r1
cmp r0, 0
bne _0803E72C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803E744: .4byte gRealInputs
thumb_func_end sub_803E724
thumb_func_start sub_803E748
sub_803E748:
push {r4,r5,lr}
movs r5, 0x1F
ldr r1, _0803E7B8
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0
str r0, [r1]
movs r0, 0x1
movs r1, 0x1F
bl sub_803E874
movs r4, 0
_0803E762:
cmp r4, 0x1F
bgt _0803E780
subs r5, 0x2
cmp r5, 0
bgt _0803E780
movs r5, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E7C0
ldr r0, [r0]
ldr r1, _0803E7C4
adds r0, r1
strb r5, [r0]
_0803E780:
cmp r4, 0xB
ble _0803E790
ldr r1, _0803E7BC
ldr r0, [r1]
cmp r0, 0x1E
bgt _0803E790
adds r0, 0x1
str r0, [r1]
_0803E790:
movs r0, 0x1
adds r1, r5, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
adds r4, 0x1
cmp r4, 0x2B
ble _0803E762
ldr r1, _0803E7B8
movs r0, 0
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0x1F
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E7B8: .4byte gUnknown_203B40D
_0803E7BC: .4byte gUnknown_202EDC8
_0803E7C0: .4byte gDungeon
_0803E7C4: .4byte 0x00018217
thumb_func_end sub_803E748
thumb_func_start sub_803E7C8
sub_803E7C8:
push {r4,r5,lr}
movs r4, 0x1F
ldr r1, _0803E820
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E824
movs r0, 0
str r0, [r1]
movs r0, 0x5
bl sub_803E46C
movs r5, 0
_0803E7E0:
movs r0, 0x1
adds r1, r4, 0
bl sub_803E874
cmp r5, 0x1F
bgt _0803E806
subs r4, 0x2
cmp r4, 0
bgt _0803E806
movs r4, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E828
ldr r0, [r0]
ldr r1, _0803E82C
adds r0, r1
strb r4, [r0]
_0803E806:
movs r0, 0x5
bl sub_803E46C
adds r5, 0x1
cmp r5, 0x2B
ble _0803E7E0
ldr r1, _0803E820
movs r0, 0
strb r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E820: .4byte gUnknown_203B40D
_0803E824: .4byte gUnknown_202EDC8
_0803E828: .4byte gDungeon
_0803E82C: .4byte 0x00018217
thumb_func_end sub_803E7C8
thumb_func_start sub_803E830
sub_803E830:
push {r4,r5,lr}
ldr r1, _0803E86C
movs r0, 0x1
strb r0, [r1]
ldr r5, _0803E870
movs r4, 0x1F
_0803E83C:
movs r0, 0
movs r1, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
ldr r0, [r5]
cmp r0, 0
ble _0803E854
subs r0, 0x1
str r0, [r5]
_0803E854:
subs r4, 0x1
cmp r4, 0
bge _0803E83C
ldr r0, _0803E870
movs r1, 0
str r1, [r0]
ldr r0, _0803E86C
strb r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E86C: .4byte gUnknown_203B40D
_0803E870: .4byte gUnknown_202EDC8
thumb_func_end sub_803E830
thumb_func_start sub_803E874
sub_803E874:
push {r4-r7,lr}

View File

@@ -2594,103 +2594,4 @@ _08069D0E:
bx r0
thumb_func_end sub_8069844
thumb_func_start sub_8069D18
sub_8069D18:
push {r4,r5,lr}
ldr r3, [r1, 0x70]
ldr r4, _08069D48
adds r3, 0x46
ldrb r2, [r3]
lsls r2, 2
adds r2, r4
ldrh r2, [r2]
ldrh r5, [r1, 0x4]
adds r2, r5
strh r2, [r0]
ldrb r2, [r3]
lsls r2, 2
adds r2, r4
ldrh r2, [r2, 0x2]
ldrh r1, [r1, 0x6]
adds r2, r1
strh r2, [r0, 0x2]
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08069D48: .4byte gAdjacentTileOffsets
thumb_func_end sub_8069D18
thumb_func_start sub_8069D4C
sub_8069D4C:
push {r4-r6,lr}
sub sp, 0xC
adds r5, r0, 0
ldr r4, [r1, 0x70]
ldrh r0, [r4, 0x2]
strh r0, [r5]
ldr r0, [r1, 0x4]
str r0, [r5, 0x4]
adds r0, r4, 0
adds r0, 0xF7
ldrb r0, [r0]
cmp r0, 0
beq _08069D6A
ldrh r0, [r4, 0x12]
b _08069D6C
_08069D6A:
ldrh r0, [r4, 0x10]
_08069D6C:
strh r0, [r5, 0x8]
ldrb r0, [r4, 0x9]
strh r0, [r5, 0xE]
movs r0, 0x2
ldrsh r1, [r4, r0]
ldrb r2, [r4, 0x9]
mov r0, sp
bl GetPokemonLevelData
ldr r0, [sp]
str r0, [r5, 0x10]
ldrb r0, [r4, 0x14]
strb r0, [r5, 0xA]
ldrb r0, [r4, 0x15]
strb r0, [r5, 0xB]
ldrb r0, [r4, 0x16]
strb r0, [r5, 0xC]
ldrb r0, [r4, 0x17]
strb r0, [r5, 0xD]
ldr r0, [r4, 0x60]
str r0, [r5, 0x1C]
adds r1, r5, 0
adds r1, 0x20
movs r2, 0x8C
lsls r2, 1
adds r0, r4, r2
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
movs r3, 0x9E
lsls r3, 1
adds r0, r4, r3
ldr r0, [r0]
str r0, [r5, 0x14]
movs r6, 0xA0
lsls r6, 1
adds r0, r4, r6
ldr r0, [r0]
str r0, [r5, 0x18]
ldr r0, [r4, 0x3C]
str r0, [r5, 0x44]
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8069D4C
.align 2,0

View File

@@ -5,125 +5,6 @@
.text
thumb_func_start sub_8078A58
sub_8078A58:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
mov r8, r0
adds r6, r1, 0
adds r7, r2, 0
adds r5, r3, 0
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08078B4A
ldr r4, [r6, 0x70]
cmp r5, 0
beq _08078AE0
mov r0, sp
adds r1, r5, 0
bl sub_80943A0
ldr r2, [sp]
movs r0, 0xA0
lsls r0, 1
adds r5, r4, r0
ldr r7, [r5]
add r0, sp, 0x4
adds r1, r7, 0
bl sub_80942C0
ldr r2, [sp, 0x4]
str r2, [r5]
movs r0, 0x9E
lsls r0, 1
adds r4, r0
ldr r1, [r4]
add r0, sp, 0x8
bl sub_8094318
ldr r0, [sp, 0x8]
str r0, [r4]
ldr r0, _08078AD0
adds r1, r6, 0
movs r2, 0
bl SetMessageArgument
adds r0, r7, 0
bl RoundUpFixedPoint
adds r4, r0, 0
ldr r0, [r5]
bl RoundUpFixedPoint
cmp r4, r0
beq _08078AD8
adds r0, r6, 0
bl sub_8041D9C
ldr r0, _08078AD4
b _08078B22
.align 2, 0
_08078AD0: .4byte gAvailablePokemonNames
_08078AD4: .4byte gUnknown_80FBD9C
_08078AD8:
ldr r0, _08078ADC
b _08078B22
.align 2, 0
_08078ADC: .4byte gUnknown_80FBE3C
_08078AE0:
add r0, sp, 0xC
adds r1, r7, 0
bl sub_80943A0
ldr r2, [sp, 0xC]
movs r0, 0x9E
lsls r0, 1
adds r4, r0
ldr r7, [r4]
add r0, sp, 0x10
adds r1, r7, 0
bl sub_80942C0
ldr r0, [sp, 0x10]
str r0, [r4]
ldr r0, _08078B30
adds r1, r6, 0
movs r2, 0
bl SetMessageArgument
adds r0, r7, 0
bl RoundUpFixedPoint
adds r5, r0, 0
ldr r0, [r4]
bl RoundUpFixedPoint
cmp r5, r0
beq _08078B38
adds r0, r6, 0
bl nullsub_84
ldr r0, _08078B34
_08078B22:
ldr r2, [r0]
mov r0, r8
adds r1, r6, 0
bl sub_80522F4
b _08078B44
.align 2, 0
_08078B30: .4byte gAvailablePokemonNames
_08078B34: .4byte gUnknown_80FBD78
_08078B38:
ldr r0, _08078B58
ldr r2, [r0]
mov r0, r8
adds r1, r6, 0
bl sub_80522F4
_08078B44:
adds r0, r6, 0
bl EntityUpdateStatusSprites
_08078B4A:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08078B58: .4byte gUnknown_80FBE40
thumb_func_end sub_8078A58
thumb_func_start sub_8078B5C
sub_8078B5C:
push {r4-r7,lr}

File diff suppressed because it is too large Load Diff

View File

@@ -1,73 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80847D4
sub_80847D4:
push {r4,r5,lr}
ldr r2, _08084820
ldr r0, [r2]
ldr r1, _08084824
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r2]
ldr r2, _08084828
adds r0, r2
strb r1, [r0]
bl sub_8040A84
movs r4, 0
ldr r0, _0808482C
ldrb r0, [r0]
cmp r0, 0
beq _08084846
movs r3, 0
_080847FA:
ldr r0, _08084820
ldr r0, [r0]
ldr r5, _08084830
adds r0, r5
movs r2, 0
ldrsh r1, [r0, r2]
adds r0, r1, 0
subs r0, 0x1C
cmp r0, 0x15
bhi _08084810
movs r1, 0x1B
_08084810:
ldr r2, _0808482C
adds r0, r3, r2
ldrb r5, [r0]
cmp r1, r5
bne _08084834
bl sub_8084854
b _08084846
.align 2, 0
_08084820: .4byte gDungeon
_08084824: .4byte 0x00003a0d
_08084828: .4byte 0x0001356c
_0808482C: .4byte gUnknown_8107234
_08084830: .4byte 0x00003a14
_08084834:
adds r3, 0x8
adds r4, 0x1
ldr r0, _08084850
cmp r4, r0
bgt _08084846
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, 0
bne _080847FA
_08084846:
bl sub_8097FF8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08084850: .4byte 0x000003e6
thumb_func_end sub_80847D4
.align 2,0

View File

@@ -1,331 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8085EB0
sub_8085EB0:
ldr r0, _08085EC0
ldr r0, [r0]
ldr r1, _08085EC4
adds r0, r1
movs r1, 0x1
strb r1, [r0]
bx lr
.align 2, 0
_08085EC0: .4byte gDungeon
_08085EC4: .4byte 0x00018215
thumb_func_end sub_8085EB0
thumb_func_start sub_8085EC8
sub_8085EC8:
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x28
adds r4, r0, 0
mov r8, r1
mov r9, r2
adds r6, r3, 0
ldr r5, [sp, 0x40]
lsls r4, 16
asrs r4, 16
lsls r5, 24
lsrs r5, 24
adds r0, r4, 0
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
str r4, [sp]
mov r0, r8
str r0, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
mov r1, sp
ldrh r0, [r6]
movs r2, 0
strh r0, [r1, 0xC]
ldrh r0, [r6, 0x2]
strh r0, [r1, 0xE]
mov r0, sp
strh r2, [r0, 0x10]
strh r2, [r0, 0x12]
ldr r0, _08085F3C
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _08085F40
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
cmp r5, 0
beq _08085F2E
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_08085F2E:
add sp, 0x28
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085F3C: .4byte 0x0000ffff
_08085F40: .4byte gUnknown_8107374
thumb_func_end sub_8085EC8
thumb_func_start sub_8085F44
sub_8085F44:
push {r4,lr}
adds r4, r0, 0
b _08085F5C
_08085F4A:
ldr r0, _08085F70
ldr r0, [r0]
ldr r1, _08085F74
adds r0, r1
bl sub_800E90C
movs r0, 0x46
bl sub_803E46C
_08085F5C:
adds r0, r4, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _08085F4A
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085F70: .4byte gDungeon
_08085F74: .4byte 0x000181f0
thumb_func_end sub_8085F44
thumb_func_start sub_8085F78
sub_8085F78:
push {lr}
ldr r0, _08085F94
ldr r0, [r0]
ldr r1, _08085F98
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x3C
bls _08085F8A
b _080860A4
_08085F8A:
lsls r0, 2
ldr r1, _08085F9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085F94: .4byte gDungeon
_08085F98: .4byte 0x00003a0d
_08085F9C: .4byte _08085FA0
.align 2, 0
_08085FA0:
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _08086094
.4byte _08086094
.4byte _08086094
.4byte _0808609A
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A0
.4byte _080860A0
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
_08086094:
bl sub_8088848
b _080860A4
_0808609A:
bl sub_8088EE8
b _080860A4
_080860A0:
bl sub_808A718
_080860A4:
pop {r0}
bx r0
thumb_func_end sub_8085F78
thumb_func_start sub_80860A8
sub_80860A8:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r0, _08086108
ldr r2, [r0]
movs r3, 0x1
_080860B6:
ldrb r1, [r2]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080860C6
ldrb r0, [r2, 0x2]
cmp r0, r6
beq _08086104
_080860C6:
adds r2, 0x4
adds r5, 0x1
cmp r5, 0x13
ble _080860B6
movs r5, 0
_080860D0:
ldr r0, _0808610C
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _08086110
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08086114
ldr r2, [r4, 0x70]
adds r0, r2, 0
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08086114
adds r0, r2, 0
adds r0, 0x62
ldrb r0, [r0]
cmp r0, r6
bne _08086114
_08086104:
movs r0, 0x1
b _0808611C
.align 2, 0
_08086108: .4byte gTeamInventoryRef
_0808610C: .4byte gDungeon
_08086110: .4byte 0x0001357c
_08086114:
adds r5, 0x1
cmp r5, 0x3
ble _080860D0
movs r0, 0
_0808611C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80860A8
thumb_func_start sub_8086124
sub_8086124:
ldr r0, [r0, 0x70]
movs r2, 0xB0
lsls r2, 1
adds r0, r2
strb r1, [r0]
bx lr
thumb_func_end sub_8086124
thumb_func_start sub_8086130
sub_8086130:
push {lr}
movs r0, 0x3C
bl DungeonFadeOutBGM
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
ldr r0, _08086194
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _08086198
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _0808619C
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A0
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A4
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
pop {r0}
bx r0
.align 2, 0
_08086194: .4byte gUnknown_810665C
_08086198: .4byte gUnknown_810668C
_0808619C: .4byte gUnknown_81066D4
_080861A0: .4byte gUnknown_81066F0
_080861A4: .4byte gUnknown_810671C
thumb_func_end sub_8086130

View File

@@ -1,144 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80861B8
sub_80861B8:
push {r4,r5,lr}
adds r4, r1, 0
lsls r4, 24
lsrs r4, 24
ldr r5, [r0, 0x70]
adds r1, r4, 0
bl sub_806CDD4
adds r5, 0xFE
strb r4, [r5]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80861B8
thumb_func_start sub_80861D4
sub_80861D4:
push {r4,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
bl sub_806CDD4
adds r0, r4, 0
bl sub_80861EC
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80861D4
thumb_func_start sub_80861EC
sub_80861EC:
ldr r0, [r0, 0x70]
adds r0, 0xFE
movs r1, 0x63
strb r1, [r0]
bx lr
thumb_func_end sub_80861EC
thumb_func_start sub_80861F8
sub_80861F8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
adds r6, r1, 0
lsls r0, 16
asrs r0, 16
adds r5, r0, 0
lsls r2, 24
lsrs r2, 24
mov r10, r2
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
ldr r0, [r6, 0x70]
mov r8, r0
movs r1, 0
mov r9, r1
str r1, [sp, 0x28]
adds r0, r5, 0
bl sub_800E700
adds r7, r0, 0
add r4, sp, 0x28
movs r2, 0x1
negs r2, r2
cmp r7, r2
beq _0808624A
adds r1, r6, 0
adds r1, 0x28
lsls r2, r7, 24
lsrs r2, 24
adds r0, r4, 0
bl sub_800569C
_0808624A:
str r5, [sp]
mov r3, r9
str r3, [sp, 0x4]
mov r0, r8
adds r0, 0x46
ldrb r0, [r0]
str r0, [sp, 0x8]
mov r1, sp
ldr r0, [r6, 0xC]
cmp r0, 0
bge _08086262
adds r0, 0xFF
_08086262:
asrs r0, 8
strh r0, [r1, 0xC]
mov r1, sp
ldr r0, [r6, 0x10]
cmp r0, 0
bge _08086270
adds r0, 0xFF
_08086270:
asrs r0, 8
strh r0, [r1, 0xE]
mov r1, sp
ldrh r0, [r4]
strh r0, [r1, 0x10]
add r0, sp, 0x28
ldrh r0, [r0, 0x2]
strh r0, [r1, 0x12]
str r7, [sp, 0x14]
ldr r0, _080862B4
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _080862B8
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
mov r4, r10
cmp r4, 0
beq _080862A2
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_080862A2:
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080862B4: .4byte 0x0000ffff
_080862B8: .4byte gUnknown_8107380
thumb_func_end sub_80861F8
.align 2,0

View File

@@ -1,147 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start InitActionWithParams
InitActionWithParams:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
adds r6, r1, 0
mov r8, r2
adds r4, r3, 0
ldr r5, [sp, 0x18]
lsls r4, 16
asrs r4, 16
lsls r5, 24
asrs r5, 24
bl InitAction
str r6, [r7]
mov r0, r8
str r0, [r7, 0x4]
strh r4, [r7, 0x10]
strb r5, [r7, 0x12]
ldrh r0, [r6]
strh r0, [r7, 0x8]
ldr r1, [r6, 0x4]
cmp r1, 0
beq _0809D63A
mov r0, r8
bl _call_via_r1
strh r0, [r7, 0xA]
b _0809D63C
_0809D63A:
strh r1, [r7, 0xA]
_0809D63C:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end InitActionWithParams
thumb_func_start sub_809D648
sub_809D648:
push {lr}
bl InitAction
pop {r0}
bx r0
thumb_func_end sub_809D648
thumb_func_start sub_809D654
sub_809D654:
movs r1, 0x26
ldrsh r0, [r0, r1]
bx lr
thumb_func_end sub_809D654
thumb_func_start sub_809D65C
sub_809D65C:
push {lr}
adds r1, r0, 0
movs r2, 0x26
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0809D66E
movs r0, 0x1
negs r0, r0
b _0809D672
_0809D66E:
movs r2, 0x24
ldrsh r0, [r1, r2]
_0809D672:
pop {r1}
bx r1
thumb_func_end sub_809D65C
thumb_func_start sub_809D678
sub_809D678:
movs r2, 0x26
ldrsh r1, [r0, r2]
negs r0, r1
orrs r0, r1
lsrs r0, 31
bx lr
thumb_func_end sub_809D678
thumb_func_start sub_809D684
sub_809D684:
push {lr}
adds r2, r0, 0
adds r3, r1, 0
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0
beq _0809D6A4
ldr r0, [r2, 0x34]
cmp r0, 0
beq _0809D69C
ldr r1, [r2, 0x38]
b _0809D69E
_0809D69C:
ldr r1, [r2, 0x2C]
_0809D69E:
ldr r0, [r3]
cmp r1, r0
beq _0809D6CC
_0809D6A4:
adds r0, r2, 0
adds r0, 0x86
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
beq _0809D6D0
adds r0, r2, 0
adds r0, 0x94
ldr r0, [r0]
cmp r0, 0
beq _0809D6C0
adds r0, r2, 0
adds r0, 0x98
b _0809D6C4
_0809D6C0:
adds r0, r2, 0
adds r0, 0x8C
_0809D6C4:
ldr r1, [r0]
ldr r0, [r3]
cmp r1, r0
bne _0809D6D0
_0809D6CC:
movs r0, 0x1
b _0809D6D2
_0809D6D0:
movs r0, 0
_0809D6D2:
pop {r1}
bx r1
thumb_func_end sub_809D684
.align 2,0

View File

@@ -5,90 +5,6 @@
.text
thumb_func_start sub_80A1440
sub_80A1440:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r3, r2, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_80A14E8
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A1440
thumb_func_start GroundScript_ExecuteTrigger
GroundScript_ExecuteTrigger:
push {r4,r5,lr}
sub sp, 0xF4
lsls r0, 16
asrs r4, r0, 16
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
ldr r1, _080A14C8
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
cmp r0, 0xB
bne _080A14C4
add r5, sp, 0x10
ldr r1, _080A14CC
movs r0, 0
str r0, [sp]
adds r0, r5, 0
movs r2, 0
movs r3, 0
bl InitActionWithParams
movs r0, 0
add r1, sp, 0x4
adds r2, r4, 0
bl sub_809D710
ldr r3, _080A14D0
adds r0, r5, 0
movs r1, 0
add r2, sp, 0x4
bl GroundScript_ExecutePP
add r1, sp, 0x44
add r0, sp, 0x38
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, _080A14D4
str r0, [r5, 0x34]
str r0, [r5, 0x38]
ldr r1, _080A14D8
adds r0, r5, 0
bl HandleAction
adds r4, r0, 0
lsls r4, 16
asrs r4, 16
adds r0, r5, 0
bl sub_809D648
cmp r4, 0
beq _080A14DC
_080A14C4:
movs r0, 0
b _080A14DE
.align 2, 0
_080A14C8: .4byte gFunctionScriptTable
_080A14CC: .4byte gUnknown_8116488
_080A14D0: .4byte gUnknown_81166F8
_080A14D4: .4byte gUnknown_81164E4
_080A14D8: .4byte gUnknown_8116704
_080A14DC:
movs r0, 0x1
_080A14DE:
add sp, 0xF4
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GroundScript_ExecuteTrigger
thumb_func_start sub_80A14E8
sub_80A14E8:
push {r4-r7,lr}
@@ -1875,118 +1791,4 @@ _080A2424: .4byte gUnknown_8116848
_080A2428: .4byte gUnknown_2039AC0
thumb_func_end GroundScript_Unlock
thumb_func_start sub_80A242C
sub_80A242C:
push {r4-r7,lr}
sub sp, 0x10
adds r4, r1, 0
ldr r0, [r0, 0x2C]
adds r2, r0, 0
adds r2, 0x10
mov r3, sp
_080A243A:
mov r1, sp
adds r0, r2, 0
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldr r0, [r0]
str r0, [r1]
adds r2, 0x10
ldrb r0, [r3]
cmp r0, 0xF4
bne _080A243A
movs r1, 0x2
ldrsh r0, [r3, r1]
cmp r4, r0
bne _080A243A
adds r0, r2, 0
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A242C
thumb_func_start sub_80A2460
sub_80A2460:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r5, r0, 0
mov r8, r1
ldr r6, [r5, 0x28]
mov r4, sp
_080A2470:
mov r0, sp
adds r1, r6, 0
ldm r1!, {r2,r3,r7}
stm r0!, {r2,r3,r7}
ldr r1, [r1]
str r1, [r0]
ldrb r0, [r4]
cmp r0, 0xCC
bne _080A249E
ldr r1, [sp, 0x4]
mov r0, r8
movs r2, 0x2
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r0, 0x2
ldrsh r1, [r4, r0]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A249E:
cmp r0, 0xCD
bne _080A24BE
ldr r1, [sp, 0x4]
ldrb r2, [r4, 0x1]
mov r0, r8
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r2, 0x2
ldrsh r1, [r4, r2]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A24BE:
cmp r0, 0xCE
bne _080A24EC
ldr r1, [sp, 0x4]
lsls r1, 16
asrs r1, 16
adds r0, r5, 0
adds r0, 0x74
bl sub_8001658
adds r1, r0, 0
ldrb r2, [r4, 0x1]
mov r0, r8
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r3, 0x2
ldrsh r1, [r4, r3]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A24EC:
adds r0, r6, 0
b _080A24F4
_080A24F0:
adds r6, 0x10
b _080A2470
_080A24F4:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A2460
.align 2,0

View File

@@ -1,36 +1,6 @@
.section .rodata
.align 2, 0
@ START code_80130A8 #3
.string "pksdir0\0"
.global gUnknown_80DAF70
gUnknown_80DAF70: @ 80DAF70
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DAF88
gUnknown_80DAF88: @ 80DAF88
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x02, 0x00
.byte 0x1a, 0x00, 0x0c, 0x00
.byte 0x0c, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DAFA0
gUnknown_80DAFA0: @ 80DAFA0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x16, 0x00, 0x0f, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
@ END code_80130A8 #3
@ START code_80130A8 #4
.string "pksdir0\0"
@@ -365,4 +335,4 @@ gUnknown_80DB664: @ 80DB664
.string "%s\0"
.align 2,0
@ END code_80130A8 #4
@ END code_80130A8 #4

View File

@@ -1,13 +0,0 @@
.section .rodata
.align 2,0
@ code_803D110.s (probably part of code_803D0D8)
.global gUnknown_80F43F0
gUnknown_80F43F0: @ 80F43F0
.byte 0x0d, 0x07, 0x19, 0x0f, 0x04, 0x1d, 0x2a, 0x31, 0x08, 0x13, 0x2d, 0x18, 0x0e, 0x1a, 0x1b, 0x29, 0x01, 0x20, 0x21, 0x22, 0x11, 0x33, 0x26, 0x00, 0x35, 0x0a, 0x2b, 0x1f, 0x12, 0x23, 0x2c, 0x17
.byte 0x27, 0x10, 0x1c, 0x30, 0x0b, 0x02, 0x24, 0x09, 0x32, 0x05, 0x28, 0x34, 0x2e, 0x03, 0x1e, 0x0c, 0x25, 0x14, 0x2f, 0x16, 0x06, 0x15
.global gUnknown_80F4426
gUnknown_80F4426: @ 80F4426
.byte 0x0c, 0x06, 0x13, 0x08, 0x04, 0x0d, 0x0f, 0x09, 0x10, 0x02, 0x14, 0x12, 0x00, 0x15, 0x0b, 0x05, 0x17, 0x03, 0x11, 0x0a, 0x01, 0x0e, 0x16, 0x07, 0x00, 0x00
.byte 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00

View File

@@ -1,627 +1,5 @@
.section .rodata
.align 2,0
.string "pksdir0\0"
.global gUnknown_80E2068
gUnknown_80E2068: @ 80E2068
.4byte GoRescue_80E20AC
.byte 0x00, 0x00, 0x00, 0x00
.4byte GetHelp_80E20A0
.byte 0x01, 0x00, 0x00, 0x00
.4byte Info_80E2098
.byte 0x17, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global Exit_80E2090
Exit_80E2090:
.string "Exit\0"
.align 2,0
.global Info_80E2098
Info_80E2098:
.string "Info\0"
.align 2,0
.global GetHelp_80E20A0
GetHelp_80E20A0:
.string "Get Help\0"
.align 2,0
.global GoRescue_80E20AC
GoRescue_80E20AC:
.string "Go Rescue\0"
.align 2,0
.global gUnknown_80E20B8
gUnknown_80E20B8: @ 80E20B8
.4byte GoRescue_80E20AC
.byte 0x00, 0x00, 0x00, 0x00
.4byte GetHelp_80E20A0
.byte 0xff, 0xff, 0xff, 0xff
.4byte Info_80E2098
.byte 0x17, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E20E0
gUnknown_80E20E0: @ 80E20E0
.4byte GoRescue_80E20AC
.byte 0xff, 0xff, 0xff, 0xff
.4byte GetHelp_80E20A0
.byte 0x01, 0x00, 0x00, 0x00
.4byte Info_80E2098
.byte 0x17, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2108
gUnknown_80E2108: @ 80E2108
.4byte GoRescue_80E20AC
.byte 0xff, 0xff, 0xff, 0xff
.4byte GetHelp_80E20A0
.byte 0xff, 0xff, 0xff, 0xff
.4byte Info_80E2098
.byte 0x17, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2130
gUnknown_80E2130: @ 80E2130
@ Friend Resuce Pelipper Menu
.4byte ReceiveSOSMail_80E217C
.byte 0x03, 0x00, 0x00, 0x00
.4byte SendAOKMail_80E216C
.byte 0x04, 0x00, 0x00, 0x00
.4byte GetThankYouMail_80E2158
.byte 0x14, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global GetThankYouMail_80E2158
GetThankYouMail_80E2158:
.string "Get Thank-You Mail\0"
.align 2,0
.global SendAOKMail_80E216C
SendAOKMail_80E216C:
.string "Send A-OK Mail\0"
.align 2,0
.global ReceiveSOSMail_80E217C
ReceiveSOSMail_80E217C:
.string "Receive SOS Mail\0"
.align 2,0
.global gUnknown_80E2190
gUnknown_80E2190: @ 80E2190
.4byte ReceiveSOSMail_80E217C
.byte 0x03, 0x00, 0x00, 0x00
.4byte SendAOKMail_80E216C
.byte 0xff, 0xff, 0xff, 0xff
.4byte GetThankYouMail_80E2158
.byte 0x14, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E21B8
gUnknown_80E21B8: @ 80E21B8
.4byte SendSOS_80E2208
.byte 0x11, 0x00, 0x00, 0x00
.4byte ReceiveAOK_80E21F4
.byte 0x12, 0x00, 0x00, 0x00
.4byte SendThankYou_80E21E0
.byte 0x13, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global SendThankYou_80E21E0
SendThankYou_80E21E0:
.string "Send Thank-You Mail\0"
.align 2,0
.global ReceiveAOK_80E21F4
ReceiveAOK_80E21F4:
.string "Receive A-OK Mail\0"
.align 2,0
.global SendSOS_80E2208
SendSOS_80E2208:
.string "Send SOS Mail\0"
.align 2,0
.global gUnknown_80E2218
gUnknown_80E2218: @ 80E2218
.4byte SendSOS_80E2208
.byte 0xff, 0xff, 0xff, 0xff
.4byte ReceiveAOK_80E21F4
.byte 0xff, 0xff, 0xff, 0xff
.4byte SendThankYou_80E21E0
.byte 0x13, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2240
gUnknown_80E2240: @ 80E2240
.4byte SendSOS_80E2208
.byte 0x11, 0x00, 0x00, 0x00
.4byte ReceiveAOK_80E21F4
.byte 0x12, 0x00, 0x00, 0x00
.4byte SendThankYou_80E21E0
.byte 0xff, 0xff, 0xff, 0xff
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2268
gUnknown_80E2268: @ 80E2268
.4byte SendSOS_80E2208
.byte 0xff, 0xff, 0xff, 0xff
.4byte ReceiveAOK_80E21F4
.byte 0xff, 0xff, 0xff, 0xff
.4byte SendThankYou_80E21E0
.byte 0xff, 0xff, 0xff, 0xff
.4byte Exit_80E2090
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2290
gUnknown_80E2290: @ 80E2290
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global Cancel_80E22A8
Cancel_80E22A8:
.string "Cancel\0"
.align 2,0
.global Yes_80E22B0
Yes_80E22B0:
.string "Yes\0"
.align 2,0
.global gUnknown_80E22B4
gUnknown_80E22B4: @ 80E22B4
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte No_80E22CC
.byte 0x07, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global No_80E22CC
No_80E22CC:
.string "No\0"
.align 2,0
.global gUnknown_80E22D0
gUnknown_80E22D0: @ 80E22D0
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte No_80E22CC
.byte 0x07, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E22F0
gUnknown_80E22F0: @ 80E22F0
.4byte SendPokemon_80E2308
.byte 0x10, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global SendPokemon_80E2308
SendPokemon_80E2308:
.string "Send w/o Pokémon\0"
.align 2,0
.global gUnknown_80E231C
gUnknown_80E231C: @ 80E231C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x16, 0x00, 0x07, 0x00
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E2334
gUnknown_80E2334: @ 80E2334
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x16, 0x00, 0x06, 0x00
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E234C
gUnknown_80E234C: @ 80E234C
.4byte Confirm_80E2364
.byte 0x09, 0x00, 0x00, 0x00
.4byte Info_80E2098
.byte 0x0a, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global Confirm_80E2364
Confirm_80E2364:
.string "Confirm\0"
.align 2,0
.global gUnknown_80E236C
gUnknown_80E236C: @ 80E236C
.4byte GameLinkCable_80E2398
.byte 0x0b, 0x00, 0x00, 0x00
.4byte Password_80E238C
.byte 0x0d, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global Password_80E238C
Password_80E238C:
.string "Password\0"
.align 2,0
.global GameLinkCable_80E2398
GameLinkCable_80E2398:
.string "Game Link cable\0"
.align 2,0
.global gUnknown_80E23A8
gUnknown_80E23A8: @ 80E23A8
.4byte SendPokemon_80E23E0
.byte 0x0f, 0x00, 0x00, 0x00
.4byte DontSendPokemon_80E23C8
.byte 0x10, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global DontSendPokemon_80E23C8
DontSendPokemon_80E23C8:
.string "Don{APOSTROPHE}t Send Pokémon\0"
.align 2,0
.global SendPokemon_80E23E0
SendPokemon_80E23E0:
.string "Send Pokémon\0"
.align 2,0
.global gUnknown_80E23F0
gUnknown_80E23F0: @ 80E23F0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x15, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E2408
gUnknown_80E2408: @ 80E2408
.4byte Confirm_80E2364
.byte 0x09, 0x00, 0x00, 0x00
.4byte Info_80E2098
.byte 0x0a, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E2440
gUnknown_80E2440: @ 80E2440
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2458
gUnknown_80E2458: @ 80E2458
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte No_80E22CC
.byte 0x07, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E2470
gUnknown_80E2470: @ 80E2470
.4byte SendItem_80E24A4
.byte 0x15, 0x00, 0x00, 0x00
.4byte DontSendItem_80E2490
.byte 0x16, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
DontSendItem_80E2490:
.string "Don{APOSTROPHE}t Send Item\0"
.align 2,0
SendItem_80E24A4:
.string "Send Item\0"
.align 2,0
.global gUnknown_80E24B0
gUnknown_80E24B0: @ 80E24B0
.4byte SendwoItem_80E24C8
.byte 0x16, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
SendwoItem_80E24C8:
.string "Send w/o Item\0"
.align 2,0
.global gUnknown_80E24D8
gUnknown_80E24D8: @ 80E24D8
.4byte Yes_80E22B0
.byte 0x06, 0x00, 0x00, 0x00
.4byte No_80E22CC
.byte 0x07, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00
.global gUnknown_80E24F8
gUnknown_80E24F8: @ 80E24F8
.4byte RescueInfo_80E2540
.byte 0x1A, 0x00, 0x00, 0x00
.4byte GoRescue_80E530
.byte 0x1B, 0x00, 0x00, 0x00
.4byte GetHelp_80E2520
.byte 0x1C, 0x00, 0x00, 0x00
.4byte Cancel_80E22A8
.byte 0x19, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00
GetHelp_80E2520:
.string "{COLOR_1 YELLOW}Get help{END_COLOR_TEXT_1} \0"
.align 2,0
GoRescue_80E530:
.string "{COLOR_1 YELLOW}Go rescue{END_COLOR_TEXT_1} \0"
.align 2,0
RescueInfo_80E2540:
.string "Friend Rescue Info\0"
.align 2,0
.global gUnknown_80E2554
gUnknown_80E2554: @ 80E2554
.4byte RescueProcedures_80E25A0
.byte 0x1E, 0x00, 0x00, 0x00
.4byte ReceiveSOSMail_80E217C
.byte 0x1F, 0x00, 0x00, 0x00
.4byte LeaveForRescue_80E258C
.byte 0x20, 0x00, 0x00, 0x00
.4byte SendAOKMail_80E216C
.byte 0x21, 0x00, 0x00, 0x00
.4byte GetThankYouMail_80E2158
.byte 0x22, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x19, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00
LeaveForRescue_80E258C:
.string "Leave for Rescue\0"
.align 2,0
RescueProcedures_80E25A0:
.string "Rescue Procedures\0"
.align 2,0
.global gUnknown_80E25B4
gUnknown_80E25B4: @ 80E25B4
.4byte GettingHelp_80E25E4
.byte 0x23, 0x00, 0x00, 0x00
.4byte SendSOS_80E2208
.byte 0x24, 0x00, 0x00, 0x00
.4byte ReceiveAOK_80E21F4
.byte 0x25, 0x00, 0x00, 0x00
.4byte SendThankYou_80E21E0
.byte 0x26, 0x00, 0x00, 0x00
.4byte Exit_80E2090
.byte 0x19, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00
GettingHelp_80E25E4:
.string "Getting Help\0"
.align 2,0
.global gUnknown_80E25F4
gUnknown_80E25F4: @ 80E25F4
.string "What would you like to do?\0"
.align 2,0
.global gUnknown_80E2610
gUnknown_80E2610: @ 80E2610
.string "How would you like to send your\n"
.string "{COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E2640
gUnknown_80E2640: @ 80E2640
.string "How would you like to receive your\n"
.string "friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E2680
gUnknown_80E2680: @ 80E2680
.string "How would you like to send your\n"
.string "{COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E26B0
gUnknown_80E26B0: @ 80E26B0
.string "How would you like to receive your\n"
.string "friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E26F0
gUnknown_80E26F0: @ 80E26F0
.string "How would you like to send your\n"
.string "{COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E2728
gUnknown_80E2728: @ 80E2728
.string "How would you like to receive your\n"
.string "friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}?\0"
.align 2,0
.global gUnknown_80E276C
gUnknown_80E276C: @ 80E276C
.string "The GBA Game Pak does not have\n"
.string "an {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} on it.\0"
.align 2,0
.global gUnknown_80E27A4
gUnknown_80E27A4: @ 80E27A4
.string "If you accept an {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}{COMMA} the\n"
.string "{COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1} you received before\n"
.string "will be overwritten. Is that OK?\0"
.align 2,0
.global gUnknown_80E2814
gUnknown_80E2814: @ 80E2814
.string "Please enter the {COLOR_1 LIGHT_BLUE}A-OK Mail password{END_COLOR_TEXT_1}.\0"
.align 2,0
.global gUnknown_80E2840
gUnknown_80E2840: @ 80E2840
.string "The {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} will be received and\n"
.string "processed.\0"
.align 2,0
.global gUnknown_80E2874
gUnknown_80E2874: @ 80E2874
.string "A {COLOR_1 LIGHT_BLUE}helper Pokémon{END_COLOR_TEXT_1} also arrived!\0"
.align 2,0
.global gUnknown_80E2898
gUnknown_80E2898: @ 80E2898
.string "An {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} was received.\n"
.string "Your adventure will be saved.\0"
.align 2,0
.global gUnknown_80E28D8
gUnknown_80E28D8: @ 80E28D8
.string "Resume your game using {COLOR_1 LIGHT_BLUE}Revive Team{END_COLOR_TEXT_1}.\0"
.align 2,0
.global gUnknown_80E2904
gUnknown_80E2904: @ 80E2904
.string "Your friend{APOSTROPHE}s Mailbox is full.\n"
.string "This piece of mail cannot be sent.\n"
.string "The recipient must delete old mail.\0"
.align 2,0
.global gUnknown_80E296C
gUnknown_80E296C: @ 80E296C
.string "Please choose the {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} you want\n"
.string "to send.\0"
.align 2,0
.global gUnknown_80E29A0
gUnknown_80E29A0: @ 80E29A0
.string "This {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} will be sent.\n"
.string "Is that OK?\0"
.align 2,0
.global gUnknown_80E29D0
gUnknown_80E29D0: @ 80E29D0
.string "Your {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} was sent.\n"
.string "Your adventure will be saved.\0"
.align 2,0
.global gUnknown_80E2A0C
gUnknown_80E2A0C: @ 80E2A0C
.asciz "Save completed."
.align 2,0
.global gUnknown_80E2A1C
gUnknown_80E2A1C: @ 80E2A1C
.string "Please give this password to the friend\n"
.string "coming to your rescue.\0"
.align 2,0
.global gUnknown_80E2A5C
gUnknown_80E2A5C: @ 80E2A5C
.string "Here is the {COLOR_1 LIGHT_BLUE}SOS Mail password{END_COLOR_TEXT_1}.\0"
.align 2,0
.global gUnknown_80E2A80
gUnknown_80E2A80: @ 80E2A80
.string "Here is the {COLOR_1 LIGHT_BLUE}A-OK Mail password{END_COLOR_TEXT_1}.\0"
.align 2,0
.global gUnknown_80E2AA8
gUnknown_80E2AA8: @ 80E2AA8
.string "Please give this password to the friend\n"
.string "that you rescued.\0"
.align 2,0
.global gUnknown_80E2AE4
gUnknown_80E2AE4: @ 80E2AE4
.string "Please connect a {COLOR_1 LIGHT_BLUE}Link Cable{END_COLOR_TEXT_1}.\n"
.string "When your friend{APOSTROPHE}s side is ready{COMMA} you may\n"
.string "communicate and exchange data.\0"
.align 2,0
.global gUnknown_80E2B54
gUnknown_80E2B54: @ 80E2B54
.string "Your {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} was sent.\n"
.string "Your adventure will be saved.\0"
.align 2,0
.global gUnknown_80E2B90
gUnknown_80E2B90: @ 80E2B90
.string "Using a {COLOR_1 LIGHT_BLUE}Game Link cable{END_COLOR_TEXT_1}{COMMA}\n"
.string "you can send a {COLOR_1 LIGHT_BLUE}helper Pokémon{END_COLOR_TEXT_1} to\n"
.string "a friend.\0"
.align 2,0
.global gUnknown_80E2BE0
gUnknown_80E2BE0: @ 80E2BE0
.string "Your own Pokémon will not disappear\n"
@@ -1132,4 +510,4 @@ gUnknown_80E499C: @ 80E499C
gUnknown_80E49C4: @ 80E49C4
.string "This password does not appear to be\n"
.string "that of a {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}.\0"
.align 2,0
.align 2,0

View File

@@ -2,15 +2,7 @@
#define GUARD_CODE_8004AA0_H
#include "file_system.h"
// size: 0x4
typedef struct RGB
{
// IDK which is R G B
u8 unk0;
u8 unk1;
u8 unk2;
} RGB;
#include "structs/rgb.h"
// size: 0x18
typedef struct unkStruct_202EE8C
@@ -24,6 +16,8 @@ typedef struct unkStruct_202EE8C
RGB unk14;
} unkStruct_202EE8C;
extern unkStruct_202EE8C gUnknown_202EE8C[32];
// size: Variable
typedef struct unkDataFor8004AA4
{
@@ -38,4 +32,4 @@ bool8 sub_8004AF0(bool8, unkStruct_202EE8C *, s32, s32, s32, u8 *);
bool8 sub_8004D14(unkStruct_202EE8C *, s32);
bool8 sub_8004D40(unkStruct_202EE8C *, s32);
#endif // GUARD_CODE_8004AA0_H
#endif // GUARD_CODE_8004AA0_H

View File

@@ -31,5 +31,7 @@ struct unkStruct_203B0CC
};
bool8 sub_800E9A8(s32 a0);
bool8 sub_800E9E4(void);
bool8 sub_800E9FC(u8 a0);
#endif

View File

@@ -2,15 +2,7 @@
#define GUARD_CODE_8010EF0_H
#include "file_system.h"
// size: 0x4
typedef struct RGB
{
// IDK which is R G B
u8 unk0;
u8 unk1;
u8 unk2;
} RGB;
#include "structs/rgb.h"
// size: 0x18
typedef struct unkStruct_202EE8C

View File

@@ -7,10 +7,15 @@ void PlaySound(u16);
void sub_801180C(void);
void sub_8011830(void);
void sub_8011860(void);
void xxx_call_fade_in_new_bgm(u16, u16);
void xxx_call_fade_out_bgm(u16);
void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed);
void xxx_call_fade_out_bgm(u16 speed);
void xxx_call_start_bg_music(void);
void xxx_call_stop_bgm(void);
void xxx_call_stop_fanfare_se(u16);
void xxx_call_stop_fanfare_se(u16 songIndex);
void StopAllMusic_1(void);
void xxx_call_start_new_bgm(u16 songIndex);
void xxx_call_queue_bgm(u16 songIndex);
void xxx_call_play_fanfare_se(u16 songIndex, u16 volume);
void xxx_call_fade_out_fanfare_se(u16 songIndex, u16 speed);
#endif // GUARD_CODE_80118A4_H
#endif // GUARD_CODE_80118A4_H

View File

@@ -1,10 +1,17 @@
#ifndef GUARD_CODE_803D0D8_H
#define GUARD_CODE_803D0D8_H
#include "structs/str_wonder_mail.h"
u8 sub_803D0D8(void);
u8 sub_803D0F0(u8);
u8 sub_803D100(u8);
u8 sub_803D110(u8 *param_1, u8 *param_2, s32 size);
void sub_803D1A8(u8 *param_1, u8 *param_2, s32 size);
bool8 sub_803D204(u8 *buffer,unkStruct_203B480 *param_2);
void sub_803D2C0(u8 *buffer, unkStruct_203B480 *mail);
bool8 DecodeWonderMailPassword(u8* buffer, WonderMail *mail);
void sub_803D414(u8 *param_1,WonderMail *mail);
#endif // GUARD_CODE_803D0D8_H

View File

@@ -1,9 +0,0 @@
#ifndef GUARD_CODE_803D110_H
#define GUARD_CODE_803D110_H
#include "structs/str_wonder_mail.h"
// code_803D110.s
extern void sub_803D414(u8 *, WonderMail *);
#endif // GUARD_CODE_803D110_H

View File

@@ -7,8 +7,8 @@ void sub_806CC10(void);
void sub_806CC70(void);
void sub_806CCB4(Entity *entity, u8);
void sub_806CD90(void);
void sub_806CDD4(Entity *entity, u8, u32);
void sub_806CDFC(Entity *entity, u8, u32);
void sub_806CDD4(Entity *entity, u8, u32 direction);
void sub_806CDFC(Entity *entity, u8, u32 direction);
void sub_806CE34(Entity *entity, u32 newDir);
void sub_806CE68(Entity *entity, u32 newDir);
void sub_806CE94(Entity *entity, u32 newDir);
@@ -19,4 +19,4 @@ u8 sub_806CF54(Entity *entity);
void sub_806CF60(void);
u32 sub_806CF98(Entity *entity);
#endif // GUARD_CODE_806CD90_H
#endif // GUARD_CODE_806CD90_H

View File

@@ -4,5 +4,7 @@
#include "structs/dungeon_entity.h"
void sub_80861A8(Entity *a0);
void sub_80861B8(Entity *a0, u8 r1, s32 direction);
void sub_80861D4(Entity *a0, u8 r1, s32 direction);
#endif

View File

@@ -3,6 +3,7 @@
#include "constants/mailbox.h"
#include "structs/str_wonder_mail.h"
#include "code_8092334.h"
// size: 0xC
typedef struct subStruct_203B490
@@ -67,5 +68,7 @@ u8 *sub_8096DD8(void);
u8 *sub_8096DE8(void);
u8 sub_8096E2C(void);
void sub_8096EEC(WonderMail *mail);
void SaveWonderMail(unkStruct_8094924 *a, WonderMail *b);
void RestoreWonderMail(unkStruct_8094924 *a, WonderMail *b);
#endif // GUARD_CODE_80958E8_H

View File

@@ -4,6 +4,7 @@
#define POKEMON_NAME_LENGTH 10
#define TEAM_NAME_LENGTH 10
#define MAX_TEAM_MEMBERS 4
#define MAX_TEAM_BODY_SIZE 6
#define MAX_MON_MOVES 4

6
include/ground_link.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_GROUND_LINK_H
#define GUARD_GROUND_LINK_H
void GroundLink_Select(s16 r0);
#endif // GUARD_GROUND_LINK_H

View File

@@ -27,6 +27,7 @@ bool8 GroundMainRescueRequest(s16 r0, u32 r1);
bool32 GroundMainGameEndRequest(u32 r0);
bool32 GroundMainGameCancelRequest(u32 r0);
bool8 sub_8098D80(u32 speed);
extern GroundConversionStruct gGroundConversion_811BAF4[10];

View File

@@ -104,12 +104,12 @@ typedef struct CallbackData
typedef struct Action
{
// size: 0xE4
/* 0x00 */ struct CallbackData *callbacks;
/* 0x00 */ const struct CallbackData *callbacks;
/* 0x04 */ void *parentObject; // struct GroundObject *
/* 0x08 */ s16 unk8[2]; // id?
/* 0x0C */ ScriptUnion1632 unkC;
/* 0x10 */ u16 group;
/* 0x12 */ u8 sector;
/* 0x10 */ s16 group;
/* 0x12 */ s8 sector;
// padding
/* 0x14 */ ScriptCommand *predefinedScripts[4];
/* 0x24 */ ScriptData scriptData;
@@ -129,7 +129,8 @@ typedef struct GroundMapAction
typedef struct FunctionScript
{
u32 unk0;
u16 unk0;
s16 unk2;
u8 *funcName;
ScriptCommand *script;
} FunctionScript;
@@ -138,6 +139,15 @@ extern FunctionScript gFunctionScriptTable[];
#include "debug.h"
void InitScriptData(ScriptData *a0);
u8 sub_809D8EC(Action *param_1, s16 param_2);
void sub_809D648(Action *action);
void sub_809D710(Action *param_1, ScriptInfoSmall *script, s16 index);
bool8 sub_809DA08(Action *param_1, s16 index, u32 param_3);
bool8 InitActionScriptData(Action *param_1, const DebugLocation *unused);
bool8 GroundScript_ExecutePP(Action *, s32 *, ScriptInfoSmall *, const DebugLocation *unused);
ScriptCommand *sub_80A242C(Action *action, s32 r1);
ScriptCommand *sub_80A2460(Action *action, s32 r1);
void InitActionWithParams(Action *action, const CallbackData *callbacks, void *parent, s16 group, s8 sector);
#endif // GUARD_GROUND_SCRIPT_H

View File

@@ -290,7 +290,8 @@ typedef struct EntityInfo
u8 unk15D;
u8 unk15E;
u8 unk15F;
u8 fill160[0x164 - 0x160];
u8 unk160;
u8 fill161[3];
/* 0x164 */ u8 unk164;
/* 0x165 */ u8 unk165;
/* 0x166 */ u8 unk166;

12
include/structs/rgb.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef GUARD_RGB_H
#define GUARD_RGB_H
typedef struct RGB
{
// IDK which is R G B
u8 unk0;
u8 unk1;
u8 unk2;
} RGB;
#endif // GUARD_RGB_H

View File

@@ -12,6 +12,7 @@
#define DUNGEON_MAX_SIZE_X 56
#define DUNGEON_MAX_SIZE_Y 32
#define DUNGEON_MAX_WILD_POKEMON 16
#define DUNGEON_MAX_WILD_POKEMON_BODY_SIZE 16
#define DUNGEON_MAX_POKEMON MAX_TEAM_MEMBERS + DUNGEON_MAX_WILD_POKEMON
#define DUNGEON_MAX_TRAPS 64
#define DUNGEON_MAX_ITEMS 64
@@ -269,7 +270,12 @@ typedef struct Dungeon
/* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX];
/* 0x181E4 */ OpenedFile *paletFile;
/* 0x181E8 */ unkDungeonGlobal_unk181E8_sub unk181e8;
u8 fill18220[0x1C578 - 0x18220];
u8 fill18220[0x1C06C - 0x18220];
u32 unk1C06C;
u8 fill1C070[0x1C570 - 0x1C070];
u8 unk1C570;
u8 unk1C571;
u8 fill1C572[0x1C578 - 0x1C572];
u8 unk1C578;
u8 fill1C579[0x1C57E - 0x1C579];
u8 unk1C57E;

View File

@@ -4,5 +4,6 @@
#include "structs/dungeon_entity.h"
u8 GetApparentWeather(Entity *pokemon);
void sub_807E5E4(u8 weather);
#endif

View File

@@ -87,6 +87,8 @@ SECTIONS {
asm/code_800DAC0.o(.text);
src/code_800E9A8.o(.text);
asm/code_800E9E4.o(.text);
src/code_800ED38.o(.text);
asm/code_800ED38.o(.text);
src/code_800F958.o(.text);
asm/code_800F990.o(.text);
src/code_8010EF0.o(.text);
@@ -103,6 +105,8 @@ SECTIONS {
asm/code_80130A8.o(.text);
src/code_80140DC.o(.text);
asm/code_80140DC.o(.text);
src/code_8015080.o(.text);
asm/code_8015080.o(.text);
src/code_8012A18_1.o(.text);
src/code_801602C.o(.text);
src/felicity_bank.o(.text);
@@ -203,8 +207,6 @@ SECTIONS {
src/code_803D0D8.o(.text);
asm/code_803D110.o(.text);
src/code_803E46C.o(.text);
asm/code_803E490.o(.text);
src/code_803E668.o(.text);
asm/code_803E724.o(.text);
src/code_8040094.o(.text);
asm/code_8040094.o(.text);
@@ -246,6 +248,7 @@ SECTIONS {
asm/code_8066D04.o(.text);
src/code_805D8C8.o(.text);
asm/code_805D8C8_1.o(.text);
src/code_8069D4C.o(.text);
src/targeting.o(.text);
src/code_8069E0C.o(.text);
asm/code_8069E0C.o(.text);
@@ -296,15 +299,12 @@ SECTIONS {
src/code_808417C.o(.text);
asm/code_808417C.o(.text);
src/code_8084778.o(.text);
asm/code_80847D4.o(.text);
src/code_80848F0.o(.text);
asm/code_80848F0.o(.text);
src/dungeon_util_1.o(.text);
asm/code_8085B80.o(.text);
src/code_8085E98.o(.text);
asm/code_8085EB0.o(.text);
src/code_80861A8.o(.text);
asm/code_80861B8.o(.text);
src/code_80869E4.o(.text);
src/code_8086A3C.o(.text);
asm/code_8086A3C.o(.text);
@@ -351,11 +351,11 @@ SECTIONS {
src/code_809C5C4.o(.text);
asm/code_809C5C4.o(.text);
src/code_809D148.o(.text);
asm/code_809D148.o(.text);
src/ground_script.o(.text);
asm/handleaction.o(.text);
src/ground_script_1.o(.text);
asm/ground_script.o(.text);
src/ground_script_2.o(.text);
src/code_80A26CC.o(.text);
asm/code_80A26CC_1.o(.text);
src/ground_map.o(.text);
@@ -454,6 +454,7 @@ SECTIONS {
src/code_80140DC.o(.rodata);
data/data_80D47B8.o(.rodata);
src/common_strings.o(.rodata);
src/code_8015080.o(.rodata);
data/data_80DAF70.o(.rodata);
src/code_801602C.o(.rodata);
src/felicity_bank.o(.rodata);
@@ -519,6 +520,7 @@ SECTIONS {
src/post_office_guide2.o(.rodata);
src/code_8031D70.o(.rodata);
src/adventure_log.o(.rodata);
src/friend_rescue.o(.rodata);
data/friend_rescue.o(.rodata);
data/credits1.o(.rodata);
src/credits2.o(.rodata);
@@ -542,7 +544,6 @@ SECTIONS {
src/personality_test1.o(.rodata);
src/personality_test2.o(.rodata);
src/code_803D0D8.o(.rodata);
data/data_80F4278.o(.rodata);
src/dungeon_util.o(.rodata);
data/data_80F4468.o(.rodata);
src/dungeon_ai_movement.o(.rodata);

View File

@@ -1,6 +1,9 @@
#include "global.h"
#include "code_800E9A8.h"
s32 sub_800E2C0(void);
u8 sub_800EC74(void);
struct unkStruct_203B0CC *gUnknown_203B0CC;
bool8 sub_800E9A8(s32 a0)
@@ -21,4 +24,36 @@ bool8 sub_800E9A8(s32 a0)
}
return FALSE;
}
}
bool8 sub_800E9E4(void)
{
if(sub_800E2C0() != -1)
{
return TRUE;
}
else {
return FALSE;
}
}
bool8 sub_800E9FC(u8 a0)
{
s32 i;
struct unkStruct_203B0CC_sub *ptr;
ptr = gUnknown_203B0CC->unk0;
for (i = 0; i < 32; i++, ptr++) {
if (ptr->unk4 != -1) {
if(a0 != 0)
return TRUE;
if (ptr->unk54 == 0)
return TRUE;
}
}
if(sub_800EC74())
return TRUE;
return FALSE;
}

201
src/code_800ED38.c Normal file
View File

@@ -0,0 +1,201 @@
#include "global.h"
#include "file_system.h"
#include "memory.h"
struct unkStruct_203B0D0_sub
{
// size: 0x24
u32 unk0;
struct unkStruct_203B0D0_sub *unk4;
struct unkStruct_203B0D0_sub *unk8;
u32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
u32 unk20;
};
struct unkStruct_203B0D0 {
// size: 0x4C
u32 unk0;
struct unkStruct_203B0D0_sub unk4[2];
};
struct unkStruct_203B0D0 *gUnknown_203B0D0;
extern s32 sub_8000728();
s32 *sub_800ECA4(s32);
OpenedFile *sub_800F1C0(s32, s32);
s32 sub_800F0F4(s32, s32);
void sub_800F204(OpenedFile *file);
void sub_800F13C(s32, OpenedFile *, s32 *);
void sub_800F15C(s32);
s16 *sub_800ECB8(u16);
s16 sub_800ECE4(u8);
s16 sub_800ECF8(u8 r0);
s16 sub_800ED0C(u8 r0);
void sub_800ED38(s32 r0)
{
if(gUnknown_203B0D0 == 0)
{
gUnknown_203B0D0 = MemoryAlloc(sizeof(struct unkStruct_203B0D0), 0xB);
MemoryClear8((u8 *)gUnknown_203B0D0, sizeof(struct unkStruct_203B0D0));
}
gUnknown_203B0D0->unk0 = r0;
}
void sub_800ED64(void)
{
if(gUnknown_203B0D0)
{
MemoryFree(gUnknown_203B0D0);
gUnknown_203B0D0 = NULL;
}
}
void sub_800ED80(void)
{
s32 index;
struct unkStruct_203B0D0_sub *sub;
gUnknown_203B0D0->unk0 = 0;
for(index = 0; index < 2; index++)
{
sub = &gUnknown_203B0D0->unk4[index];
sub->unk0 = 0;
sub->unk4 = 0;
sub->unk8 = 0;
}
}
bool8 sub_800EDB0(struct unkStruct_203B0D0_sub *r0)
{
s32 index;
for(index = 0; index < 2; index++)
{
if(gUnknown_203B0D0->unk4[index].unk0 == 0)
{
gUnknown_203B0D0->unk4[index] = *r0;
return TRUE;
}
}
return FALSE;
}
void sub_800EDF0(u32 r0, struct unkStruct_203B0D0_sub *r1) {
struct unkStruct_203B0D0_sub stack;
s32 uVar1;
switch(r0)
{
case 0:
stack.unk0 = 3;
stack.unkC = 0xE;
stack.unk10 = -1;
stack.unk18 = 0xDC << 2;
stack.unk1C = 0x1F;
stack.unk14 = -1;
stack.unk4 = r1;
break;
case 1:
stack.unk0 = 4;
stack.unkC = 0xE;
stack.unk10 = 0xF0 << 4;
stack.unk18 = -1;
stack.unk1C = -1;
// TODO: what math op is this again?
uVar1 = sub_8000728();
stack.unk14 = (((int)(-(uVar1 ^ 2) | (uVar1 ^ 2)) >> 0x1f) & 2);
stack.unk4 = r1;
break;
}
stack.unk8 = r1->unk4;
stack.unk20 = 0;
sub_800EDB0(&stack);
}
void sub_800EE5C(s32 r0)
{
s32 *ret;
OpenedFile *file;
s32 ret2;
ret = sub_800ECA4(r0);
if(r0 != 0)
{
if((u32)(ret[0] - 1) > 1)
{
file = sub_800F1C0(ret[0], ret[1]);
if(file)
{
ret2 = sub_800F0F4(ret[0], ret[1]);
if(ret2 == -1)
{
sub_800F204(file);
return;
}
else if(ret2 != -2)
{
sub_800F13C(ret2, file, ret);
sub_800EDF0(ret2, (void *)file);
}
else {
sub_800F204(file);
}
sub_800F15C(ret[1]);
}
}
}
}
void sub_800EEC8(u16 r0)
{
s16 *ret;
ret = sub_800ECB8(r0);
sub_800EE5C(ret[0]);
}
void sub_800EEE0(u16 r0)
{
s16 *ret;
ret = sub_800ECB8(r0);
sub_800EE5C(ret[2]);
}
void sub_800EEF8(u16 r0)
{
s16 *ret;
ret = sub_800ECB8(r0);
sub_800EE5C(ret[1]);
}
void sub_800EF10(u16 r0)
{
s16 *ret;
ret = sub_800ECB8(r0);
sub_800EE5C(ret[3]);
}
void sub_800EF28(u8 r0)
{
sub_800EE5C(sub_800ECE4(r0));
}
void sub_800EF40(u8 r0, u8 r1)
{
s32 ret;
if(r1)
{
ret = sub_800ECF8(r0);
}
else
{
ret = sub_800ED0C(r0);
}
sub_800EE5C(ret);
}

View File

@@ -1,10 +1,61 @@
#include "global.h"
#include "code_800F958.h"
#include "memory.h"
extern DungeonPokemonSprites *gDungeonPokemonSprites;
extern DungeonPokemonSprite *NewDungeonPokemonSprite(void);
extern DungeonPokemonSprite* GetDungeonPokemonSprite(s32 id);
extern Position gUnknown_80D3564;
void AddPokemonDungeonSprite(s32 id, s16 species, Position *pos, u32 r3) {
DungeonPokemonSprite *dSprite;
DungeonPokemonSprite *newSprite;
Position newPos;
s32 species_s32;
species_s32 = species;
if(gDungeonPokemonSprites == NULL)
return;
dSprite = GetDungeonPokemonSprite(id);
if(dSprite != NULL)
return;
newSprite = NewDungeonPokemonSprite();
if(newSprite == NULL)
return;
newSprite->exists = 1;
newSprite->id = id;
newSprite->species = species_s32;
newSprite->status = 0;
newSprite->pos = *pos;
newSprite->unk11 = r3;
newPos = gUnknown_80D3564;
newSprite->statusOffsets[1] = newPos;
newSprite->statusOffsets[0] = newPos;
newSprite->statusSprites[0].status = 0;
newSprite->statusSprites[0].frame = 0;
newSprite->statusSprites[1].status = 0;
newSprite->statusSprites[1].frame = 0;
}
void DeletePokemonDungeonSprite(s32 id)
{
DungeonPokemonSprite *dSprite;
if(gDungeonPokemonSprites == NULL)
return;
dSprite = GetDungeonPokemonSprite(id);
if(dSprite == NULL)
return;
MemoryClear8((u8 *)dSprite, sizeof(DungeonPokemonSprite));
}
void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3)
{
DungeonPokemonSprite *dSprite;

99
src/code_8015080.c Normal file
View File

@@ -0,0 +1,99 @@
#include "global.h"
#include "globaldata.h"
#include "code_80130A8.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "text1.h"
#include "text2.h"
struct unkStruct_203B1F8
{
// size: 0x4B4
u32 menuAction;
MenuStruct unk4;
UnkTextStruct2 unk54[4];
u8 buffer[0x400];
};
EWRAM_DATA_2 struct unkStruct_203B1F8 *gUnknown_203B1F8 = {0};
const UnkTextStruct2 gUnknown_80DAF70 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const UnkTextStruct2 gUnknown_80DAF88 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x02, 0x02,
0x1A, 0x0c,
0x0c, 0x00,
NULL
};
const UnkTextStruct2 gUnknown_80DAFA0 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x16, 0x0F,
0x06, 0x03,
0x03, 0x00,
NULL
};
bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems)
{
s32 index;
gUnknown_203B1F8 = MemoryAlloc(sizeof(struct unkStruct_203B1F8), 8);
gUnknown_203B1F8->menuAction = 0;
for(index = 0; index < 4; index++)
{
gUnknown_203B1F8->unk54[index] = gUnknown_80DAF70;
}
gUnknown_203B1F8->unk54[0] = gUnknown_80DAF88;
gUnknown_203B1F8->unk54[2] = gUnknown_80DAFA0;
sub_8012CAC(&gUnknown_203B1F8->unk54[2], menuItems);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B1F8->unk54, 1, 1);
sub_80073B8(0);
xxx_format_string(buffer, gUnknown_203B1F8->buffer, gUnknown_203B1F8->buffer + 0x400, 0);
PrintStringOnWindow(4, 4, gUnknown_203B1F8->buffer, 0, 0);
sub_80073E0(0);
sub_8012D60(&gUnknown_203B1F8->unk4, menuItems, 0, 0, -1, 2);
return TRUE;
}
u32 sub_801516C(void)
{
if(!sub_8012FD8(&gUnknown_203B1F8->unk4))
{
sub_8013114(&gUnknown_203B1F8->unk4, &gUnknown_203B1F8->menuAction);
return 3;
}
else
{
return 0;
}
}
u32 sub_8015198(void)
{
return gUnknown_203B1F8->menuAction;
}
void sub_80151A4(void)
{
if(gUnknown_203B1F8)
{
MemoryFree(gUnknown_203B1F8);
gUnknown_203B1F8 = NULL;
}
}

View File

@@ -11,7 +11,7 @@
#include "code_80118A4.h"
#include "menu_input.h"
extern unkStruct_203B270 *gUnknown_203B270;
EWRAM_DATA_2 unkStruct_203B270 *gUnknown_203B270 = {0};
const UnkTextStruct2 gUnknown_80DC240 = {
0x00, 0x00, 0x00, 0x00,

View File

@@ -19,7 +19,7 @@ struct unkStruct_203B274
unkStruct_808E218_arg unk8;
struct_Sub80095E4_2 s348;
};
extern struct unkStruct_203B274 *gUnknown_203B274;
EWRAM_DATA_2 struct unkStruct_203B274 *gUnknown_203B274 = {0};
extern u8 gAvailablePokemonNames[];

View File

@@ -32,7 +32,7 @@ struct unkStruct_203B278
MenuInputStructSub unkC8;
};
extern struct unkStruct_203B278 *gUnknown_203B278;
EWRAM_DATA_2 struct unkStruct_203B278 *gUnknown_203B278 = {0};
static const UnkTextStruct2 sUnknown_80DC2F8 = {
0, 0, 0, 0,

View File

@@ -2,6 +2,7 @@
#include "globaldata.h"
#include "constants/wonder_mail.h"
#include "constants/colors.h"
#include "code_803D0D8.h"
#include "input.h"
#include "memory.h"
#include "text1.h"
@@ -48,8 +49,6 @@ const UnkTextStruct2 gUnknown_80E1FC4 = {
ALIGNED(4) const u8 gUnknown_80E1FDC[] = "Password";
extern void sub_803D2C0(u8 *, unkStruct_203B480 *);
void sub_8031E00(void);
void sub_8031E58(void);
void DrawSOSPasswordScreen(void);

View File

@@ -1,7 +1,10 @@
#include "global.h"
#include "globaldata.h"
#include "structs/str_wonder_mail.h"
#include "code_803D0D8.h"
#include "code_8092334.h"
#include "code_8094F88.h"
#include "code_80958E8.h"
#include "memory.h"
static EWRAM_DATA_2 u8 sUnknown_203B408 = {0};
@@ -95,4 +98,150 @@ void sub_803D1A8(u8 *param_1, u8 *param_2, s32 size)
}
}
// Probably continues in code_803D110.s
bool8 sub_803D204(u8 *buffer,unkStruct_203B480 *param_2)
{
s32 innerIndex;
u8 checksum;
u8 local_c4 [34];
u8 translateBuffer [PASSWORD_BUFFER_SIZE];
u8 localBuffer [PASSWORD_BUFFER_SIZE];
unkStruct_8094924 uStack_30;
s32 index;
checksum = 0;
MemoryCopy8(localBuffer,buffer,sizeof(localBuffer));
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
{
for(innerIndex = 0; innerIndex < PASSWORD_BUFFER_SIZE; innerIndex++)
{
if (innerIndex == gUnknown_80F43F0[index]) break;
}
translateBuffer[index] = localBuffer[innerIndex];
}
if (sub_803D110(translateBuffer,local_c4,sizeof(translateBuffer)) != 0) {
for(index = 1; index < 34; index++)
{
checksum += local_c4[index] + index;
}
if (local_c4[0] == checksum) {
xxx_init_struct_8094924_restore_809485C(&uStack_30,&local_c4[1],33);
sub_8095774(&uStack_30,param_2);
nullsub_102(&uStack_30);
return TRUE;
}
}
return FALSE;
}
void sub_803D2C0(u8 *buffer, unkStruct_203B480 *mail)
{
u8 checksum;
int index;
u8 local_c0 [34];
u8 buffer1 [PASSWORD_BUFFER_SIZE];
u8 buffer2 [PASSWORD_BUFFER_SIZE];
unkStruct_8094924 auStack_2c;
checksum = 0;
for(index = 0; index < 34; index++)
{
local_c0[index] = 0;
}
xxx_init_struct_8094924_save_809486C(&auStack_2c,&local_c0[1],33);
sub_8095824(&auStack_2c,mail);
nullsub_102(&auStack_2c);
for(index = 1; index < 34; index++)
{
checksum += + local_c0[index] + index;
}
local_c0[0] = checksum;
sub_803D1A8(buffer1,local_c0,sizeof(buffer1));
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
{
buffer2[gUnknown_80F43F0[index]] = buffer1[index];
}
MemoryCopy8(buffer,buffer2,sizeof(buffer2));
}
bool8 DecodeWonderMailPassword(u8* buffer, WonderMail *mail)
{
s32 innerIndex;
int index;
u8 checksum;
u8 local_70 [16];
u8 local_60 [24];
u8 password [24];
unkStruct_8094924 puVar1;
checksum = 0;
MemoryCopy8(password,buffer,24);
for(index = 0; index < 24; index++)
{
for(innerIndex = 0; innerIndex < 24; innerIndex++)
{
if (innerIndex == gUnknown_80F4426[index]) break;
}
local_60[index] = password[innerIndex];
}
if (sub_803D110(local_60,local_70,24) != 0) {
for(index = 1; index < 0xF; index++)
{
checksum += (local_70[index] + index);
}
if (local_70[0] == checksum) {
xxx_init_struct_8094924_restore_809485C(&puVar1,&local_70[1],0xc);
RestoreWonderMail(&puVar1,mail);
nullsub_102(&puVar1);
return TRUE;
}
}
return FALSE;
}
void sub_803D414(u8 *buffer,WonderMail *mail)
{
u8 checksum;
s32 index;
u8 local_6c [15];
u8 local_5c [24];
u8 auStack_44 [24];
unkStruct_8094924 uStack_2c;
checksum = 0;
for(index = 0; index < 0xF; index++)
{
local_6c[index] = 0;
}
xxx_init_struct_8094924_save_809486C(&uStack_2c,&local_6c[1],12);
SaveWonderMail(&uStack_2c,mail);
nullsub_102(&uStack_2c);
for(index = 1; index < 0xF; index++)
{
checksum += local_6c[index] + index;
}
local_6c[0] = checksum;
sub_803D1A8(local_5c,local_6c, sizeof(local_5c));
for(index = 0; index < 0x18; index++)
{
auStack_44[(gUnknown_80F4426)[index]] = local_5c[index];
}
MemoryCopy8(buffer,auStack_44,sizeof(auStack_44));
}
void sub_803D4AC(void)
{
gDungeon->unk1C570 = 0x63;
gDungeon->unk1C571 = 0xFF;
}

View File

@@ -1,11 +1,46 @@
#include "global.h"
#include "structs/str_dungeon.h"
#include "code_803E46C.h"
#include "code_8004AA0.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "code_80118A4.h"
#include "code_803E668.h"
#include "bg_palette_buffer.h"
#include "bg_control.h"
#include "dungeon_music.h"
#include "game_options.h"
#include "input.h"
#include "play_time.h"
#include "sprite.h"
extern u8 gUnknown_203B40C;
extern u8 gUnknown_203B40D;
extern s32 gUnknown_202EDC8;
extern s32 gUnknown_202EDCC;
extern u32 gUnknown_202EDD0;
extern s32 gUnknown_202EDD4;
extern void sub_803E490(u32);
void xxx_draw_string_80524F0(void);
void sub_8085F78(void);
void sub_803F580(s32);
void sub_806CC10();
void sub_804522C();
void sub_803F9CC();
extern void xxx_call_update_bg_vram(void);
void sub_8040894();
void sub_803ECE0();
void sub_803EDF0();
void sub_800E90C();
void sub_8042E5C();
void sub_8040B60();
void sub_8040788();
void sub_800F7D0(Position *);
void sub_803E874(s32, s32);
void sub_803EAF0(s32, s32);
void sub_803E46C(u32 a0)
{
@@ -14,3 +49,194 @@ void sub_803E46C(u32 a0)
else
sub_803E668(a0);
}
void sub_803E490(u32 unused)
{
gUnknown_202EDD4++;
xxx_draw_string_80524F0();
sub_8085F78();
sub_803F580(1);
if(gDungeon->unk181e8.unk1821A)
{
gDungeon->unk181e8.unk18208 = 2;
SetBG2RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y);
}
else
{
gDungeon->unk181e8.unk18208 = 3;
SetBG2RegOffsets(0, 0);
}
SetBG3RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y - gDungeon->unk181e8.unk181FC);
sub_806CC10();
sub_804522C();
sub_803F9CC();
sub_800F7D0(&gDungeon->unk181e8.cameraPixelPos);
if(gDungeon->unk12 <= 0x63)
gDungeon->unk12++;
sub_800E90C(&gDungeon->unk181e8.cameraPixelPos);
sub_8042E5C();
if(gUnknown_202EDD0 == 0 || gUnknown_202EDD0 == 3 || gGameOptionsRef->mapOption == TOP_MAP_AND_TEAM_NO_BOTTOM)
sub_8040894();
sub_803ECE0();
sub_803EDF0();
if(gDungeon->unk181e8.unk18215 != 0 && gDungeon->unk1C06C != 3)
sub_8004AF0(gUnknown_203B40D, gUnknown_202EE8C, 0xA0, 0x20, gUnknown_202EDC8, (u8 *)gDungeon->unk17C);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
nullsub_12();
sub_80060EC();
gUnknown_202EDCC++;
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
nullsub_13();
sub_8005304();
nullsub_14();
TransferBGPaletteBuffer();
sub_8009908();
xxx_call_update_bg_vram();
sub_8040788();
xxx_call_update_bg_sound_input();
gDungeon->unk181e8.unk18213 = 0;
UpdateDungeonMusic();
sub_8011860();
sub_8040B60();
ResetSprites(FALSE);
nullsub_10(FALSE);
gUnknown_202EDD4--;
}
void sub_803E668(u32 unused)
{
gUnknown_202EDD4++;
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
nullsub_12();
sub_8005838(NULL, 0);
sub_80060EC();
gUnknown_202EDCC++;
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
nullsub_13();
sub_8005304();
nullsub_14();
TransferBGPaletteBuffer();
sub_8009908();
xxx_call_update_bg_vram();
xxx_call_update_bg_sound_input();
gDungeon->unk181e8.unk18213 = 0;
sub_8011860();
ResetSprites(FALSE);
nullsub_10(FALSE);
gUnknown_202EDD4--;
}
void sub_803E708(s32 a0, u32 a1)
{
while (a0 != 0) {
sub_803E46C(a1);
a0--;
}
}
void sub_803E724(s32 r0)
{
do
{
sub_803E46C(r0);
} while (gRealInputs.held & 0xF0);
}
void sub_803E748(void) {
s32 index1;
s32 index2;
index2 = 0x1F;
gUnknown_203B40D = 1;
gUnknown_202EDC8 = 0;
sub_803E874(1, 0x1F);
for(index1 = 0; index1 < 0x2C; index1++)
{
if(index1 < 0x20)
{
index2 -= 2;
if(index2 <= 0)
{
index2 = 0;
sub_803EAF0(1, 0);
gDungeon->unk181e8.unk18217 = index2;
}
}
if(index1 > 0xB)
if(gUnknown_202EDC8 <= 0x1E)
gUnknown_202EDC8++;
sub_803E874(1, index2);
sub_803E46C(5);
}
gUnknown_203B40D = 0;
gUnknown_202EDC8 = 0x1F;
}
void sub_803E7C8(void)
{
s32 index1;
s32 index2;
index2 = 0x1F;
gUnknown_203B40D = 1;
gUnknown_202EDC8 = 0;
sub_803E46C(5);
for(index1 = 0; index1 < 0x2C; index1++)
{
sub_803E874(1, index2);
if(index1 < 0x20)
{
index2 -= 2;
if(index2 <= 0)
{
index2 = 0;
sub_803EAF0(1, 0);
gDungeon->unk181e8.unk18217 = index2;
}
}
sub_803E46C(5);
}
gUnknown_203B40D = 0;
}
void sub_803E830(void)
{
s32 index;
gUnknown_203B40D = 1;
for(index = 0; index < 0x20; index++)
{
sub_803E874(0, 0);
sub_803E46C(5);
if(gUnknown_202EDC8 > 0)
gUnknown_202EDC8--;
}
gUnknown_202EDC8 = 0;
gUnknown_203B40D = 0;
}

View File

@@ -1,54 +0,0 @@
#include "global.h"
#include "code_803E668.h"
#include "bg_palette_buffer.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "code_80118A4.h"
#include "code_803E46C.h"
#include "game_options.h"
#include "input.h"
#include "play_time.h"
#include "sprite.h"
#include "structs/str_dungeon.h"
extern s32 gUnknown_202EDCC;
extern s32 gUnknown_202EDD4;
extern void xxx_call_update_bg_vram(void);
void sub_803E668(u32 a0)
{
gUnknown_202EDD4++;
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
nullsub_12();
sub_8005838(NULL, 0);
sub_80060EC();
gUnknown_202EDCC++;
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
nullsub_13();
sub_8005304();
nullsub_14();
TransferBGPaletteBuffer();
sub_8009908();
xxx_call_update_bg_vram();
xxx_call_update_bg_sound_input();
gDungeon->unk181e8.unk18213 = 0;
sub_8011860();
ResetSprites(FALSE);
nullsub_10(FALSE);
gUnknown_202EDD4--;
}
void sub_803E708(s32 a0, u32 a1)
{
while (a0 != 0) {
sub_803E46C(a1);
a0--;
}
}

View File

@@ -64,7 +64,6 @@ extern s32 gUnknown_202EDC8;
extern u8 gUnknown_203B40D;
extern s16 gUnknown_2026E4E;
extern u8 sub_800E9FC(u8);
extern void sub_800DBBC(void);
extern void sub_803EA10(void);
extern void sub_8042E98(void);

View File

@@ -112,7 +112,7 @@ extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
extern void LevelDownTarget(Entity *pokemon, Entity *r1, u32 r2);
extern void sub_80522F4(Entity *pokemon, Entity *r1, const u8[]);
extern void sub_806F370(Entity *pokemon, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
extern void sub_8078A58(Entity *, Entity *, s16, u32);
extern void sub_8078A58(Entity *, Entity *, s32, u32);
extern s32 sub_8042520(Entity *);
Entity *sub_80696FC(Entity *);
extern void sub_80943A0(void*, s32);

View File

@@ -327,7 +327,6 @@ extern void sub_8068FE0(Entity *, u32, u32);
extern void sub_8086448(void);
extern void sub_8042B0C(Entity *);
extern u8 sub_806FD18(Entity *);
extern void sub_80861D4(Entity *, u32, s32 direction);
extern void sub_806FDF4(Entity *, Entity *, Entity **);
extern u32 sub_80861F8(u32, Entity *, u32);
extern s32 GetCameraXPos();
@@ -363,7 +362,6 @@ extern void sub_806BFC0(EntityInfo *, u32);
extern void sub_808BBA8(Entity * );
extern void sub_8041888(u32);
extern void sub_80861B8(Entity *, u32, u32);
extern void DisplayDungeonDialogue(const u8 *r0);
extern u32 sub_80861F8(u32, Entity *, u32);
@@ -1259,7 +1257,7 @@ void sub_808862C(void)
sub_8085930(DIRECTION_NORTH);
sub_80855E4(sub_8086A3C);
SetFacingDirection(AlakazamEntity, DIRECTION_NORTH);
sub_80861D4(AlakazamEntity,0xd,4);
sub_80861D4(AlakazamEntity,0xd,DIRECTION_NORTH);
SetFacingDirection(GroudonEntity, DIRECTION_SOUTH);
sub_8086A3C(GroudonEntity);
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y -3);
@@ -1315,7 +1313,7 @@ void sub_808875C(void)
else {
sub_8072008(GroudonEntity,GroudonEntity,gUnknown_80F57D2,0,0);
SetFacingDirection(GroudonEntity, DIRECTION_SOUTH);
sub_80861D4(GroudonEntity,0xf,0);
sub_80861D4(GroudonEntity,0xf,DIRECTION_SOUTH);
}
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 3);
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_GROUDON);
@@ -1375,7 +1373,7 @@ void GroudonPreFightDialogue(void)
sub_803E708(10,0x46);
sub_808682C();
sub_803E708(0x3c,0x46);
sub_80861B8(AlakazamEntity,6,4);
sub_80861B8(AlakazamEntity,6,DIRECTION_NORTH);
PlaySoundEffect(0x205);
sub_8086738();
sub_8068FE0(AlakazamEntity,0x21c,0);
@@ -1498,7 +1496,7 @@ void SceneGroudonMovement(Entity * GroudonEntity)
sub_803E46C(0x46);
}
sub_80856C8(GroudonEntity,GroudonEntity->pos.x,GroudonEntity->pos.y + 1);
sub_80861D4(GroudonEntity,0xf,0);
sub_80861D4(GroudonEntity,0xf,DIRECTION_SOUTH);
sub_803E708(10,0x46);
sub_808682C();
sub_8085930(DIRECTION_NORTH);
@@ -3465,7 +3463,7 @@ void sub_808B50C(void)
sub_8041888(0);
JirachiEntity->info->unk15C = 1;
JirachiEntity->info->unk15E = 0;
sub_80861B8(JirachiEntity,0xe,0);
sub_80861B8(JirachiEntity,0xe,DIRECTION_SOUTH);
DungeonFadeOutBGM(0x1e);
sub_803E708(0x1e,70);
// Fwaaaahhhh
@@ -3506,7 +3504,7 @@ void JirachiWish(void)
sub_8041888(0);
JirachiEntity->info->unk15C = 1;
JirachiEntity->info->unk15E = 0;
sub_80861B8(JirachiEntity,0xe,0);
sub_80861B8(JirachiEntity,0xe,DIRECTION_SOUTH);
sub_80855E4(sub_80861A8);
gDungeon->unk1356C = 1;
DungeonFadeOutBGM(0x1e);
@@ -3744,7 +3742,7 @@ void JirachiDropInEffect(Entity *jirachiEntity)
sub_80861F8(0x1b,jirachiEntity,0);
sub_8086A54(jirachiEntity);
sub_80861B8(jirachiEntity,0xe,0);
sub_80861B8(jirachiEntity,0xe,DIRECTION_SOUTH);
iVar1 = 0xa000;
iVar2 = 0x200;
PlaySoundEffect(0x1f8);
@@ -3912,16 +3910,16 @@ void LugiaPreFightDialogue(void)
sub_803E708(10,0x46);
DisplayDungeonDialogue(gLugiaPreFightDialogue_4);
PlaySoundEffect(0x1f8);
sub_80861D4(LugiaEntity,0xd,0);
sub_80861D4(LugiaEntity,0xd,DIRECTION_SOUTH);
sub_803E708(0x2b,0x46);
sub_80861B8(LugiaEntity,0,0);
sub_80861B8(LugiaEntity,0,DIRECTION_SOUTH);
DisplayDungeonDialogue(gLugiaPreFightDialogue_5);
LugiaScreenFlash();
DisplayDungeonDialogue(gLugiaPreFightDialogue_6);
LugiaScreenFlash2();
SetDungeonBGColorRGB(0xffffff06,0xffffff06,0xffffff06,1,0);
DungeonStopBGM();
sub_80861D4(LugiaEntity,7,0);
sub_80861D4(LugiaEntity,7,DIRECTION_SOUTH);
DisplayDungeonDialogue(gLugiaPreFightDialogue_7);
LugiaScreenFlash();
SetupBossFightHP(LugiaEntity,800,MUS_BATTLE_WITH_RAYQUAZA);
@@ -4308,7 +4306,7 @@ void CelebiJoinDialogue(void)
}
DungeonStartNewBGM(MUS_FRIEND_AREA_HEALING_FOREST);
PlaySoundEffect(0x1c7);
sub_80861D4(CelebiEntity,0xd,0);
sub_80861D4(CelebiEntity,0xd,DIRECTION_SOUTH);
sub_803E708(0x37,0x46);
PlaySoundEffect(0x1d5);
sub_803E708(0x1a,0x46);
@@ -4321,7 +4319,7 @@ void CelebiJoinDialogue(void)
DisplayDungeonDialogue(gCelebiJoinDialogue_5);
sub_803E708(10,0x46);
PlaySoundEffect(0x1c7);
sub_80861D4(CelebiEntity,0xd,0);
sub_80861D4(CelebiEntity,0xd,DIRECTION_SOUTH);
sub_803E708(0x37,0x46);
PlaySoundEffect(0x1d5);
sub_803E708(0x1a,0x46);

View File

@@ -2445,11 +2445,11 @@ void sub_805E738(Entity *a0)
// What???
for (i = 0; i < 1; i++) {
bool8 r9 = FALSE;
u32 r5 = entityInfo->action.direction;
r5++;
for (j = 1; j < 8; j++, r5++) {
r5 &= 7;
tile = GetTile(a0->pos.x + gAdjacentTileOffsets[r5].x, a0->pos.y + gAdjacentTileOffsets[r5].y);
u32 direction = entityInfo->action.direction;
direction++;
for (j = 1; j < 8; j++, direction++) {
direction &= DIRECTION_MASK;
tile = GetTile(a0->pos.x + gAdjacentTileOffsets[direction].x, a0->pos.y + gAdjacentTileOffsets[direction].y);
if (tile->monster != NULL && GetEntityType(tile->monster) == ENTITY_MONSTER) {
EntityInfo *tileMonsterInfo = tile->monster->info;
if (CanSeeTarget(a0, tile->monster)) {
@@ -2461,8 +2461,8 @@ void sub_805E738(Entity *a0)
}
}
if (r9) {
a0->info->action.direction = r5 & 7;
sub_806CDD4(a0, sub_806CEBC(a0), r5);
a0->info->action.direction = direction & DIRECTION_MASK;
sub_806CDD4(a0, sub_806CEBC(a0), direction);
break;
}
}

64
src/code_8069D4C.c Normal file
View File

@@ -0,0 +1,64 @@
#include "global.h"
#include "pokemon_mid.h"
#include "dungeon_util.h"
struct unkStruct_8069D4C
{
s16 id;
Position pos;
s16 HP;
u8 atk;
u8 spAtk;
u8 def;
u8 spDef;
u16 level;
u32 exp;
u32 belly;
u32 maxBelly;
Item heldItem;
Move moves[MAX_MON_MOVES];
u32 unk40; // strugglemoveFlags?
HiddenPower hiddenPower;
};
u32 sub_8069D18(Position *pos,Entity *entity)
{
EntityInfo *info;
info = entity->info;
pos->x = (entity->pos).x + gAdjacentTileOffsets[(info->action).direction].x;
pos->y = (entity->pos).y + gAdjacentTileOffsets[(info->action).direction].y;
return info->action.direction & 1;
}
void sub_8069D4C(struct unkStruct_8069D4C *r0, Entity *target)
{
EntityInfo *info;
LevelData leveldata;
info = target->info;
r0->id = info->id;
r0->pos = target->pos;
if(info->bossFlag)
r0->HP = info->originalHP;
else
r0->HP = info->maxHPStat;
r0->level = info->level;
GetPokemonLevelData(&leveldata, info->id, info->level);
r0->exp = leveldata.expRequired;
r0->atk = info->atk;
r0->spAtk = info->spAtk;
r0->def = info->def;
r0->spDef = info->spDef;
r0->heldItem = info->heldItem;
memcpy(r0->moves, info->moves, sizeof(r0->moves) + sizeof(r0->unk40));
r0->belly = info->belly;
r0->maxBelly = info->maxBelly;
r0->hiddenPower = info->hiddenPower;
}

View File

@@ -89,22 +89,22 @@ void sub_806CD90(void)
}
}
void sub_806CDD4(Entity *entity, u8 a1, u32 a2)
void sub_806CDD4(Entity *entity, u8 a1, u32 direction)
{
if (GetEntityType(entity) == ENTITY_MONSTER) {
entity->unk6A = a1;
if (a2 < NUM_DIRECTIONS)
entity->direction = a2;
if (direction < NUM_DIRECTIONS)
entity->direction = direction;
}
}
void sub_806CDFC(Entity *entity, u8 a1, u32 a2)
void sub_806CDFC(Entity *entity, u8 a1, u32 direction)
{
if (GetEntityType(entity) == ENTITY_MONSTER) {
if (entity->unk6B == a1 && entity->direction2 == a2)
if (entity->unk6B == a1 && entity->direction2 == direction)
return;
sub_806CDD4(entity, a1, a2);
sub_806CDD4(entity, a1, direction);
}
}

View File

@@ -1,9 +1,326 @@
#include "global.h"
#include "constants/dungeon_action.h"
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_8092334.h"
#include "dungeon_map_access.h"
#include "dungeon_util.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
#include "structs/str_position.h"
extern void sub_8082FE0(unkStruct_8094924 *, void *, u32 size);
extern void sub_8082FA8(unkStruct_8094924 *, void *, u32);
u16 sub_8083158(unkStruct_8094924 *param_1);
s16 sub_8083170(unkStruct_8094924 *param_1);
u8 sub_8083188(unkStruct_8094924 *param_1);
u32 sub_80831A0(unkStruct_8094924 *param_1);
bool8 sub_80831DC(unkStruct_8094924 *param_1);
void sub_8082FE0(unkStruct_8094924 *param_1, u8 *param_2, s32 size);
void sub_80831F8(unkStruct_8094924 *param_1,Position *param_2);
void AddPokemonDungeonSprite(u32, s16, Position *, u32);
void sub_8082B40(void)
{
EntityInfo *info;
Entity *entity;
int index;
Position pos;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if (EntityExists(entity)) {
info = entity->info;
entity->sprite = sub_80687D0(info->apparentID);
sub_806CCB4(entity,sub_806CEBC(entity));
pos = entity->pos;
AddPokemonDungeonSprite(info->unk98,info->apparentID,&pos,3);
entity->room = GetTileSafe(entity->pos.x,entity->pos.y)->room;
}
}
}
s16 sub_8082BC0(unkStruct_8094924 *param_1)
{
s16 temp[2];
temp[0] = 0;
sub_8082FE0(param_1, (u8 *)temp, 2);
return temp[0];
}
u8 sub_8082BE0(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u8 sub_8082BFC(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u8 sub_8082C18(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u8 sub_8082C34(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u8 sub_8082C50(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u32 sub_8082C6C(unkStruct_8094924 *param_1)
{
u32 temp;
temp = 0;
sub_8082FE0(param_1, (u8 *)&temp, 4);
return temp;
}
u8 sub_8082C84(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
u8 sub_8082CA0(unkStruct_8094924 *param_1)
{
u8 temp[4];
temp[0] = 0;
sub_8082FE0(param_1, temp, 1);
return temp[0];
}
void sub_8082CBC(unkStruct_8094924 *param_1, ActionContainer *action)
{
action->action = ACTION_NOTHING;
sub_8082FE0(param_1, &action->direction, 1);
action->fill3 = 7;
sub_80831F8(param_1, &action->itemTargetPosition);
}
void sub_8082CE4(unkStruct_8094924 *param_1, AITarget *aitarget)
{
sub_8082FE0(param_1, (u8 *)&aitarget->aiObjective, 1);
aitarget->aiNotNextToTarget = sub_80831DC(param_1);
aitarget->aiTargetingEnemy = sub_80831DC(param_1);
aitarget->aiTurningAround = sub_80831DC(param_1);
aitarget->aiTargetSpawnGenID = sub_8083158(param_1);
aitarget->aiTarget = NULL;
aitarget->unkC = 0;
sub_80831F8(param_1, &aitarget->aiTargetPos);
}
void sub_8082D28(unkStruct_8094924 *param_1, u8 *param_2)
{
sub_8082FE0(param_1, param_2, 3);
}
void sub_8082D34(unkStruct_8094924 *param_1, Sleep *sleep)
{
sub_8082FE0(param_1, &sleep->sleep, 1);
sleep->sleepTurns = sub_8083188(param_1);
}
void sub_8082D50(unkStruct_8094924 *param_1, NonVolatile *nonvoltaile)
{
sub_8082FE0(param_1, &nonvoltaile->nonVolatileStatus, 1);
nonvoltaile->nonVolatileStatusTurns = sub_8083188(param_1);
nonvoltaile->nonVolatileStatusDamageCountdown = sub_8083188(param_1);
nonvoltaile->unk4 = sub_8083188(param_1);
}
void sub_8082D7C(unkStruct_8094924 *param_1, Immobilize *immobilze)
{
sub_8082FE0(param_1, &immobilze->immobilizeStatus, 1);
immobilze->immobilizeStatusTurns = sub_8083188(param_1);
immobilze->immobilizeStatusDamageCountdown = sub_8083188(param_1);
immobilze->unk4 = sub_80831A0(param_1);
}
void sub_8082DA8(unkStruct_8094924 *param_1, Volatile *volatileStatus)
{
sub_8082FE0(param_1, &volatileStatus->volatileStatus, 1);
volatileStatus->volatileStatusTurns = sub_8083188(param_1);
}
void sub_8082DC4(unkStruct_8094924 *param_1, Charging *charging)
{
sub_8082FE0(param_1, &charging->chargingStatus, 1);
charging->chargingStatusTurns = sub_8083188(param_1);
charging->chargingStatusMoveIndex = sub_8083188(param_1);
}
void sub_8082DE8(unkStruct_8094924 *param_1, Protection *protect)
{
sub_8082FE0(param_1, &protect->protectionStatus, 1);
protect->protectionStatusTurns = sub_8083188(param_1);
}
void sub_8082E04(unkStruct_8094924 *param_1, Waiting *waiting)
{
sub_8082FE0(param_1, &waiting->waitingStatus, 1);
waiting->enemyDecoy = sub_80831DC(param_1);
waiting->unkCA = sub_80831DC(param_1);
waiting->waitingStatusTurns = sub_8083188(param_1);
waiting->curseDamageCountdown = sub_8083188(param_1);
}
void sub_8082E38(unkStruct_8094924 *param_1, Linked *linked)
{
sub_8082FE0(param_1, &linked->linkedStatus, 1);
linked->unkD4 = sub_80831A0(param_1);
linked->unkD8 = sub_8083188(param_1);
linked->linkedStatusTurns = sub_8083188(param_1);
linked->linkedStatusDamageCountdown = sub_8083188(param_1);
}
void sub_8082E6C(unkStruct_8094924 *param_1, MoveStatus *moveStatus)
{
sub_8082FE0(param_1, &moveStatus->moveStatus, 1);
moveStatus->moveStatusTurns = sub_8083188(param_1);
}
void sub_8082E88(unkStruct_8094924 *param_1, u8 *param_2, s32 size)
{
sub_8082FE0(param_1, param_2, 1);
}
void sub_8082E94(unkStruct_8094924 *param_1, TransformStatus *transform)
{
sub_8082FE0(param_1, &transform->transformStatus, 1);
transform->transformStatusTurns = sub_8083188(param_1);
}
void sub_8082EB0(unkStruct_8094924 *param_1, EyesightStatus *eyesight)
{
sub_8082FE0(param_1, &eyesight->eyesightStatus, 1);
eyesight->eyesightStatusTurns = sub_8083188(param_1);
}
void sub_8082ECC(unkStruct_8094924 *param_1, Muzzled *muzzle)
{
sub_8082FE0(param_1, (u8 *)&muzzle->muzzled, 1);
muzzle->muzzledTurns = sub_8083188(param_1);
}
void RestoreDungeonPokemonMove(unkStruct_8094924 *param_1, Move *move)
{
move->moveFlags = sub_8083188(param_1);
move->moveFlags2 = sub_8083188(param_1);
sub_8082FE0(param_1, (u8 *)&move->id, 2);
move->PP = sub_8083188(param_1);
move->ginseng = sub_8083188(param_1);
}
void sub_8082F1C(unkStruct_8094924 *param_1,Move *moves)
{
s32 index;
Move *move;
for(index = 0; index < MAX_MON_MOVES; index++)
{
move = &moves[index];
RestoreDungeonPokemonMove(param_1, move);
}
*(u8 *)(moves + 4) = sub_8083188(param_1); // TODO: struggleMoveFlags again
}
void sub_8082F48(unkStruct_8094924 *param_1, u16 *r1)
{
r1[0] = sub_8083170(param_1);
r1[1] = sub_8083170(param_1);
}
void sub_8082F64(unkStruct_8094924 *param_1, JoinedAt *joined)
{
joined->joinedAt = sub_8083188(param_1);
joined->unk1 = sub_8083188(param_1);
}
void sub_8082F80(unkStruct_8094924 *param_1, HiddenPower *hidden)
{
hidden->hiddenPowerBasePower = sub_8083170(param_1);
hidden->hiddenPowerType = sub_8082BFC(param_1);
}
void sub_8082F9C(unkStruct_8094924 *param_1, u8 *r1, u32 r2)
{
param_1->unk0 = r1;
param_1->unk8 = 0;
param_1->unk4 = r1 + r2;
}
void sub_8082FA8(unkStruct_8094924 *param_1, u8 *param_2, s32 size)
{
while (size != 0) {
*(param_1->unk0) = *param_2;
param_1->unk0++;
param_2++;
size--;
param_1->unk8++;
}
}
void sub_8082FD4(unkStruct_8094924 *param_1, u8 *r1, u32 r2)
{
param_1->unk0 = r1;
param_1->unk8 = 0;
param_1->unk4 = r1 + r2;
}
void sub_8082FE0(unkStruct_8094924 *param_1, u8 *param_2, s32 size)
{
while (size != 0) {
*param_2 = *(param_1->unk0);
param_1->unk0++;
param_2++;
size--;
param_1->unk8++;
}
}
void nullsub_98(unkStruct_8094924 *param_1)
{}
@@ -26,7 +343,7 @@ void sub_8083030(unkStruct_8094924 *param_1, u16 param_2)
u16 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,2);
sub_8082FA8(param_1,(u8 *)&uStack_8,2);
}
void sub_8083048(unkStruct_8094924 *param_1, u32 param_2)
@@ -34,7 +351,7 @@ void sub_8083048(unkStruct_8094924 *param_1, u32 param_2)
u16 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,2);
sub_8082FA8(param_1,(u8 *)&uStack_8,2);
}
void sub_8083060(unkStruct_8094924 *param_1, u32 param_2)
@@ -50,7 +367,7 @@ void sub_8083078(unkStruct_8094924 *param_1, u32 param_2)
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
sub_8082FA8(param_1,(u8 *)&uStack_8,4);
}
void sub_808308C(unkStruct_8094924 *param_1, u32 param_2)
@@ -58,7 +375,7 @@ void sub_808308C(unkStruct_8094924 *param_1, u32 param_2)
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
sub_8082FA8(param_1,(u8 *)&uStack_8,4);
}
void sub_80830A0(unkStruct_8094924 *param_1, u32 param_2)
@@ -66,7 +383,7 @@ void sub_80830A0(unkStruct_8094924 *param_1, u32 param_2)
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
sub_8082FA8(param_1,(u8 *)&uStack_8,4);
}
void sub_80830B4(unkStruct_8094924 *param_1, u8 param_2)
@@ -79,34 +396,34 @@ void sub_80830B4(unkStruct_8094924 *param_1, u8 param_2)
void SavePosition(unkStruct_8094924 *param_1, Position *param_2)
{
sub_8082FA8(param_1, &param_2->x, 1);
sub_8082FA8(param_1, &param_2->y, 1);
sub_8082FA8(param_1, (u8 *)&param_2->x, 1);
sub_8082FA8(param_1, (u8 *)&param_2->y, 1);
}
void sub_80830F8(unkStruct_8094924 *param_1, u32 *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
sub_8082FA8(param_1, &param_2[2], 1);
sub_8082FA8(param_1, &param_2[3], 1);
sub_8082FA8(param_1, (u8 *)&param_2[0], 1);
sub_8082FA8(param_1, (u8 *)&param_2[1], 1);
sub_8082FA8(param_1, (u8 *)&param_2[2], 1);
sub_8082FA8(param_1, (u8 *)&param_2[3], 1);
}
void sub_808312C(unkStruct_8094924 *param_1, u16 *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
sub_8082FA8(param_1, (u8 *)&param_2[0], 1);
sub_8082FA8(param_1, (u8 *)&param_2[1], 1);
}
void SaveSpeedCounters(unkStruct_8094924 *param_1, u32 *speedCounters, u32 numCounters)
{
sub_8082FA8(param_1, speedCounters, numCounters);
sub_8082FA8(param_1, (u8 *)speedCounters, numCounters);
}
u16 sub_8083158(unkStruct_8094924 *param_1)
{
u16 local_8;
sub_8082FE0(param_1,&local_8,2);
sub_8082FE0(param_1,(u8 *)&local_8,2);
return local_8;
}
@@ -114,7 +431,7 @@ s16 sub_8083170(unkStruct_8094924 *param_1)
{
s16 local_8;
sub_8082FE0(param_1,&local_8,2);
sub_8082FE0(param_1,(u8 *)&local_8,2);
return local_8;
}
@@ -130,7 +447,7 @@ u32 sub_80831A0(unkStruct_8094924 *param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
sub_8082FE0(param_1,(u8 *)&local_8,4);
return local_8;
}
@@ -138,7 +455,7 @@ u32 sub_80831B4(unkStruct_8094924 *param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
sub_8082FE0(param_1,(u8 *)&local_8,4);
return local_8;
}
@@ -146,7 +463,7 @@ u32 sub_80831C8(unkStruct_8094924 *param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
sub_8082FE0(param_1,(u8 *)&local_8,4);
return local_8;
}
@@ -158,12 +475,12 @@ bool8 sub_80831DC(unkStruct_8094924 *param_1)
return local_8 != 0;
}
void sub_80831F8(unkStruct_8094924 *param_1,u16 *param_2)
void sub_80831F8(unkStruct_8094924 *param_1,Position *param_2)
{
param_2[0] = 0;
param_2[1] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
param_2->x = 0;
param_2->y = 0;
sub_8082FE0(param_1,(u8 *)&param_2->x,1);
sub_8082FE0(param_1,(u8 *)&param_2->y,1);
}
@@ -173,22 +490,22 @@ void sub_8083220(unkStruct_8094924 *param_1,u32 *param_2)
param_2[1] = 0;
param_2[2] = 0;
param_2[3] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
sub_8082FE0(param_1,&param_2[2],1);
sub_8082FE0(param_1,&param_2[3],1);
sub_8082FE0(param_1,(u8 *)&param_2[0],1);
sub_8082FE0(param_1,(u8 *)&param_2[1],1);
sub_8082FE0(param_1,(u8 *)&param_2[2],1);
sub_8082FE0(param_1,(u8 *)&param_2[3],1);
}
void sub_8083260(unkStruct_8094924 *param_1,u16 *param_2)
{
param_2[0] = 0;
param_2[1] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
sub_8082FE0(param_1,(u8 *)&param_2[0],1);
sub_8082FE0(param_1,(u8 *)&param_2[1],1);
}
void sub_8083288(unkStruct_8094924 *r0, u16 *r1, u32 size)
{
sub_8082FE0(r0, r1, size);
sub_8082FE0(r0, (u8 *)r1, size);
}

View File

@@ -1,7 +1,9 @@
#include "global.h"
#include "constants/weather.h"
#include "structs/str_dungeon.h"
#include "dungeon_music.h"
#include "exclusive_pokemon.h"
#include "weather.h"
extern void SkarmoryPreFightDialogue();
extern void SkarmoryReFightDialogue();
@@ -143,35 +145,66 @@ extern void sub_808C9C4(void);
extern void sub_808CB5C(void);
extern void sub_808CBB0(void);
extern void sub_808CD44(void);
extern void sub_8040A84(void);
extern void sub_807E5E4(u32);
struct unkData_8107234
{
u8 unk0[8];
};
void sub_8084854(u8 *param_1)
extern struct unkData_8107234 gUnknown_8107234[];
void sub_8084854(struct unkData_8107234 *);
void sub_80847D4(void)
{
u32 bossBattleIndex;
s32 index;
gDungeon->unk3A0D = 0;
gDungeon->unk1356C = 0;
sub_8040A84();
for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0[0] != 0; index++) {
bossBattleIndex = gDungeon->bossBattleIndex;
if (bossBattleIndex - 0x1c < 0x16) {
bossBattleIndex = 0x1b;
}
if (bossBattleIndex == gUnknown_8107234[index].unk0[0])
{
sub_8084854(&gUnknown_8107234[index]);
break;
}
}
sub_8097FF8();
}
void sub_8084854(struct unkData_8107234 *param_1)
{
if (gDungeon->unk678 != 0) {
gDungeon->unk3A0D = param_1[5];
gDungeon->unk3A0D = param_1->unk0[5];
}
else
{
if (sub_8098100(param_1[4]) != 0) {
gDungeon->unk3A0D = param_1[5];
if (sub_8098100(param_1->unk0[4]) != 0) {
gDungeon->unk3A0D = param_1->unk0[5];
}
else
{
if (sub_8098100(param_1[2]) != 0) {
gDungeon->unk3A0D = param_1[3];
if (sub_8098100(param_1->unk0[2]) != 0) {
gDungeon->unk3A0D = param_1->unk0[3];
}
else
{
gDungeon->unk3A0D = param_1[1];
if (param_1[2] != 0x40) {
sub_8097FA8(param_1[2]);
gDungeon->unk3A0D = param_1->unk0[1];
if (param_1->unk0[2] != 0x40) {
sub_8097FA8(param_1->unk0[2]);
}
}
}
}
gDungeon->unk675 = 1;
sub_807E5E4(0);
sub_807E5E4(WEATHER_CLEAR);
}
u32 sub_80848EC(void)

View File

@@ -1,9 +1,141 @@
#include "global.h"
#include "code_8085E98.h"
#include "code_800E9A8.h"
#include "code_803E46C.h"
#include "dungeon_util.h"
#include "items.h"
#include "structs/str_dungeon.h"
struct unkStruct_80420E8
{
u32 unk0;
u32 unk4;
u32 unk8;
};
extern const struct unkStruct_80420E8 gUnknown_8107374;
typedef struct unkStruct_80416E0
{
s32 unk0;
s32 unk4;
s32 unk8;
u16 x;
u16 y;
u16 unk10;
u16 unk12;
s32 unk14;
u32 unk18;
} unkStruct_80416E0;
extern u32 sub_800E890(unkStruct_80416E0 *);
void sub_800EF64(void);
void sub_800EE5C(s32);
void sub_8085F44(s32);
void sub_800E90C(Position *);
void sub_8088EE8(void);
void sub_8088848(void);
void sub_808A718(void);
void sub_8085E98(void)
{
gDungeon->unk181e8.unk18215 = 0;
}
void sub_8085EB0(void)
{
gDungeon->unk181e8.unk18215 = 1;
}
u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,Position *param_4,bool32 param_5)
{
u32 uVar1;
unkStruct_80416E0 local_40;
struct unkStruct_80420E8 local;
bool8 param_5_bool8;
s32 param_1_s32 = param_1;
param_5_bool8 = param_5;
sub_800EE5C(param_1_s32);
sub_800EF64();
sub_803E46C(0x46);
local_40.unk0 = param_1;
local_40.unk4 = param_2;
local_40.unk8 = param_3;
local_40.x = param_4->x;
local_40.y = param_4->y;
local_40.unk10 = 0;
local_40.unk12 = 0;
local_40.unk18 = 0xffff;
local = gUnknown_8107374;
uVar1 = sub_800E890(&local_40);
if (param_5_bool8) {
sub_8085F44(uVar1);
uVar1 = -1;
}
return uVar1;
}
void sub_8085F44(s32 param_1)
{
while (sub_800E9A8(param_1)) {
sub_800E90C(&gDungeon->unk181e8.cameraPixelPos);
sub_803E46C(0x46);
}
}
void sub_8085F78(void)
{
switch(gDungeon->unk3A0D) {
case 0x12:
case 0x13:
case 0x14:
sub_8088848();
break;
case 0x15:
sub_8088EE8();
break;
case 0x29:
case 0x2A:
sub_808A718();
break;
case 0:
case 0x3C:
default:
break;
}
return;
}
bool8 sub_80860A8(u8 id)
{
Item *item;
EntityInfo *info;
Entity *entity;
int index;
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventoryRef->teamItems[index];
if((item->flags & 1) != 0)
{
if((item->id) == id) return TRUE;
}
}
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity = gDungeon->teamPokemon[index];
if (((EntityExists(entity)) && (info = entity->info, ((info->heldItem).flags & 1))) && ((info->heldItem).id == id)) return TRUE;
}
return FALSE;
}

View File

@@ -1,9 +1,138 @@
#include "global.h"
#include "constants/direction.h"
#include "code_80861A8.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "dungeon_music.h"
typedef struct unkStruct_80416E0
{
s32 unk0;
s32 unk4;
s32 unk8;
u16 x;
u16 y;
u16 unk10;
u16 unk12;
s32 unk14;
u32 unk18;
} unkStruct_80416E0;
extern s32 sub_800E890(unkStruct_80416E0 *);
struct unkStruct_8107380
{
u8 unk0[12];
};
extern struct unkStruct_8107380 gUnknown_8107380;
extern const u8 *gUnknown_810665C[];
extern const u8 *gUnknown_810668C[];
extern const u8 *gUnknown_81066D4[];
extern const u8 *gUnknown_81066F0[];
extern const u8 *gUnknown_810671C[];
static void sub_80861EC(Entity *);
void sub_800EE5C(s32);
void sub_800EF64();
void sub_803E46C(s32);
s32 sub_800E700(s32);
void sub_800569C(Position *, EntitySpriteInfo *, u8);
void sub_8085F44(void);
void sub_8052FB8(const u8 *);
void sub_8086124(Entity *entity, u8 param_2)
{
entity->info->unk160 = param_2;
}
void sub_8086130(void)
{
DungeonFadeOutBGM(0x3c);
sub_803E708(0x3c,0x46);
sub_8052FB8(*gUnknown_810665C);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_810668C);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_81066D4);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_81066F0);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_810671C);
sub_803E708(0x1e,0x46);
}
void sub_80861A8(Entity *a0)
{
sub_806CDD4(a0, 0, 8);
sub_806CDD4(a0, 0, NUM_DIRECTIONS);
}
void sub_80861B8(Entity *a0, u8 r1, s32 direction)
{
EntityInfo *info;
info = a0->info;
sub_806CDD4(a0, r1, direction);
info->unkFE = r1;
}
void sub_80861D4(Entity *a0, u8 r1, s32 direction)
{
sub_806CDD4(a0, r1, direction);
sub_80861EC(a0);
}
void sub_80861EC(Entity *a0)
{
a0->info->unkFE = 0x63;
}
s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3)
{
EntityInfo *info;
s32 uVar2;
s32 uStack_38;
Position pos;
unkStruct_80416E0 stack;
struct unkStruct_8107380 stack4;
#ifdef NONMATCHING
s32 param_1_s32 = param_1;
#else
register s32 param_1_s32 asm("r5") = param_1;
#endif
u8 param_3_bool32 = param_3;
sub_800EE5C(param_1);
sub_800EF64();
sub_803E46C(0x46);
info = param_2->info;
pos.x = 0;
pos.y = 0;
uStack_38 = sub_800E700(param_1_s32);
if (uStack_38 != -1) {
sub_800569C(&pos,&param_2->spriteInfo,uStack_38);
}
stack.unk0 = param_1_s32;
stack.unk4 = 0;
stack.unk8 = (u32)(info->action).direction;
stack.x = (param_2->pixelPos).x / 256;
stack.y = (param_2->pixelPos).y / 256;
stack.unk10 = pos.x;
stack.unk12 = pos.y;
stack.unk14 = uStack_38;
stack.unk18 = 0xffff;
stack4 = gUnknown_8107380;
uVar2 = sub_800E890(&stack);
if (param_3_bool32 != '\0') {
sub_8085F44();
uVar2 = -1;
}
return uVar2;
}

View File

@@ -28,12 +28,10 @@ bool8 GenerateMailJobInfo(WonderMail *);
bool8 sub_8096E80(u8);
u8 sub_8095E78(void);
bool8 sub_80963B4(void);
void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b);
void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b);
s32 CalculateMailChecksum(WonderMail *mail);
extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
extern void SaveDungeonLocation(unkStruct_8094924*, DungeonLocation*);
extern void RestoreDungeonLocation(unkStruct_8094924*, DungeonLocation*);
extern void sub_803C4F0(WonderMail *);
extern void sub_803C3E0(WonderMail *);
extern void sub_803C45C(WonderMail *);
@@ -1578,7 +1576,7 @@ bool8 sub_8096F50(WonderMail *mail)
u32 RestoreMailInfo(u8 *r0, u32 size)
{
s32 index;
struct unkStruct_8094924 backup;
unkStruct_8094924 backup;
u32 temp;
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
@@ -1623,7 +1621,7 @@ u32 RestoreMailInfo(u8 *r0, u32 size)
u32 SaveMailInfo(u8 *r0, u32 size)
{
s32 index;
struct unkStruct_8094924 backup;
unkStruct_8094924 backup;
u32 temp;
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
@@ -1664,7 +1662,7 @@ u32 SaveMailInfo(u8 *r0, u32 size)
return backup.unk8;
}
void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b)
void RestoreWonderMail(unkStruct_8094924 *a, WonderMail *b)
{
RestoreIntegerBits(a, &b->mailType, 4);
RestoreIntegerBits(a, &b->missionType, 3);
@@ -1679,7 +1677,7 @@ void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b)
RestoreDungeonLocation(a, &b->unk4.dungeon);
}
void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b)
void SaveWonderMail(unkStruct_8094924 *a, WonderMail *b)
{
SaveIntegerBits(a, &b->mailType, 4);
SaveIntegerBits(a, &b->missionType, 3);

View File

@@ -1,7 +1,6 @@
#include "global.h"
#include "other_random.h"
#include "memory.h"
#include "ground_script.h"
struct unkStruct_809D158
{
@@ -415,71 +414,3 @@ void sub_809D508(void)
MemoryFree(gUnknown_203B4B0);
gUnknown_203B4B0 = NULL;
}
// -1 didn't match
void sub_809D520(void *a0)
{
u16 *ptr = a0;
u16 v = 0xFFFF;
*ptr = v;
}
extern s32 sub_80A882C(s16);
extern s32 sub_80AC240(s16);
extern s32 sub_80AD158(s16);
s32 sub_809D52C(void *a0)
{
s16 *ptr = a0;
switch (ptr[0])
{
case 0: return 0;
case 1: return sub_80A882C(ptr[1]);
case 2: return sub_80AC240(ptr[1]);
case 3: return sub_80AD158(ptr[1]);
}
return 0;
}
void InitScriptData(ScriptData *a0)
{
s32 i;
a0->state = -1;
a0->savedState = 0;
a0->script.ptr2 = 0;
a0->script.ptr = 0;
a0->savedScript.ptr2 = 0;
a0->savedScript.ptr = 0;
a0->curScriptOp = 0;
a0->curPtr = 0;
a0->unk22 = -1;
a0->unk24 = 0;
a0->unk26 = 0xFF;
a0->branchDiscriminant = 0;
a0->unk2A = 0;
a0->unk2C = 0;
a0->unk30 = 0;
for (i = 0; i < 4; i++) {
a0->unk50[i].raw = 0;
}
}
void InitAction(Action *a0)
{
s32 i;
a0->callbacks = NULL;
a0->parentObject = NULL;
a0->group = -1;
a0->sector = 0xFF;
sub_809D520(&a0->unkC);
for (i = 0; i < 4; i++) {
a0->predefinedScripts[i] = NULL;
}
InitScriptData(&a0->scriptData);
InitScriptData(&a0->scriptData2);
}

View File

@@ -38,4 +38,21 @@ static const u8 sUnknown_80F42F0[256] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
};
static const u8 gUnknown_80F43F0[PASSWORD_BUFFER_SIZE] = {
0x0d, 0x07, 0x19, 0x0f, 0x04, 0x1d, 0x2a, 0x31, 0x08, 0x13,
0x2d, 0x18, 0x0e, 0x1a, 0x1b, 0x29, 0x01, 0x20, 0x21,
0x22, 0x11, 0x33, 0x26, 0x00, 0x35, 0x0a, 0x2b, 0x1f,
0x12, 0x23, 0x2c, 0x17, 0x27, 0x10, 0x1c, 0x30, 0x0b,
0x02, 0x24, 0x09, 0x32, 0x05, 0x28, 0x34, 0x2e, 0x03,
0x1e, 0x0c, 0x25, 0x14, 0x2f, 0x16, 0x06, 0x15
};
static const u8 gUnknown_80F4426[34] = {
0x0c, 0x06, 0x13, 0x08, 0x04, 0x0d, 0x0f, 0x09, 0x10, 0x02,
0x14, 0x12, 0x00, 0x15, 0x0b, 0x05, 0x17, 0x03, 0x11,
0x0a, 0x01, 0x0e, 0x16, 0x07, 0x00, 0x00,0x70, 0x6b,
0x73, 0x64, 0x69, 0x72, 0x30, 0x00
};

View File

@@ -0,0 +1,316 @@
extern const u8 GoRescue_80E20AC[];
extern const u8 GetHelp_80E20A0[];
extern const u8 Info_80E2098[];
extern const u8 Exit_80E2090[];
const MenuItem gUnknown_80E2068[5] = {
{GoRescue_80E20AC, 0x0},
{GetHelp_80E20A0, 0x1},
{Info_80E2098, 0x17},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const u8 Exit_80E2090[] = "Exit";
const u8 Info_80E2098[] = "Info";
const u8 GetHelp_80E20A0[] = "Get Help";
const u8 GoRescue_80E20AC[] = "Go Rescue";
const MenuItem gUnknown_80E20B8[5] = {
{GoRescue_80E20AC, 0x0},
{GetHelp_80E20A0, -1},
{Info_80E2098, 0x17},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const MenuItem gUnknown_80E20E0[5] = {
{GoRescue_80E20AC, -1},
{GetHelp_80E20A0, 1},
{Info_80E2098, 0x17},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const MenuItem gUnknown_80E2108[5] = {
{GoRescue_80E20AC, -1},
{GetHelp_80E20A0, -1},
{Info_80E2098, 0x17},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
extern const u8 ReceiveSOSMail_80E217C[];
extern const u8 SendAOKMail_80E216C[];
extern const u8 GetThankYouMail_80E2158[];
const MenuItem gUnknown_80E2130[5] = {
{ReceiveSOSMail_80E217C, 3},
{SendAOKMail_80E216C, 4},
{GetThankYouMail_80E2158, 0x14},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const u8 GetThankYouMail_80E2158[] = "Get Thank-You Mail";
const u8 SendAOKMail_80E216C[] = "Send A-OK Mail";
const u8 ReceiveSOSMail_80E217C[] = "Receive SOS Mail";
const MenuItem gUnknown_80E2190[5] = {
{ReceiveSOSMail_80E217C, 3},
{SendAOKMail_80E216C, -1},
{GetThankYouMail_80E2158, 0x14},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
extern const u8 SendSOS_80E2208[];
extern const u8 ReceiveAOK_80E21F4[];
extern const u8 SendThankYou_80E21E0[];
const MenuItem gUnknown_80E21B8[5] = {
{SendSOS_80E2208, 0x11},
{ReceiveAOK_80E21F4, 0x12},
{SendThankYou_80E21E0, 0x13},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const u8 SendThankYou_80E21E0[] = "Send Thank-You Mail";
const u8 ReceiveAOK_80E21F4[] = "Receive A-OK Mail";
const u8 SendSOS_80E2208[] = "Send SOS Mail";
const MenuItem gUnknown_80E2218[5] = {
{SendSOS_80E2208, -1},
{ReceiveAOK_80E21F4, -1},
{SendThankYou_80E21E0, 0x13},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const MenuItem gUnknown_80E2240[5] = {
{SendSOS_80E2208, 0x11},
{ReceiveAOK_80E21F4, 0x12},
{SendThankYou_80E21E0, -1},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
const MenuItem gUnknown_80E2268[5] = {
{SendSOS_80E2208, -1},
{ReceiveAOK_80E21F4, -1},
{SendThankYou_80E21E0, -1},
{Exit_80E2090, 0x8},
{NULL, 0x8},
};
extern const u8 Yes_80E22B0[];
extern const u8 Cancel_80E22A8[];
const MenuItem gUnknown_80E2290[3] = {
{Yes_80E22B0, 6},
{Cancel_80E22A8, 0x8},
{NULL, 0x8},
};
const u8 Cancel_80E22A8[] = "Cancel";
const u8 Yes_80E22B0[] = "Yes";
extern const u8 No_80E22CC[];
const MenuItem gUnknown_80E22B4[3] = {
{Yes_80E22B0, 6},
{No_80E22CC, 7},
{NULL, 0x8},
};
const u8 No_80E22CC[] = "No";
const MenuItem gUnknown_80E22D0[4] = {
{Yes_80E22B0, 6},
{No_80E22CC, 7},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
extern const u8 SendPokemon_80E2308[];
const MenuItem gUnknown_80E22F0[3] = {
{SendPokemon_80E2308, 0x10},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
const u8 SendPokemon_80E2308[] = _("Send w/o Pokémon");
const UnkTextStruct2 gUnknown_80E231C =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x16, 0x07,
0x06, 0x04,
0x04, 0x00,
NULL
};
const UnkTextStruct2 gUnknown_80E2334 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x16, 0x06,
0x06, 0x04,
0x04, 0x00,
NULL
};
extern const u8 Confirm_80E2364[];
const MenuItem gUnknown_80E234C[3] = {
{Confirm_80E2364, 9},
{Info_80E2098, 10},
{NULL, 0x8},
};
const u8 Confirm_80E2364[] = "Confirm";
extern const u8 GameLinkCable_80E2398[];
extern const u8 Password_80E238C[];
const MenuItem gUnknown_80E236C[4] = {
{GameLinkCable_80E2398, 0xB},
{Password_80E238C, 0xD},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
const u8 Password_80E238C[] = "Password";
const u8 GameLinkCable_80E2398[] = "Game Link cable";
extern const u8 SendPokemon_80E23E0[];
extern const u8 DontSendPokemon_80E23C8[];
const MenuItem gUnknown_80E23A8[4] = {
{SendPokemon_80E23E0, 0xF},
{DontSendPokemon_80E23C8, 0x10},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
ALIGNED(4) const u8 DontSendPokemon_80E23C8[] = _("Don{APOSTROPHE}t Send Pokémon");
ALIGNED(4) const u8 SendPokemon_80E23E0[] = _("Send Pokémon");
const UnkTextStruct2 gUnknown_80E23F0 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x04,
0x06, 0x05,
0x05, 0x00,
NULL
};
const MenuItem gUnknown_80E2408[4] = {
{Confirm_80E2364, 0x9},
{Info_80E2098, 0xA},
{Cancel_80E22A8, 5},
{NULL, 0x8},
};
UNUSED static const UnkTextStruct2 unused_text =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const MenuItem gUnknown_80E2440[3] = {
{Yes_80E22B0, 6},
{Cancel_80E22A8, 0x8},
{NULL, 0x8},
};
const MenuItem gUnknown_80E2458[3] = {
{Yes_80E22B0, 6},
{No_80E22CC, 0x7},
{NULL, 0x8},
};
extern const u8 SendItem_80E24A4[];
extern const u8 DontSendItem_80E2490[];
const MenuItem gUnknown_80E2470[4] = {
{SendItem_80E24A4, 0x15},
{DontSendItem_80E2490, 0x16},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
const u8 DontSendItem_80E2490[] = _("Don{APOSTROPHE}t Send Item");
const u8 SendItem_80E24A4[] = "Send Item";
extern const u8 SendwoItem_80E24C8[];
const MenuItem gUnknown_80E24B0[3] = {
{SendwoItem_80E24C8, 0x16},
{Cancel_80E22A8, 8},
{NULL, 0x8},
};
const u8 SendwoItem_80E24C8[] = "Send w/o Item";
const MenuItem gUnknown_80E24D8[4] = {
{Yes_80E22B0, 6},
{No_80E22CC, 0x7},
{Cancel_80E22A8, 0x8},
{NULL, 0x8},
};
extern const u8 RescueInfo_80E2540[];
extern const u8 GoRescue_80E530[];
extern const u8 GetHelp_80E2520[];
const MenuItem gUnknown_80E24F8[5] = {
{RescueInfo_80E2540, 0x1A},
{GoRescue_80E530, 0x1B},
{GetHelp_80E2520, 0x1C},
{Cancel_80E22A8, 0x19},
{NULL, 0x19},
};
ALIGNED(4) const u8 GetHelp_80E2520[] = _("{COLOR_1 YELLOW}Get help{END_COLOR_TEXT_1} ");
ALIGNED(4) const u8 GoRescue_80E530[] = _("{COLOR_1 YELLOW}Go rescue{END_COLOR_TEXT_1} ");
const u8 RescueInfo_80E2540[] = "Friend Rescue Info";
extern const u8 RescueProcedures_80E25A0[];
extern const u8 LeaveForRescue_80E258C[];
const MenuItem gUnknown_80E2554[7] = {
{RescueProcedures_80E25A0, 0x1E},
{ReceiveSOSMail_80E217C, 0x1F},
{LeaveForRescue_80E258C, 0x20},
{SendAOKMail_80E216C, 0x21},
{GetThankYouMail_80E2158, 0x22},
{Exit_80E2090, 0x19},
{NULL, 0x19},
};
const u8 LeaveForRescue_80E258C[] = "Leave for Rescue";
const u8 RescueProcedures_80E25A0[] = "Rescue Procedures";
extern const u8 GettingHelp_80E25E4[];
const MenuItem gUnknown_80E25B4[6] = {
{GettingHelp_80E25E4, 0x23},
{SendSOS_80E2208, 0x24},
{ReceiveAOK_80E21F4, 0x25},
{SendThankYou_80E21E0, 0x26},
{Exit_80E2090, 0x19},
{NULL, 0x19},
};
const u8 GettingHelp_80E25E4[] = "Getting Help";

View File

@@ -5,8 +5,9 @@
#include "structs/str_dungeon.h"
#include "structs/str_traps.h"
extern u8 gUnknown_202EE70[0x6];
extern u8 gUnknown_202EE76[0x10];
extern u8 gUnknown_202EE70[MAX_TEAM_BODY_SIZE];
extern u8 gUnknown_202EE76[DUNGEON_MAX_WILD_POKEMON_BODY_SIZE];
u32 EntityGetStatusSprites(Entity *entity);
void UpdateDungeonPokemonSprite(int id, short species, int status, char visible);
@@ -84,7 +85,7 @@ void sub_804513C(void)
gDungeon->teamPokemon[index]->type = ENTITY_NOTHING;
}
for(index = 0; index < 6; index++)
for(index = 0; index < MAX_TEAM_BODY_SIZE; index++)
{
gUnknown_202EE70[index] = 0;
}
@@ -95,7 +96,7 @@ void sub_804513C(void)
gDungeon->wildPokemon[index]->type = ENTITY_NOTHING;
}
for(index = 0; index < 0x10; index++)
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON_BODY_SIZE; index++)
{
gUnknown_202EE76[index] = 0;
}

View File

@@ -6,6 +6,7 @@
#include "code_806CD90.h"
#include "constants/direction.h"
#include "constants/dungeon.h"
#include "code_80861A8.h"
#include "dungeon_leader.h"
#include "dungeon_util.h"
#include "random.h"
@@ -21,7 +22,6 @@ extern void sub_803F878(s32, s32);
extern void sub_8068FE0(Entity *, u32, Entity*);
extern void sub_80457DC(Entity *);
extern void sub_80861D4(Entity *, u32, s32 direction);
extern void sub_80694C0(Entity *, s32, s32, u32);

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "globaldata.h"
#include "code_80118A4.h"
#include "code_80130A8.h"
#include "code_801B3C0.h"
@@ -12,6 +13,7 @@
#include "constants/wonder_mail.h"
#include "cpu.h"
#include "friend_rescue.h"
#include "input.h"
#include "items.h"
#include "main_menu1.h"
#include "memory.h"
@@ -30,6 +32,167 @@ extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern TeamInventory *gTeamInventoryRef;
// NOTE: MenuItems and UnkTextStruct2 defined in here..
#include "data/friend_rescue_menus.h"
const u8 gUnknown_80E25F4[] = "What would you like to do?";
ALIGNED(4) const u8 gUnknown_80E2610[] = _(
"How would you like to send your\n"
"{COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E2640[] = _(
"How would you like to receive your\n"
"friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E2680[] = _(
"How would you like to send your\n"
"{COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E26B0[] = _(
"How would you like to receive your\n"
"friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E26F0[] = _(
"How would you like to send your\n"
"{COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E2728[] = _(
"How would you like to receive your\n"
"friend{APOSTROPHE}s {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const u8 gUnknown_80E276C[] = _(
"The GBA Game Pak does not have\n"
"an {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} on it.");
ALIGNED(4) const u8 gUnknown_80E27A4[] = _(
"If you accept an {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1}{COMMA} the\n"
"{COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1} you received before\n"
"will be overwritten. Is that OK?");
ALIGNED(4) const u8 gUnknown_80E2814[] = _(
"Please enter the {COLOR_1 LIGHT_BLUE}A-OK Mail password{END_COLOR_TEXT_1}.");
ALIGNED(4) const u8 gUnknown_80E2840[] = _(
"The {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} will be received and\n"
"processed.");
ALIGNED(4) const u8 gUnknown_80E2874[] = _(
"A {COLOR_1 LIGHT_BLUE}helper Pokémon{END_COLOR_TEXT_1} also arrived!");
ALIGNED(4) const u8 gUnknown_80E2898[] = _(
"An {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} was received.\n"
"Your adventure will be saved.");
ALIGNED(4) const u8 gUnknown_80E28D8[] = _(
"Resume your game using {COLOR_1 LIGHT_BLUE}Revive Team{END_COLOR_TEXT_1}.");
ALIGNED(4) const u8 gUnknown_80E2904[] = _(
"Your friend{APOSTROPHE}s Mailbox is full.\n"
"This piece of mail cannot be sent.\n"
"The recipient must delete old mail.");
ALIGNED(4) const u8 gUnknown_80E296C[] = _(
"Please choose the {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} you want\n"
"to send.");
ALIGNED(4) const u8 gUnknown_80E29A0[] = _(
"This {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} will be sent.\n"
"Is that OK?");
ALIGNED(4) const u8 gUnknown_80E29D0[] = _(
"Your {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} was sent.\n"
"Your adventure will be saved.");
ALIGNED(4) const u8 gUnknown_80E2A0C[] = "Save completed.";
ALIGNED(4) const u8 gUnknown_80E2A1C[] = _(
"Please give this password to the friend\n"
"coming to your rescue.");
ALIGNED(4) const u8 gUnknown_80E2A5C[] = _(
"Here is the {COLOR_1 LIGHT_BLUE}SOS Mail password{END_COLOR_TEXT_1}.");
ALIGNED(4) const u8 gUnknown_80E2A80[] = _(
"Here is the {COLOR_1 LIGHT_BLUE}A-OK Mail password{END_COLOR_TEXT_1}.");
ALIGNED(4) const u8 gUnknown_80E2AA8[] = _(
"Please give this password to the friend\n"
"that you rescued.");
ALIGNED(4) const u8 gUnknown_80E2AE4[] = _(
"Please connect a {COLOR_1 LIGHT_BLUE}Link Cable{END_COLOR_TEXT_1}.\n"
"When your friend{APOSTROPHE}s side is ready{COMMA} you may\n"
"communicate and exchange data.");
ALIGNED(4) const u8 gUnknown_80E2B54[] = _(
"Your {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} was sent.\n"
"Your adventure will be saved.");
ALIGNED(4) const u8 gUnknown_80E2B90[] = _(
"Using a {COLOR_1 LIGHT_BLUE}Game Link cable{END_COLOR_TEXT_1}{COMMA}\n"
"you can send a {COLOR_1 LIGHT_BLUE}helper Pokémon{END_COLOR_TEXT_1} to\n"
"a friend.");
extern u8 gUnknown_80E2BE0[];
extern u8 gUnknown_80E2C48[];
extern u8 gUnknown_80E2C94[];
extern u8 gUnknown_80E2CD4[];
extern u8 gUnknown_80E2CE8[];
extern u8 gUnknown_80E2D30[];
extern u8 gUnknown_80E2D60[];
extern u8 gUnknown_80E2D7C[];
extern u8 gUnknown_80E2DD0[];
extern u8 gUnknown_80E2E20[];
extern u8 gUnknown_80E2E54[];
extern u8 gUnknown_80E2EB4[];
extern u8 gUnknown_80E2F14[];
extern u8 gUnknown_80E2F44[];
extern u8 gUnknown_80E2F78[];
extern u8 gUnknown_80E2FA0[];
extern u8 gUnknown_80E2FEC[];
extern u8 gUnknown_80E3030[];
extern u8 gUnknown_80E3078[];
extern u8 gUnknown_80E30A4[];
extern u8 gUnknown_80E30D0[];
extern u8 gUnknown_80E311C[];
extern u8 gUnknown_80E314C[];
extern u8 gUnknown_80E317C[];
extern u8 gUnknown_80E319C[];
extern u8 gUnknown_80E31D8[];
extern u8 gUnknown_80E31FC[];
extern u8 gUnknown_80E31FC[];
extern u8 gUnknown_80E3220[];
extern u8 gUnknown_80E3248[];
extern u8 gUnknown_80E3288[];
extern u8 gUnknown_80E32C4[];
extern u8 gUnknown_80E331C[];
extern u8 gUnknown_80E3378[];
extern u8 gUnknown_80E339C[];
extern u8 gUnknown_80E33D8[];
extern u8 gUnknown_80E3430[];
extern u8 gUnknown_80E34B0[];
extern u8 gUnknown_80E34F0[];
extern u8 gUnknown_80E352C[];
extern u8 gUnknown_80E355C[];
extern u8 gUnknown_80E35AC[];
extern u8 gUnknown_80E35E8[];
extern u8 gUnknown_80E360C[];
extern u8 gUnknown_80E3644[];
extern u8 gUnknown_80E367C[];
extern u8 gUnknown_80E3690[];
extern u8 gUnknown_80E3818[];
extern u8 gUnknown_80E3998[];
extern u8 gUnknown_80E3B1C[];
extern u8 gUnknown_80E3BF8[];
extern u8 gUnknown_80E3DE4[];
extern u8 gUnknown_80E3E98[];
extern u8 gUnknown_80E4014[];
extern u8 gUnknown_80E4130[];
extern u8 gUnknown_80E41DC[];
extern u8 gUnknown_80E4314[];
extern u8 gUnknown_80E4480[];
extern u8 gUnknown_80E44A4[];
extern u8 gUnknown_80E4500[];
extern u8 gUnknown_80E4550[];
@@ -42,216 +205,98 @@ extern u8 gUnknown_80E4704[];
extern u8 gUnknown_80E4744[];
extern u8 gUnknown_80E4788[];
extern u8 gUnknown_80E47D8[];
extern u8 gUnknown_80E4480[];
extern u8 gUnknown_80E482C[];
extern u8 gUnknown_80E25F4[];
extern u8 gUnknown_80E2D7C[];
extern u8 gUnknown_80E2E20[];
extern u8 gUnknown_80E319C[];
extern u8 gUnknown_80E311C[];
extern u8 gUnknown_80E32C4[];
extern u8 gUnknown_80E4314[];
extern u8 gUnknown_80E41DC[];
extern u8 gUnknown_80E2FEC[];
extern u8 gUnknown_80E2898[];
extern u8 gUnknown_80E2B54[];
extern u8 gUnknown_80E29D0[];
extern u8 gUnknown_80E3220[];
extern u8 gUnknown_80E2A0C[];
extern u8 gUnknown_80E2610[];
extern u8 gUnknown_80E2640[];
extern u8 gUnknown_80E2680[];
extern u8 gUnknown_80E26B0[];
extern u8 gUnknown_80E26F0[];
extern u8 gUnknown_80E2728[];
extern u8 gUnknown_80E3690[];
extern u8 gUnknown_80E3818[];
extern u8 gUnknown_80E3998[];
extern u8 gUnknown_80E3B1C[];
extern u8 gUnknown_80E367C[];
extern u8 gUnknown_80E3BF8[];
extern u8 gUnknown_80E3DE4[];
extern u8 gUnknown_80E4014[];
extern u8 gUnknown_80E3E98[];
extern u8 gUnknown_80E4130[];
extern u8 gUnknown_80E2E54[];
extern u8 gUnknown_80E2EB4[];
extern u8 gUnknown_80E2DD0[];
extern u8 gUnknown_80E2FA0[];
extern u8 gUnknown_80E2F14[];
extern u8 gUnknown_80E2F44[];
extern u8 gUnknown_80E30A4[];
extern u8 gUnknown_80E2F78[];
extern u8 gUnknown_80E360C[];
extern u8 gUnknown_80E3644[];
extern u8 gUnknown_80E35E8[];
extern u8 gUnknown_80E35AC[];
extern u8 gUnknown_80E355C[];
extern u8 gUnknown_80E352C[];
extern u8 gUnknown_80E34F0[];
extern u8 gUnknown_80E34B0[];
extern u8 gUnknown_80E3430[];
extern u8 gUnknown_80E33D8[];
extern u8 gUnknown_80E339C[];
extern u8 gUnknown_80E3378[];
extern u8 gUnknown_80E331C[];
extern u8 gUnknown_80E3288[];
extern u8 gUnknown_80E3248[];
extern u8 gUnknown_80E31FC[];
extern u8 gUnknown_80E276C[];
extern u8 gUnknown_80E27A4[];
extern u8 gUnknown_80E2CD4[];
extern u8 gUnknown_80E3030[];
extern u8 gUnknown_80E3078[];
extern u8 gUnknown_80E31D8[];
extern u8 gUnknown_80E2CE8[];
extern u8 gUnknown_80E2B90[];
extern u8 gUnknown_80E2AE4[];
extern u8 gUnknown_80E2A80[];
extern u8 gUnknown_80E2AA8[];
extern u8 gUnknown_80E2D60[];
extern u8 gUnknown_80E2BE0[];
extern u8 gUnknown_80E2C48[];
extern u8 gUnknown_80E29A0[];
extern u8 gUnknown_80E2A5C[];
extern u8 gUnknown_80E2904[];
extern u8 gUnknown_80E2C94[];
extern u8 gUnknown_80E2D30[];
extern u8 gUnknown_80E296C[];
extern u8 gUnknown_80E314C[];
extern u8 gUnknown_80E2A1C[];
extern u8 gUnknown_80E2840[];
extern u8 gUnknown_80E2874[];
extern u8 gUnknown_80E317C[];
extern u8 gUnknown_80E28D8[];
extern u8 gUnknown_80E2814[];
extern u8 gUnknown_80E30D0[];
extern u8 gUnknown_80E48A8[];
extern u8 gUnknown_80E49C4[];
extern u8 gUnknown_80E4704[];
extern u8 gUnknown_80E48E8[];
extern u8 gUnknown_80E4928[];
extern u8 gUnknown_80E4964[];
extern u8 gUnknown_80E499C[];
extern u8 gUnknown_80E460C[];
extern u8 gUnknown_80E31FC[];
extern MenuItem gUnknown_80E20B8;
extern MenuItem gUnknown_80E2108;
extern MenuItem gUnknown_80E20E0;
extern MenuItem gUnknown_80E2068;
extern MenuItem gUnknown_80E24F8;
extern MenuItem gUnknown_80E2554;
extern MenuItem gUnknown_80E22F0;
extern MenuItem gUnknown_80E236C;
extern MenuItem gUnknown_80E2440;
extern MenuItem gUnknown_80E2470;
extern MenuItem gUnknown_80E24B0;
extern MenuItem gUnknown_80E2130;
extern MenuItem gUnknown_80E2190;
extern MenuItem gUnknown_80E21B8;
extern MenuItem gUnknown_80E2268;
extern MenuItem gUnknown_80E2218;
extern MenuItem gUnknown_80E2240;
extern MenuItem gUnknown_80E2290;
extern MenuItem gUnknown_80E22D0;
extern MenuItem gUnknown_80E234C;
extern MenuItem gUnknown_80E24D8;
extern MenuItem gUnknown_80E2458;
extern MenuItem gUnknown_80E2408;
extern MenuItem gUnknown_80E23A8;
extern MenuItem gUnknown_80E22B4;
extern UnkTextStruct2 gUnknown_80E231C;
extern UnkTextStruct2 gUnknown_80E23F0;
extern UnkTextStruct2 gUnknown_80E2334;
extern MenuItem gUnknown_80E25B4;
extern u8 gUnknown_80E49C4[];
EWRAM_DATA_2 WonderMailStruct_203B33C *gUnknown_203B33C = {0};
extern u8 sub_8039880(void);
extern void sub_8035300(void);
extern void QueueNextFriendRescueState(u32);
extern void nullsub_41(void);
extern void nullsub_42(void);
extern void nullsub_43(void);
extern void nullsub_44(void);
extern void nullsub_45(void);
extern void nullsub_46(void);
extern void nullsub_47(void);
extern void nullsub_48(void);
extern void nullsub_49(void);
extern void nullsub_50(void);
extern void nullsub_51(void);
extern void sub_8035374(void);
extern void sub_80353BC(void);
extern void sub_8033A2C(void);
extern void sub_803477C(void);
extern void sub_80347AC(void);
extern void sub_80347C8(void);
extern void sub_80347E4(void);
extern void sub_8034804(void);
extern void sub_80344C0(void);
extern void sub_8034478(void);
extern void sub_80344A0(void);
extern void sub_803418C(void);
extern void sub_8034254(void);
extern void sub_8034310(void);
extern void sub_8034378(void);
extern void sub_80343C4(void);
extern void sub_8034404(void);
extern void sub_8034500(void);
extern void sub_8034590(void);
extern void sub_803464C(void);
extern void sub_80346A8(void);
extern void sub_80346D8(void);
extern void sub_8034700(void);
extern void sub_8034720(void);
extern void sub_803473C(void);
extern void sub_8033FB4(void);
extern void sub_8034074(void);
extern void sub_8034130(void);
extern void sub_8033FE4(void);
extern void sub_8033D74(void);
extern void sub_8033D94(void);
extern void sub_8033DBC(void);
extern void sub_8033F64(void);
extern void sub_8033C54(void);
extern void sub_8033CAC(void);
extern void sub_8033D48(void);
extern void sub_8035424(void);
extern void sub_8034970(void);
extern void sub_80351E0(void);
extern void sub_8034D74(void);
extern void sub_8034EF0(void);
extern void sub_8034F38(void);
extern void sub_80352A4(void);
extern void sub_8034EC8(void);
extern void sub_8033B8C(void);
extern void sub_80339C8(void);
extern void sub_80348C4(void);
extern void sub_803482C(void);
extern void sub_80349B0(void);
extern void sub_8034A70(void);
extern void sub_8034B2C(void);
extern void sub_80349E0(void);
extern void sub_8034B88(void);
extern void sub_8034C98(void);
extern void sub_8034C38(void);
extern void sub_8034D54(void);
extern void sub_8034F18(void);
extern void sub_8034F58(void);
extern void sub_8034F88(void);
extern void sub_8035018(void);
extern void sub_8035038(void);
extern void sub_8035094(void);
extern void sub_80350F4(void);
extern void sub_803517C(void);
extern void sub_8035210(void);
extern void sub_8035430(void);
extern void sub_8034848(void);
void sub_8035300(void);
void QueueNextFriendRescueState(u32);
void nullsub_41(void);
void nullsub_42(void);
void nullsub_43(void);
void nullsub_44(void);
void nullsub_45(void);
void nullsub_46(void);
void nullsub_47(void);
void nullsub_48(void);
void nullsub_49(void);
void nullsub_50(void);
void nullsub_51(void);
void sub_80339C8(void);
void sub_8033A2C(void);
void sub_8033B8C(void);
void sub_8033C54(void);
void sub_8033CAC(void);
void sub_8033D48(void);
void sub_8033D74(void);
void sub_8033D94(void);
void sub_8033DBC(void);
void sub_8033F64(void);
void sub_8033FB4(void);
void sub_8033FE4(void);
void sub_8034074(void);
void sub_8034130(void);
void sub_803418C(void);
void sub_8034254(void);
void sub_8034310(void);
void sub_8034378(void);
void sub_80343C4(void);
void sub_8034404(void);
void sub_8034478(void);
void sub_80344A0(void);
void sub_80344C0(void);
void sub_8034500(void);
void sub_8034590(void);
void sub_803464C(void);
void sub_80346A8(void);
void sub_80346D8(void);
void sub_8034700(void);
void sub_8034720(void);
void sub_803473C(void);
void sub_803477C(void);
void sub_80347AC(void);
void sub_80347C8(void);
void sub_80347E4(void);
void sub_8034804(void);
void sub_803482C(void);
void sub_8034848(void);
void sub_80348C4(void);
void sub_8034970(void);
void sub_80349B0(void);
void sub_80349E0(void);
void sub_8034A70(void);
void sub_8034B2C(void);
void sub_8034B88(void);
void sub_8034C38(void);
void sub_8034C98(void);
void sub_8034D54(void);
void sub_8034D74(void);
void sub_8034EC8(void);
void sub_8034EF0(void);
void sub_8034F18(void);
void sub_8034F38(void);
void sub_8034F58(void);
void sub_8034F88(void);
void sub_8035018(void);
void sub_8035038(void);
void sub_8035094(void);
void sub_80350F4(void);
void sub_803517C(void);
void sub_80351E0(void);
void sub_8035210(void);
void sub_80352A4(void);
void sub_8035374(void);
void sub_80353BC(void);
void sub_8035424(void);
void sub_8035430(void);
extern u32 sub_8030DA0(void);
extern void sub_8030DE4(void);
@@ -262,13 +307,10 @@ extern void sub_8030D40(u8, u32);
extern void sub_8030810(u32);
extern u8 sub_80307EC(void);
extern u32 sub_8031DCC(void);
extern void sub_8031E10(void);
extern void sub_8031E00(void);
extern u32 sub_8039068(u32, u8 *passwordBuffer, unkStruct_203B480 *r0);
extern void sub_803084C(void);
extern void sub_8031E10(void);
extern void sub_8030DE4(void);
extern u8 sub_800D588(void);
extern u32 sub_8023CE8(void);
extern u32 sub_80306A8(u32 wonderMailType, u32, UnkTextStruct2_sub *, u32);
@@ -277,13 +319,7 @@ extern void sub_803092C(void);
extern bool8 sub_8031D70(u32 mailIndex, s32);
extern s32 sub_8037B28(u32);
extern s32 CountMailType(u8 mailType);
extern u32 GetDungeonTeamRankPts(DungeonLocation *, u32);
unkStruct_203B480 * GetMailatIndex(u8 index);
extern s32 GetMailIndex(u8 mailType, u32 param_2);
extern char * GetMonSpecies(s16 index);
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
extern void ResetUnusedInputStruct(void);
extern void sprintfStatic(char *buffer, const char *text, ...);
u32 CreateFriendRescueMenu(void)
@@ -692,70 +728,70 @@ void sub_8032828(void)
case 0x0:
if (CountMailType(WONDER_MAIL_TYPE_SOS) == 0 && CountMailType(WONDER_MAIL_TYPE_THANK_YOU) == 0) {
if (gUnknown_203B33C->unk52C != 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E2108, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E2108, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E20B8, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E20B8, NULL, 4, 0, NULL, 0x101);
}
else {
if (gUnknown_203B33C->unk52C != 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E20E0, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E20E0, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E2068, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E2068, NULL, 4, 0, NULL, 0x101);
}
break;
case 0x1:
if (CountMailType(WONDER_MAIL_TYPE_SOS) == 0 && CountMailType(WONDER_MAIL_TYPE_THANK_YOU) == 0) {
if (gUnknown_203B33C->unk52C != 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E2108, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E2108, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E20B8, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E20B8, NULL, 4, 0, NULL, 0x101);
}
else {
if (gUnknown_203B33C->unk52C != 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E20E0, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E20E0, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 0, &gUnknown_80E2068, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 0, gUnknown_80E2068, NULL, 4, 0, NULL, 0x101);
}
break;
case 0x3:
if (CountMailType(WONDER_MAIL_TYPE_AOK) != 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 3, &gUnknown_80E2130, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 3, gUnknown_80E2130, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 3, &gUnknown_80E2190, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 3, gUnknown_80E2190, NULL, 4, 0, NULL, 0x101);
break;
case 0x4:
if (CountMailType(WONDER_MAIL_TYPE_SOS) == 0) {
if (CountMailType(WONDER_MAIL_TYPE_THANK_YOU) == 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 17, &gUnknown_80E2268, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 17, gUnknown_80E2268, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 17, &gUnknown_80E2218, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 17, gUnknown_80E2218, NULL, 4, 0, NULL, 0x101);
}
else {
if (CountMailType(WONDER_MAIL_TYPE_THANK_YOU) == 0)
sub_8014248(&gUnknown_80E25F4[0], 0, 17, &gUnknown_80E2240, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 17, gUnknown_80E2240, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E25F4[0], 0, 17, &gUnknown_80E21B8, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E25F4[0], 0, 17, gUnknown_80E21B8, NULL, 4, 0, NULL, 0x101);
}
break;
case 0xE:
switch(gUnknown_203B33C->unk528) {
case 0x11:
sub_8014248(&gUnknown_80E2610[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2610[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x3:
sub_8014248(&gUnknown_80E2640[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2640[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x4:
sub_8014248(&gUnknown_80E2680[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2680[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x12:
sub_8014248(&gUnknown_80E26B0[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E26B0[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x13:
sub_8014248(&gUnknown_80E26F0[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E26F0[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x14:
sub_8014248(&gUnknown_80E2728[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2728[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
}
break;
@@ -763,7 +799,7 @@ void sub_8032828(void)
sub_80141B4(&gUnknown_80E276C[0], 0, 0, 0x101);
break;
case 0x3D:
sub_8014248(&gUnknown_80E27A4[0], 0, 6, &gUnknown_80E2458, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E27A4[0], 0, 6, gUnknown_80E2458, NULL, 4, 0, NULL, 0x101);
break;
case 0x43:
sub_80141B4(&gUnknown_80E2814[0], 0, 0, 0x101);
@@ -802,7 +838,7 @@ void sub_8032828(void)
}
break;
case 0x35:
sub_8014248(&gUnknown_80E29A0[0], 0, 6, &gUnknown_80E22B4, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E29A0[0], 0, 6, gUnknown_80E22B4, NULL, 4, 0, NULL, 0x101);
break;
case 0x37:
switch ((u32)gUnknown_203B33C->unk524) {
@@ -864,7 +900,7 @@ void sub_8032828(void)
sub_80141B4(&gUnknown_80E2B90[0], 0, 0, 0x101);
break;
case 0x21:
sub_8014248(&gUnknown_80E2BE0[0], 0, 15, &gUnknown_80E23A8, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2BE0[0], 0, 15, gUnknown_80E23A8, NULL, 4, 0, NULL, 0x101);
break;
case 0x25:
sub_80141B4(&gUnknown_80E2C48[0], 0, 0, 0x101);
@@ -878,15 +914,15 @@ void sub_8032828(void)
break;
case 0x27:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, &gUnknown_80E234C, TRUE, 0, FALSE);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, gUnknown_80E234C, TRUE, 0, FALSE);
sub_8023DA4();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
case 0x24:
sub_8014248(&gUnknown_80E2C94[0], 0, 16, &gUnknown_80E22F0, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2C94[0], 0, 16, gUnknown_80E22F0, NULL, 4, 0, NULL, 0x101);
break;
case 0x29:
sub_8014248(&gUnknown_80E2CD4[0], 0, 6, &gUnknown_80E22D0, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2CD4[0], 0, 6, gUnknown_80E22D0, NULL, 4, 0, NULL, 0x101);
break;
case 0x1C:
sub_80141B4(&gUnknown_80E2CE8[0], 0, 0, 0x101);
@@ -899,17 +935,17 @@ void sub_8032828(void)
}
break;
case 0x20:
sub_8014248(&gUnknown_80E2D30[0], 0, 6, &gUnknown_80E22B4, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2D30[0], 0, 6, gUnknown_80E22B4, NULL, 4, 0, NULL, 0x101);
break;
case 0x22:
sub_80141B4(&gUnknown_80E2D60[0], 0, 0, 0x101);
break;
case 0x5:
sub_8014248(&gUnknown_80E2D7C[0], 0, 6, &gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2D7C[0], 0, 6, gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
break;
case 0xA:
case 0x4C:
sub_8014248(&gUnknown_80E2E20[0], 0, 6, &gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2E20[0], 0, 6, gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
break;
case 0xB:
case 0x4D:
@@ -1005,7 +1041,7 @@ void sub_8032828(void)
sub_80306A8(1, 0, NULL, 6);
break;
case 0x15:
sub_8014248(&gUnknown_80E2F78[0], 0, 6, &gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2F78[0], 0, 6, gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
break;
case 0xF:
sub_80141B4(&gUnknown_80E2FA0[0], 0, 0, 0x101);
@@ -1034,14 +1070,14 @@ void sub_8032828(void)
sub_80151C0(4, gUnknown_203B33C->passwordBuffer);
break;
case 0x5A:
sub_8014248(&gUnknown_80E30A4[0], 0, 6, &gUnknown_80E2458, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E30A4[0], 0, 6, gUnknown_80E2458, NULL, 4, 0, NULL, 0x101);
break;
case 0x5B:
sub_80141B4(gUnknown_80E30D0, 0, 0, 0x101);
break;
case 0x5D:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E2408, TRUE, 0, FALSE);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E2408, TRUE, 0, FALSE);
sub_803092C();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
@@ -1057,7 +1093,7 @@ void sub_8032828(void)
break;
case 0x60:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, &gUnknown_80E2408, TRUE, 0, FALSE);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, gUnknown_80E2408, TRUE, 0, FALSE);
sub_801CCD8();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
@@ -1173,7 +1209,7 @@ void sub_8032828(void)
sub_80141B4(gUnknown_80E3288, 0, 0, 0x101);
break;
case 0x69:
sub_8014248(&gUnknown_80E2D7C[0], 0, 6, &gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E2D7C[0], 0, 6, gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
break;
case 0x59:
sub_80922B4(buffer, GetPlayerPokemonStruct()->name, POKEMON_NAME_LENGTH);
@@ -1181,7 +1217,7 @@ void sub_8032828(void)
sub_80141B4(gUnknown_203B33C->unk424, 0, 0, 0x101);
break;
case 0x58:
sub_8014248(&gUnknown_80E331C[0], 0, 6, &gUnknown_80E24D8, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E331C[0], 0, 6, gUnknown_80E24D8, NULL, 4, 0, NULL, 0x101);
break;
case 0x75:
sub_80141B4(gUnknown_80E317C, 0, 0, 0x101);
@@ -1193,16 +1229,16 @@ void sub_8032828(void)
sub_80141B4(&gUnknown_80E3378[0], 0, 0, 0x101);
break;
case 0x56:
sub_8014248(&gUnknown_80E339C[0], 0, 22, &gUnknown_80E24B0, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E339C[0], 0, 22, gUnknown_80E24B0, NULL, 4, 0, NULL, 0x101);
break;
case 0x55:
sub_8014248(&gUnknown_80E33D8[0], 0, 21, &gUnknown_80E2470, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E33D8[0], 0, 21, gUnknown_80E2470, NULL, 4, 0, NULL, 0x101);
break;
case 0x53:
sub_80141B4(&gUnknown_80E3430[0], 0, 0, 0x101);
break;
case 0x54:
sub_8014248(&gUnknown_80E34B0[0], 0, 6, &gUnknown_80E2440, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E34B0[0], 0, 6, gUnknown_80E2440, NULL, 4, 0, NULL, 0x101);
break;
case 0x46:
sub_80141B4(&gUnknown_80E34F0[0], 0, 0, 0x101);
@@ -1220,12 +1256,12 @@ void sub_8032828(void)
case 0x1E:
case 0x33:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E234C, TRUE, 0, FALSE);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E234C, TRUE, 0, FALSE);
sub_803092C();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
case 0x4A:
sub_8014248(&gUnknown_80E352C[0], 0, 6, &gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E352C[0], 0, 6, gUnknown_80E2290, NULL, 4, 0, NULL, 0x101);
break;
case 0x44:
sub_80141B4(&gUnknown_80E355C[0], 0, 0, 0x101);
@@ -1238,12 +1274,12 @@ void sub_8032828(void)
break;
case 0x52:
if (gUnknown_203B33C->unk40 == 6)
sub_8014248(&gUnknown_80E360C[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E360C[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
else
sub_8014248(&gUnknown_80E3644[0], 0, 11, &gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
sub_8014248(&gUnknown_80E3644[0], 0, 11, gUnknown_80E236C, NULL, 4, 0, NULL, 0x101);
break;
case 0x7C:
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, &gUnknown_80E25B4, 0, 4, 0, 0, 0x101);
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, gUnknown_80E25B4, 0, 4, 0, 0, 0x101);
break;
case 0x7D:
switch (gUnknown_203B33C->unk564) {
@@ -1262,7 +1298,7 @@ void sub_8032828(void)
}
break;
case 0x7A:
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, &gUnknown_80E2554, 0, 4, 0, 0, 0x101);
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, gUnknown_80E2554, 0, 4, 0, 0, 0x101);
break;
case 0x7B:
switch (gUnknown_203B33C->unk564) {
@@ -1284,7 +1320,7 @@ void sub_8032828(void)
}
break;
case 0x78:
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, &gUnknown_80E24F8, 0, 4, 0, 0, 0x101);
sub_8014248(&gUnknown_80E367C[0], 0, gUnknown_203B33C->unk564, gUnknown_80E24F8, 0, 4, 0, 0, 0x101);
break;
case 0x79:
switch (gUnknown_203B33C->unk564) {
@@ -1648,7 +1684,7 @@ void sub_8033DBC(void)
switch(sub_8039068(mailMode, gUnknown_203B33C->passwordBuffer, &mail))
{
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2290, 0, 4, 0, 0, 0x101);
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x1B);
break;
case PASSWORD_ENTRY_NOT_SOS_MAIL:
@@ -2532,7 +2568,7 @@ void sub_8034D74(void)
switch(sub_8039068(PASSWORD_ENTRY_THANK_YOU_MAIL_MODE, gUnknown_203B33C->passwordBuffer, &mail))
{
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2440, 0, 4, 0, 0, 0x101);
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x74);
break;
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:

View File

@@ -13,9 +13,7 @@ extern const CallbackData gUnknown_811736C;
extern const DebugLocation gUnknown_8117538[];
extern void InitActionWithParams(Action *action, const CallbackData *callbacks, void *parent, s16 group, s8 sector);
extern void sub_809D648(void *);
extern void sub_80A2D00(unkStruct_3001B70 *);
extern void InitActionScriptData(GroundMapAction *, const DebugLocation *);
extern void sub_80A2D68(unkStruct_3001B70 *);
extern void sub_80A2D88(unkStruct_3001B70 *);
@@ -32,7 +30,7 @@ void FreeGroundMapAction(void)
{
GroundMap_Reset();
sub_80A5EBC();
sub_809D648(gGroundMapAction);
sub_809D648((Action *)gGroundMapAction);
MemoryFree(gGroundMapAction);
gGroundMapAction = NULL;
}
@@ -41,7 +39,7 @@ void GroundMap_Reset(void)
{
sub_80015C0(0, 0x37);
sub_80015C0(0, 0x38);
InitActionScriptData(gGroundMapAction, gUnknown_8117538);
InitActionScriptData((Action *)gGroundMapAction, gUnknown_8117538);
if (gUnknown_3001B70 != NULL) {
sub_80A2D00(gUnknown_3001B70);

View File

@@ -16,7 +16,6 @@ extern const DebugLocation gUnknown_8117698;
extern void GroundMap_GetStationScript(ScriptInfoSmall *, s16, u32, u32);
extern u8 sub_809D678(void *);
extern void sub_809D710(u8 *, ScriptInfoSmall *, s32);
extern bool8 sub_809D968(void *, s32);
static void sub_80A4BE8(ScriptInfoSmall *script, s16 r1)

View File

@@ -17,14 +17,151 @@ extern u8 gUnknown_811656C[];
extern DebugLocation gUnknown_81165C8;
extern void sub_809D520(void *);
extern void InitScriptData(void *);
extern u8 sub_80AC378(void);
extern u8 sub_80AD290(void);
extern u8 sub_80A8B74(void);
extern u8 sub_809A750(void);
extern ScriptCommand *sub_80A2460(Action *param_1, u32);
extern s32 sub_80A882C(s16);
extern s32 sub_80AC240(s16);
extern s32 sub_80AD158(s16);
void FatalError(u32 *, const char *, ...) __attribute__((noreturn));
// -1 didn't match
void sub_809D520(void *a0)
{
u16 *ptr = a0;
u16 v = 0xFFFF;
*ptr = v;
}
s32 sub_809D52C(void *a0)
{
s16 *ptr = a0;
switch (ptr[0])
{
case 0: return 0;
case 1: return sub_80A882C(ptr[1]);
case 2: return sub_80AC240(ptr[1]);
case 3: return sub_80AD158(ptr[1]);
}
return 0;
}
void InitScriptData(ScriptData *a0)
{
s32 i;
a0->state = -1;
a0->savedState = 0;
a0->script.ptr2 = 0;
a0->script.ptr = 0;
a0->savedScript.ptr2 = 0;
a0->savedScript.ptr = 0;
a0->curScriptOp = 0;
a0->curPtr = 0;
a0->unk22 = -1;
a0->unk24 = 0;
a0->unk26 = 0xFF;
a0->branchDiscriminant = 0;
a0->unk2A = 0;
a0->unk2C = 0;
a0->unk30 = 0;
for (i = 0; i < 4; i++) {
a0->unk50[i].raw = 0;
}
}
void InitAction(Action *a0)
{
s32 i;
a0->callbacks = NULL;
a0->parentObject = NULL;
a0->group = -1;
a0->sector = 0xFF;
sub_809D520(&a0->unkC);
for (i = 0; i < 4; i++) {
a0->predefinedScripts[i] = NULL;
}
InitScriptData(&a0->scriptData);
InitScriptData(&a0->scriptData2);
}
void InitActionWithParams(Action *action, const CallbackData *callbacks, void *parent, s16 group, s8 sector)
{
s32 group_s32;
s32 sector_s32;
group_s32 = group;
sector_s32 = sector;
InitAction(action);
action->callbacks = callbacks;
action->parentObject = parent;
action->group = group_s32;
action->sector = sector_s32;
action->unk8[0] = callbacks->maybeId;
if(callbacks->func04)
action->unk8[1] = callbacks->func04(parent);
else
action->unk8[1] = 0;
}
void sub_809D648(Action *action)
{
InitAction(action);
}
UNUSED s16 sub_809D654(Action *action)
{
return action->scriptData.savedState;
}
UNUSED s16 sub_809D65C(Action *action)
{
if(action->scriptData.savedState != 0)
return action->scriptData.state;
else
return -1;
}
bool8 sub_809D678(Action *action)
{
return action->scriptData.savedState == 0 ? FALSE : TRUE;
}
bool8 sub_809D684(Action *action, ScriptCommand **scriptPtr)
{
if(action->scriptData.savedState != 0)
{
if(action->scriptData.savedScript.ptr != 0)
{
if(action->scriptData.savedScript.ptr2 == *scriptPtr) return 1;
}
else
{
if(action->scriptData.script.ptr2 == *scriptPtr) return 1;
}
}
if(action->scriptData2.savedState != 0)
{
if(action->scriptData2.savedScript.ptr != 0)
{
if(action->scriptData2.savedScript.ptr2 == *scriptPtr) return 1;
}
else
{
if(action->scriptData2.script.ptr2 == *scriptPtr) return 1;
}
}
return 0;
}
void SetPredefinedScript(Action *param_1, s16 index, ScriptCommand *param_3)
{
param_1->predefinedScripts[index] = param_3;
@@ -58,7 +195,7 @@ void sub_809D710(Action *param_1, ScriptInfoSmall *script, s16 index)
}
}
bool8 InitActionScriptData(Action *param_1, DebugLocation *unused)
bool8 InitActionScriptData(Action *param_1, const DebugLocation *unused)
{
InitScriptData(&param_1->scriptData);
InitScriptData(&param_1->scriptData2);

View File

@@ -1,11 +1,16 @@
#include "global.h"
#include "debug.h"
#include "ground_link.h"
#include "ground_script.h"
#include "ground_sprite.h"
#include "ground_map.h"
#include "dungeon.h"
#include "other_random.h"
#include "rescue_team_info.h"
#include "code_80118A4.h"
#include "code_8097670.h"
#include "exclusive_pokemon.h"
#include "items.h"
#ifndef NONMATCHING
#define GROUND_SCRIPT_INCOMPLETE_DECLARATIONS
@@ -37,7 +42,6 @@ typedef struct GroundEffectData {
ScriptCommand *script;
} GroundEffectData;
void GroundSprite_Reset(s16);
void GroundMap_Select(s16);
void GroundMap_SelectDungeon(s16, DungeonLocation*, u8);
void GroundMap_ExecuteEnter(s16);
@@ -47,7 +51,6 @@ void GroundMap_ExecuteStation(s32, s32, s32, bool8);
void GroundLives_ExecuteScript(s32, s16 *, ScriptInfoSmall *);
void GroundObject_ExecuteScript(s32, s16 *, ScriptInfoSmall *);
void GroundEffect_ExecuteScript(s32, s16 *, ScriptInfoSmall *);
void GroundLink_Select(s16);
void GroundLives_Select(s16, s32 group, s32 sector);
void GroundObject_Select(s16, s32 group, s32 sector);
void GroundEffect_Select(s16, s32 group, s32 sector);
@@ -94,27 +97,15 @@ u32 sub_8002D54();
u8 sub_8002DF0(Position32*, Position32*, Position32*, Position32*);
s32 sub_8009FB8();
// TODO: move to code_80118A4.h
u32 StopAllMusic_1();
u32 xxx_call_start_new_bgm();
u32 xxx_call_queue_bgm();
u32 xxx_call_play_fanfare_se();
u32 xxx_call_fade_out_fanfare_se();
bool8 sub_8021700(s32);
bool8 sub_802FCF0(void);
s32 FindItemInInventory();
u32 ShiftItemsDownFrom();
void sub_809733C(s16, bool8);
void sub_80973A8(s16, bool8);
void sub_8097418(s16, bool8);
void sub_80975A8(s16, bool8);
void sub_80976F8(u8);
u32 sub_8098100();
void sub_8098D1C(s32, u32, s32);
void sub_8098D80(s32);
void sub_8098E18(s32, s32);
u32 sub_80999E8();
u32 sub_80999FC();
@@ -129,7 +120,7 @@ u32 sub_809A738();
u32 sub_809A768();
bool8 ScriptPrintNullTextbox(void);
bool8 ScriptPrintEmptyTextbox(void);
u32 sub_809A83C();
void sub_809A83C(s16);
u32 sub_809AC7C();
u32 sub_809ADD8();
bool8 ScriptPrintText(s32, s16, char*);
@@ -154,14 +145,8 @@ void sub_809D1E4(s32, s32, s32);
void sub_809D208(s32, Position32*, s32);
void sub_809D220(s32, s32, s32);
u32 sub_809D52C();
u32 InitScriptData();
void sub_809D710(Action*, ScriptInfoSmall*, s16);
u8 sub_809D8EC(Action*, s16);
bool8 sub_809D940(void);
void sub_809D9B8(s16);
bool8 sub_809DA08(Action*, s16, u8);
ScriptCommand *sub_80A242C(Action*, s32);
ScriptCommand *sub_80A2460(Action*, s32);
s16 sub_80A4D7C(s32);
s16 sub_80A7AE8(s16);
void sub_80A87AC(s32, s32);
@@ -184,6 +169,9 @@ void DeleteBlankGroundLives(void);
void DeleteBlankGroundObjects(void);
void DeleteBlankGroundEffects(void);
u32 sub_80A14E8(u32, u8, u32, u32);
s16 HandleAction(void *, DebugLocation *);
extern int gFormatData_202DE30[10];
extern s16 gCurrentMap;
@@ -207,8 +195,11 @@ extern char gUnknown_8116684[];
extern char gUnknown_81166C0[];
extern char gUnknown_81166D8[];
extern const CallbackData gUnknown_8116488;
extern DebugLocation gUnknown_81166B4;
extern DebugLocation gUnknown_81166F8;
extern DebugLocation gUnknown_8116704;
extern ScriptCommand gUnknown_81164E4;
// Return values:
// This function returns what's likely an enum, which controls the state of the script engine state machine, and possibly provides information to code calling the engine.
@@ -1608,7 +1599,9 @@ s32 ExecuteScriptCommand(Action *action) {
break;
}
case 0x41: {
if (FindItemInInventory((u8)curCmd.argShort) >= 0) ShiftItemsDownFrom();
s32 val;
val = FindItemInInventory(curCmd.argShort);
if ( val >= 0) ShiftItemsDownFrom(val);
break;
}
case 0xc0 ... 0xcb: {
@@ -1872,3 +1865,34 @@ s32 ExecuteScriptCommand(Action *action) {
}
}
}
UNUSED u32 sub_80A1440(u32 r0, u32 r1, u32 r2)
{
return sub_80A14E8(0, r0, r1, r2);
}
UNUSED bool8 GroundScript_ExecuteTrigger(s16 r0)
{
s32 ret;
ScriptInfoSmall scriptInfo;
Action action;
FunctionScript *ptr;
ptr = &gFunctionScriptTable[r0];
if(ptr->unk2 != 0xB)
return FALSE;
InitActionWithParams(&action, &gUnknown_8116488, NULL, 0, 0);
sub_809D710(NULL, &scriptInfo, r0);
GroundScript_ExecutePP(&action, NULL, &scriptInfo, &gUnknown_81166F8);
action.scriptData.savedScript = action.scriptData.script;
action.scriptData.savedScript.ptr = &gUnknown_81164E4;
action.scriptData.savedScript.ptr2 = &gUnknown_81164E4;
ret = HandleAction(&action, &gUnknown_8116704);
sub_809D648(&action);
if(ret == 0)
return TRUE;
else
return FALSE;
}

116
src/ground_script_2.c Normal file
View File

@@ -0,0 +1,116 @@
#include "debug.h"
#include "global.h"
#include "ground_map_1.h"
#include "ground_script.h"
s32 sub_8001658(ScriptUnion832*, s32);
u8 FlagJudge(s32 r0, s32 r1, u32 operation);
extern u8 gUnknown_2039A36;
extern u8 gUnknown_2039A38[];
extern u32 gUnknown_2039B48[];
extern u8 gUnknown_2039AC0[];
extern u8 gUnknown_8116848[];
s32 sub_80A8B1C(s16);
s32 sub_80AC320(s16);
s32 sub_80AD238(s16);
// TODO: this is still WIP
// void GroundScript_Unlock(void)
// {
// s32 index;
// u8 temp;
// s16 temp_s16;
//
// if(gUnknown_2039A36 != 0)
// {
// gUnknown_2039A36 = 0;
// for(index = 0; index < 0x81; index++)
// {
// if(gUnknown_2039A38[index] != 0)
// {
// Log(1, gUnknown_8116848, index);
// temp = sub_80A4D2C(index);
// temp |= sub_80A8B1C(index);
// temp |= sub_80AC320(index);
// temp |= sub_80AD238(index);
//
// if(gUnknown_2039AC0[index] != 0)
// {
// if (temp != 0)
// {
// temp_s16 = index;
// temp_s16 |= 0x80;
// sub_80A4D2C(temp_s16);
// sub_80A8B1C(temp_s16);
// sub_80AC320(temp_s16);
// sub_80AD238(temp_s16);
// gUnknown_2039AC0[index] = 0;
// }
// }
// else {
// gUnknown_2039A38[index] = 0;
// }
// }
// }
// }
// }
ScriptCommand *sub_80A242C(Action *action, s32 r1)
{
ScriptCommand script;
ScriptCommand *scriptPtr2;
ScriptCommand *scriptPtr;
scriptPtr2 = action->scriptData.script.ptr2;
scriptPtr = scriptPtr2 + 1;
while(1) {
script = *scriptPtr;
scriptPtr++;
if(script.op == 0xF4)
{
if(r1 == script.argShort)
return scriptPtr;
}
}
}
ScriptCommand *sub_80A2460(Action *action, s32 r1)
{
ScriptCommand script;
ScriptCommand *scriptPtr;
s32 temp;
scriptPtr = action->scriptData.script.ptr;
while(1) {
script = *scriptPtr;
if (script.op == 0xCC)
{
if(FlagJudge(r1, script.arg1, 0x2))
return sub_80A242C(action, script.argShort);
}
else if (script.op == 0xCD)
{
if(FlagJudge(r1, script.arg1, script.argByte))
return sub_80A242C(action, script.argShort);
}
else if (script.op == 0xCE)
{
temp = sub_8001658(action->scriptData.unk50, (s16)script.arg1);
if(FlagJudge(r1, temp, script.argByte))
return sub_80A242C(action, script.argShort);
}
else
{
return scriptPtr;
}
scriptPtr++;
}
}

View File

@@ -1,3 +1,4 @@
#include "gba/defines.h"
#include "global.h"
#include "code_800558C.h"
#include "code_800DAC0.h"
@@ -10,13 +11,16 @@
IWRAM_DATA unkStruct_3001B7C *gUnknown_3001B7C = {0};
extern unkStruct_2039DB0 gUnknown_2039DB0;
extern unkStruct_2039DB0 gUnknown_2039DC0;
extern u16 gUnknown_2039DCC;
extern u16 gUnknown_2039DCE;
extern u8 gUnknown_2039DD0;
extern u32 gUnknown_2039DD4;
extern OpenedFile *gUnknown_203B4B4;
EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DB0 = {0};
EWRAM_DATA u32 sUnknown_2039DBC = {0}; // Unused, for alignment
EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DC0 = {0};
EWRAM_DATA u16 gUnknown_2039DCC = {0};
EWRAM_DATA u16 gUnknown_2039DCE = {0};
EWRAM_DATA u8 gUnknown_2039DD0 = {0};
EWRAM_DATA u8 gUnknown_2039DD1[3] = {0, 0, 0}; // Unused, for alignment
EWRAM_DATA u32 gUnknown_2039DD4 = {0};
EWRAM_DATA_2 OpenedFile *gUnknown_203B4B4 = {0};
// dungeon_sbin.s
extern const struct FileArchive gDungeonFileArchive;

View File

@@ -3,8 +3,8 @@
#include "code_800D090.h"
#include "code_8012A18_1.h"
#include "code_803C1D0.h"
#include "code_803D110.h"
#include "constants/colors.h"
#include "code_803D0D8.h"
#include "dungeon.h"
#include "event_flag.h"
#include "exclusive_pokemon.h"

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "globaldata.h"
#include "code_80130A8.h"
#include "code_803D0D8.h"
#include "code_8094F88.h"
#include "constants/main_menu.h"
#include "dungeon.h"
@@ -251,7 +252,6 @@ void sub_8039174(void);
void DisplayPasswordAcceptScreen(void);
u32 sub_8039068(u32, u8 *passwordBuffer, unkStruct_203B480 *r0);
void sub_80391F8(void);
bool8 sub_803D204(u8 *, unkStruct_203B480 *);
u32 ConvertMenutoRescuePasswordState(u32);
void CreateRescuePasswordMenu(u32 currMenu)

View File

@@ -17,6 +17,7 @@
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "math.h"
#include "number_util.h"
#include "status_checks_1.h"
#include "structs/map.h"
#include "structs/str_dungeon.h"
@@ -24,6 +25,11 @@
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DE58[];
extern u8 *gUnknown_80FBD78[];
extern u8 *gUnknown_80FBD9C[];
extern u8 *gUnknown_80FBE40[];
extern u8 *gUnknown_80FBE3C[];
extern u8 *gUnknown_80FBE3C[];
extern u8 *gUnknown_80FC084[];
extern u8 *gUnknown_80FC090[];
extern u8 *gUnknown_80FC1C4[];
@@ -146,6 +152,13 @@ extern void nullsub_80(Entity *);
extern void nullsub_81(Entity *);
extern void nullsub_82(Entity *);
extern void nullsub_83(Entity *);
extern void nullsub_84(Entity *);
extern void sub_80943A0(void*, s32);
extern void sub_80942C0(void*, s32, s32);
extern void sub_8094318(u32 *, u32, u32 );
extern void sub_8041D9C(Entity *);
extern void sub_803F580(u32);
extern void sub_8040A84(void);
extern void sub_8041CA8(Entity *);
@@ -1225,3 +1238,58 @@ void EncoreStatusTarget(Entity *pokemon,Entity *target)
}
}
}
void sub_8078A58(struct Entity *pokemon, struct Entity *target, s32 param_3, s32 param_4)
{
struct EntityInfo *targetInfo;
u32 r7;
u32 sp_0x0;
u32 sp_0x4;
u32 sp_0x8;
u32 sp_0xC;
u32 sp_0x10;
u32 temp;
u32 temp2;
u32 temp3;
if (!EntityExists(target))
return;
targetInfo = target->info;
if (param_4 != 0) {
sub_80943A0(&sp_0x0, param_4);
temp2 = sp_0x0;
r7 = targetInfo->maxBelly;
sub_80942C0(&sp_0x4, r7, temp2);
targetInfo->maxBelly = sp_0x4;
temp3 = targetInfo->belly;
sub_8094318(&sp_0x8, temp3, targetInfo->maxBelly);
targetInfo->belly = sp_0x8;
SetMessageArgument(gAvailablePokemonNames, target, 0);
if (RoundUpFixedPoint(r7) != RoundUpFixedPoint(targetInfo->maxBelly)) {
sub_8041D9C(target);
sub_80522F4(pokemon, target, *gUnknown_80FBD9C);
}
else
sub_80522F4(pokemon, target, *gUnknown_80FBE3C);
}
else {
sub_80943A0(&sp_0xC, param_3);
temp = sp_0xC;
r7 = targetInfo->belly;
sub_80942C0(&sp_0x10, r7, temp);
targetInfo->belly = sp_0x10;
SetMessageArgument(gAvailablePokemonNames, target, 0);
if (RoundUpFixedPoint(r7) != RoundUpFixedPoint(targetInfo->belly)) {
nullsub_84(target);
sub_80522F4(pokemon, target, *gUnknown_80FBD78);
}
else
sub_80522F4(pokemon, target, *gUnknown_80FBE40);
}
EntityUpdateStatusSprites(target);
}

View File

@@ -34,7 +34,7 @@
extern void sub_807F43C(Entity *, Entity *);
extern void sub_807DC68(Entity *, Entity *);
extern void sub_8078A58(Entity *, Entity *, s16, u32);
extern void sub_8078A58(Entity *, Entity *, s32, u32);
extern u32 sub_803D73C(u32);
extern void sub_8045C28(Item *, u8 , u8);
extern void sub_80464C8(Entity *, Position *, Item *);

View File

@@ -5,6 +5,7 @@
#include "code_803E668.h"
#include "code_806CD90.h"
#include "code_8092334.h"
#include "dungeon_map_access.h"
#include "items.h"
#include "dungeon_util.h"
#include "structs/str_dungeon.h"
@@ -71,6 +72,32 @@ void SaveSpeedCounters(unkStruct_8094924 *param_1, u8 *speedCounters, u32 numCou
void SaveClientType(unkStruct_8094924 *param_1, u8 param_2);
void sub_80421C0(Entity *, u16);
void sub_804687C(Entity *, Position *, Position *, Item *, u32);
extern void sub_8083018(unkStruct_8094924 *, u8 *);
extern void sub_8081C50(unkStruct_8094924 *);
extern void sub_8081C7C(unkStruct_8094924 *);
extern void sub_8081F2C(unkStruct_8094924 *);
extern void RestoreDungeonMusic(unkStruct_8094924 *);
extern void RestoreItemData(unkStruct_8094924 *);
extern void RestoreTrapData(unkStruct_8094924 *);
extern void sub_808217C(unkStruct_8094924 *);
extern void sub_8082FD4(unkStruct_8094924 *param_1, u8 *r1, u32 r2);
extern void sub_8082FE0(unkStruct_8094924 *, u32 *, u32);
u8 sub_80831DC(unkStruct_8094924 *r0);
u8 sub_8083188(unkStruct_8094924 *r0);
s16 sub_8083170(unkStruct_8094924 *r0);
void sub_80831F8(unkStruct_8094924 *r0, Position *);
void RestoreDungeonWeather(unkStruct_8094924 *r0, Weather *);
void sub_8083220(unkStruct_8094924 *r0, u32 *);
void sub_8083260(unkStruct_8094924 *r0, u32 *);
void RestoreTile(unkStruct_8094924 *r0, Tile *);
extern u16 sub_8083158(unkStruct_8094924 *param_1);
void sub_80820A8(unkStruct_8094924 *r0, Item *);
void sub_80460F8(Position *, Item *, u32);
Entity *sub_8045684(u8, Position *, u8);
u32 sub_80831A0(unkStruct_8094924 *param_1);
void sub_8082280(unkStruct_8094924 *param_1,bool8 isTeamMember,s32 index);
extern u8 gUnknown_81071D4[];
void HandleTripTrap(Entity *pokemon, Entity *target)
{
@@ -761,3 +788,214 @@ void SaveDungeonWeather(unkStruct_8094924 *r0, Weather *weather)
sub_80830B4(r0, weather->nullifyWeather);
}
void sub_8081BF4(u8 *r0, u32 r1)
{
unkStruct_8094924 uStack_14;
sub_8082FD4(&uStack_14, r0, r1);
sub_8082FE0(&uStack_14, &uStack_14.unkC, 4);
sub_8081C50(&uStack_14);
sub_8081C7C(&uStack_14);
sub_8081F2C(&uStack_14);
RestoreDungeonMusic(&uStack_14);
RestoreItemData(&uStack_14);
RestoreTrapData(&uStack_14);
sub_808217C(&uStack_14);
sub_8083018(&uStack_14, gUnknown_81071D4);
nullsub_98(&uStack_14);
}
void sub_8081C50(unkStruct_8094924 *r0)
{
sub_8083018(r0, gUnknown_81071E0);
sub_8082FE0(r0, (u32 *)&gDungeon->dungeonLocation, 0x58);
}
void sub_8081C7C(unkStruct_8094924 *r0)
{
int x;
int y;
s32 iVar7;
sub_8083018(r0,gUnknown_81071E0);
gDungeon->unk3A08 = sub_80831DC(r0);
gDungeon->unk3A09 = sub_80831DC(r0);
gDungeon->unk3A0A = sub_80831DC(r0);
gDungeon->unk3A0B = sub_80831DC(r0);
gDungeon->unk3A0C = sub_8083188(r0);
gDungeon->unk3A0D = sub_8083188(r0);
gDungeon->tileset = sub_8083170(r0);
gDungeon->unk3A10 = sub_8083170(r0);
gDungeon->unk3A12 = sub_8083170(r0);
gDungeon->bossBattleIndex = sub_8083170(r0);
gDungeon->unk3A16 = sub_8083170(r0);
for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++)
{
for(x = 0; x < DUNGEON_MAX_SIZE_X; x++)
{
RestoreTile(r0,&gDungeon->tiles[y][x]);
}
}
sub_80831F8(r0,&gDungeon->unkE218);
sub_80831F8(r0,&gDungeon->unkE21C);
for(iVar7 = 0; iVar7 < 8; iVar7++)
{
sub_80831F8(r0,&gDungeon->unkE220[iVar7]);
}
sub_8083220(r0,&gDungeon->unkE240);
sub_8083220(r0,&gDungeon->unkE240 + 0x4);
sub_8083260(r0,&gDungeon->unkE240 + 0x8);
for(y = 0; y < 8; y++)
{
for(x = 0; x < 8; x++)
{
RestoreTile(r0,&gDungeon->unkE27C[y][x]);
gDungeon->unkE87C[y][x] = sub_8083188(r0);
}
}
RestoreDungeonWeather(r0,&gDungeon->weather);
}
void RestoreTile(unkStruct_8094924 *r0, Tile *tile)
{
memset(tile, 0, sizeof(Tile));
tile->terrainType = sub_8083158(r0);
tile->unk4 = sub_8083158(r0);
sub_8082FE0(r0, (u32 *)&tile->room, 1);
sub_8082FE0(r0, (u32 *)&tile->unkE, 1);
tile->monster = NULL;
tile->object = NULL;
}
void RestoreDungeonWeather(unkStruct_8094924 *r0, Weather *weather)
{
s32 index;
memset(weather, 0, sizeof(Weather));
sub_8082FE0(r0, (u32 *)&weather->weather, 1);
sub_8082FE0(r0, (u32 *)&weather->unkE265, 1);
for(index = 0; index < 8; index++)
{
weather->unkE267[index] = sub_8083188(r0);
weather->naturalWeather[index] = sub_8083188(r0);
}
weather->weatherDamageCounter = sub_8083188(r0);
weather->mudSportTurns = sub_8083188(r0);
weather->waterSportTurns = sub_8083188(r0);
weather->nullifyWeather = sub_80831DC(r0);
}
void sub_8081F2C(unkStruct_8094924 *param_1)
{
sub_8083018(param_1,gUnknown_81071E0);
gDungeon->unk181e8.cameraTarget = NULL;
gDungeon->unk181e8.unk18208 = sub_8083188(param_1);
gDungeon->unk181e8.visibilityRange = sub_8083188(param_1);
gDungeon->unk181e8.blinded = sub_80831DC(param_1);
gDungeon->unk181e8.unk1820B = sub_80831DC(param_1);
gDungeon->unk181e8.unk1820C = sub_80831DC(param_1);
gDungeon->unk181e8.unk1820D = sub_80831DC(param_1);
gDungeon->unk181e8.unk1820E = sub_80831DC(param_1);
gDungeon->unk181e8.unk1820F = sub_80831DC(param_1);
gDungeon->unk181e8.hallucinating = sub_80831DC(param_1);
gDungeon->unk181e8.unk18211 = sub_80831DC(param_1);
gDungeon->unk181e8.unk18213 = sub_80831DC(param_1);
}
void RestoreDungeonMusic(unkStruct_8094924 *r0)
{
gDungeon->musPlayer.songIndex = sub_8083170(r0);
gDungeon->musPlayer.pastSongIndex = sub_8083170(r0);
gDungeon->musPlayer.queuedSongIndex = sub_8083170(r0);
}
void RestoreItemData(unkStruct_8094924 *r0) {
s32 index;
Item item;
Position pos;
sub_8083018(r0, gUnknown_81071E0);
for(index = 0; index < DUNGEON_MAX_ITEMS; index++)
{
sub_80820A8(r0, &item);
sub_80831F8(r0, &pos);
if(item.flags & ITEM_FLAG_EXISTS)
sub_80460F8(&pos, &item, 0);
}
}
void sub_80820A8(unkStruct_8094924 *param_1, Item *item)
{
memset(item, 0, sizeof(Item));
sub_8082FE0(param_1,(u32 *)&item->flags,1);
sub_8082FE0(param_1,(u32 *)&item->quantity,1);
sub_8082FE0(param_1,(u32 *)&item->id,1);
}
void RestoreTrapData(unkStruct_8094924 *param_1)
{
int counter;
Tile *tile;
Entity *entity;
Position pos;
u8 isVisible;
u8 unk1;
u8 trapID;
sub_8083018(param_1, gUnknown_81071E0);
for(counter = 0; counter < DUNGEON_MAX_TRAPS; counter++)
{
trapID = 6;
unk1 = 0;
sub_8082FE0(param_1,(u32 *)&trapID,1);
sub_8082FE0(param_1,(u32 *)&unk1,1);
isVisible = sub_80831DC(param_1);
sub_80831F8(param_1, &pos);
if(trapID != 0xFF)
{
tile = GetTileSafe(pos.x, pos.y);
entity = sub_8045684(trapID, &pos, unk1);
if(entity)
{
tile->object = entity;
entity->isVisible = isVisible;
}
}
}
}
void sub_808217C(unkStruct_8094924 *param_1)
{
s32 counter;
sub_8083018(param_1,gUnknown_81071E0);
gDungeon->unk37F0 = sub_80831A0(param_1);
gDungeon->unk37F4 = sub_80831A0(param_1);
gDungeon->plusIsActive[0] = sub_80831DC(param_1);
gDungeon->plusIsActive[1] = sub_80831DC(param_1);
gDungeon->minusIsActive[0] = sub_80831DC(param_1);
gDungeon->minusIsActive[1] = sub_80831DC(param_1);
gDungeon->decoyActive = sub_80831DC(param_1);
gDungeon->fill37FD = sub_80831DC(param_1);
gDungeon->deoxysDefeat = sub_80831DC(param_1);
gDungeon->fill37FF = sub_80831DC(param_1);
gDungeon->unk3800 = sub_8083158(param_1);
for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++)
{
sub_8082280(param_1, TRUE, counter);
}
for(counter = 0; counter < DUNGEON_MAX_WILD_POKEMON; counter++)
{
sub_8082280(param_1, FALSE, counter);
}
}

View File

@@ -5,6 +5,7 @@
#include "code_801B3C0.h"
#include "code_803B050.h"
#include "code_801C8C4.h"
#include "code_803D0D8.h"
#include "code_8094F88.h"
#include "constants/communication_error_codes.h"
#include "constants/wonder_mail.h"
@@ -77,7 +78,6 @@ extern void sub_802EF48(void);
extern s32 sub_8037B28(u32);
extern bool8 DecodeWonderMailPassword(u8 *, WonderMail *);
extern bool8 IsValidWonderMail(WonderMail *WonderMailData);
void PrintWonderMailMainMenuError(u32);

View File

@@ -348,7 +348,7 @@ gUnknown_202EE6C: /* 202EE6C (sub_8044F5C - sub_8067A80) */
gUnknown_202EE70: /* 202EE70 (sub_804513C - sub_80828E0) */
.space 0x6
gUnknown_202EE76: /* 202EE76 (sub_804513C - sub_8082A08) */
.space 0x12
.space 0x10
.include "src/dungeon_map_access.o"
@@ -602,18 +602,8 @@ gUnknown_2039DA4: /* 2039DA4 (HandleAction) */
gUnknown_2039DA8: /* 2039DA8 (sub_80A14E8) */
.space 0x8
gUnknown_2039DB0: /* 2039DB0 (GroundSprite_Reset - sub_80A65F0) [unkStruct_2039DB0] */
.space 0x10
gUnknown_2039DC0: /* 2039DC0 (GroundSprite_Reset - sub_80A65F0) [unkStruct_2039DB0] */
.space 0xC
gUnknown_2039DCC: /* 2039DCC (GroundSprite_Reset - sub_80A73EC) */
.space 0x2
gUnknown_2039DCE: /* 2039DCE (GroundSprite_Reset - sub_80A73EC) */
.space 0x2
gUnknown_2039DD0: /* 2039DD0 (sub_80A62F0 - sub_80A69FC) */
.space 0x4
gUnknown_2039DD4: /* 2039DD4 (sub_80A62F0 - sub_80A69FC) */
.space 0x4
.include "src/ground_sprite.o"
gUnknown_2039DD8: /* 2039DD8 (sub_80A6E80 - sub_80A7310) */
.space 0x8

View File

@@ -113,8 +113,7 @@ gUnknown_203B0EC: /* 203B0EC (sub_8010C58) */
gUnknown_203B198: /* 203B198 (sub_8014248 - sub_8014A88) */
.space 0x60
gUnknown_203B1F8: /* 203B1F8 (sub_8015080 - sub_80151A4) */
.space 0x4
.include "src/code_8015080.o"
gUnknown_203B1FC: /* 203B1FC (sub_80151C0 - sub_8015F84) */
.space 0x4
@@ -141,16 +140,9 @@ gUnknown_203B1FC: /* 203B1FC (sub_80151C0 - sub_8015F84) */
.include "src/hints_menu1.o"
.include "src/hints_menu2.o"
.include "src/gulpin_shop.o"
gUnknown_203B270: /* 203B270 (sub_801EE10 - sub_801F3F8) */
.space 0x4
gUnknown_203B274: /* 203B274 (sub_801F428 - sub_801F7E4) */
.space 0x4
gUnknown_203B278: /* 203B278 (sub_801F808 - sub_801FAD4) */
.space 0x4
.include "src/code_801EE10.o"
.include "src/code_801F428.o"
.include "src/code_801F808.o"
.include "src/gulpin_shop_801FB50.o"
.include "src/wigglytuff_shop1.o"
.include "src/wigglytuff_shop2.o"
@@ -298,7 +290,5 @@ gUnknown_203B4AC: /* 203B4AC (ExecuteScriptCommand) */
gUnknown_203B4B0: /* 203B4B0 (sub_809D490 - HandleAction) */
.space 0x4
gUnknown_203B4B4: /* 203B4B4 (sub_80A62F0 - sub_80A658C) */
.space 0x4
.include "src/ground_sprite.o"
.include "src/ground_link.o"