mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-22 15:08:24 -05:00
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:
parent
3f7ee3a806
commit
3e5dd1d047
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
9178
asm/code_809D148.s
9178
asm/code_809D148.s
File diff suppressed because it is too large
Load Diff
5920
asm/code_80A26CC.s
5920
asm/code_80A26CC.s
File diff suppressed because it is too large
Load Diff
|
|
@ -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
1810
asm/ground_effect.s
Normal file
File diff suppressed because it is too large
Load Diff
1190
asm/ground_event.s
Normal file
1190
asm/ground_event.s
Normal file
File diff suppressed because it is too large
Load Diff
142
asm/ground_link.s
Normal file
142
asm/ground_link.s
Normal 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
3114
asm/ground_map.s
Normal file
File diff suppressed because it is too large
Load Diff
2259
asm/ground_object.s
Normal file
2259
asm/ground_object.s
Normal file
File diff suppressed because it is too large
Load Diff
9184
asm/ground_script.s
Normal file
9184
asm/ground_script.s
Normal file
File diff suppressed because it is too large
Load Diff
2704
asm/ground_sprite.s
Normal file
2704
asm/ground_sprite.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -186,7 +186,7 @@ _0802E3FC:
|
|||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E422
|
||||
bl sub_80969AC
|
||||
bl GetNumAcceptedJobs
|
||||
cmp r0, 0x7
|
||||
ble _0802E42C
|
||||
_0802E422:
|
||||
|
|
|
|||
463
asm/music.s
463
asm/music.s
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
6
include/constants/mailbox.h
Normal file
6
include/constants/mailbox.h
Normal 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
|
||||
|
|
@ -22,7 +22,4 @@ enum NaturePersonalities {
|
|||
#define NUM_QUIZ_QUESTIONS 55
|
||||
#define MAX_ASKED_QUESTIONS 8
|
||||
|
||||
#define MALE 0
|
||||
#define FEMALE 1
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ struct ExclusivePokemonData
|
|||
.in_brt = TRUE, \
|
||||
}
|
||||
|
||||
extern struct ExclusivePokemonData *gUnknown_203B498;
|
||||
|
||||
void LoadExclusivePokemon(void);
|
||||
struct ExclusivePokemonData *GetExclusivePokemon(void);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ struct Inputs
|
|||
/* 0xC */ s32 repeatTimerDpad;
|
||||
};
|
||||
|
||||
extern struct Inputs gRealInputs;
|
||||
|
||||
struct InputTimers
|
||||
{
|
||||
/* 0x0 */ s16 holdTimerB;
|
||||
|
|
|
|||
|
|
@ -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*);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ struct RescueTeamData
|
|||
u8 unk10;
|
||||
};
|
||||
|
||||
extern struct RescueTeamData *gRescueTeamInfoRef;
|
||||
|
||||
void LoadRescueTeamInfo(void);
|
||||
struct RescueTeamData *GetRescueTeamInfo(void);
|
||||
void InitializeRescueTeamInfo(void);
|
||||
|
|
|
|||
|
|
@ -12,4 +12,6 @@ struct TeamInventory
|
|||
/* 0x264 */ u32 teamSavings;
|
||||
};
|
||||
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ struct unk_203B250
|
|||
|
||||
struct unk_203B250 *gUnknown_203B250;
|
||||
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
void sub_801D680(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
#include "input.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct Inputs gRealInputs;
|
||||
|
||||
struct unkStruct_203B344
|
||||
{
|
||||
u32 state; // state variable
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 *);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
|
|||
EWRAM_DATA bool8 *gFriendAreas;
|
||||
|
||||
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
|
||||
extern bool8 *gFriendAreas;
|
||||
|
||||
extern u32 gFriendAreaDescriptions[];
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
33
src/ground_link.c
Normal 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
77
src/ground_map.c
Normal 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();
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
#include "kangaskhan_storage.h"
|
||||
|
||||
extern struct unkStruct_203B208 *gUnknown_203B208;
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
struct unkStruct_203B20C
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
16
src/music.c
16
src/music.c
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
320
src/music_pre.c
320
src/music_pre.c
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user