Death by 74 files (#65)

* death by 74 files

* 20% reached

* doc move stuff in pokemon

* fix undef reference

* doc more and plumb a few more constanst for num party members and num moves

* that struct is def PokemonMove.. clean up all code with it
This commit is contained in:
Seth Barberee 2021-10-22 10:01:07 -07:00 committed by GitHub
parent 3f7ee3a806
commit 3e5dd1d047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
87 changed files with 21721 additions and 22451 deletions

View File

@ -5,44 +5,6 @@
.text
thumb_func_start sub_800D1E0
sub_800D1E0:
push {r4-r7,lr}
movs r0, 0
ldr r1, _0800D218
mov r12, r1
ldr r6, _0800D21C
ldr r7, _0800D220
movs r5, 0x1
_0800D1EE:
movs r2, 0
lsls r1, r0, 4
adds r4, r0, 0x1
lsls r0, 2
adds r3, r0, r7
add r1, r12
_0800D1FA:
ldrh r0, [r1]
cmp r0, r6
bne _0800D202
str r5, [r3]
_0800D202:
adds r1, 0x2
adds r2, 0x1
cmp r2, 0x7
bls _0800D1FA
adds r0, r4, 0
cmp r0, 0x1
ble _0800D1EE
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800D218: .4byte gUnknown_202DB30
_0800D21C: .4byte 0x0000fdfd
_0800D220: .4byte gUnknown_202DB60
thumb_func_end sub_800D1E0
thumb_func_start sub_800D224
sub_800D224:
push {r4-r7,lr}

View File

@ -5,271 +5,6 @@
.text
thumb_func_start sub_801B178
sub_801B178:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r5, 0
ldr r1, _0801B1F4
ldr r0, [r1]
ldr r0, [r0, 0x4C]
cmp r5, r0
bge _0801B1D2
ldr r0, _0801B1F8
mov r8, r0
adds r7, r1, 0
movs r6, 0
_0801B192:
ldr r4, _0801B1FC
adds r4, r6, r4
ldr r0, [r7]
lsls r1, r5, 1
adds r0, 0x50
adds r0, r1
movs r2, 0
ldrsh r1, [r0, r2]
movs r0, 0x58
muls r0, r1
mov r2, r8
ldr r1, [r2]
adds r1, r0
adds r0, r4, 0
bl sub_808DA34
ldr r2, [r7]
lsls r1, r5, 3
adds r0, r2, 0
adds r0, 0x64
adds r0, r1
str r4, [r0]
adds r0, r2, 0
adds r0, 0x68
adds r0, r1
adds r1, r5, 0x4
str r1, [r0]
adds r6, 0x50
adds r5, 0x1
ldr r0, [r2, 0x4C]
cmp r5, r0
blt _0801B192
_0801B1D2:
ldr r0, _0801B1F4
ldr r2, [r0]
lsls r3, r5, 3
adds r0, r2, 0
adds r0, 0x64
adds r0, r3
movs r1, 0
str r1, [r0]
adds r2, 0x68
adds r2, r3
movs r0, 0x1
str r0, [r2]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801B1F4: .4byte gUnknown_203B22C
_0801B1F8: .4byte gRecruitedPokemonRef
_0801B1FC: .4byte gAvailablePokemonNames
thumb_func_end sub_801B178
thumb_func_start sub_801B200
sub_801B200:
push {r4-r6,lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0801B2A4
ldr r5, _0801B228
ldr r3, [r5]
ldr r0, [sp]
str r0, [r3, 0x60]
ldr r1, [sp]
cmp r1, 0
beq _0801B2A4
cmp r1, 0x1
bne _0801B22C
movs r0, 0x4
bl sub_801B064
b _0801B2A4
.align 2, 0
_0801B228: .4byte gUnknown_203B22C
_0801B22C:
subs r1, 0x4
lsls r1, 1
adds r0, r3, 0
adds r0, 0x50
adds r0, r1
ldrh r0, [r0]
adds r1, r3, 0
adds r1, 0x58
strh r0, [r1]
ldr r2, _0801B26C
movs r0, 0
ldrsh r1, [r1, r0]
movs r0, 0x58
muls r0, r1
ldr r1, [r2]
adds r1, r0
str r1, [r3, 0x5C]
ldr r0, _0801B270
bl sub_808DA34
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0xC
ldr r1, [r1, 0x5C]
adds r1, 0x2C
bl sub_809401C
movs r4, 0
adds r6, r5, 0
movs r5, 0xC
b _0801B278
.align 2, 0
_0801B26C: .4byte gRecruitedPokemonRef
_0801B270: .4byte gUnknown_202E218
_0801B274:
adds r5, 0x8
adds r4, 0x1
_0801B278:
cmp r4, 0x7
bgt _0801B292
ldr r3, [r6]
adds r2, r3, r5
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0801B274
ldrh r1, [r3, 0xA]
adds r0, r2, 0
bl sub_8092AD4
_0801B292:
cmp r4, 0x3
ble _0801B29E
movs r0, 0x1
bl sub_801B064
b _0801B2A4
_0801B29E:
movs r0, 0x2
bl sub_801B064
_0801B2A4:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_801B200
thumb_func_start sub_801B2AC
sub_801B2AC:
push {lr}
bl sub_801E8C0
cmp r0, 0x2
beq _0801B2CA
cmp r0, 0x2
bcc _0801B2D4
cmp r0, 0x3
bne _0801B2D4
bl sub_801E93C
movs r0, 0x2
bl sub_801B064
b _0801B2D4
_0801B2CA:
bl sub_801E93C
movs r0, 0
bl sub_801B064
_0801B2D4:
pop {r0}
bx r0
thumb_func_end sub_801B2AC
thumb_func_start sub_801B2D8
sub_801B2D8:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0801B2EC
movs r0, 0x4
bl sub_801B064
_0801B2EC:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_801B2D8
thumb_func_start sub_801B2F4
sub_801B2F4:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
mov r0, sp
bl sub_808D580
adds r6, r0, 0
ldr r2, _0801B36C
ldr r1, [r2]
movs r0, 0
str r0, [r1, 0x4C]
movs r5, 0
cmp r5, r6
bge _0801B35A
ldr r0, _0801B370
mov r8, r0
adds r7, r2, 0
mov r4, sp
_0801B31A:
ldr r1, [r4]
movs r0, 0x58
muls r0, r1
mov r2, r8
ldr r1, [r2]
adds r1, r0
ldr r0, [r7]
ldrh r0, [r0, 0xA]
movs r2, 0x8
ldrsh r1, [r1, r2]
bl sub_808E190
lsls r0, 24
cmp r0, 0
beq _0801B352
ldr r2, [r7]
ldr r0, [r2, 0x4C]
lsls r0, 1
adds r1, r2, 0
adds r1, 0x50
adds r1, r0
ldr r0, [r4]
strh r0, [r1]
ldr r0, [r2, 0x4C]
cmp r0, 0x3
bgt _0801B35A
adds r0, 0x1
str r0, [r2, 0x4C]
_0801B352:
adds r4, 0x4
adds r5, 0x1
cmp r5, r6
blt _0801B31A
_0801B35A:
ldr r0, _0801B36C
ldr r0, [r0]
ldr r0, [r0, 0x4C]
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0801B36C: .4byte gUnknown_203B22C
_0801B370: .4byte gRecruitedPokemonRef
thumb_func_end sub_801B2F4
thumb_func_start sub_801B374
sub_801B374:
push {r4-r6,lr}
@ -291,7 +26,7 @@ _0801B388:
movs r0, 0x8
ldrsh r1, [r4, r0]
adds r0, r6, 0
bl sub_808E190
bl CanMonLearnMove
lsls r0, 24
cmp r0, 0
beq _0801B3AC

View File

@ -3976,7 +3976,7 @@ _08046F2A:
movs r2, 0x2
ldrsh r1, [r0, r2]
adds r0, r7, 0
bl sub_808E190
bl CanMonLearnMove
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0

View File

@ -611,7 +611,7 @@ _080489A2:
movs r0, 0x2
ldrsh r1, [r6, r0]
mov r0, r9
bl sub_808E190
bl CanMonLearnMove
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0

View File

@ -3570,8 +3570,8 @@ sub_80940E0:
bx r0
thumb_func_end sub_80940E0
thumb_func_start xxx_save_poke_sub_2c_8094108
xxx_save_poke_sub_2c_8094108:
thumb_func_start SavePokemonMoves
SavePokemonMoves:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
@ -3587,10 +3587,10 @@ _08094110:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end xxx_save_poke_sub_2c_8094108
thumb_func_end SavePokemonMoves
thumb_func_start xxx_restore_poke_sub_2c_8094128
xxx_restore_poke_sub_2c_8094128:
thumb_func_start RestorePokemonMoves
RestorePokemonMoves:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
@ -3606,7 +3606,7 @@ _08094130:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end xxx_restore_poke_sub_2c_8094128
thumb_func_end RestorePokemonMoves
thumb_func_start sub_8094148
sub_8094148:

View File

@ -581,7 +581,7 @@ _080954E2:
adds r1, r5, 0
adds r1, 0x30
mov r0, sp
bl xxx_restore_poke_sub_2c_8094128
bl RestorePokemonMoves
adds r1, r5, 0
adds r1, 0x50
mov r0, sp
@ -727,7 +727,7 @@ _0809563A:
adds r1, r5, 0
adds r1, 0x30
mov r0, sp
bl xxx_save_poke_sub_2c_8094108
bl SavePokemonMoves
adds r1, r5, 0
adds r1, 0x50
mov r0, sp

View File

@ -1986,8 +1986,8 @@ _0809699C:
_080969A8: .4byte gUnknown_203B490
thumb_func_end sub_809693C
thumb_func_start sub_80969AC
sub_80969AC:
thumb_func_start GetNumAcceptedJobs
GetNumAcceptedJobs:
push {r4,r5,lr}
movs r5, 0
movs r4, 0
@ -2007,7 +2007,7 @@ _080969C2:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80969AC
thumb_func_end GetNumAcceptedJobs
thumb_func_start sub_80969D0
sub_80969D0:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -75,42 +75,4 @@ _0803AF2C:
_0803AF34: .4byte gUnknown_203B3F8
thumb_func_end sub_803AEB0
thumb_func_start sub_803AF38
sub_803AF38:
push {lr}
movs r0, 0x1
bl sub_8023A94
cmp r0, 0x2
beq _0803AF78
cmp r0, 0x2
bcc _0803AF82
cmp r0, 0x3
bne _0803AF82
bl sub_8023B44
ldr r1, _0803AF70
ldr r1, [r1]
strh r0, [r1, 0x4]
ldr r3, _0803AF74
movs r0, 0x4
ldrsh r2, [r1, r0]
movs r0, 0x58
muls r2, r0
ldr r0, [r3]
adds r0, r2
str r0, [r1, 0x8]
movs r0, 0x3
bl sub_803ACD0
b _0803AF82
.align 2, 0
_0803AF70: .4byte gUnknown_203B3F8
_0803AF74: .4byte gRecruitedPokemonRef
_0803AF78:
bl sub_8023C60
movs r0, 0x7
bl sub_803ACD0
_0803AF82:
pop {r0}
bx r0
thumb_func_end sub_803AF38
.align 2,0

1810
asm/ground_effect.s Normal file

File diff suppressed because it is too large Load Diff

1190
asm/ground_event.s Normal file

File diff suppressed because it is too large Load Diff

142
asm/ground_link.s Normal file
View File

@ -0,0 +1,142 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80AD8A0
sub_80AD8A0:
lsls r0, 16
ldr r1, _080AD8B0
asrs r0, 13
ldr r1, [r1]
adds r1, r0
adds r0, r1, 0
bx lr
.align 2, 0
_080AD8B0: .4byte gUnknown_203B4B8
thumb_func_end sub_80AD8A0
thumb_func_start sub_80AD8B4
sub_80AD8B4:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
ldr r1, _080AD910
asrs r0, 13
ldr r1, [r1]
adds r2, r1, r0
ldrb r1, [r2, 0x2]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080AD8E4
ldrb r0, [r2]
lsls r3, r0, 11
str r3, [r4]
ldrb r1, [r2, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080AD8E4
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r4]
_080AD8E4:
ldrb r1, [r2, 0x3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080AD906
ldrb r0, [r2, 0x1]
lsls r3, r0, 11
str r3, [r4, 0x4]
ldrb r1, [r2, 0x3]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080AD906
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r4, 0x4]
_080AD906:
ldrb r0, [r2, 0x6]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080AD910: .4byte gUnknown_203B4B8
thumb_func_end sub_80AD8B4
thumb_func_start sub_80AD914
sub_80AD914:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
lsls r0, 16
ldr r1, _080AD98C
asrs r0, 13
ldr r1, [r1]
adds r2, r1, r0
ldr r0, [r3]
ldr r1, [r3, 0x4]
str r0, [r4]
str r1, [r4, 0x4]
ldrb r1, [r2, 0x2]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080AD94E
ldrb r0, [r2]
lsls r3, r0, 11
str r3, [r4]
ldrb r1, [r2, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080AD94E
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r4]
_080AD94E:
ldrb r1, [r2, 0x3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080AD970
ldrb r0, [r2, 0x1]
lsls r3, r0, 11
str r3, [r4, 0x4]
ldrb r1, [r2, 0x3]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080AD970
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r4, 0x4]
_080AD970:
ldrb r1, [r2, 0x4]
lsls r1, 11
ldr r0, [r4]
adds r0, r1
str r0, [r5]
ldrb r1, [r2, 0x5]
lsls r1, 11
ldr r0, [r4, 0x4]
adds r0, r1
str r0, [r5, 0x4]
ldrb r0, [r2, 0x6]
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080AD98C: .4byte gUnknown_203B4B8
thumb_func_end sub_80AD914
.align 2,0

File diff suppressed because it is too large Load Diff

3114
asm/ground_map.s Normal file

File diff suppressed because it is too large Load Diff

2259
asm/ground_object.s Normal file

File diff suppressed because it is too large Load Diff

9184
asm/ground_script.s Normal file

File diff suppressed because it is too large Load Diff

2704
asm/ground_sprite.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -186,7 +186,7 @@ _0802E3FC:
lsls r0, 24
cmp r0, 0
bne _0802E422
bl sub_80969AC
bl GetNumAcceptedJobs
cmp r0, 0x7
ble _0802E42C
_0802E422:

View File

@ -5,469 +5,6 @@
.text
thumb_func_start sub_800C298
sub_800C298:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _0800C2F0
mov r8, r0
cmp r5, r8
bne _0800C2FC
bl DisableInterrupts
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r4, _0800C2F4
ldr r0, _0800C2F8
movs r1, 0
mov r10, r1
movs r7, 0
adds r6, r0, 0
adds r6, 0x18
movs r5, 0x4
_0800C2C8:
ldr r0, [r6]
bl m4aMPlayStop
strh r7, [r4]
mov r2, r8
strh r2, [r4, 0x2]
strh r7, [r4, 0x4]
mov r0, r10
strb r0, [r4, 0x6]
adds r6, 0xC
subs r5, 0x1
adds r4, 0x8
cmp r5, 0
bge _0800C2C8
mov r1, r9
cmp r1, 0
beq _0800C3DE
bl EnableInterrupts
b _0800C3DE
.align 2, 0
_0800C2F0: .4byte 0x000003e5
_0800C2F4: .4byte gUnknown_3000FE8
_0800C2F8: .4byte gMPlayTable
_0800C2FC:
adds r0, r5, 0
bl sub_800CAAC
lsls r0, 24
cmp r0, 0
beq _0800C364
adds r0, r5, 0
bl sub_800CAE0
lsls r0, 16
lsrs r0, 16
ldr r2, _0800C330
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldr r7, [r1]
lsls r2, r0, 3
ldr r1, _0800C334
adds r4, r2, r1
cmp r0, 0x1
bhi _0800C338
adds r0, r5, 0
bl nullsub_21
b _0800C3DE
.align 2, 0
_0800C330: .4byte gMPlayTable
_0800C334: .4byte gUnknown_3000FD8
_0800C338:
bl DisableInterrupts
lsls r0, 24
lsrs r6, r0, 24
ldrh r0, [r4, 0x2]
cmp r0, r5
bne _0800C35A
adds r0, r7, 0
bl m4aMPlayStop
movs r1, 0
movs r0, 0
strh r0, [r4]
mov r2, r8
strh r2, [r4, 0x2]
strh r0, [r4, 0x4]
strb r1, [r4, 0x6]
_0800C35A:
cmp r6, 0
beq _0800C3DE
bl EnableInterrupts
b _0800C3DE
_0800C364:
ldr r0, _0800C398
cmp r5, r0
bne _0800C3A8
bl DisableInterrupts
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0800C39C
ldrh r0, [r0]
cmp r0, 0
beq _0800C38C
ldr r1, _0800C3A0
ldrh r0, [r1]
cmp r0, r8
beq _0800C38C
mov r0, r8
strh r0, [r1]
ldr r0, _0800C3A4
bl m4aMPlayStop
_0800C38C:
cmp r4, 0
beq _0800C3DE
bl EnableInterrupts
b _0800C3DE
.align 2, 0
_0800C398: .4byte 0x000003e6
_0800C39C: .4byte gUnknown_202D690
_0800C3A0: .4byte gUnknown_202D68E
_0800C3A4: .4byte gUnknown_2000970
_0800C3A8:
adds r0, r5, 0
bl sub_800CACC
lsls r0, 24
cmp r0, 0
beq _0800C3DE
bl DisableInterrupts
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0800C3EC
ldrh r0, [r0]
cmp r0, 0
beq _0800C3D6
ldr r1, _0800C3F0
ldrh r0, [r1]
cmp r0, r5
bne _0800C3D6
mov r2, r8
strh r2, [r1]
ldr r0, _0800C3F4
bl m4aMPlayStop
_0800C3D6:
cmp r4, 0
beq _0800C3DE
bl EnableInterrupts
_0800C3DE:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800C3EC: .4byte gUnknown_202D690
_0800C3F0: .4byte gUnknown_202D68E
_0800C3F4: .4byte gUnknown_2000970
thumb_func_end sub_800C298
thumb_func_start sub_800C3F8
sub_800C3F8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
movs r0, 0x80
lsls r0, 17
cmp r1, r0
bls _0800C416
movs r0, 0x10
mov r9, r0
b _0800C422
_0800C416:
lsrs r1, 20
mov r9, r1
cmp r1, 0
bne _0800C422
movs r1, 0x1
mov r9, r1
_0800C422:
ldr r0, _0800C460
mov r8, r0
cmp r4, r8
bne _0800C496
bl DisableInterrupts
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r7, 0x2
ldr r5, _0800C464
ldr r0, _0800C468
adds r6, r0, 0
adds r6, 0x18
_0800C43E:
ldrh r0, [r5, 0x2]
cmp r0, r8
beq _0800C47E
lsls r0, r7, 16
lsrs r0, 16
bl sub_800CAF0
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0800C46C
ldr r0, [r6]
mov r1, r9
bl m4aMPlayFadeOut
b _0800C47E
.align 2, 0
_0800C460: .4byte 0x000003e5
_0800C464: .4byte gUnknown_3000FE8
_0800C468: .4byte gMPlayTable
_0800C46C:
ldr r0, [r6]
bl m4aMPlayStop
strh r4, [r5]
mov r1, r8
strh r1, [r5, 0x2]
strh r4, [r5, 0x4]
movs r0, 0
strb r0, [r5, 0x6]
_0800C47E:
adds r6, 0xC
adds r7, 0x1
adds r5, 0x8
cmp r7, 0x6
ble _0800C43E
mov r1, r10
cmp r1, 0
bne _0800C490
b _0800C5BE
_0800C490:
bl EnableInterrupts
b _0800C5BE
_0800C496:
adds r0, r4, 0
bl sub_800CAAC
lsls r0, 24
cmp r0, 0
beq _0800C508
adds r0, r4, 0
bl sub_800CAE0
lsls r0, 16
lsrs r4, r0, 16
lsls r1, r4, 3
ldr r0, _0800C4E4
adds r5, r1, r0
ldr r1, _0800C4E8
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
adds r0, r1
ldr r6, [r0]
bl DisableInterrupts
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r5, 0x2]
cmp r0, r8
beq _0800C4FE
adds r0, r4, 0
bl sub_800CAF0
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0800C4EC
adds r0, r6, 0
mov r1, r9
bl m4aMPlayFadeOut
b _0800C4FE
.align 2, 0
_0800C4E4: .4byte gUnknown_3000FD8
_0800C4E8: .4byte gMPlayTable
_0800C4EC:
adds r0, r6, 0
bl m4aMPlayStop
movs r0, 0
strh r4, [r5]
mov r1, r8
strh r1, [r5, 0x2]
strh r4, [r5, 0x4]
strb r0, [r5, 0x6]
_0800C4FE:
cmp r7, 0
beq _0800C5BE
bl EnableInterrupts
b _0800C5BE
_0800C508:
ldr r0, _0800C53C
cmp r4, r0
bne _0800C564
bl DisableInterrupts
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0800C540
ldrh r0, [r0]
cmp r0, 0
beq _0800C556
ldr r4, _0800C544
ldrh r0, [r4]
cmp r0, r8
beq _0800C556
movs r0, 0x1
bl sub_800CAF0
lsls r0, 24
cmp r0, 0
beq _0800C54C
ldr r0, _0800C548
mov r1, r9
bl m4aMPlayFadeOut
b _0800C556
.align 2, 0
_0800C53C: .4byte 0x000003e6
_0800C540: .4byte gUnknown_202D690
_0800C544: .4byte gUnknown_202D68E
_0800C548: .4byte gUnknown_2000970
_0800C54C:
ldr r0, _0800C560
bl m4aMPlayStop
mov r0, r8
strh r0, [r4]
_0800C556:
cmp r5, 0
beq _0800C5BE
bl EnableInterrupts
b _0800C5BE
.align 2, 0
_0800C560: .4byte gUnknown_2000970
_0800C564:
adds r0, r4, 0
bl sub_800CACC
lsls r0, 24
cmp r0, 0
beq _0800C5BE
bl DisableInterrupts
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _0800C5A0
ldrh r0, [r0]
cmp r0, 0
beq _0800C5B6
ldr r5, _0800C5A4
ldrh r0, [r5]
cmp r0, r4
bne _0800C5B6
movs r0, 0x1
bl sub_800CAF0
lsls r0, 24
cmp r0, 0
beq _0800C5AC
ldr r0, _0800C5A8
mov r1, r9
bl m4aMPlayFadeOut
b _0800C5B6
.align 2, 0
_0800C5A0: .4byte gUnknown_202D690
_0800C5A4: .4byte gUnknown_202D68E
_0800C5A8: .4byte gUnknown_2000970
_0800C5AC:
ldr r0, _0800C5CC
bl m4aMPlayStop
mov r1, r8
strh r1, [r5]
_0800C5B6:
cmp r6, 0
beq _0800C5BE
bl EnableInterrupts
_0800C5BE:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800C5CC: .4byte gUnknown_2000970
thumb_func_end sub_800C3F8
thumb_func_start sub_800C5D0
sub_800C5D0:
push {r4,r5,lr}
lsls r0, 16
lsrs r4, r0, 16
adds r5, r4, 0
adds r0, r4, 0
bl sub_800CACC
lsls r0, 24
cmp r0, 0
beq _0800C600
ldr r0, _0800C5F8
ldrh r0, [r0]
cmp r0, 0
beq _0800C630
ldr r0, _0800C5FC
ldrh r0, [r0]
cmp r0, r4
bne _0800C630
movs r0, 0x1
b _0800C632
.align 2, 0
_0800C5F8: .4byte gUnknown_202D690
_0800C5FC: .4byte gUnknown_202D68E
_0800C600:
adds r0, r4, 0
bl sub_800CAAC
lsls r0, 24
cmp r0, 0
beq _0800C630
adds r0, r4, 0
bl sub_800CAE0
lsls r0, 16
lsrs r0, 16
lsls r2, r0, 3
ldr r1, _0800C62C
adds r2, r1
cmp r0, 0x1
bls _0800C630
ldrh r0, [r2, 0x2]
cmp r0, r5
bne _0800C630
movs r0, 0x1
b _0800C632
.align 2, 0
_0800C62C: .4byte gUnknown_3000FD8
_0800C630:
movs r0, 0
_0800C632:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800C5D0
thumb_func_start SoundVSync
SoundVSync:
push {r4,lr}
bl DisableInterrupts
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl m4aSoundVSync
cmp r4, 0
beq _0800C650
bl EnableInterrupts
_0800C650:
pop {r4}
pop {r0}
bx r0
thumb_func_end SoundVSync
thumb_func_start nullsub_18
nullsub_18:
bx lr
thumb_func_end nullsub_18
thumb_func_start UpdateSound
UpdateSound:
push {r4-r7,lr}

View File

@ -140,7 +140,7 @@ sub_802EC10:
lsls r0, 24
cmp r0, 0
bne _0802EC40
bl sub_80969AC
bl GetNumAcceptedJobs
cmp r0, 0x7
ble _0802EC4A
_0802EC40:

View File

@ -5,273 +5,6 @@
.text
thumb_func_start sub_8019E40
sub_8019E40:
push {r4-r6,lr}
adds r6, r0, 0
bl xxx_count_inv_unk230
cmp r0, 0
beq _08019ED4
ldr r5, _08019EC8
movs r0, 0xA0
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
str r6, [r0, 0x34]
lsls r1, r6, 1
adds r1, r6
lsls r1, 3
adds r1, 0x3C
adds r1, r0, r1
str r1, [r0, 0x38]
adds r0, 0x3C
bl sub_8006518
ldr r1, [r5]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _08019ECC
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [r5]
ldr r1, [r0, 0x38]
adds r0, 0x9C
str r0, [r1, 0x14]
bl ResetUnusedInputStruct
ldr r0, [r5]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r5]
bl xxx_count_inv_unk230
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0xA
adds r3, r6, 0
bl sub_8013818
ldr r0, [r5]
ldr r1, _08019ED0
ldrh r1, [r1]
strh r1, [r0, 0x18]
bl sub_8013984
bl sub_801A064
bl sub_801A0D8
movs r0, 0x1
b _08019ED6
.align 2, 0
_08019EC8: .4byte gUnknown_203B214
_08019ECC: .4byte gUnknown_80DB8CC
_08019ED0: .4byte gUnknown_203B218
_08019ED4:
movs r0, 0
_08019ED6:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8019E40
thumb_func_start sub_8019EDC
sub_8019EDC:
push {lr}
sub sp, 0x4
lsls r0, 24
cmp r0, 0
bne _08019EF8
ldr r0, _08019EF4
ldr r0, [r0]
bl sub_8013660
movs r0, 0
b _08019FAA
.align 2, 0
_08019EF4: .4byte gUnknown_203B214
_08019EF8:
ldr r0, _08019F10
ldr r0, [r0]
bl GetKeyPress
cmp r0, 0x2
beq _08019F1A
cmp r0, 0x2
bgt _08019F14
cmp r0, 0x1
beq _08019F24
b _08019F88
.align 2, 0
_08019F10: .4byte gUnknown_203B214
_08019F14:
cmp r0, 0x4
beq _08019F7E
b _08019F88
_08019F1A:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08019FAA
_08019F24:
bl sub_8019FB0
lsls r0, 24
lsrs r0, 24
bl xxx_get_inv_unk230_at_809185C
ldrb r2, [r0]
lsls r2, 16
ldr r3, _08019F68
ldr r1, [sp]
ands r1, r3
orrs r1, r2
str r1, [sp]
ldrb r0, [r0, 0x1]
lsls r0, 8
ldr r2, _08019F6C
ands r1, r2
orrs r1, r0
str r1, [sp]
mov r0, sp
bl GetStackBuyPrice
ldr r1, _08019F70
ldr r1, [r1]
movs r2, 0x98
lsls r2, 2
adds r1, r2
ldr r1, [r1]
cmp r0, r1
ble _08019F74
movs r0, 0x2
bl PlayMenuSoundEffect
b _08019F7A
.align 2, 0
_08019F68: .4byte 0xff00ffff
_08019F6C: .4byte 0xffff00ff
_08019F70: .4byte gTeamInventory_203B460
_08019F74:
movs r0, 0
bl PlayMenuSoundEffect
_08019F7A:
movs r0, 0x3
b _08019FAA
_08019F7E:
movs r0, 0x4
bl PlayMenuSoundEffect
movs r0, 0x4
b _08019FAA
_08019F88:
ldr r0, _08019F9C
ldr r0, [r0]
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _08019FA0
movs r0, 0
b _08019FAA
.align 2, 0
_08019F9C: .4byte gUnknown_203B214
_08019FA0:
bl sub_801A064
bl sub_801A0D8
movs r0, 0x1
_08019FAA:
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_8019EDC
thumb_func_start sub_8019FB0
sub_8019FB0:
ldr r0, _08019FC8
ldr r1, [r0]
movs r0, 0x1E
ldrsh r2, [r1, r0]
movs r3, 0x1C
ldrsh r0, [r1, r3]
muls r0, r2
ldrb r1, [r1, 0x18]
adds r0, r1
lsls r0, 24
lsrs r0, 24
bx lr
.align 2, 0
_08019FC8: .4byte gUnknown_203B214
thumb_func_end sub_8019FB0
thumb_func_start sub_8019FCC
sub_8019FCC:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ResetUnusedInputStruct
ldr r5, _0801A00C
ldr r0, [r5]
adds r0, 0x3C
movs r1, 0
movs r2, 0
bl sub_800641C
bl xxx_count_inv_unk230
adds r1, r0, 0
ldr r0, [r5]
strh r1, [r0, 0x22]
bl sub_8013984
bl sub_801A064
bl sub_801A0D8
cmp r4, 0
beq _0801A006
ldr r0, [r5]
bl AddMenuCursorSprite
_0801A006:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801A00C: .4byte gUnknown_203B214
thumb_func_end sub_8019FCC
thumb_func_start sub_801A010
sub_801A010:
push {r4,r5,lr}
ldr r4, _0801A058
ldr r2, [r4]
cmp r2, 0
beq _0801A050
ldr r1, _0801A05C
ldrh r0, [r2, 0x18]
strh r0, [r1]
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0801A060
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801A050:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801A058: .4byte gUnknown_203B214
_0801A05C: .4byte gUnknown_203B218
_0801A060: .4byte gUnknown_80DB8B4
thumb_func_end sub_801A010
thumb_func_start sub_801A064
sub_801A064:
push {r4,lr}

View File

@ -5,567 +5,6 @@
.text
thumb_func_start sub_802B880
sub_802B880:
push {r4,lr}
ldr r4, _0802B8D0
ldr r0, [r4]
adds r0, 0x52
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x6C]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x82
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x6C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x84
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x74
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802B8D0: .4byte gUnknown_203B2CC
thumb_func_end sub_802B880
thumb_func_start sub_802B8D4
sub_802B8D4:
push {r4-r7,lr}
sub sp, 0x8
ldr r4, _0802B99C
ldr r0, [r4]
ldr r0, [r0, 0x6C]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x6C]
bl sub_80073B8
ldr r2, _0802B9A0
ldr r0, [r4]
ldr r3, [r0, 0x6C]
movs r0, 0
str r0, [sp]
movs r0, 0xA
movs r1, 0
bl xxx_call_draw_string
ldr r0, _0802B9A4
ldrb r0, [r0, 0x2]
lsls r0, 3
adds r0, 0x4
ldr r3, [r4]
adds r1, r3, 0
adds r1, 0x56
movs r5, 0
ldrsh r2, [r1, r5]
adds r2, 0x1
movs r1, 0x7
str r1, [sp]
ldr r1, [r3, 0x6C]
str r1, [sp, 0x4]
movs r1, 0
movs r3, 0x2
bl sub_8012BC4
movs r6, 0
ldr r0, [r4]
adds r0, 0x52
movs r1, 0
ldrsh r0, [r0, r1]
cmp r6, r0
bge _0802B98A
adds r7, r4, 0
_0802B930:
ldr r0, [r7]
adds r0, 0x38
adds r1, r6, 0
bl sub_8013800
adds r5, r0, 0
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0x56
movs r3, 0
ldrsh r2, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r2
adds r0, r6
adds r0, r1, r0
ldrb r4, [r0]
ldr r3, [r1, 0x6C]
movs r0, 0xA
adds r1, r5, 0
movs r2, 0x6
bl sub_803B6B0
bl sub_802BC7C
adds r0, r4, 0
bl GetPokemonMailHeadline
adds r2, r0, 0
ldr r0, [r7]
ldr r3, [r0, 0x6C]
movs r0, 0
str r0, [sp]
movs r0, 0x15
adds r1, r5, 0
bl xxx_format_and_draw
adds r6, 0x1
ldr r0, [r7]
adds r0, 0x52
movs r5, 0
ldrsh r0, [r0, r5]
cmp r6, r0
blt _0802B930
_0802B98A:
ldr r0, _0802B99C
ldr r0, [r0]
ldr r0, [r0, 0x6C]
bl sub_80073E0
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B99C: .4byte gUnknown_203B2CC
_0802B9A0: .4byte gUnknown_80DFC04
_0802B9A4: .4byte gUnknown_80DFBE8
thumb_func_end sub_802B8D4
thumb_func_start sub_802B9A8
sub_802B9A8:
push {r4,r5,lr}
movs r5, 0
movs r4, 0
_0802B9AE:
lsls r0, r4, 24
lsrs r0, 24
bl CheckPKMNNewsSlot
lsls r0, 24
cmp r0, 0
beq _0802B9C6
ldr r0, _0802B9D4
ldr r0, [r0]
adds r0, r5
strb r4, [r0]
adds r5, 0x1
_0802B9C6:
adds r4, 0x1
cmp r4, 0x37
ble _0802B9AE
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0802B9D4: .4byte gUnknown_203B2CC
thumb_func_end sub_802B9A8
thumb_func_start HasNoPKMNNews
HasNoPKMNNews:
push {r4,lr}
movs r4, 0
_0802B9DC:
lsls r0, r4, 24
lsrs r0, 24
bl CheckPKMNNewsSlot
lsls r0, 24
cmp r0, 0
beq _0802B9EE
movs r0, 0
b _0802B9F6
_0802B9EE:
adds r4, 0x1
cmp r4, 0x37
ble _0802B9DC
movs r0, 0x1
_0802B9F6:
pop {r4}
pop {r1}
bx r1
thumb_func_end HasNoPKMNNews
thumb_func_start sub_802B9FC
sub_802B9FC:
push {r4-r7,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r5, _0802BA80
movs r0, 0x94
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
movs r6, 0
strb r4, [r0, 0x4]
ldr r0, [r5]
adds r0, 0x88
bl sub_801317C
ldr r1, [r5]
str r6, [r1, 0x24]
adds r1, 0x28
ldr r0, _0802BA84
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r1, [r5]
ldr r2, _0802BA88
adds r1, 0x40
adds r0, r2, 0
ldm r0!, {r3,r4,r7}
stm r1!, {r3,r4,r7}
ldm r0!, {r3,r4,r7}
stm r1!, {r3,r4,r7}
ldr r1, [r5]
adds r1, 0x58
adds r0, r2, 0
ldm r0!, {r3,r4,r7}
stm r1!, {r3,r4,r7}
ldm r0!, {r3,r4,r7}
stm r1!, {r3,r4,r7}
ldr r0, [r5]
adds r0, 0x70
ldm r2!, {r1,r4,r7}
stm r0!, {r1,r4,r7}
ldm r2!, {r3,r4,r7}
stm r0!, {r3,r4,r7}
bl ResetUnusedInputStruct
ldr r0, [r5]
adds r0, 0x28
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r5]
str r6, [r0, 0x8]
bl sub_802BCC4
bl sub_802BC7C
movs r0, 0
bl sub_802BB14
movs r0, 0x1
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0802BA80: .4byte gUnknown_203B2D4
_0802BA84: .4byte gUnknown_80DFC34
_0802BA88: .4byte gUnknown_80DFC18
thumb_func_end sub_802B9FC
thumb_func_start sub_802BA8C
sub_802BA8C:
push {lr}
ldr r0, _0802BAA4
ldr r0, [r0]
ldr r0, [r0]
cmp r0, 0x1
beq _0802BAB8
cmp r0, 0x1
bgt _0802BAA8
cmp r0, 0
beq _0802BAB2
b _0802BAC2
.align 2, 0
_0802BAA4: .4byte gUnknown_203B2D4
_0802BAA8:
cmp r0, 0x2
beq _0802BAC2
cmp r0, 0x3
beq _0802BABE
b _0802BAC2
_0802BAB2:
bl sub_802BB98
b _0802BAC6
_0802BAB8:
bl sub_802BC08
b _0802BAC6
_0802BABE:
movs r0, 0x3
b _0802BAC8
_0802BAC2:
movs r0, 0x2
b _0802BAC8
_0802BAC6:
movs r0, 0
_0802BAC8:
pop {r1}
bx r1
thumb_func_end sub_802BA8C
thumb_func_start sub_802BACC
sub_802BACC:
push {r4,r5,lr}
ldr r4, _0802BB0C
ldr r2, [r4]
cmp r2, 0
beq _0802BB06
ldr r0, [r2, 0x24]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x28
ldr r0, _0802BB10
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x28
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0802BB06:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802BB0C: .4byte gUnknown_203B2D4
_0802BB10: .4byte gUnknown_80DFC18
thumb_func_end sub_802BACC
thumb_func_start sub_802BB14
sub_802BB14:
push {lr}
ldr r1, _0802BB24
ldr r1, [r1]
str r0, [r1]
bl sub_802BB28
pop {r0}
bx r0
.align 2, 0
_0802BB24: .4byte gUnknown_203B2D4
thumb_func_end sub_802BB14
thumb_func_start sub_802BB28
sub_802BB28:
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _0802BB94
ldr r1, [r5]
ldr r0, [r1]
cmp r0, 0
blt _0802BB8C
cmp r0, 0x1
bgt _0802BB8C
ldr r0, [r1, 0x24]
bl sub_8008C54
ldr r0, [r5]
ldr r0, [r0, 0x24]
bl sub_80073B8
ldr r0, [r5]
ldrb r0, [r0, 0x4]
bl GetPokemonMailHeadline
adds r2, r0, 0
ldr r0, [r5]
ldr r3, [r0, 0x24]
movs r4, 0
str r4, [sp]
movs r0, 0xA
movs r1, 0
bl xxx_format_and_draw
ldr r3, [r5]
ldr r1, [r3, 0x8]
lsls r1, 2
adds r0, r3, 0
adds r0, 0x10
adds r0, r1
ldr r2, [r0]
ldr r3, [r3, 0x24]
str r4, [sp]
movs r0, 0x6
movs r1, 0x14
bl xxx_format_and_draw
ldr r0, [r5]
ldr r0, [r0, 0x24]
bl sub_80073E0
ldr r1, [r5]
ldr r0, [r1, 0x8]
adds r0, 0x1
str r0, [r1, 0x8]
_0802BB8C:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802BB94: .4byte gUnknown_203B2D4
thumb_func_end sub_802BB28
thumb_func_start sub_802BB98
sub_802BB98:
push {r4,lr}
ldr r0, _0802BBD4
ldr r2, [r0]
ldr r1, [r2, 0xC]
adds r4, r0, 0
cmp r1, 0
beq _0802BBBC
ldr r0, [r2, 0x20]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _0802BBB4
bl sub_8013E54
_0802BBB4:
ldr r1, [r4]
ldr r0, [r1, 0x20]
adds r0, 0x1
str r0, [r1, 0x20]
_0802BBBC:
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x88
ldr r1, [r1, 0x24]
bl sub_8012A64
cmp r0, 0x1
beq _0802BBD8
cmp r0, 0x2
beq _0802BBF6
b _0802BC02
.align 2, 0
_0802BBD4: .4byte gUnknown_203B2D4
_0802BBD8:
movs r0, 0
bl PlayMenuSoundEffect
ldr r0, [r4]
ldr r0, [r0, 0xC]
cmp r0, 0
beq _0802BBEE
movs r0, 0x1
bl sub_802BB14
b _0802BC02
_0802BBEE:
movs r0, 0x3
bl sub_802BB14
b _0802BC02
_0802BBF6:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
bl sub_802BB14
_0802BC02:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802BB98
thumb_func_start sub_802BC08
sub_802BC08:
push {r4,lr}
ldr r0, _0802BC44
ldr r3, [r0]
ldr r2, [r3, 0x8]
ldr r1, [r3, 0xC]
adds r4, r0, 0
cmp r2, r1
bge _0802BC2E
ldr r0, [r3, 0x20]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _0802BC26
bl sub_8013E54
_0802BC26:
ldr r1, [r4]
ldr r0, [r1, 0x20]
adds r0, 0x1
str r0, [r1, 0x20]
_0802BC2E:
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x88
ldr r1, [r1, 0x24]
bl sub_8012A64
cmp r0, 0x1
beq _0802BC48
cmp r0, 0x2
beq _0802BC68
b _0802BC74
.align 2, 0
_0802BC44: .4byte gUnknown_203B2D4
_0802BC48:
movs r0, 0
bl PlayMenuSoundEffect
ldr r0, [r4]
ldr r1, [r0, 0x8]
ldr r0, [r0, 0xC]
cmp r1, r0
bge _0802BC60
movs r0, 0x1
bl sub_802BB14
b _0802BC74
_0802BC60:
movs r0, 0x3
bl sub_802BB14
b _0802BC74
_0802BC68:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
bl sub_802BB14
_0802BC74:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802BC08
thumb_func_start sub_802BC7C
sub_802BC7C:
push {r4,lr}
ldr r4, _0802BCA4
bl sub_808D3BC
adds r1, r0, 0
adds r0, r4, 0
bl sub_808DA34
ldr r0, _0802BCA8
ldr r0, [r0]
ldrb r0, [r0, 0xB]
cmp r0, 0x1
bne _0802BCB0
adds r0, r4, 0
adds r0, 0x50
ldr r1, _0802BCAC
bl strcpy
b _0802BCBA
.align 2, 0
_0802BCA4: .4byte gAvailablePokemonNames
_0802BCA8: .4byte gUnknown_203B46C
_0802BCAC: .4byte gUnknown_80DFC4C
_0802BCB0:
adds r0, r4, 0
adds r0, 0x50
ldr r1, _0802BCC0
bl strcpy
_0802BCBA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BCC0: .4byte gUnknown_80DFC50
thumb_func_end sub_802BC7C
thumb_func_start sub_802BCC4
sub_802BCC4:
push {r4,lr}

View File

@ -409,8 +409,8 @@ gPelipperBoard_JobList: @ 80E03A0
.string "Job List\0"
.align 2,0
.global gUnknown_80E03AC
gUnknown_80E03AC: @ 80E03AC
.global gPelipperBoard_Accepted
gPelipperBoard_Accepted: @ 80E03AC
.string "Accepted\0"
.align 2,0

View File

@ -77,21 +77,21 @@ gUnknown_810AC90: @ 810AC90
.byte 0x0F, 0x00, 0x00, 0x00
.byte 0x11, 0x00, 0x00, 0x00
.global gUnknown_810ACB8
gUnknown_810ACB8: @ 810ACB8
.byte 0x4D, 0x01
.global gFrenzyPlantIQReq
gFrenzyPlantIQReq: @ 810ACB8
.2byte 333
.global gUnknown_810ACBA
gUnknown_810ACBA: @ 810ACBA
.byte 0x4D, 0x01
.global gHydroCannonIQReq
gHydroCannonIQReq: @ 810ACBA
.2byte 333
.global gUnknown_810ACBC
gUnknown_810ACBC: @ 810ACBC
.byte 0x4D, 0x01
.global gBlastBurnIQReq
gBlastBurnIQReq: @ 810ACBC
.2byte 333
.global gUnknown_810ACBE
gUnknown_810ACBE: @ 810ACBE
.byte 0x4D, 0x01
.global gVoltTackleIQReq
gVoltTackleIQReq: @ 810ACBE
.2byte 333
.global gUnknown_810ACC0
gUnknown_810ACC0: @ 810ACC0

View File

@ -3,5 +3,11 @@
#define POKEMON_NAME_LENGTH 10
#define TEAM_NAME_LENGTH 10
#define MAX_TEAM_MEMBERS 4
#define MAX_MON_MOVES 4
#define MALE 0
#define FEMALE 1
#endif // GUARD_CONSTANTS_GLOBAL_H

View File

@ -0,0 +1,6 @@
#ifndef GUARD_CONSTANTS_MAILBOX_H
#define GUARD_CONSTANTS_MAILBOX_H
#define MAX_ACCEPTED_JOBS 8
#endif // GUARD_CONSTANTS_MAILBOX_H

View File

@ -22,7 +22,4 @@ enum NaturePersonalities {
#define NUM_QUIZ_QUESTIONS 55
#define MAX_ASKED_QUESTIONS 8
#define MALE 0
#define FEMALE 1
#endif

View File

@ -25,4 +25,8 @@ enum RewardType
END_REWARDS
};
#define NUM_POKEMON_NEWS 56 // 50 normal + 6 special issues
#define PASSWORD_BUFFER_SIZE 54
#define MAX_ITEM_REWARDS 3
#endif //GUARD_CONSTANTS_WONDER_MAIL_H

View File

@ -2,6 +2,7 @@
#define GUARD_DEBUG_MENU_H
#include "text.h"
#include "menu.h"
enum DebugMenuOptions
{
@ -24,6 +25,32 @@ struct DebugMenu
};
struct unkStruct_203B3F8
{
// size: 0x140
u32 state;
s16 unk4;
u16 unk6;
struct PokemonStruct *pokemon;
u32 unkC;
const char *unk10;
u8 fill14[0x60 - 0x14];
u32 unk60;
u32 unk64;
u32 unk68;
u32 unk6C;
u32 unk70;
u32 unk74;
struct UnkTextStruct2 *unk78;
u32 unk7C;
u32 unk80;
u8 fill84[0x90 - 0x84];
struct MenuItem unk90[8];
u16 unkD0[8];
struct UnkTextStruct2 unkE0[4];
};
void CreateDebugMenu(void);
void DeleteDebugMenu(void);
u32 UpdateDebugMenu(void);

View File

@ -179,7 +179,7 @@ struct DungeonEntityData
// Unclear where this is set in-game; it is not set by statuses (e.g., confusion) or mission clients.
/* 0x114 */ bool8 moveRandomly;
u8 fill115[0x118 - 0x115];
/* 0x118 */ struct PokemonMove moves[4];
/* 0x118 */ struct PokemonMove moves[MAX_MON_MOVES];
/* 0x138 */ u8 struggleMoveFlags;
u8 fill139[0x13C - 0x139];
/* 0x13C */ u32 belly;

View File

@ -72,7 +72,7 @@ struct DungeonGlobalData
u8 fill11444[0x1356C - 0x11484];
u8 unk1356C;
u8 fill1356D[0x1357C - 0x1356D];
/* 0x1357C */ struct DungeonEntity *teamPokemon[4];
/* 0x1357C */ struct DungeonEntity *teamPokemon[MAX_TEAM_MEMBERS];
/* 0x1358C */ struct DungeonEntity *wildPokemon[0x10];
/* 0x135CC */ struct DungeonEntity *allPokemon[0x14]; // Contains both team and wild Pokémon
/* 0x1361C */ struct DungeonEntity *clientPokemon[2]; // Not sure how large this array is.

View File

@ -31,6 +31,7 @@ struct ExclusivePokemonData
.in_brt = TRUE, \
}
extern struct ExclusivePokemonData *gUnknown_203B498;
void LoadExclusivePokemon(void);
struct ExclusivePokemonData *GetExclusivePokemon(void);

View File

@ -1,24 +1,17 @@
#ifndef GUARD_FRIEND_AREA_ACTION_MENU_H
#define GUARD_FRIEND_AREA_ACTION_MENU_H
struct unkSubStruct_203B2BC
{
u8 fill0[0x2C];
u32 unk2C;
};
struct unkStruct_203B2BC
{
// size: 0x1E0
u32 state;
u32 unk4;
s16 unk8;
s16 targetPoke;
u16 unkA;
u32 unkC;
struct HeldItem unk10;
u32 itemIndex;
struct HeldItem itemToGive;
struct ItemSlot unk14;
struct unkSubStruct_203B2BC *unk18;
struct PokemonStruct *unk18;
u32 unk1C;
u32 unk20;
u32 unk24;

View File

@ -13,7 +13,7 @@ struct unkStruct_203B26C
u32 unk0;
s32 state;
u32 unk8;
s16 unkC;
s16 speciesNum; // species of chosen Pokemon
u8 unkE;
struct unkStruct_Gulpin * unk10;
u32 unk14;

View File

@ -12,6 +12,8 @@ struct Inputs
/* 0xC */ s32 repeatTimerDpad;
};
extern struct Inputs gRealInputs;
struct InputTimers
{
/* 0x0 */ s16 holdTimerB;

View File

@ -67,6 +67,8 @@ void LoadItemParameters(void);
struct TeamInventory *GetMoneyItemsInfo(void);
void InitializeMoneyItems(void);
u8 GetItemType(u8 index);
s32 GetStackSellValue(struct ItemSlot *param_1);
s32 GetStackSellPrice(struct ItemSlot *param_1);
s32 GetItemBuyPrice(u8 itemIndex);
s32 GetItemSellPrice(u8 itemIndex);
s32 GetItemOrder(u8 itemIndex);
@ -90,6 +92,8 @@ bool8 CanSellItem(u32 id);
bool8 IsGummiItem(u8);
void xxx_init_unk230_substruct(u8);
bool8 xxx_insert_unk230_80919FC(u8);
struct HeldItem *xxx_get_inv_unk230_at_809185C(u8);
s32 xxx_count_inv_unk230();
u32 xxx_count_non_empty_inv_unk250_8091A48();
void sub_8091BB4(u8);
void sub_8090F58(void*, u8 *, struct ItemSlot *, struct unkStruct_8090F58*);

View File

@ -13,14 +13,15 @@ void m4aSongNumStartOrChange(u16 n);
void m4aSongNumStop(u16 n);
void m4aMPlayAllStop(void);
void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo);
void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u32 speed);
void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo);
void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
void m4aSoundVSync(void);
extern struct MusicPlayerInfo gMPlayInfo_BGM; // BGM??
extern struct MusicPlayerInfo gUnknown_2000970;
#endif //GUARD_M4A_H

View File

@ -1,13 +1,17 @@
#ifndef GUARD_MAILBOX_H
#define GUARD_MAILBOX_H
#include "menu.h"
#include "text.h"
#include "constants/mailbox.h"
struct unkStruct_203B304
{
// size: 0xB6 << 1
u32 state;
u32 unk4;
u8 unk8;
u8 unk9;
u8 mailIndex;
u8 fillA[0xC - 0xA];
u32 unkC;
u8 fill10[0x50 - 0x10];
@ -23,5 +27,6 @@ struct unkStruct_203B304
};
extern void SetMailboxState(u32);
extern s32 GetNumAcceptedJobs(void);
#endif // GUARD_MAILBOX_H

View File

@ -8,7 +8,7 @@ void StartNewBGM(u16 songIndex);
bool8 IsBGSong(u32 songIndex);
bool8 sub_800CAAC(u32 songIndex);
bool8 sub_800CACC(u32 songIndex);
u16 sub_800CAE0(u16 songIndex);
u16 GetMusicPlayerIndex(u16 songIndex);
bool8 sub_800CAF0(u16 songIndex);
void StartNewBGM(u16 songIndex);
void FadeInNewBGM(u16 SongIndex, u16 speed);
@ -17,6 +17,7 @@ void sub_800BF48(u16 SongIndex);
void sub_800BF80(void);
void FadeOutBGM(u16 speed);
void sub_800C074(u16 SongIndex, u16 param_2);
void sub_800C298(u16 songIndex);
void nullsub_19(void);
void nullsub_20(u16 songIndex);

View File

@ -9,6 +9,10 @@ struct PlayTimeStruct
u8 frames;
};
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct PlayTimeStruct gPlayTime;
void IncrementPlayTime(struct PlayTimeStruct *Time);
void ResetPlayTime(struct PlayTimeStruct *Time);
struct PlayTimeStruct *GetPlayTime(void);

View File

@ -3,6 +3,7 @@
#include "file_system.h"
#include "item.h"
#include "constants/move.h"
#define OFFENSE_NRM 0
@ -24,14 +25,6 @@ struct unkPokeSubStruct_4 {
u16 fill6;
};
struct unkPokeSubStruct_2C
{
u8 unk0;
u8 fill1;
u16 unk2;
u32 fill4;
};
struct unkPokeSubStruct_C
{
u8 unk0;
@ -46,7 +39,6 @@ struct PokemonStruct
u8 unkHasNextStage; // set to a random value?
struct unkPokeSubStruct_4 unk4;
/* 0x8 */ s16 speciesNum; // species #
u8 fillA[0xC - 0xA];
struct unkPokeSubStruct_C unkC[2];
/* 0x14 */ s16 IQ;
/* 0x16 */ u16 pokeHP; // HP
@ -56,8 +48,8 @@ struct PokemonStruct
u8 unk24;
u8 fill25[3];
struct HeldItem heldItem;
struct unkPokeSubStruct_2C unk2C[4];
/* 0x4C */ u8 name[0xA];
struct PokemonMove moves[MAX_MON_MOVES];
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
};
@ -88,7 +80,7 @@ struct PokemonStruct2
u16 unk12; // pokeHP
struct Offense offense; // offense (other offset)
u32 unk18; // unk1C
struct unkPokeSubStruct_2C unk1C[4]; // unk2C
struct PokemonMove moves[MAX_MON_MOVES];
u8 fill3c[4];
/* 40 */ struct ItemSlot itemSlot; // heldItem
u32 unk44; // some struct
@ -97,14 +89,14 @@ struct PokemonStruct2
u8 unk50; // unk24
u8 fill51[3];
struct unkStruct_808E6F4 unk54;
u8 name[10]; // name (other offset)
u8 name[POKEMON_NAME_LENGTH]; // name (other offset)
};
struct unkStruct_203B45C
{
/* 0x0 */ struct PokemonStruct pokemon[NUM_SPECIES];
/* 0x8DF8 */ struct PokemonStruct2 pokemon2[4];
/* 0x8F88 */ struct PokemonStruct team[4];
/* 0x8F88 */ struct PokemonStruct team[MAX_TEAM_MEMBERS];
};
struct EvolveStruct1
@ -187,6 +179,8 @@ struct unkStruct_808E218
struct unkStruct_808E6F4 unk0[3];
};
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
void LoadMonsterParameters(void);
struct unkStruct_203B45C *GetRecruitedPokemon(void);
void InitializeRecruitedPokemon(void);

View File

@ -20,6 +20,8 @@ struct RescueTeamData
u8 unk10;
};
extern struct RescueTeamData *gRescueTeamInfoRef;
void LoadRescueTeamInfo(void);
struct RescueTeamData *GetRescueTeamInfo(void);
void InitializeRescueTeamInfo(void);

View File

@ -12,4 +12,6 @@ struct TeamInventory
/* 0x264 */ u32 teamSavings;
};
extern struct TeamInventory *gTeamInventory_203B460;
#endif

View File

@ -7,8 +7,7 @@
#include "pokemon.h"
#include "sub_8095228.h"
#define PASSWORD_BUFFER_SIZE 54
#define MAX_ITEM_REWARDS 3
#include "constants/wonder_mail.h"
struct unkStruct_802F204
{

View File

@ -234,17 +234,25 @@ SECTIONS {
src/exclusive_pokemon.o(.text);
asm/exclusive_pokemon.o(.text);
src/exclusive_pokemon_1.o(.text);
asm/code_80983D8.o(.text);
src/code_80983D8.o(.text);
asm/code_8098468.o(.text);
src/code_8098BDC.o(.text);
asm/code_8098BDC.o(.text);
src/code_809D148.o(.text);
asm/code_809D148.o(.text);
asm/ground_script.o(.text);
src/code_80A26CC.o(.text);
asm/code_80A26CC.o(.text);
src/ground_map.o(.text);
asm/ground_map.o(.text);
asm/ground_sprite.o(.text);
src/code_80A7714.o(.text);
asm/code_80A7714.o(.text);
asm/ground_lives.o(.text);
asm/ground_object.o(.text);
asm/ground_effect.o(.text);
src/ground_link.o(.text);
asm/ground_link.o(.text);
asm/ground_event.o(.text);
asm/m4a_1.o(.text);
src/m4a.o(.text);
*libagbsyscall.a:CpuSet.o(.text);

View File

@ -1,7 +1,7 @@
.align 2
gMPlayTable:: @ 9E8665C
music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0 @ BGM
music_player 0x2000970, gMPlayTrack_Unknown1, 6, 0 @ SE?
music_player gUnknown_2000970, gMPlayTrack_Unknown1, 6, 0 @ SE?
music_player 0x20009B0, gMPlayTrack_Unknown2, 1, 0
music_player 0x2000A40, gMPlayTrack_Unknown3, 1, 0
music_player 0x20009F0, gMPlayTrack_Unknown4, 2, 0

View File

@ -65,7 +65,6 @@ extern u32 gUnknown_203B03C;
extern u16 gUnknown_2026E4E;
extern s32 gUnknown_2000A80;
extern struct OpenedFile *gTitlePaletteFile;
extern struct Inputs gRealInputs;
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern char gPMDBuildVersion[];

View File

@ -8,13 +8,8 @@
extern void SoundBiasReset(void);
extern void SoundBiasSet(void);
struct unkStruct_202DB60
{
u32 unk0;
u32 unk4;
};
extern struct unkStruct_202DB60 gUnknown_202DB60;
extern u32 gUnknown_202DB60[2];
extern u16 gUnknown_202DB30[2][8];
void Hang(void)
{
@ -24,7 +19,6 @@ void Hang(void)
}
}
// Unused
void sub_800D098(void)
{
@ -127,9 +121,25 @@ void nullsub_187(void)
u32 sub_800D1C0(void)
{
if(gUnknown_202DB60.unk0 != 2)
if(gUnknown_202DB60[0] != 2)
return 0;
if(gUnknown_202DB60.unk4 != 2)
if(gUnknown_202DB60[1] != 2)
return 0;
return 1;
}
void sub_800D1E0(void)
{
s32 iVar1;
u32 iVar2;
for(iVar1 = 0; iVar1 < 2; iVar1++)
{
for(iVar2 = 0; iVar2 < 8; iVar2++)
{
if(gUnknown_202DB30[iVar1][iVar2] == 0xfdfd)
{
gUnknown_202DB60[iVar1] = 1;
}
}
}
}

View File

@ -17,8 +17,6 @@ extern void sub_801199C(u16 r0);
extern void sub_800C298(u16 r0);
extern u8 sub_800C5D0(u16 r0);
extern struct PlayTimeStruct *gPlayTimeRef;
struct UnkSaveStruct1
{
/* 0x0 */ u32 unk0;

View File

@ -4,12 +4,11 @@
#include "item.h"
#include "team_inventory.h"
#include "menu.h"
extern struct TeamInventory *gTeamInventory_203B460;
#include "pokemon.h"
extern void sub_8092C84(u8 *, u16);
extern void sub_8099690(u32);
extern u32 sub_801B2F4(void);
extern s32 GetNumMonsAbleToLearnItemMove(void);
extern void sub_801B064(s32);
@ -24,47 +23,52 @@ extern u32 gUnknown_80DB9E4;
extern u32 gUnknown_80DBA0C;
extern u8 gUnknown_202E1C8[0x50];
extern u8 gAvailablePokemonNames[0x50];
extern u8 gUnknown_202E218[0x50];
extern void sub_8092AD4(struct PokemonMove*, u16);
extern void sub_809401C(struct PokemonMove *, struct PokemonMove *);
extern bool8 IsHMItem(u8);
extern void DisplayGulpinDialogueSprite(u32, u32, u32 *);
extern void DisplayGulpinDialogueSprite(u32, u32, void *);
extern void sub_801B178(void);
extern void sub_8094060(u32 *, u32 *);
extern void sub_8094060(void *, struct PokemonMove *);
extern void PlaySound(u32);
extern void sub_80141B4(u32 *, u32, u32 ,u32);
extern void sub_8014248(u32 *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801E8C0(void);
extern void sub_801E93C(void);
struct subStruct_203B22C
{
u8 fill0[0x2C];
u32 unk2C;
};
extern bool8 CanMonLearnMove(u16 moveID, s16 _species);
extern s32 sub_808D580(s32*);
struct unkStruct_203B22C
{
// size: 0xa4
s32 state;
u32 unk4;
u8 unk8; // item index
u16 unkA; // item move??
u32 unkC;
u8 fill10[0x58 - 0x10];
s16 unk58;
u16 unk5A;
struct subStruct_203B22C *unk5C;
/* 0x0 */ s32 state;
/* 0x4 */ u32 teamItemIndex;
/* 0x8 */ u8 itemIndex; // item index
/* 0xA */ u16 moveID; // item move??
/* 0xC */ struct PokemonMove moves[MAX_MON_MOVES * 2];
/* 0x4C */ s32 monsAbleToLearnMove; // number of party members able to learn move
/* 0x50 */ s16 unk50[MAX_TEAM_MEMBERS]; // species IDs of each member able to learn move
/* 0x58 */ s16 chosenPokemon; // species of pokemon that will learn move
/* 0x5C */ struct PokemonStruct *pokeStruct; // PokemonStruct of said pokemon
u32 unk60;
/* 0x64 */ struct MenuItem menuItems[8];
};
extern struct unkStruct_203B22C *gUnknown_203B22C;
u32 sub_801AFA4(u32 r0)
u32 sub_801AFA4(u32 index)
{
gUnknown_203B22C = MemoryAlloc(sizeof(struct unkStruct_203B22C), 8);
gUnknown_203B22C->unk4 = r0;
gUnknown_203B22C->unk8 = gTeamInventory_203B460->teamItems[r0].itemIndex;
gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA);
gUnknown_203B22C->teamItemIndex = index;
gUnknown_203B22C->itemIndex = gTeamInventory_203B460->teamItems[index].itemIndex;
gUnknown_203B22C->moveID = GetItemMove(gUnknown_203B22C->itemIndex);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->moveID);
sub_8099690(0);
if(sub_801B2F4() == 0)
if(GetNumMonsAbleToLearnItemMove() == 0)
{
sub_801B064(3);
}
@ -126,14 +130,14 @@ void sub_801B080(void)
sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, gUnknown_203B22C->menuItems, 0, 4, 0, 0, 0x20);
break;
case 1:
DisplayGulpinDialogueSprite(2, gUnknown_203B22C->unk58, &gUnknown_203B22C->unkC);
DisplayGulpinDialogueSprite(2, gUnknown_203B22C->chosenPokemon, gUnknown_203B22C->moves);
break;
case 2:
sub_8094060(&gUnknown_203B22C->unkC, &gUnknown_203B22C->unk5C->unk2C);
if(!IsHMItem(gUnknown_203B22C->unk8))
sub_8094060(gUnknown_203B22C->moves, gUnknown_203B22C->pokeStruct->moves);
if(!IsHMItem(gUnknown_203B22C->itemIndex))
{
gTeamInventory_203B460->teamItems[gUnknown_203B22C->unk4].numItems = gUnknown_203B22C->unk8 - 0x7D;
gTeamInventory_203B460->teamItems[gUnknown_203B22C->unk4].itemIndex = ITEM_ID_USED_TM;
gTeamInventory_203B460->teamItems[gUnknown_203B22C->teamItemIndex].numItems = gUnknown_203B22C->itemIndex - 0x7D;
gTeamInventory_203B460->teamItems[gUnknown_203B22C->teamItemIndex].itemIndex = ITEM_ID_USED_TM;
}
PlaySound(0x9C << 1);
// #+CM$m8#R learned
@ -150,3 +154,112 @@ void sub_801B080(void)
break;
}
}
void sub_801B178(void)
{
int monIndex;
u8 *bufferPtr;
for(monIndex = 0; monIndex < gUnknown_203B22C->monsAbleToLearnMove; monIndex++)
{
bufferPtr = gAvailablePokemonNames + (0x50 * monIndex);
sub_808DA34(bufferPtr, &gRecruitedPokemonRef->pokemon[gUnknown_203B22C->unk50[monIndex]]);
gUnknown_203B22C->menuItems[monIndex].text = bufferPtr;
gUnknown_203B22C->menuItems[monIndex].menuAction = monIndex + 4;
}
gUnknown_203B22C->menuItems[monIndex].text = NULL;
gUnknown_203B22C->menuItems[monIndex].menuAction = 1;
}
void sub_801B200(void)
{
s32 temp;
s32 moveIndex;
struct PokemonMove *pokeMove;
if(sub_80144A4(&temp) == 0)
{
gUnknown_203B22C->unk60 = temp;
switch(temp)
{
case 1:
sub_801B064(4);
break;
default:
gUnknown_203B22C->chosenPokemon = gUnknown_203B22C->unk50[temp - 4];
gUnknown_203B22C->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B22C->chosenPokemon];
sub_808DA34(gUnknown_202E218, gUnknown_203B22C->pokeStruct);
sub_809401C(gUnknown_203B22C->moves, gUnknown_203B22C->pokeStruct->moves);
for(moveIndex = 0; moveIndex < MAX_MON_MOVES * 2; moveIndex++)
{
pokeMove = &gUnknown_203B22C->moves[moveIndex];
if((pokeMove->moveFlags & MOVE_FLAG_EXISTS) == 0)
{
sub_8092AD4(pokeMove, gUnknown_203B22C->moveID);
break;
}
}
if(moveIndex >= MAX_MON_MOVES)
sub_801B064(1);
else
sub_801B064(2);
break;
case 0:
break;
}
}
}
void sub_801B2AC(void)
{
switch(sub_801E8C0())
{
case 3:
sub_801E93C();
sub_801B064(2);
break;
case 2:
sub_801E93C();
sub_801B064(0);
break;
case 0:
case 1:
break;
}
}
void sub_801B2D8(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_801B064(4);
}
}
s32 GetNumMonsAbleToLearnItemMove(void)
{
s32 length;
s32 iVar4;
s32 index;
s32 team [MAX_TEAM_MEMBERS];
struct PokemonStruct *preload;
length = sub_808D580(team);
gUnknown_203B22C->monsAbleToLearnMove = 0;
for(index = 0; index < length; index++)
{
preload = &gRecruitedPokemonRef->pokemon[team[index]];
if (CanMonLearnMove(gUnknown_203B22C->moveID, preload->speciesNum)) {
gUnknown_203B22C->unk50[gUnknown_203B22C->monsAbleToLearnMove] = team[index];
iVar4 = gUnknown_203B22C->monsAbleToLearnMove;
if (iVar4 >= MAX_TEAM_MEMBERS) break;
gUnknown_203B22C->monsAbleToLearnMove = iVar4 + 1;
}
}
return gUnknown_203B22C->monsAbleToLearnMove;
}

View File

@ -95,7 +95,6 @@ struct unk_203B250
struct unk_203B250 *gUnknown_203B250;
extern struct TeamInventory *gTeamInventory_203B460;
void sub_801D680(void)
{

View File

@ -3,7 +3,6 @@
#include "file_system.h"
#include "dungeon_global_data.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct DungeonGlobalData *gDungeonGlobalData;
extern s32 gUnknown_80F6568[];
extern u8 gUnknown_202EE01;

View File

@ -1,5 +1,36 @@
#include "global.h"
extern u32 gUnknown_8115E94[5][3]; // NOTE: Factor of two difference in array sizes
s32 sub_80983D8(short *param_1,short *param_2)
{
s32 uVar1;
s32 uVar2;
s32 uVar3;
uVar3 = param_2[0] - param_1[0];
uVar2 = param_2[1] - param_1[1];
if ((uVar3 == 0) && (uVar2 == 0)) {
uVar1 = 0;
}
else {
if (0 < uVar3) {
uVar3 = 1;
}
if (0 < uVar2) {
uVar2 = 1;
}
if (-1 >= uVar3) {
uVar3 = -1;
}
if (-1 >= uVar2) {
uVar2 = -1;
}
uVar1 = gUnknown_8115E94[(uVar2 + 1)][(uVar3 + 1)];
}
return uVar1;
}
s32 sub_8098434(short param_1[],short param_2[])
{
s32 diff_index1;
@ -18,3 +49,4 @@ s32 sub_8098434(short param_1[],short param_2[])
}
return diff_index1;
}

View File

@ -3,7 +3,6 @@
#include "input.h"
#include "debug.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern u32 gUnknown_20398A8;
extern u32 gUnknown_20398AC;
extern u32 gUnknown_20398B0;

View File

@ -2,8 +2,6 @@
#include "input.h"
#include "memory.h"
extern struct Inputs gRealInputs;
struct unkStruct_203B344
{
u32 state; // state variable

View File

@ -1,26 +1,38 @@
#include "global.h"
#include "pokemon.h"
#include "debug_menu.h"
struct unkStruct_203B3F8
{
// size: 0x140
u32 state;
u32 unk4;
struct PokemonStruct *pokemon;
u8 fill4[4];
u32 unk10;
u8 fill14[0x60 - 0x14];
u32 unk60;
};
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
extern u32 sub_8013BBC(u32 *);
extern void sub_8023A94(u32);
extern u8 sub_8012FD8(u32 *);
extern u8 sub_8012FD8(void *);
extern void sub_803AE58(void);
extern u32 sub_8016080(void);
extern void sub_803ACD0(u32);
extern void sub_80160D8(void);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8013114(void *, s32 *);
extern u32 sub_8023A94(u32);
extern s16 sub_8023B44(void);
extern void sub_8023C60(void);
void sub_803AF38(void)
{
switch(sub_8023A94(1))
{
case 3:
gUnknown_203B3F8->unk4 = sub_8023B44();
gUnknown_203B3F8->pokemon = &gRecruitedPokemonRef->pokemon[gUnknown_203B3F8->unk4];
sub_803ACD0(3);
break;
case 2:
sub_8023C60();
sub_803ACD0(7);
break;
case 1:
case 0:
break;
}
}
void sub_803AF88(void)
{

View File

@ -4,30 +4,8 @@
#include "text.h"
#include "input.h"
#include "menu.h"
#include "debug_menu.h"
struct unkStruct_203B3F8
{
// size: 0x140
u32 state;
u32 unk4;
struct PokemonStruct *pokemon;
u32 unkC;
const char *unk10;
u8 fill14[0x60 - 0x14];
u32 unk60;
u32 unk64;
u32 unk68;
u32 unk6C;
u32 unk70;
u32 unk74;
struct UnkTextStruct2 *unk78;
u32 unk7C;
u32 unk80;
u8 fill84[0x90 - 0x84];
struct MenuItem unk90[8];
u16 unkD0[8];
struct UnkTextStruct2 unkE0[4];
};
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
extern struct UnkTextStruct2 gUnknown_80E7ED4;
extern struct UnkTextStruct2 gUnknown_80E7EEC;

View File

@ -47,7 +47,6 @@ struct unkStruct_203B3F4
extern struct unkStruct_203B3F4 *gUnknown_203B3F4;
extern struct TeamInventory *gTeamInventory_203B460;
extern void sub_801B3C0(struct ItemSlot *);
extern void sub_8013AA0(u32 *);

View File

@ -3,7 +3,6 @@
#include "team_inventory.h"
#include "felicity_bank.h"
extern struct TeamInventory *gTeamInventory_203B460;
extern struct unkStruct_203B204 *gUnknown_203B204;
extern u8 gUnknown_80DB738;

View File

@ -7,8 +7,6 @@ bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
EWRAM_DATA bool8 *gFriendAreas;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
extern bool8 *gFriendAreas;
extern u32 gFriendAreaDescriptions[];

View File

@ -4,6 +4,7 @@
#include "input.h"
#include "menu.h"
#include "item.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "friend_area_action_menu.h"
@ -34,7 +35,7 @@ extern void sub_801A8D0(u32);
extern void sub_801A9E0();
extern void sub_801F1B0(u32, u32);
extern void sub_801B3C0(struct ItemSlot *);
extern void sub_809401C(u32 *, u32 *);
extern void sub_809401C(u32 *, struct PokemonMove *);
extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
@ -167,7 +168,7 @@ void sub_802719C(void)
void sub_8027274(void)
{
struct ItemSlot auStack12;
struct ItemSlot slot;
switch(gUnknown_203B2BC->state) {
case 0:
@ -185,10 +186,10 @@ void sub_8027274(void)
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk70,2);
break;
case 4:
sub_8024458(gUnknown_203B2BC->unk8,2);
sub_8024458(gUnknown_203B2BC->targetPoke,2);
break;
case 5:
sub_801BEEC(gUnknown_203B2BC->unk8);
sub_801BEEC(gUnknown_203B2BC->targetPoke);
break;
case 10:
sub_801A5D8(1,0,0,10);
@ -201,12 +202,12 @@ void sub_8027274(void)
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk74,2);
break;
case 0xd:
HeldItemToSlot(&auStack12,&gUnknown_203B2BC->unk10);
sub_801B3C0(&auStack12);
HeldItemToSlot(&slot, &gUnknown_203B2BC->itemToGive);
sub_801B3C0(&slot);
break;
case 0xe:
sub_809401C(&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk18->unk2C);
sub_801EE10(3,gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk28,0,0,0);
sub_809401C(&gUnknown_203B2BC->unk28,gUnknown_203B2BC->unk18->moves);
sub_801EE10(3,gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk28,0,0,0);
break;
case 0xf:
sub_801F1B0(1,0);

View File

@ -30,7 +30,7 @@ extern u32 sub_801A6E8(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_8027EB8();
extern void sub_808D31C(struct unkSubStruct_203B2BC *);
extern void sub_808D31C(struct PokemonStruct *);
void sub_8027AE4(void)
{
@ -56,15 +56,15 @@ void sub_8027B28(void)
switch(sub_801A6E8(1))
{
case 3:
gUnknown_203B2BC->unkC = sub_801A8AC();
gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex;
gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems;
gUnknown_203B2BC->itemIndex = sub_801A8AC();
gUnknown_203B2BC->itemToGive.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->itemIndex].itemIndex;
gUnknown_203B2BC->itemToGive.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->itemIndex].numItems;
SetFriendAreaActionMenuState(0xc);
break;
case 4:
gUnknown_203B2BC->unkC = sub_801A8AC();
gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex;
gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems;
gUnknown_203B2BC->itemIndex = sub_801A8AC();
gUnknown_203B2BC->itemToGive.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->itemIndex].itemIndex;
gUnknown_203B2BC->itemToGive.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->itemIndex].numItems;
sub_8099690(0);
SetFriendAreaActionMenuState(0xd);
break;
@ -91,12 +91,12 @@ void sub_8027BD8(void)
{
case 10:
PlaySound(0x14d);
ShiftItemsDownFrom(gUnknown_203B2BC->unkC);
ShiftItemsDownFrom(gUnknown_203B2BC->itemIndex);
FillInventoryGaps();
if (gUnknown_203B2BC->unk14.itemFlags != 0) {
sub_8091274(&gUnknown_203B2BC->unk14);
}
GivePokemonItem(gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk10);
GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->itemToGive);
sub_801A928();
nullsub_104();
SetFriendAreaActionMenuState(2);
@ -113,11 +113,14 @@ void sub_8027BD8(void)
void sub_8027C84()
{
u32 temp = sub_801B410();
if(temp <= 1)
return;
if(temp > 3)
return;
sub_801B450();
SetFriendAreaActionMenuState(0xB);
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
SetFriendAreaActionMenuState(0xB);
case 0:
case 1:
break;
}
}

33
src/ground_link.c Normal file
View File

@ -0,0 +1,33 @@
#include "global.h"
#include "debug.h"
struct unkStruct_80A77D0
{
u32 unk0;
u32 unk4;
u32 unk8;
};
struct unkStruct_203B4B8
{
u32 unk0;
};
extern struct unkStruct_203B4B8 gUnknown_203B4B8;
extern struct DebugLocation gUnknown_8118798;
extern struct unkStruct_80A77D0 *sub_80A77D0(s16 r0, struct DebugLocation *r1);
void sub_80AD868(void)
{
gUnknown_203B4B8.unk0 = 0;
}
void sub_80AD874(void)
{
gUnknown_203B4B8.unk0 = 0;
}
void GroundLink_Select(s16 r0)
{
gUnknown_203B4B8.unk0 = sub_80A77D0(r0, &gUnknown_8118798)->unk8;
}

77
src/ground_map.c Normal file
View File

@ -0,0 +1,77 @@
#include "global.h"
#include "memory.h"
#include "debug.h"
struct unkStruct_3001B6C
{
// size: 0x110
u8 fill0[0xE4];
u16 unkE4;
};
extern struct unkStruct_3001B6C *gUnknown_3001B6C;
extern u8 gUnknown_811736C[];
extern struct DebugLocation gUnknown_8117538[];
extern u8 *gUnknown_3001B70;
extern void sub_809D600(void *, u8 *, u32, u32, u32);
extern void GroundMap_Reset(void);
extern void sub_80A5E8C(u32);
extern void sub_809D648(void *);
extern void sub_80A5EBC(void);
extern void sub_80A2D00(void *);
extern void sub_80015C0(u32, u32);
extern void sub_80A5EDC(u32);
extern void sub_809D754(void *, struct DebugLocation *);
extern void sub_80A2D68(void *);
extern void nullsub_121(void);
extern void sub_80A2D88(void *);
extern void nullsub_122(void);
void sub_80A4A7C(void)
{
gUnknown_3001B6C = MemoryAlloc(0x110, 6);
gUnknown_3001B6C->unkE4 = -1;
sub_809D600(gUnknown_3001B6C, gUnknown_811736C, 0, -1, -1);
sub_80A5E8C(0);
GroundMap_Reset();
}
void sub_80A4AC4(void)
{
GroundMap_Reset();
sub_80A5EBC();
sub_809D648(gUnknown_3001B6C);
MemoryFree(gUnknown_3001B6C);
gUnknown_3001B6C = NULL;
}
void GroundMap_Reset(void)
{
sub_80015C0(0, 0x37);
sub_80015C0(0, 0x38);
sub_809D754(gUnknown_3001B6C, gUnknown_8117538);
if(gUnknown_3001B70 != NULL)
{
sub_80A2D00(gUnknown_3001B70);
MemoryFree(gUnknown_3001B70);
gUnknown_3001B70 = NULL;
}
sub_80A5EDC(0);
}
void sub_80A4B38(void)
{
nullsub_121();
if(gUnknown_3001B70 != NULL)
sub_80A2D68(gUnknown_3001B70);
}
void sub_80A4B54(void)
{
if(gUnknown_3001B70 != NULL)
sub_80A2D88(gUnknown_3001B70);
nullsub_122();
}

View File

@ -21,16 +21,16 @@ extern void sub_801EA28();
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_801EBC4();
u32 DisplayGulpinDialogueSprite(s32 param_1,s16 param_2,struct unkStruct_Gulpin *param_3)
u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct unkStruct_Gulpin *param_3)
{
struct OpenedFile *faceFile;
s32 param2_32;
s32 species_32;
param2_32 = param_2; // dumb cast needed to get lsr/asr combo
species_32 = pokeSpecies; // dumb cast needed to get lsr/asr combo
gUnknown_203B26C = MemoryAlloc(sizeof(struct unkStruct_203B26C),8);
gUnknown_203B26C->unk0 = param_1;
gUnknown_203B26C->unkC = param2_32;
gUnknown_203B26C->speciesNum = species_32;
gUnknown_203B26C->unk10 = param_3;
gUnknown_203B26C->unk1C = param_3->unk22;

View File

@ -11,7 +11,6 @@
extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory gUnknown_20389A8;
extern struct FileArchive gSystemFileArchive;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
extern const char gItemParaFileName[];
extern const char gUnknown_8109794[];
extern const char gUnknown_81097A4[];

View File

@ -8,7 +8,6 @@
#include "kangaskhan_storage.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
extern struct TeamInventory *gTeamInventory_203B460;
struct unkStruct_203B20C
{

View File

@ -1,5 +1,6 @@
#include "global.h"
#include "file_system.h"
#include "memory.h"
#include "pokemon.h"
#include "input.h"
#include "item.h"
@ -7,10 +8,7 @@
#include "team_inventory.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
extern struct TeamInventory *gTeamInventory_203B460;
extern u32 GetStackSellPrice(struct ItemSlot *);
extern u32 xxx_count_inv_unk230(void);
extern s32 sub_80144A4(s32 *);
void UpdateKecleonStoreState(u32);
extern u32 sub_801B410(void);
@ -19,13 +17,64 @@ extern void sub_801B450(void);
extern void sub_8099690(u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8019EDC(u32);
extern u32 sub_8019EDC(u8);
extern void sub_801A2A8(u32);
extern s32 sub_801A8AC(void);
extern u32 sub_801A6E8(u32);
extern void sub_801A928(void);
extern void DrawTeamMoneyBox(u32);
struct unkStruct_203B214
{;
// size: 0xA0
u8 fill0[0x18];
// NOTE: has to be packed here so it doesn't take 4 bytes..
union __attribute__ ((__packed__)) temp2
{
u16 unk18;
u8 unk18_u8;
} temp;
s16 unk1A;
s16 unk1C;
s16 unk1E;
s16 unk20;
u16 unk22;
u8 fill24[0x34 - 0x24];
u32 unk34;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[4];
u8 unk9C[4];
};
extern struct unkStruct_203B214 *gUnknown_203B214;
struct ItemSlot_Alt
{
union temp {
struct ItemSlot norm;
u32 full_bits;
} temp;
};
extern void sub_8013818(void *, u32, u32, u32);
extern u8 sub_8019FB0(void);
extern u8 sub_80138B8(void *, u32);
extern void PlayMenuSoundEffect(u32);
extern s32 GetStackBuyPrice(struct ItemSlot *);
extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern struct UnkTextStruct2 gUnknown_80DB8CC;
extern struct UnkTextStruct2 gUnknown_80DB8B4;
extern u16 gUnknown_203B218;
extern void sub_8013984(u8 *);
extern void sub_801A064(void);
extern void sub_801A0D8(void);
extern void AddMenuCursorSprite(void *);
extern s32 xxx_count_inv_unk230();
void sub_8019B08(void)
{
switch(sub_801A6E8(1))
@ -207,3 +256,116 @@ void sub_8019E04(s32 param_1)
}
}
u32 sub_8019E40(u32 r0)
{
if(xxx_count_inv_unk230() == 0)
{
return 0;
}
else
{
gUnknown_203B214 = MemoryAlloc(sizeof(struct unkStruct_203B214), 0x8);
gUnknown_203B214->unk34 = r0;
gUnknown_203B214->unk38 = &gUnknown_203B214->unk3C[gUnknown_203B214->unk34];
sub_8006518(gUnknown_203B214->unk3C);
gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = gUnknown_80DB8CC;
gUnknown_203B214->unk38->unk14 = gUnknown_203B214->unk9C;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
sub_8013818(gUnknown_203B214, xxx_count_inv_unk230(), 0xA, r0);
gUnknown_203B214->temp.unk18 = gUnknown_203B218;
sub_8013984((u8 *)gUnknown_203B214);
sub_801A064();
sub_801A0D8();
return 1;
}
}
u32 sub_8019EDC(u8 r0)
{
struct ItemSlot_Alt slot;
struct HeldItem *return_var;
u32 r2;
u32 r3;
if(r0 == 0)
{
sub_8013660(gUnknown_203B214);
return 0;
}
else
{
switch(GetKeyPress(gUnknown_203B214))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
return_var = xxx_get_inv_unk230_at_809185C(sub_8019FB0());
// NOTE: needs seperate vars to match
r2 = return_var->itemIndex << 16;
slot.temp.full_bits = (slot.temp.full_bits & 0xff00ffff) | r2;
r3 = return_var->numItems << 8;
slot.temp.full_bits = (slot.temp.full_bits & 0xffff00ff) | r3;
if(GetStackBuyPrice((struct ItemSlot *)&slot) > gTeamInventory_203B460->teamMoney)
{
PlayMenuSoundEffect(2);
}
else
{
PlayMenuSoundEffect(0);
}
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
if(sub_80138B8(gUnknown_203B214, 1) != 0)
{
sub_801A064();
sub_801A0D8();
return 1;
}
else
{
return 0;
}
}
}
}
u8 sub_8019FB0(void)
{
return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + gUnknown_203B214->temp.unk18_u8;
}
void sub_8019FCC(u32 r0)
{
u8 r0_u8;
r0_u8 = r0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B214->unk3C, 0, 0);
gUnknown_203B214->unk22 = xxx_count_inv_unk230();
sub_8013984((u8 *)gUnknown_203B214);
sub_801A064();
sub_801A0D8();
if(r0_u8)
AddMenuCursorSprite(gUnknown_203B214);
}
void sub_801A010(void)
{
if(gUnknown_203B214 != NULL)
{
gUnknown_203B218 = gUnknown_203B214->temp.unk18;
gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = gUnknown_80DB8B4;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
MemoryFree(gUnknown_203B214);
gUnknown_203B214 = NULL;
}
}

View File

@ -9,9 +9,6 @@
#include "pokemon.h"
#include "save.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct PlayTimeStruct gPlayTime;
extern const struct FileArchive gTitleMenuFileArchive;
struct unkStruct_203B484

View File

@ -176,7 +176,7 @@ void sub_802E1AC(void)
sub_802B7D0(1);
break;
case 0xB:
sub_802B9FC(gUnknown_203B304->unk9);
sub_802B9FC(gUnknown_203B304->mailIndex);
break;
case 0:
case 2:

View File

@ -9,13 +9,12 @@ extern u8 gMailAccepted[];
extern u8 gUnknown_80E0324[];
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern u32 sub_80969AC(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern u32 sub_802BA8C(void);
extern void sub_802BACC(void);
extern u8 sub_802B7A8(void);
extern u8 GetPokemonNewsIndex(void);
extern void sub_802B81C(void);
extern u32 sub_802B720(u32);
extern u32 sub_802C898(void);
@ -63,7 +62,7 @@ void sub_802E774(void)
break;
case 3:
case 4:
gUnknown_203B304->unk9 = sub_802B7A8();
gUnknown_203B304->mailIndex = GetPokemonNewsIndex();
gUnknown_203B304->unk4 = 0xA;
SetMailboxState(0xB);
break;
@ -97,8 +96,8 @@ void CreateMailAcceptedStatusBox(u32 r0)
sub_8008C54(r0);
sub_80073B8(r0);
xxx_call_draw_string(3, 0, gMailAccepted, r0, 0);
sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0);
sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0);
xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0); // "/"
sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0);
sub_80073E0(r0);
}

View File

@ -3,7 +3,6 @@
extern void nullsub_34(struct UnkInputStruct *r0);
extern struct Inputs gRealInputs;
u32 sub_8012AE8(void);
u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1)

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "m4a.h"
#include "constants/bg_music.h"
#include "music.h"
extern u8 sub_80023E4(u32);
extern void sub_80118C4(u16);
@ -27,11 +28,6 @@ extern u8 gUnknown_202D694;
extern u32 gUnknown_203B0B8;
extern u16 gRawKeyInput;
bool8 IsBGSong(u32);
bool8 sub_800CAAC(u32);
bool8 sub_800CACC(u32);
u16 sub_800CAE0(u16);
void StopBGMusicVSync(void)
{
bool8 interrupt_flag;
@ -106,21 +102,21 @@ u8 sub_800CA38(u32 songIndex)
{
if(IsBGSong(songIndex))
{
if(sub_800CAE0(songIndex) == 0)
if(GetMusicPlayerIndex(songIndex) == 0)
{
return 1;
}
}
if(sub_800CACC(songIndex))
{
if(sub_800CAE0(songIndex) == 1)
if(GetMusicPlayerIndex(songIndex) == 1)
{
return 1;
}
}
else if(sub_800CAAC(songIndex))
{
if(sub_800CAE0(songIndex) > 1)
if(GetMusicPlayerIndex(songIndex) > 1)
{
return 1;
}
@ -159,7 +155,7 @@ bool8 sub_800CACC(u32 songIndex)
return FALSE;
}
u16 sub_800CAE0(u16 songIndex)
u16 GetMusicPlayerIndex(u16 songIndex)
{
return gSongTable[songIndex].ms;
}
@ -178,7 +174,7 @@ void nullsub_20(u16 songIndex)
{
}
void nullsub_21(void)
void nullsub_21(u16 songIndex)
{
}

View File

@ -3,6 +3,7 @@
#include "m4a.h"
#include "bg.h"
#include "music.h"
#include "input.h"
extern bool8 EnableInterrupts(void);
extern bool8 DisableInterrupts(void);
@ -12,9 +13,7 @@ extern void AckInterrupt(u16);
extern void nullsub_25();
extern void nullsub_18();
extern void UpdateSound();
extern void UpdateInput();
extern void sub_800C298(u16 r0);
extern void nullsub_21(u16);
typedef void (*IntrCallback)(void);
extern IntrCallback gIntrCallbacks[];
@ -59,6 +58,7 @@ struct unkStruct_3000FD8
};
extern struct unkStruct_3000FD8 gUnknown_3000FD8[8];
extern struct unkStruct_3000FD8 gUnknown_3000FE8[4];
extern u8 gUnknown_202D7FE;
extern u16 gBldCnt;
@ -396,8 +396,6 @@ void UpdateBGControlRegisters(void)
void InitMusic(void)
{
s32 counter;
u16 zero;
u16 zero2;
struct unkStruct_3000FD8 *preload;
@ -416,20 +414,12 @@ void InitMusic(void)
gUnknown_202D692 = 0;
gUnknown_202D694 = 0;
// Kinda hacky but makes things match
preload = gUnknown_3000FD8;
zero = 0;
zero2 = 0;
counter = 7;
while(counter >= 0)
for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++)
{
preload->unk0 = zero2;
preload->unk0 = 0;
preload->songIndex = 0x3e5;
preload->unk4 = zero2;
preload->unk6 = zero;
counter--;
preload++;
preload->unk4 = 0;
preload->unk6 = 0;
}
nullsub_19();
}
@ -455,7 +445,7 @@ void StartNewBGM(u16 songIndex)
if((u16)(gBGMusicPlayerState - 1) <= 1)
return;
}
if(sub_800CAE0(songIndex))
if(GetMusicPlayerIndex(songIndex))
{
nullsub_20(songIndex);
return;
@ -610,7 +600,7 @@ void sub_800C074(u16 SongIndex, u16 param_2)
if (sub_800CACC(SongIndex))
{
msVar = sub_800CAE0(SongIndex);
msVar = GetMusicPlayerIndex(SongIndex);
if (msVar == 1) {
interrupt_flag = DisableInterrupts();
gUnknown_202D68E = SongIndex;
@ -681,7 +671,7 @@ void sub_800C074(u16 SongIndex, u16 param_2)
{
if (!sub_800CAAC(SongIndex))
return;
msVar = sub_800CAE0(SongIndex);
msVar = GetMusicPlayerIndex(SongIndex);
preload = &gUnknown_3000FD8[msVar]; // need to load this before comparison to match
if (msVar <= 1)
nullsub_20(SongIndex);
@ -736,7 +726,7 @@ void sub_800C074(u16 SongIndex, u16 param_2)
"\tb _0800C1B0\n"
"_0800C0A4:\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CAE0\n"
"\tbl GetMusicPlayerIndex\n"
"\tlsls r0, 16\n"
"\tlsrs r7, r0, 16\n"
"\tcmp r7, 0x1\n"
@ -867,7 +857,7 @@ void sub_800C074(u16 SongIndex, u16 param_2)
"\tcmp r0, 0\n"
"\tbeq _0800C208\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CAE0\n"
"\tbl GetMusicPlayerIndex\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tlsls r2, r0, 3\n"
@ -924,7 +914,7 @@ void sub_800C214(u16 songIndex, u16 volume)
}
if ((!sub_800CACC(songIndex)) && (sub_800CAAC(songIndex))) {
msVar = sub_800CAE0(songIndex);
msVar = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[msVar].info;
preload = &gUnknown_3000FD8[msVar];
if (msVar > 1) {
@ -937,3 +927,287 @@ void sub_800C214(u16 songIndex, u16 volume)
}
}
}
void sub_800C298(u16 songIndex)
{
// Each section needs a var for interrupts..
char cVar1;
char cVar2;
char cVar3;
char cVar4;
u32 uVar2;
int iVar4;
struct MusicPlayerInfo *puVar6;
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
if (songIndex == 0x3e5) {
cVar1 = DisableInterrupts();
for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++)
{
m4aMPlayStop(gMPlayTable[iVar4].info);
puVar3->unk0 = 0;
puVar3->songIndex = 0x3e5;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
if (cVar1 != '\0') {
EnableInterrupts();
}
}
else if (sub_800CAAC(songIndex) != '\0')
{
uVar2 = GetMusicPlayerIndex(songIndex);
puVar6 = gMPlayTable[uVar2].info;
preload = &gUnknown_3000FD8[uVar2];
if (uVar2 < 2) {
nullsub_21(songIndex);
}
else {
cVar2 = DisableInterrupts();
if (preload->songIndex == songIndex) {
m4aMPlayStop(puVar6);
preload->unk0 = 0;
preload->songIndex = 0x3e5;
preload->unk4 = 0;
preload->unk6 = 0;
}
if (cVar2 != '\0') {
EnableInterrupts();
}
}
}
else if (songIndex == 0x3e6)
{
cVar3 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E != 0x3e5) {
gUnknown_202D68E = 0x3e5;
m4aMPlayStop(&gUnknown_2000970);
}
}
if (cVar3 != '\0') {
EnableInterrupts();
}
}
else if (sub_800CACC(songIndex) != '\0')
{
cVar4 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E == songIndex) {
gUnknown_202D68E = 0x3e5;
m4aMPlayStop(&gUnknown_2000970);
}
}
if (cVar4 != '\0') {
EnableInterrupts();
}
}
}
void sub_800C3F8(u16 songIndex, u16 speed)
{
char cVar1;
char cVar2;
char cVar3;
char cVar4;
u32 comparison;
s32 uVar6;
u32 uVar8;
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
struct MusicPlayerInfo *puVar5;
comparison = 0x80 << 17; // 16777216
if((speed * 65536) > comparison)
{
speed = 16;
}
else
{
if((speed >>= 4) == 0)
{
speed = 1;
}
}
if (songIndex == 0x3e5) {
cVar1 = DisableInterrupts();
for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++)
{
if (puVar3->songIndex != 0x3e5) {
if (sub_800CAF0(uVar6) != '\0') {
m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed);
}
else {
m4aMPlayStop(gMPlayTable[uVar6].info);
puVar3->unk0 = 0;
puVar3->songIndex = 0x3e5;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
}
}
if (cVar1 != '\0') {
EnableInterrupts();
}
}
else {
if (sub_800CAAC(songIndex) != '\0') {
uVar8 = GetMusicPlayerIndex(songIndex);
preload = &gUnknown_3000FD8[uVar8];
puVar5 = gMPlayTable[uVar8].info;
cVar2 = DisableInterrupts();
if (preload->songIndex != 0x3e5) {
if (sub_800CAF0(uVar8) != '\0') {
m4aMPlayFadeOut(puVar5,speed);
}
else {
m4aMPlayStop(puVar5);
preload->unk0 = 0;
preload->songIndex = 0x3e5;
preload->unk4 = 0;
preload->unk6 = 0;
}
}
if (cVar2 != '\0') {
EnableInterrupts();
}
}
else
{
if (songIndex == 0x3e6) {
cVar3 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 0x3e5)) {
if (sub_800CAF0(1) != '\0') {
m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
else {
m4aMPlayStop(&gUnknown_2000970);
gUnknown_202D68E = 0x3e5;
}
}
if (cVar3 != '\0') {
EnableInterrupts();
}
}
else {
if (sub_800CACC(songIndex) != '\0') {
cVar4 = DisableInterrupts();
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
if (sub_800CAF0(1) != '\0') {
m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
else {
m4aMPlayStop(&gUnknown_2000970);
gUnknown_202D68E = 0x3e5;
}
}
if (cVar4 != '\0') {
EnableInterrupts();
}
}
}
}
}
}
#ifdef NONMATCHING
u8 sub_800C5D0(u16 param_1)
{
u32 uVar3;
struct unkStruct_3000FD8 *preload;
if (sub_800CACC(param_1) != '\0') {
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == param_1)) {
return 1;
}
}
else
{
// NOTE: regswap of r5 for r4 here... but is functionally matching
if (sub_800CAAC(param_1) != '\0') {
uVar3 = GetMusicPlayerIndex(param_1);
preload = &gUnknown_3000FD8[uVar3];
if ((1 < uVar3) && (preload->songIndex == param_1)) {
return 1;
}
}
}
return 0;
}
#else
NAKED
u8 sub_800C5D0(u16 param_1)
{
asm_unified("\tpush {r4,r5,lr}\n"
"\tlsls r0, 16\n"
"\tlsrs r4, r0, 16\n"
"\tadds r5, r4, 0\n"
"\tadds r0, r4, 0\n"
"\tbl sub_800CACC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0800C600\n"
"\tldr r0, _0800C5F8\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, 0\n"
"\tbeq _0800C630\n"
"\tldr r0, _0800C5FC\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, r4\n"
"\tbne _0800C630\n"
"\tmovs r0, 0x1\n"
"\tb _0800C632\n"
"\t.align 2, 0\n"
"_0800C5F8: .4byte gUnknown_202D690\n"
"_0800C5FC: .4byte gUnknown_202D68E\n"
"_0800C600:\n"
"\tadds r0, r4, 0\n"
"\tbl sub_800CAAC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0800C630\n"
"\tadds r0, r4, 0\n"
"\tbl GetMusicPlayerIndex\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tlsls r2, r0, 3\n"
"\tldr r1, _0800C62C\n"
"\tadds r2, r1\n"
"\tcmp r0, 0x1\n"
"\tbls _0800C630\n"
"\tldrh r0, [r2, 0x2]\n"
"\tcmp r0, r5\n"
"\tbne _0800C630\n"
"\tmovs r0, 0x1\n"
"\tb _0800C632\n"
"\t.align 2, 0\n"
"_0800C62C: .4byte gUnknown_3000FD8\n"
"_0800C630:\n"
"\tmovs r0, 0\n"
"_0800C632:\n"
"\tpop {r4,r5}\n"
"\tpop {r1}\n"
"\tbx r1");
}
#endif
void SoundVSync(void)
{
u8 cVar1;
cVar1 = DisableInterrupts();
m4aSoundVSync();
if(cVar1)
EnableInterrupts();
}
void nullsub_18(void)
{
}

View File

@ -62,8 +62,6 @@ struct unkStruct_8035D94
extern struct unkStruct_8035D94 *sub_8035D94();
extern struct TeamInventory *gTeamInventory_203B460;
extern void sub_8037400(void);
extern void ResetSprites(u32);
extern void sub_8035CF4(u32 *,u32, u32);

View File

@ -1,10 +1,10 @@
#include "global.h"
#include "mailbox.h"
extern u8 gUnknown_80E03AC[];
extern u8 gPelipperBoard_Accepted[];
extern u8 gUnknown_80E03B8[];
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern u32 sub_80969AC(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
@ -52,9 +52,9 @@ void CreatePelipperAcceptedStatusBox(u32 r0)
{
sub_8008C54(r0);
sub_80073B8(r0);
xxx_call_draw_string(3, 0, gUnknown_80E03AC, r0, 0);
sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
xxx_call_draw_string(0x16, 0xD, gUnknown_80E03B8, r0, 0);
sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
xxx_call_draw_string(3, 0, gPelipperBoard_Accepted, r0, 0);
sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0);
xxx_call_draw_string(0x16, 0xD, gUnknown_80E03B8, r0, 0); // "/"
sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0);
sub_80073E0(r0);
}

View File

@ -39,7 +39,7 @@ void InitializeRecruitedPokemon(void)
gRecruitedPokemonRef->pokemon2[iVar3].unk0 = 0;
}
for(iVar3 = 0; iVar3 < 4; iVar3++)
for(iVar3 = 0; iVar3 < MAX_TEAM_MEMBERS; iVar3++)
{
gRecruitedPokemonRef->team[iVar3].speciesNum = 0;
gRecruitedPokemonRef->team[iVar3].unk0 = 0;

View File

@ -11,7 +11,6 @@ extern u8 gUnknown_810A36B[];
extern s16 gUnknown_810A378[];
extern s32 gUnknown_810A390[];
extern u32 gUnknown_81076E4[];
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
struct unkStruct_808E9EC
{
@ -50,10 +49,10 @@ extern void AddSprite(u16 *, u32, u32, u32);
extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void xxx_save_poke_sub_2c_8094108(struct unkStruct_8094924*, struct unkPokeSubStruct_2C*);
extern void SavePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
void xxx_restore_poke_sub_2c_8094128(struct unkStruct_8094924*, struct unkPokeSubStruct_2C*);
void RestorePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
extern void sub_8094184(struct unkStruct_8094924*, void*);
extern void sub_809449C(struct unkStruct_8094924*, void*);
@ -650,7 +649,7 @@ void sub_808ED00() {
gRecruitedPokemonRef->team[i] = gRecruitedPokemonRef->pokemon[team[i]];
}
for (; i < 4; i++) {
for (; i < MAX_TEAM_MEMBERS; i++) {
gRecruitedPokemonRef->team[i].unk0 = 0;
}
}
@ -696,7 +695,7 @@ s32 SaveRecruitedPokemon(u8 *a1, s32 a2)
SavePokemonStruct(&backup, pokemon);
}
for (i = 0; i < 4; i++) {
for (i = 0; i < MAX_TEAM_MEMBERS; i++) {
if ((u8)i[gRecruitedPokemonRef->team].unk0 & 1) {
data_u8 = 0xff;
}
@ -727,7 +726,7 @@ s32 RestoreRecruitedPokemon(u8 *a1, s32 a2)
RestorePokemonStruct(&backup, &gRecruitedPokemonRef->pokemon[i]);
}
for (i = 0; i < 4; i++) {
for (i = 0; i < MAX_TEAM_MEMBERS; i++) {
RestoreIntegerBits(&backup, &data_u8, 1);
RestorePokemonStruct(&backup, &gRecruitedPokemonRef->team[i]);
if (data_u8 & 1) {
@ -769,7 +768,7 @@ void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokem
SaveIntegerBits(a1, &pokemon->unk20, 24);
SaveIntegerBits(a1, &pokemon->unk24, 4);
SaveHeldItem(a1, &pokemon->heldItem);
xxx_save_poke_sub_2c_8094108(a1, pokemon->unk2C);
SavePokemonMoves(a1, pokemon->moves);
SaveIntegerBits(a1, pokemon->name, 80);
}
@ -796,7 +795,7 @@ void RestorePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* po
RestoreIntegerBits(a1, &pokemon->unk20, 24);
RestoreIntegerBits(a1, &pokemon->unk24, 4);
RestoreHeldItem(a1, &pokemon->heldItem);
xxx_restore_poke_sub_2c_8094128(a1, pokemon->unk2C);
RestorePokemonMoves(a1, pokemon->moves);
RestoreIntegerBits(a1, pokemon->name, 80);
}
@ -830,7 +829,7 @@ s32 SavePokemonStruct2(u8* a1, s32 size)
SaveIntegerBits(&backup, &pokemon2->offense.def[0], 8);
SaveIntegerBits(&backup, &pokemon2->offense.def[1], 8);
SaveIntegerBits(&backup, &pokemon2->unk18, 24);
sub_8094184(&backup, &pokemon2->unk1C);
sub_8094184(&backup, &pokemon2->moves);
SaveItemSlot(&backup, &pokemon2->itemSlot);
sub_809449C(&backup, &pokemon2->unk44);
sub_809449C(&backup, &pokemon2->unk48);
@ -878,7 +877,7 @@ s32 RestorePokemonStruct2(u8* a1, s32 size)
RestoreIntegerBits(&backup, &pokemon2->offense.def[0], 8);
RestoreIntegerBits(&backup, &pokemon2->offense.def[1], 8);
RestoreIntegerBits(&backup, &pokemon2->unk18, 24);
sub_80941FC(&backup, &pokemon2->unk1C);
sub_80941FC(&backup, &pokemon2->moves);
RestoreItemSlot(&backup, &pokemon2->itemSlot);
sub_809447C(&backup, &pokemon2->unk44);
sub_809447C(&backup, &pokemon2->unk48);
@ -911,4 +910,4 @@ void sub_808F448(struct unkStruct_8094924* a1, struct unkStruct_808E6F4* a2)
{
SaveIntegerBits(a1, &a2->unk0, 10);
SaveIntegerBits(a1, &a2->unk2, 5);
}
}

View File

@ -4,6 +4,7 @@
#include "file_system.h"
#include "subStruct_203B240.h"
#include "constants/colors.h"
#include "constants/move_id.h"
extern struct gPokemon *gMonsterParameters;
extern const char gUnknown_8107600[];
@ -14,10 +15,10 @@ extern const char gUnknown_8107638[];
extern const char gUnknown_810763C[];
extern const char gUnknown_810768C[]; // lvmp%03d\0
extern struct FileArchive gSystemFileArchive;
extern s16 gUnknown_810ACB8; // 0x14d
extern s16 gUnknown_810ACBA; // 0x14d
extern s16 gUnknown_810ACBC; // 0x14d
extern s16 gUnknown_810ACBE; // 0x14d
extern s16 gFrenzyPlantIQReq; // 0x14d
extern s16 gHydroCannonIQReq; // 0x14d
extern s16 gBlastBurnIQReq; // 0x14d
extern s16 gVoltTackleIQReq; // 0x14d
extern char* gFormattedStatusNames[];
// wram data:
@ -37,7 +38,7 @@ extern void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct*, struct
extern u8* sub_8092B18(s16);
extern u8* sub_808E07C(u8* a1, u16* a2);
extern u8* sub_8092B54(s32);
extern void sub_8092AD4(struct unkPokeSubStruct_2C*, u16);
extern void sub_8092AD4(struct PokemonMove*, u16);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
struct unkStruct_8107654 {
@ -51,7 +52,6 @@ extern struct unkStruct_8107654 gUnknown_8107654[6];
extern struct gPokemon *gMonsterParameters;
extern struct FileArchive gMonsterFileArchive;
extern const char gUnknown_8107684[];
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
bool8 sub_808D6E8()
@ -542,7 +542,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po
}
a1->unk18 = pokemon->unk1C;
sub_8093F50(&a1->unk1C, &pokemon->unk2C);
sub_8093F50(&a1->moves, &pokemon->moves);
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
a1->name[i] = pokemon->name[i];
@ -570,7 +570,7 @@ void xxx_pokemon2_to_pokemonstruct_index_808DF2C(s32 a1, struct PokemonStruct2*
xxx_pokemon2_to_pokemonstruct_808DF44(&a1[gRecruitedPokemonRef->pokemon], a2);
}
extern void sub_8093FA8(struct unkPokeSubStruct_2C*, struct unkPokeSubStruct_2C*);
extern void sub_8093FA8(struct PokemonMove*, struct PokemonMove*);
void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct PokemonStruct2* a2)
@ -593,7 +593,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct
}
pokemon->unk1C = a2->unk18;
sub_8093FA8(pokemon->unk2C, a2->unk1C);
sub_8093FA8(pokemon->moves, a2->moves);
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
pokemon->name[i] = a2->name[i];
@ -669,7 +669,7 @@ u8* sub_808E07C(u8* a1, u16* a2)
return a1;
}
s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 a4)
s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 IQPoints)
{
u8* stream;
u16 result; // struct?
@ -697,13 +697,12 @@ s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 a4)
break;
if (v12 == a3) {
bool8 cond = 1;
// I don't think these are species IDs
// the pokemon they would correspond to are pretty random if they are
// shuckle, heracross, pupitar, vibrava
if ((result == 238) && (a4 < gUnknown_810ACB8)) cond = 0;
if ((result == 239) && (a4 < gUnknown_810ACBA)) cond = 0;
if ((result == 272) && (a4 < gUnknown_810ACBC)) cond = 0;
if ((result == 354) && (a4 < gUnknown_810ACBE)) cond = 0;
// NOTE: these moves require IQ to be > 333
if ((result == MOVE_FRENZY_PLANT) && (IQPoints < gFrenzyPlantIQReq)) cond = 0;
if ((result == MOVE_HYDRO_CANNON) && (IQPoints < gHydroCannonIQReq)) cond = 0;
if ((result == MOVE_BLAST_BURN) && (IQPoints < gBlastBurnIQReq)) cond = 0;
if ((result == MOVE_VOLT_TACKLE) && (IQPoints < gVoltTackleIQReq)) cond = 0;
if (cond) {
if (count < 16) {
@ -716,7 +715,7 @@ s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 a4)
return count;
}
bool8 sub_808E190(u16 a1, s16 _species)
bool8 CanMonLearnMove(u16 moveID, s16 _species)
{
u16 result;
u16 result2;
@ -726,13 +725,13 @@ bool8 sub_808E190(u16 a1, s16 _species)
if (species == SPECIES_DECOY) return 0;
if (species == SPECIES_NONE) return 0;
if (species == SPECIES_MUNCHLAX) return 0;
if (a1 == 352) return 0;
if (moveID == MOVE_STRUGGLE) return 0;
ptr = sub_8092B18(species);
while (*ptr) {
ptr = sub_808E07C(ptr, &result);
ptr++;
if (a1 == result) {
if (moveID == result) {
return 1;
}
}
@ -740,7 +739,7 @@ bool8 sub_808E190(u16 a1, s16 _species)
ptr = sub_8092B54(species);
while (*ptr) {
ptr = sub_808E07C(ptr, &result2);
if (result2 == a1) {
if (result2 == moveID) {
return 1;
}
}
@ -779,16 +778,14 @@ s32 sub_808E218(struct unkStruct_808E218_arg* a1, struct PokemonStruct* pokemon)
if (count < NUM_SPECIES) {
s32 j;
bool8 cond = 1;
// I don't think these are species IDs
// the pokemon they would correspond to are pretty random if they are
// shuckle, heracross, pupitar, vibrava
if ((result == 238) && (pokemon->IQ < gUnknown_810ACB8)) cond = 0;
if ((result == 239) && (pokemon->IQ < gUnknown_810ACBA)) cond = 0;
if ((result == 272) && (pokemon->IQ < gUnknown_810ACBC)) cond = 0;
if ((result == 354) && (pokemon->IQ < gUnknown_810ACBE)) cond = 0;
for (j = 0; j < 4; j++) {
if ((pokemon->unk2C[j].unk0 & 1) && pokemon->unk2C[j].unk2 == result) {
if ((result == MOVE_FRENZY_PLANT) && (pokemon->IQ < gFrenzyPlantIQReq)) cond = 0;
if ((result == MOVE_HYDRO_CANNON) && (pokemon->IQ < gHydroCannonIQReq)) cond = 0;
if ((result == MOVE_BLAST_BURN) && (pokemon->IQ < gBlastBurnIQReq)) cond = 0;
if ((result == MOVE_VOLT_TACKLE) && (pokemon->IQ < gVoltTackleIQReq)) cond = 0;
for (j = 0; j < MAX_MON_MOVES; j++) {
if ((pokemon->moves[j].moveFlags & MOVE_FLAG_EXISTS) && pokemon->moves[j].moveID == result) {
cond = 0;
}
}
@ -900,7 +897,7 @@ s32 sub_808E400(s32 _species, s16* _a2, s32 _a3, s32 _a4)
return count;
}
void sub_808E490(struct unkPokeSubStruct_2C* a1, s16 species)
void sub_808E490(struct PokemonMove* a1, s16 species)
{
u16 buffer[0x10];
s32 i;
@ -918,8 +915,8 @@ void sub_808E490(struct unkPokeSubStruct_2C* a1, s16 species)
}
i = count;
}
while (i < 4) {
a1[i].unk0 = 0;
while (i < MAX_MON_MOVES) {
a1[i].moveFlags = 0;
i++;
}
}

View File

@ -6,6 +6,7 @@
#include "pokemon.h"
#include "random.h"
#include "save.h"
#include "team_inventory.h"
#include "exclusive_pokemon.h"
@ -72,9 +73,6 @@ EWRAM_DATA struct QuickSaveWrite *gQuickSaveWrite;
extern s32 gUnknown_202DE28;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
extern struct TeamInventory *gTeamInventory_203B460;
extern struct RescueTeamData *gRescueTeamInfoRef;
extern bool8 *gFriendAreas;
extern u32 gUnknown_203B46C;
extern u8 *gUnknown_203B480;
@ -83,7 +81,6 @@ extern u32 *gUnknown_203B488;
extern u32 *gUnknown_203B48C;
extern u32 gUnknown_203B490;
extern u32 gUnknown_203B494;
extern struct ExclusivePokemonData *gUnknown_203B498;
ALIGNED(4) const char PokeDungeon_Text[] = _("POKE_DUNGEON__05");
@ -184,8 +181,6 @@ extern void sub_80974E8(void);
extern void ResetNumAdventures(void);
extern void sub_80993D8(void);
extern struct PlayTimeStruct *gPlayTimeRef;
extern void xxx_call_start_bg_music(void);

View File

@ -12,7 +12,6 @@
#include "team_inventory.h"
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
extern struct TeamInventory *gTeamInventory_203B460;
#define THANK_YOU_MAIL_MAIN_MENU 0
#define ANYTHING_ELSE_THANK_YOU_MAIN_MENU 1

View File

@ -8,7 +8,6 @@
extern struct TradeItemsMenu *gTradeItemsMenu;
extern struct TeamInventory *gTeamInventory_203B460;
extern u32 gUnknown_202DE30;
extern u32 gUnknown_202DE58;
extern struct UnkTextStruct2 gUnknown_80E6174;

View File

@ -11,7 +11,6 @@
#include "team_inventory.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern struct TeamInventory *gTeamInventory_203B460;
extern u32 sub_80144A4(s32 *r0);
extern void sub_8011C28(u32);
@ -89,7 +88,6 @@ extern struct MenuItem gUnknown_80DDA80[];
extern struct MenuItem gUnknown_80DDAFC[];
extern struct MenuItem gUnknown_80DDB60[];
extern struct MenuItem gUnknown_80DDA64[];
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
extern struct MenuItem gUnknown_80DDB24[];
extern struct MenuItem gUnknown_80DD9EC[];
extern u8 gUnknown_80DDACC[];

View File

@ -7,6 +7,7 @@
#include "menu.h"
#include "save.h"
#include "sub_8095228.h"
#include "gUnknown_203B46C.h"
#include "wonder_mail.h"
struct unkStruct_203B2C8
@ -32,7 +33,7 @@ struct unkStruct_203B2C8
struct unkStruct_203B2CC
{
// size: 0xD4;
u8 unk0[0x38];
u8 receivedNewsletters[NUM_POKEMON_NEWS];
u32 unk38;
u8 fill3C[0x50 - 0x3C];
@ -43,7 +44,7 @@ struct unkStruct_203B2CC
s16 unk56;
u16 unk58;
u16 unk5A;
u16 numPKMNNews;
u8 fill5C[0x6C - 0x5C];
@ -54,13 +55,38 @@ struct unkStruct_203B2CC
};
extern struct unkStruct_203B2CC *gUnknown_203B2CC;
extern u32 sub_802B9A8(void);
struct unkStruct_203B2D4
{
// size: 0x94
s32 state;
u8 currMailIndex;
u8 fill5[0x8 - 0x5];
s32 unk8;
s32 unkC;
u8 *unk10[4];
u32 unk20;
u32 unk24;
struct UnkTextStruct2 unk28[4];
u32 unk88;
u8 fill8C[0x94 - 0x8C];
};
extern struct unkStruct_203B2D4 *gUnknown_203B2D4;
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern s32 GetNumPKMNNews(void);
extern void sub_802B880(void);
extern void sub_802B8D4(void);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
extern void sub_8013984(u32 *);
extern u8 HasNoPKMNNews(void);
extern u8 CheckPKMNNewsSlot(u8 r0);
extern struct PokemonStruct *sub_808D3BC(void);
extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
extern u16 gUnknown_203B2D0;
extern u16 gUnknown_203B2D2;
@ -70,10 +96,21 @@ extern s32 GetKeyPress(u32 *);
extern void sub_8013660(u32 *);
extern void AddMenuCursorSprite(u32 *);
extern void sub_802BB98(void);
extern void sub_802BC08(void);
extern void sub_802BB28(void);
extern void sub_8013E54(void);
extern s32 sub_8012A64(u32 *, u32);
extern void PlayMenuSoundEffect(u32);
extern struct UnkTextStruct2 gUnknown_80DFBEC;
extern struct UnkTextStruct2 gUnknown_80DFBD0;
extern struct UnkTextStruct2 gUnknown_80DFC34;
extern struct UnkTextStruct2 gUnknown_80DFC18;
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
@ -82,6 +119,8 @@ extern void sub_80920D8(u8 *buffer);
extern void sub_8097790(void);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern u8 gUnknown_80DFC4C[];
extern u8 gUnknown_80DFC50[];
extern u32 sub_802F298(void);
extern void sub_802F2C0(void);
extern u8 sub_8099394(u8 *);
@ -103,6 +142,23 @@ extern u8 sub_80023E4(u32);
extern void nullsub_131(void);
extern void sub_802ABF8(void);
extern u8 gUnknown_80DFC04[];
extern u8 gUnknown_80DFBE8[];
extern char *GetPokemonMailHeadline(u8 index);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_802BC7C(void);
extern void sub_80073E0(u32);
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern void sub_803B6B0(u32, u32, u32, u32);
extern s32 sub_8013800(u32 *, s32);
extern void sub_802BCC4(void);
extern void sub_802BB14(u32);
extern void sub_801317C(u32 *);
ALIGNED(4) const char gUnknown_80DF9F0[] = "????";
// NOTE: had to be pre-proc'd to match
@ -348,7 +404,7 @@ u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
sub_8013818(&gUnknown_203B2CC->unk38, sub_802B9A8(), r2, r0);
sub_8013818(&gUnknown_203B2CC->unk38, GetNumPKMNNews(), r2, r0);
gUnknown_203B2CC->unk50 = gUnknown_203B2D0;
gUnknown_203B2CC->unk56 = gUnknown_203B2D2;
@ -393,9 +449,9 @@ u32 sub_802B720(u8 r0)
}
}
u8 sub_802B7A8(void)
u8 GetPokemonNewsIndex(void)
{
return gUnknown_203B2CC->unk0[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50];
return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50];
}
void sub_802B7D0(u32 r0)
@ -407,7 +463,7 @@ void sub_802B7D0(u32 r0)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2CC->unk74, 0, 0);
gUnknown_203B2CC->unk5A = sub_802B9A8();
gUnknown_203B2CC->numPKMNNews = GetNumPKMNNews();
sub_8013984(&gUnknown_203B2CC->unk38);
sub_802B880();
sub_802B8D4();
@ -435,3 +491,241 @@ void sub_802B81C(void)
gUnknown_203B2CC = NULL;
}
}
NAKED
void sub_802B880(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _0802B8D0\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x52\n"
"\tmovs r1, 0\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x6C]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x82\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x6C]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x84\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x74\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"\t_0802B8D0: .4byte gUnknown_203B2CC");
}
void sub_802B8D4(void)
{
s32 iVar2;
s32 retvar;
s32 new_index;
u8 mailIndex;
sub_8008C54(gUnknown_203B2CC->unk6C);
sub_80073B8(gUnknown_203B2CC->unk6C);
xxx_call_draw_string(0xA, 0, gUnknown_80DFC04, gUnknown_203B2CC->unk6C, 0);
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C);
for(iVar2 = 0; iVar2 < gUnknown_203B2CC->unk52; iVar2++)
{
retvar = sub_8013800(&gUnknown_203B2CC->unk38, iVar2);
new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + iVar2;
mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index];
sub_803B6B0(0xA, retvar, 6, gUnknown_203B2CC->unk6C);
sub_802BC7C();
xxx_format_and_draw(0x15, retvar, GetPokemonMailHeadline(mailIndex), gUnknown_203B2CC->unk6C, 0);
}
sub_80073E0(gUnknown_203B2CC->unk6C);
}
s32 GetNumPKMNNews(void)
{
s32 iVar2;
s32 newsCount;
newsCount = 0;
for(iVar2 = 0; iVar2 < NUM_POKEMON_NEWS; iVar2++)
{
if(CheckPKMNNewsSlot(iVar2))
{
gUnknown_203B2CC->receivedNewsletters[newsCount] = iVar2;
newsCount++;
}
}
return newsCount;
}
bool8 HasNoPKMNNews(void)
{
s32 iVar2;
for(iVar2 = 0; iVar2 < NUM_POKEMON_NEWS; iVar2++)
{
if(CheckPKMNNewsSlot(iVar2))
{
return FALSE;
}
}
return TRUE;
}
u32 sub_802B9FC(u8 mailIndex)
{
gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 0x8);
gUnknown_203B2D4->currMailIndex = mailIndex;
sub_801317C(&gUnknown_203B2D4->unk88);
gUnknown_203B2D4->unk24 = 0;
gUnknown_203B2D4->unk28[0] = gUnknown_80DFC34;
gUnknown_203B2D4->unk28[1] = gUnknown_80DFC18;
gUnknown_203B2D4->unk28[2] = gUnknown_80DFC18;
gUnknown_203B2D4->unk28[3] = gUnknown_80DFC18;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
gUnknown_203B2D4->unk8 = 0;
sub_802BCC4();
sub_802BC7C();
sub_802BB14(0);
return 1;
}
u32 sub_802BA8C(void)
{
switch(gUnknown_203B2D4->state)
{
case 0:
sub_802BB98();
break;
case 1:
sub_802BC08();
break;
case 3:
return 3;
case 2:
default:
return 2;
}
return 0;
}
void sub_802BACC(void)
{
if(gUnknown_203B2D4 != NULL)
{
gUnknown_203B2D4->unk28[gUnknown_203B2D4->unk24] = gUnknown_80DFC18;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
MemoryFree(gUnknown_203B2D4);
gUnknown_203B2D4 = NULL;
}
}
void sub_802BB14(u32 newState)
{
gUnknown_203B2D4->state = newState;
sub_802BB28();
}
void sub_802BB28(void)
{
switch(gUnknown_203B2D4->state)
{
case 0:
case 1:
sub_8008C54(gUnknown_203B2D4->unk24);
sub_80073B8(gUnknown_203B2D4->unk24);
xxx_format_and_draw(0xA, 0, GetPokemonMailHeadline(gUnknown_203B2D4->currMailIndex), gUnknown_203B2D4->unk24, 0);
xxx_format_and_draw(0x6, 0x14, gUnknown_203B2D4->unk10[gUnknown_203B2D4->unk8], gUnknown_203B2D4->unk24, 0);
sub_80073E0(gUnknown_203B2D4->unk24);
gUnknown_203B2D4->unk8++;
break;
case 2:
case 3:
break;
}
}
void sub_802BB98(void)
{
if(gUnknown_203B2D4->unkC != 0)
{
if(gUnknown_203B2D4->unk20 & 8)
sub_8013E54();
gUnknown_203B2D4->unk20++;
}
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B2D4->unkC != 0)
sub_802BB14(1);
else
sub_802BB14(3);
break;
case 2:
PlayMenuSoundEffect(1);
sub_802BB14(2);
break;
}
}
void sub_802BC08(void)
{
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
{
if(gUnknown_203B2D4->unk20 & 8)
sub_8013E54();
gUnknown_203B2D4->unk20++;
}
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
sub_802BB14(1);
else
sub_802BB14(3);
break;
case 2:
PlayMenuSoundEffect(1);
sub_802BB14(2);
break;
}
}
void sub_802BC7C(void)
{
sub_808DA34(gAvailablePokemonNames, sub_808D3BC());
if(gUnknown_203B46C->playerGender == FEMALE)
{
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC4C); // She
}
else
{
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC50); // He
}
}

View File

@ -82,7 +82,7 @@ extern u8 sub_802DADC(void);
extern u8 *sub_8096DD8(void);
extern u8 sub_8096C08(u8 *);
extern void sub_802C750(void);
extern s32 sub_80969AC(void);
extern s32 GetNumAcceptedJobs(void);
extern void sub_802D1A0(u32);
extern void sub_8012EA4(u8 *, u32);
extern void* sub_8096AB4(u8);
@ -228,7 +228,7 @@ void sub_802D2A8(void)
}
}
else {
if (sub_80969AC() >= 8) {
if (GetNumAcceptedJobs() >= 8) {
if (sub_802DADC() != 0) {
sub_802D1A0(10);
}

View File

@ -65,14 +65,8 @@ extern struct unkStruct_203B310 *gUnknown_203B310;
// TODO: port to ItemSlot
struct ItemSlot_Alt
{
// OG struct
// u8 itemFlags
// u8 numItems
// u8 itemIndex
union temp {
u8 itemFlags;
u8 numItems;
u8 itemIndex;
struct ItemSlot norm;
u32 full_bits;
} temp;
};