Moves and some friend_area_action_menu

This commit is contained in:
Seth Barberee
2021-10-19 17:48:38 -07:00
parent f99f00b180
commit 3a1db3dfac
42 changed files with 2601 additions and 3874 deletions

View File

@@ -308,526 +308,4 @@ _0801E3E8: .4byte gWindowBGGreenString
_0801E3EC: .4byte gUnknown_203B260
thumb_func_end CreateOptionsMenu
thumb_func_start sub_801E3F0
sub_801E3F0:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _0801E46C
ldr r0, [r4]
cmp r0, 0
bne _0801E406
movs r0, 0x9C
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_0801E406:
ldr r0, [r4]
str r5, [r0, 0x34]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x3C
adds r1, r0, r1
str r1, [r0, 0x38]
adds r0, 0x3C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _0801E470
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r4]
ldr r0, [r0, 0x38]
movs r1, 0xA
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x5
movs r2, 0xA
adds r3, r5, 0
bl sub_8013818
bl sub_801E594
bl sub_801E5E8
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0801E46C: .4byte gUnknown_203B264
_0801E470: .4byte gUnknown_80DC0BC
thumb_func_end sub_801E3F0
thumb_func_start sub_801E474
sub_801E474:
push {lr}
lsls r0, 24
cmp r0, 0
bne _0801E48C
ldr r0, _0801E488
ldr r0, [r0]
bl sub_8013660
movs r0, 0
b _0801E4EE
.align 2, 0
_0801E488: .4byte gUnknown_203B264
_0801E48C:
ldr r0, _0801E4A4
ldr r0, [r0]
bl GetKeyPress
cmp r0, 0x2
beq _0801E4AE
cmp r0, 0x2
bgt _0801E4A8
cmp r0, 0x1
beq _0801E4B8
b _0801E4CC
.align 2, 0
_0801E4A4: .4byte gUnknown_203B264
_0801E4A8:
cmp r0, 0x4
beq _0801E4C2
b _0801E4CC
_0801E4AE:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E4EE
_0801E4B8:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E4EE
_0801E4C2:
movs r0, 0x4
bl PlayMenuSoundEffect
movs r0, 0x4
b _0801E4EE
_0801E4CC:
ldr r0, _0801E4E0
ldr r0, [r0]
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0801E4E4
movs r0, 0
b _0801E4EE
.align 2, 0
_0801E4E0: .4byte gUnknown_203B264
_0801E4E4:
bl sub_801E594
bl sub_801E5E8
movs r0, 0x1
_0801E4EE:
pop {r1}
bx r1
thumb_func_end sub_801E474
thumb_func_start sub_801E4F4
sub_801E4F4:
ldr r0, _0801E50C
ldr r1, [r0]
movs r0, 0x1E
ldrsh r2, [r1, r0]
movs r3, 0x1C
ldrsh r0, [r1, r3]
muls r0, r2
movs r2, 0x18
ldrsh r1, [r1, r2]
adds r0, r1
bx lr
.align 2, 0
_0801E50C: .4byte gUnknown_203B264
thumb_func_end sub_801E4F4
thumb_func_start sub_801E510
sub_801E510:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ResetUnusedInputStruct
ldr r5, _0801E548
ldr r0, [r5]
adds r0, 0x3C
movs r1, 0
movs r2, 0
bl sub_800641C
ldr r0, [r5]
bl sub_8013984
bl sub_801E594
bl sub_801E5E8
cmp r4, 0
beq _0801E542
ldr r0, [r5]
bl AddMenuCursorSprite
_0801E542:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E548: .4byte gUnknown_203B264
thumb_func_end sub_801E510
thumb_func_start sub_801E54C
sub_801E54C:
push {r4,r5,lr}
ldr r4, _0801E58C
ldr r2, [r4]
cmp r2, 0
beq _0801E586
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0801E590
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]
_0801E586:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E58C: .4byte gUnknown_203B264
_0801E590: .4byte gUnknown_80DC0A0
thumb_func_end sub_801E54C
thumb_func_start sub_801E594
sub_801E594:
push {r4,lr}
ldr r4, _0801E5E4
ldr r0, [r4]
movs r1, 0x1A
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x34]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x34]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x4C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801E5E4: .4byte gUnknown_203B264
thumb_func_end sub_801E594
thumb_func_start sub_801E5E8
sub_801E5E8:
push {r4-r6,lr}
sub sp, 0x4
ldr r4, _0801E64C
ldr r0, [r4]
ldr r0, [r0, 0x34]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r2, _0801E650
ldr r0, [r4]
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
movs r0, 0x10
movs r1, 0
bl xxx_call_draw_string
movs r5, 0
adds r6, r4, 0
ldr r4, _0801E654
_0801E616:
ldr r0, [r6]
adds r1, r5, 0
bl sub_8013800
adds r1, r0, 0
ldr r2, [r4]
ldr r0, [r6]
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
movs r0, 0xA
bl xxx_call_draw_string
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
ble _0801E616
ldr r0, _0801E64C
ldr r0, [r0]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E64C: .4byte gUnknown_203B264
_0801E650: .4byte gUnknown_80DC0D4
_0801E654: .4byte gUnknown_80DAA98
thumb_func_end sub_801E5E8
thumb_func_start sub_801E658
sub_801E658:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _0801E6C4
movs r0, 0xA0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
movs r1, 0
str r1, [r0, 0x34]
adds r1, r0, 0
adds r1, 0x3C
str r1, [r0, 0x38]
adds r0, r1, 0
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _0801E6C8
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r4]
ldr r1, [r0, 0x38]
adds r0, 0x9C
str r0, [r1, 0x14]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
ldr r3, [r0, 0x34]
movs r1, 0x5
movs r2, 0x1
bl sub_8013818
ldr r0, [r4]
strh r5, [r0, 0x1E]
bl sub_801E714
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0801E6C4: .4byte gUnknown_203B268
_0801E6C8: .4byte gUnknown_80DC0FC
thumb_func_end sub_801E658
thumb_func_start sub_801E6CC
sub_801E6CC:
push {r4,lr}
ldr r4, _0801E6E8
ldr r0, [r4]
bl GetKeyPress
cmp r0, 0x1
beq _0801E6EC
cmp r0, 0x2
bne _0801E6F6
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E70C
.align 2, 0
_0801E6E8: .4byte gUnknown_203B268
_0801E6EC:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E70C
_0801E6F6:
ldr r0, [r4]
bl sub_8013938
lsls r0, 24
cmp r0, 0
bne _0801E706
movs r0, 0
b _0801E70C
_0801E706:
bl sub_801E714
movs r0, 0x1
_0801E70C:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801E6CC
thumb_func_start sub_801E714
sub_801E714:
push {lr}
bl sub_801E76C
bl sub_801E7AC
pop {r0}
bx r0
thumb_func_end sub_801E714
thumb_func_start sub_801E724
sub_801E724:
push {r4,r5,lr}
ldr r4, _0801E764
ldr r2, [r4]
cmp r2, 0
beq _0801E75E
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0801E768
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]
_0801E75E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E764: .4byte gUnknown_203B268
_0801E768: .4byte gUnknown_80DC0E4
thumb_func_end sub_801E724
thumb_func_start sub_801E76C
sub_801E76C:
push {r4,lr}
ldr r4, _0801E7A8
ldr r0, [r4]
ldrh r1, [r0, 0x20]
adds r0, 0x9C
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
ldrh r1, [r0, 0x1E]
adds r0, 0x9D
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9E
movs r1, 0xF
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9F
strb r2, [r0]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801E7A8: .4byte gUnknown_203B268
thumb_func_end sub_801E76C
thumb_func_start sub_801E7AC
sub_801E7AC:
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0801E804
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r3, [r5]
movs r0, 0x1E
ldrsh r1, [r3, r0]
lsls r1, 3
adds r0, r1, 0
adds r0, 0x10
ldr r4, _0801E808
adds r1, r4
ldr r2, [r1]
ldr r3, [r3, 0x34]
movs r6, 0
str r6, [sp]
movs r1, 0
bl xxx_call_draw_string
ldr r1, [r5]
movs r2, 0x1E
ldrsh r0, [r1, r2]
lsls r0, 3
adds r4, 0x4
adds r0, r4
ldr r2, [r0]
ldr r3, [r1, 0x34]
str r6, [sp]
movs r0, 0xA
movs r1, 0x14
bl xxx_call_draw_string
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E804: .4byte gUnknown_203B268
_0801E808: .4byte gUnknown_80DAA98
thumb_func_end sub_801E7AC
.align 2,0

View File

@@ -2391,7 +2391,7 @@ _08043E46:
cmp r0, 0
beq _08043E58
adds r0, r5, 0
bl sub_8092BF4
bl GetMoveMaxPP
strb r0, [r4, 0x4]
_08043E58:
adds r4, 0x8
@@ -2710,7 +2710,7 @@ _080440D0:
bne _080440F0
ldrh r1, [r5]
adds r0, r2, 0
bl sub_8092AD4
bl InitZeroedPPPokemonMove
b _080440F8
.align 2, 0
_080440E4: .4byte gRecruitedPokemonRef

View File

@@ -4593,7 +4593,7 @@ _080473E0:
add r4, sp, 0x208
adds r0, r4, 0
ldr r1, _080474B8
bl sub_8092A88
bl InitPokemonMove
ldr r0, [r5, 0x10]
adds r1, r4, 0
bl sub_80571F0
@@ -5120,7 +5120,7 @@ _080477FA:
lsrs r7, r1, 31
ldr r1, _08047854
add r0, sp, 0x8
bl sub_8092A88
bl InitPokemonMove
ldr r0, [r4, 0x10]
add r1, sp, 0x8
bl sub_80571F0
@@ -6275,7 +6275,7 @@ sub_80482FC:
add r5, sp, 0x4
ldr r1, _0804833C
adds r0, r5, 0
bl sub_8092A88
bl InitPokemonMove
strb r6, [r5, 0x4]
movs r3, 0x80
lsls r3, 1

View File

@@ -118,12 +118,12 @@ _080485EE:
cmp r0, 0
beq _0804862C
adds r0, r5, 0
bl sub_8092BC0
bl GetMovePower
cmp r0, 0
beq _0804862C
ldrb r6, [r4, 0x5]
adds r0, r5, 0
bl sub_8092C0C
bl GetMoveUnk12
adds r1, r0, 0
ldrb r0, [r4, 0x5]
add r0, r10
@@ -1615,7 +1615,7 @@ _080492FA:
ldrb r4, [r5, 0x4]
adds r0, r7, 0
str r2, [sp]
bl sub_8092BF4
bl GetMoveMaxPP
ldr r2, [sp]
cmp r4, r0
beq _0804930C

View File

@@ -2451,7 +2451,7 @@ _08053734:
ldrb r1, [r1]
strb r1, [r0]
ldr r0, [sp, 0x18]
bl sub_8092CD8
bl GetMoveTargetsUser
lsls r0, 24
cmp r0, 0
beq _080537B4
@@ -2856,7 +2856,7 @@ _08053A86:
cmp r0, 0x5
bne _08053AE8
ldr r0, [sp, 0x18]
bl sub_8092CC0
bl GetMoveAffectedByMagicCoat
lsls r0, 24
cmp r0, 0
beq _08053B5C
@@ -3006,7 +3006,7 @@ _08053BC0:
cmp r0, 0
beq _08053BFA
mov r0, r8
bl sub_8092D08
bl IsBlockedBySoundproof
lsls r0, 24
cmp r0, 0
beq _08053BFA
@@ -5866,7 +5866,7 @@ sub_8055640:
bl sub_8071A44
mov r8, r0
adds r0, r5, 0
bl sub_8092C24
bl GetMoveCriticalHitChance
str r0, [sp]
add r0, sp, 0x14
str r0, [sp, 0x4]
@@ -5920,7 +5920,7 @@ sub_80556BC:
bl sub_8071A44
mov r8, r0
adds r0, r5, 0
bl sub_8092C24
bl GetMoveCriticalHitChance
str r0, [sp]
add r0, sp, 0x14
str r0, [sp, 0x4]
@@ -6179,7 +6179,7 @@ sub_80558DC:
mov r9, r2
ldr r1, [r1, 0x70]
mov r10, r1
bl sub_8092B00
bl GetMoveType
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1
@@ -7042,7 +7042,7 @@ sub_8055FA0:
adds r0, r1
ldrh r1, [r0]
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r1, [r7]
add r0, sp, 0x110
strb r1, [r0]
@@ -7084,7 +7084,7 @@ _0805602C:
adds r0, r1
ldrh r1, [r0]
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r1, [r7]
add r0, sp, 0x118
strb r1, [r0]
@@ -7142,7 +7142,7 @@ _08056084:
beq _080560CC
_080560AE:
ldrh r0, [r7, 0x2]
bl sub_809422C
bl DoesMoveCharge
lsls r0, 24
cmp r0, 0
beq _080560CC
@@ -7194,7 +7194,7 @@ _08056124:
cmp r0, 0
bne _08056132
ldrh r0, [r7, 0x2]
bl sub_8092CA8
bl GetMoveUseText
b _08056136
_08056132:
ldr r0, _08056194
@@ -7222,7 +7222,7 @@ _08056156:
cmp r0, 0x1
bne _080561A0
ldrh r0, [r7, 0x2]
bl sub_8092CF0
bl GetMoveAffectedByMuzzled
lsls r0, 24
cmp r0, 0
beq _080561A0
@@ -8461,7 +8461,7 @@ sub_8056B34:
lsls r4, 24
lsrs r4, 24
mov r0, r8
bl sub_8092BD8
bl GetMoveAccuracy
adds r5, r0, 0
movs r0, 0x64
bl DungeonRandomCapped
@@ -8608,7 +8608,7 @@ _08056C5A:
cmp r0, 0
beq _08056C86
mov r0, r8
bl sub_8092B00
bl GetMoveType
lsls r0, 24
lsrs r0, 24
bl sub_8092354
@@ -9152,7 +9152,7 @@ _0805706C: .4byte gUnknown_203B438
thumb_func_start sub_8057070
sub_8057070:
push {lr}
bl sub_8092BA8
bl GetMoveHitCount
cmp r0, 0
bne _08057082
movs r0, 0x2
@@ -9231,4 +9231,4 @@ _080570EA:
_080570F0: .4byte gUnknown_81069F4
thumb_func_end sub_80570AC
.align 2, 0
.align 2, 0

View File

@@ -392,7 +392,7 @@ sub_80573CC:
cmp r1, 0x5
bne _08057414
adds r0, r4, 0
bl sub_8092C54
bl GetMoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _0805743E
@@ -460,7 +460,7 @@ sub_805744C:
cmp r1, 0x5
bne _0805748E
adds r0, r4, 0
bl sub_8092C54
bl GetMoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _080574B6
@@ -603,7 +603,7 @@ sub_805755C:
b _08057580
_08057576:
adds r0, r4, 0
bl sub_809422C
bl DoesMoveCharge
lsls r0, 24
lsrs r0, 24
_08057580:

View File

@@ -162,7 +162,7 @@ _08057B12:
movs r1, 0xB0
lsls r1, 1
mov r0, sp
bl sub_8092A88
bl InitPokemonMove
ldrb r1, [r4]
movs r0, 0x20
orrs r0, r1
@@ -896,7 +896,7 @@ _080580A0:
bge _08058088
_080580B0:
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -1285,7 +1285,7 @@ sub_805836C:
adds r4, r0, 0
_0805838A:
adds r0, r2, 0
bl sub_8092B00
bl GetMoveType
lsls r0, 24
lsrs r0, 24
add r1, sp, 0x18
@@ -1470,7 +1470,7 @@ sub_80584C0:
movs r5, 0
_080584F0:
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -2902,7 +2902,7 @@ _08058F7E:
adds r0, r5, r4
ldrh r1, [r0]
mov r0, sp
bl sub_8092A88
bl InitPokemonMove
adds r4, 0x4
adds r5, r4
ldr r4, [r5]
@@ -2975,7 +2975,7 @@ sub_8059004:
adds r5, r2, 0
adds r6, r3, 0
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3094,7 +3094,7 @@ sub_80590D4:
mov r1, r9
strb r1, [r0]
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3125,7 +3125,7 @@ _0805911C:
_08059130: .4byte gUnknown_80FEB88
_08059134:
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3469,7 +3469,7 @@ _080593C8: .4byte gUnknown_80FE3BC
_080593CC:
adds r0, r5, 0
mov r1, r12
bl sub_8092A88
bl InitPokemonMove
ldr r0, _0805941C
adds r1, r5, 0
movs r2, 0
@@ -3765,7 +3765,7 @@ sub_80595EC:
add r0, sp, 0x18
strb r7, [r0]
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3785,7 +3785,7 @@ sub_80595EC:
_0805962C: .4byte gUnknown_80FEB8C
_08059630:
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3916,7 +3916,7 @@ sub_8059714:
add r0, sp, 0x18
strb r5, [r0]
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -4023,7 +4023,7 @@ sub_80597F0:
adds r5, r2, 0
adds r6, r3, 0
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -4328,7 +4328,7 @@ sub_8059A2C:
ldrb r0, [r0, 0x9]
mov r10, r0
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -4433,7 +4433,7 @@ sub_8059AF8:
add r0, sp, 0x18
strb r7, [r0]
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -4453,7 +4453,7 @@ sub_8059AF8:
_08059B38: .4byte gUnknown_80FEB90
_08059B3C:
adds r0, r5, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -4921,7 +4921,7 @@ _08059E8A:
bl sub_8071A44
adds r5, r0, 0
adds r0, r7, 0
bl sub_8092C24
bl GetMoveCriticalHitChance
str r0, [sp]
add r2, sp, 0x18
str r2, [sp, 0x4]
@@ -5103,7 +5103,7 @@ _08059FFE:
bl sub_8071A44
adds r5, r0, 0
adds r0, r7, 0
bl sub_8092C24
bl GetMoveCriticalHitChance
str r0, [sp]
add r2, sp, 0x18
str r2, [sp, 0x4]
@@ -6340,7 +6340,7 @@ _0805A94C:
add r4, sp, 0x1C
ldr r1, _0805AA44
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
adds r0, r5, 0
adds r1, r4, 0
bl sub_80571F0
@@ -7957,7 +7957,7 @@ _0805B588:
bge _0805B570
_0805B598:
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -8039,7 +8039,7 @@ sub_805B618:
adds r0, r4, r5
ldrh r1, [r0]
mov r0, sp
bl sub_8092A88
bl InitPokemonMove
adds r5, 0x4
adds r4, r5
ldr r4, [r4]
@@ -8295,7 +8295,7 @@ sub_805B808:
add r0, sp, 0x18
strb r5, [r0]
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -9523,7 +9523,7 @@ sub_805C138:
add r0, sp, 0x18
strb r5, [r0]
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -9643,7 +9643,7 @@ sub_805C208:
bl GetSizeOrbDmg
mov r10, r0
adds r0, r6, 0
bl sub_8092B00
bl GetMoveType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -10965,7 +10965,7 @@ sub_805CEB8:
cmp r0, 0x1
bne _0805CEE0
adds r0, r7, 0
bl sub_8092C3C
bl GetMoveCannotHitFrozen
lsls r0, 24
cmp r0, 0
beq _0805CEE0
@@ -24313,7 +24313,7 @@ sub_8063C88:
lsls r1, 1
adds r0, r1
ldrh r0, [r0]
bl sub_809422C
bl DoesMoveCharge
lsls r0, 24
cmp r0, 0
beq _08063CAE
@@ -24333,7 +24333,7 @@ _08063CAE:
adds r4, r0, r4
_08063CBC:
ldrh r0, [r4, 0x2]
bl sub_809422C
bl DoesMoveCharge
lsls r0, 24
cmp r0, 0
bne _08063CA6
@@ -31816,7 +31816,7 @@ sub_8067904:
str r0, [r1]
add r0, sp, 0x8
mov r1, r9
bl sub_8092A88
bl InitPokemonMove
adds r0, r6, 0
adds r0, 0xBC
ldrb r0, [r0]
@@ -37270,7 +37270,7 @@ _0806A3A0:
orrs r0, r1
strb r0, [r4, 0x1]
adds r0, r5, 0
bl sub_8092BF4
bl GetMoveMaxPP
strb r0, [r4, 0x4]
_0806A3C2:
adds r4, 0x8

View File

@@ -1558,4 +1558,4 @@ _08070B68:
bx r1
thumb_func_end sub_8070B48
.align 2, 0
.align 2, 0

View File

@@ -190,7 +190,7 @@ sub_8071A1C:
cmp r1, r0
beq _08071A38
adds r0, r2, 0
bl sub_8092B00
bl GetMoveType
lsls r0, 24
lsrs r0, 24
b _08071A3E
@@ -214,7 +214,7 @@ sub_8071A44:
cmp r1, r0
beq _08071A60
adds r0, r4, 0
bl sub_8092BC0
bl GetMovePower
ldrb r1, [r4, 0x5]
adds r0, r1
b _08071A6A
@@ -1983,7 +1983,7 @@ _080727E4:
bne _08072806
ldrh r1, [r6]
adds r0, r3, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r1, [r5]
movs r0, 0x4
orrs r0, r1
@@ -2177,7 +2177,7 @@ _08072964:
bne _08072980
adds r0, r2, 0
adds r1, r5, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r1, [r4, 0x1]
movs r0, 0x4
orrs r0, r1
@@ -6311,7 +6311,7 @@ _08074A46:
add r4, sp, 0x28
ldr r1, _08074B48
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r0, [r4]
movs r1, 0x10
orrs r0, r1

View File

@@ -6847,7 +6847,7 @@ _08079326:
ldrb r0, [r4, 0x4]
str r0, [sp]
adds r0, r5, 0
bl sub_8092BF4
bl GetMoveMaxPP
str r0, [sp, 0x4]
ldr r1, [sp]
ldr r0, [sp, 0x4]
@@ -12176,7 +12176,7 @@ _0807BCB0:
movs r1, 0xB0
lsls r1, 1
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
mov r0, sp
mov r1, r10
adds r2, r4, 0
@@ -12380,7 +12380,7 @@ _0807BE38:
b _0807BE54
_0807BE4A:
adds r0, r6, 0
bl sub_8092B90
bl GetMoveWeight
lsls r0, 24
lsrs r0, 24
_0807BE54:
@@ -12698,7 +12698,7 @@ _0807C06E:
cmp r0, 0x5
bne _0807C0B0
mov r0, r10
bl sub_8092C54
bl GetMoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _0807C0C4
@@ -13610,7 +13610,7 @@ _0807C77C:
_0807C78A:
mov r0, r8
movs r1, 0x2
bl sub_8092BD8
bl GetMoveAccuracy
adds r4, r0, 0
movs r0, 0x64
bl DungeonRandomCapped
@@ -14176,7 +14176,7 @@ _0807CBAC:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldrb r0, [r7, 0x7]
mov r10, r4
mov r9, r5
@@ -14394,7 +14394,7 @@ sub_807CD64:
_0807CD88:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8092AE0
bl GetMoveTargetingFlags
lsls r0, 16
asrs r0, 16
_0807CD94:
@@ -14625,7 +14625,7 @@ _0807CF4E:
add r4, sp, 0x1C
ldr r1, _0807D058
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldr r0, [sp, 0x28]
adds r1, r4, 0
bl sub_80571F0
@@ -16903,7 +16903,7 @@ sub_807E1A0:
add r4, sp, 0x1C
ldr r1, _0807E20C
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
adds r0, r6, 0
adds r1, r4, 0
bl sub_80571F0
@@ -19797,7 +19797,7 @@ _0807F8FA:
add r4, sp, 0xE4
ldr r1, _0807F9AC
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
adds r0, r6, 0
adds r1, r4, 0
bl sub_80571F0

View File

@@ -412,7 +412,7 @@ _080905A6:
adds r0, 0xCC
ldrh r1, [r0]
adds r0, r4, 0
bl sub_8092A88
bl InitPokemonMove
ldr r0, _080905E0
adds r1, r4, 0
movs r2, 0

749
asm/code_8094148.s Normal file
View File

@@ -0,0 +1,749 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8094268
sub_8094268:
push {r4-r6,lr}
adds r5, r0, 0
adds r3, r1, 0
asrs r0, r3, 16
asrs r1, r2, 16
adds r0, r1
lsls r0, 16
ldr r6, _080942B0
ands r3, r6
orrs r3, r0
adds r2, r3, r2
lsls r2, 16
lsrs r2, 16
ldr r4, _080942B4
ands r3, r4
orrs r3, r2
asrs r1, r3, 16
ldr r0, _080942B8
cmp r1, r0
ble _080942A6
adds r0, r3, 0x1
lsls r0, 16
lsrs r0, 16
ands r3, r4
orrs r3, r0
asrs r0, r3, 16
ldr r1, _080942BC
adds r0, r1
lsls r0, 16
ands r3, r6
orrs r3, r0
_080942A6:
str r3, [r5]
adds r0, r5, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080942B0: .4byte 0x0000ffff
_080942B4: .4byte 0xffff0000
_080942B8: .4byte 0x000003e7
_080942BC: .4byte 0xfffffc18
thumb_func_end sub_8094268
thumb_func_start sub_80942C0
sub_80942C0:
push {r4,r5,lr}
adds r5, r0, 0
adds r3, r1, 0
asrs r0, r3, 16
asrs r1, r2, 16
subs r0, r1
lsls r0, 16
ldr r4, _08094310
ands r3, r4
orrs r3, r0
subs r2, r3, r2
lsls r2, 16
lsrs r2, 16
ldr r1, _08094314
ands r3, r1
orrs r3, r2
cmp r3, 0
bge _080942FC
subs r0, r3, 0x1
lsls r0, 16
lsrs r0, 16
ands r3, r1
orrs r3, r0
asrs r0, r3, 16
movs r2, 0xFA
lsls r2, 2
adds r0, r2
lsls r0, 16
ands r3, r4
orrs r3, r0
_080942FC:
lsls r0, r3, 16
cmp r0, 0
bge _08094304
movs r3, 0
_08094304:
str r3, [r5]
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08094310: .4byte 0x0000ffff
_08094314: .4byte 0xffff0000
thumb_func_end sub_80942C0
thumb_func_start sub_8094318
sub_8094318:
push {r4,lr}
adds r4, r0, 0
adds r3, r1, 0
lsls r0, r3, 16
asrs r1, r0, 16
lsls r0, r2, 16
asrs r0, 16
cmp r1, r0
bgt _08094336
cmp r1, r0
blt _0809433A
asrs r1, r3, 16
asrs r0, r2, 16
cmp r1, r0
ble _0809433A
_08094336:
str r2, [r4]
b _0809433C
_0809433A:
str r3, [r4]
_0809433C:
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8094318
thumb_func_start sub_8094344
sub_8094344:
push {r4,lr}
adds r4, r0, 0
adds r3, r1, 0
lsls r0, r3, 16
asrs r1, r0, 16
lsls r0, r2, 16
asrs r0, 16
cmp r1, r0
bgt _08094362
cmp r1, r0
blt _08094366
asrs r1, r3, 16
asrs r0, r2, 16
cmp r1, r0
ble _08094366
_08094362:
str r3, [r4]
b _08094368
_08094366:
str r2, [r4]
_08094368:
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8094344
thumb_func_start sub_8094370
sub_8094370:
push {r4,r5,lr}
adds r5, r0, 0
lsls r1, 16
lsls r2, 16
ldr r4, _08094398
lsrs r3, r1, 16
orrs r3, r2
asrs r2, 16
ldr r1, _0809439C
asrs r0, r1, 16
cmp r2, r0
ble _0809438C
ands r3, r4
orrs r3, r1
_0809438C:
str r3, [r5]
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08094398: .4byte 0x0000ffff
_0809439C: .4byte 0x03e70000
thumb_func_end sub_8094370
thumb_func_start sub_80943A0
sub_80943A0:
lsls r1, 16
lsrs r2, r1, 16
str r2, [r0]
bx lr
thumb_func_end sub_80943A0
thumb_func_start sub_80943A8
sub_80943A8:
push {r4,r5,lr}
ldr r3, [r1, 0x4]
lsrs r2, r3, 16
ldr r1, _080943D4
ands r5, r1
orrs r5, r2
ldr r4, _080943D8
adds r2, r4, 0
ands r2, r3
lsls r1, r2, 5
subs r1, r2
lsls r1, 2
adds r1, r2
lsls r1, 3
lsrs r1, 16
lsls r1, 16
ands r5, r4
orrs r5, r1
str r5, [r0]
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080943D4: .4byte 0xffff0000
_080943D8: .4byte 0x0000ffff
thumb_func_end sub_80943A8
thumb_func_start sub_80943DC
sub_80943DC:
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r4, r1, 0
lsls r1, r4, 16
asrs r1, 16
lsls r0, r1, 5
subs r0, r1
lsls r0, 2
adds r0, r1
lsls r0, 3
asrs r1, r4, 16
adds r0, r1
lsls r3, r2, 16
asrs r3, 16
lsls r1, r3, 5
subs r1, r3
lsls r1, 2
adds r1, r3
lsls r1, 3
asrs r2, 16
adds r1, r2
muls r0, r1
movs r5, 0xFA
lsls r5, 2
adds r1, r5, 0
bl __divsi3
adds r6, r0, 0
adds r1, r5, 0
bl __divsi3
lsls r0, 16
lsrs r0, 16
ldr r1, _08094448
ands r4, r1
orrs r4, r0
adds r0, r6, 0
adds r1, r5, 0
bl __modsi3
lsls r0, 16
ldr r1, _0809444C
ands r1, r4
orrs r0, r1
mov r1, r8
str r0, [r1]
mov r0, r8
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08094448: .4byte 0xffff0000
_0809444C: .4byte 0x0000ffff
thumb_func_end sub_80943DC
thumb_func_start sub_8094450
sub_8094450:
push {lr}
adds r1, r0, 0
lsls r0, r1, 16
asrs r2, r0, 16
cmp r2, 0
bne _0809446A
asrs r0, r1, 16
cmp r0, 0
bne _08094466
movs r0, 0
b _08094476
_08094466:
movs r0, 0x1
b _08094476
_0809446A:
asrs r0, r1, 16
cmp r0, 0
bne _08094474
adds r0, r2, 0
b _08094476
_08094474:
adds r0, r2, 0x1
_08094476:
pop {r1}
bx r1
thumb_func_end sub_8094450
thumb_func_start sub_809447C
sub_809447C:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x10
bl RestoreIntegerBits
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x10
bl RestoreIntegerBits
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_809447C
thumb_func_start sub_809449C
sub_809449C:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x10
bl SaveIntegerBits
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x10
bl SaveIntegerBits
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_809449C
thumb_func_start sub_80944BC
sub_80944BC:
push {r4,lr}
sub sp, 0x8
adds r4, r1, 0
lsls r0, 16
asrs r1, r0, 16
ldr r0, _080944F4
cmp r1, r0
bgt _08094500
lsls r1, 16
lsrs r1, 16
mov r0, sp
bl sub_8092AA8
ldr r0, _080944F8
mov r1, sp
movs r2, 0
bl sub_80928C0
ldr r0, _080944FC
ldr r0, [r0]
adds r2, r4, 0
adds r2, 0xC8
adds r1, r4, 0
movs r3, 0
bl xxx_format_string
b _08094516
.align 2, 0
_080944F4: .4byte 0x000001f3
_080944F8: .4byte gUnknown_202DE58
_080944FC: .4byte gUnknown_811383C
_08094500:
ldr r0, _08094520
ldr r2, _08094524
adds r1, r2
lsls r1, 3
adds r0, 0x4
adds r1, r0
ldr r1, [r1]
adds r0, r4, 0
movs r2, 0xC8
bl strncpy
_08094516:
add sp, 0x8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08094520: .4byte gUnknown_8113080
_08094524: .4byte 0xfffffe0c
thumb_func_end sub_80944BC
thumb_func_start sub_8094528
sub_8094528:
push {lr}
lsls r0, 16
asrs r1, r0, 16
ldr r0, _08094544
cmp r1, r0
ble _08094550
ldr r0, _08094548
ldr r2, _0809454C
adds r1, r2
lsls r1, 3
adds r1, r0
ldrb r0, [r1]
b _08094552
.align 2, 0
_08094544: .4byte 0x000001f3
_08094548: .4byte gUnknown_8113080
_0809454C: .4byte 0xfffffe0c
_08094550:
movs r0, 0x1
_08094552:
pop {r1}
bx r1
thumb_func_end sub_8094528
thumb_func_start sub_8094558
sub_8094558:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xCC
adds r7, r0, 0
adds r4, r1, 0
adds r6, r2, 0
bl sub_80073B8
movs r5, 0
str r5, [sp]
movs r0, 0x10
movs r1, 0
adds r2, r4, 0
adds r3, r7, 0
bl xxx_format_and_draw
ldr r4, _080945D0
adds r1, r6, 0
adds r1, 0x18
adds r0, r4, 0
bl sub_8090208
ldr r0, _080945D4
ldr r2, [r0]
str r5, [sp]
movs r0, 0x4
movs r1, 0x10
adds r3, r7, 0
bl xxx_format_and_draw
movs r5, 0x1A
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0xA
bl sub_80922B4
adds r4, 0x50
adds r1, r6, 0
adds r1, 0xA
adds r0, r4, 0
movs r2, 0xA
bl sub_80922B4
movs r1, 0x14
ldrsh r0, [r6, r1]
bl sub_8094528
lsls r0, 24
cmp r0, 0
beq _080945DC
ldr r0, _080945D8
ldr r0, [r0]
add r2, sp, 0xCC
add r1, sp, 0x4
movs r3, 0
bl xxx_format_string
b _080945EA
.align 2, 0
_080945D0: .4byte gAvailablePokemonNames
_080945D4: .4byte gUnknown_8113850
_080945D8: .4byte gUnknown_8113868
_080945DC:
ldr r0, _0809465C
ldr r0, [r0]
add r2, sp, 0xCC
add r1, sp, 0x4
movs r3, 0
bl xxx_format_string
_080945EA:
add r0, sp, 0x4
bl sub_8008ED0
movs r4, 0xB0
subs r0, r4, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
movs r1, 0
mov r8, r1
str r1, [sp]
adds r1, r5, 0
add r2, sp, 0x4
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0xA
movs r1, 0x14
ldrsh r0, [r6, r1]
add r1, sp, 0x4
bl sub_80944BC
add r0, sp, 0x4
bl sub_8008ED0
subs r4, r0
lsrs r0, r4, 31
adds r4, r0
asrs r0, r4, 1
mov r1, r8
str r1, [sp]
adds r1, r5, 0
add r2, sp, 0x4
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0x10
ldr r1, _08094660
ldr r0, [r6, 0x20]
str r0, [r1]
adds r0, r6, 0
adds r0, 0x2A
ldrb r0, [r0]
str r0, [r1, 0x4]
cmp r0, 0x63
ble _08094668
ldr r0, _08094664
ldr r2, [r0]
mov r0, r8
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _0809467A
.align 2, 0
_0809465C: .4byte gUnknown_8113870
_08094660: .4byte gUnknown_202DE30
_08094664: .4byte gUnknown_81138C0
_08094668:
ldr r0, _080946CC
ldr r2, [r0]
mov r1, r8
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_0809467A:
adds r5, 0xA
ldr r4, _080946D0
movs r1, 0x24
ldrsh r0, [r6, r1]
str r0, [r4]
ldr r0, _080946D4
ldr r2, [r0]
movs r0, 0
mov r8, r0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0xA
adds r0, r6, 0
adds r0, 0x26
ldrb r2, [r0]
str r2, [r4]
adds r0, 0x2
ldrb r0, [r0]
str r0, [r4, 0x4]
adds r0, r6, 0
adds r0, 0x2B
ldrb r1, [r0]
cmp r1, 0
beq _080946DC
adds r0, r1, 0
adds r0, r2, r0
str r0, [r4]
ldr r0, _080946D8
ldr r2, [r0]
mov r1, r8
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _080946EC
.align 2, 0
_080946CC: .4byte gUnknown_8113898
_080946D0: .4byte gUnknown_202DE30
_080946D4: .4byte gUnknown_81138D0
_080946D8: .4byte gUnknown_8113950
_080946DC:
ldr r0, _08094714
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_080946EC:
adds r0, r6, 0
adds r0, 0x2D
ldrb r1, [r0]
cmp r1, 0
beq _08094720
ldr r2, _08094718
ldr r0, [r2, 0x4]
adds r0, r1
str r0, [r2, 0x4]
ldr r0, _0809471C
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _08094730
.align 2, 0
_08094714: .4byte gUnknown_81138E4
_08094718: .4byte gUnknown_202DE30
_0809471C: .4byte gUnknown_8113974
_08094720:
ldr r0, _08094768
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_08094730:
adds r5, 0xA
ldr r2, _0809476C
adds r0, r6, 0
adds r0, 0x27
ldrb r3, [r0]
str r3, [r2]
adds r0, 0x2
ldrb r0, [r0]
str r0, [r2, 0x4]
adds r0, r6, 0
adds r0, 0x2C
ldrb r1, [r0]
cmp r1, 0
beq _08094774
adds r0, r1, 0
adds r0, r3, r0
str r0, [r2]
ldr r0, _08094770
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _08094784
.align 2, 0
_08094768: .4byte gUnknown_8113900
_0809476C: .4byte gUnknown_202DE30
_08094770: .4byte gUnknown_8113990
_08094774:
ldr r0, _080947AC
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_08094784:
adds r0, r6, 0
adds r0, 0x2E
ldrb r1, [r0]
cmp r1, 0
beq _080947B8
ldr r2, _080947B0
ldr r0, [r2, 0x4]
adds r0, r1
str r0, [r2, 0x4]
ldr r0, _080947B4
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _080947C8
.align 2, 0
_080947AC: .4byte gUnknown_8113918
_080947B0: .4byte gUnknown_202DE30
_080947B4: .4byte gUnknown_81139B4
_080947B8:
ldr r0, _080947E4
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_080947C8:
adds r5, 0x10
adds r2, r6, 0
adds r2, 0x1C
ldrb r1, [r6, 0x1C]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080947EC
ldr r0, _080947E8
adds r1, r2, 0
movs r2, 0
bl sub_8090E14
b _080947F6
.align 2, 0
_080947E4: .4byte gUnknown_8113934
_080947E8: .4byte gUnknown_202DE58
_080947EC:
ldr r0, _0809481C
ldr r1, _08094820
ldr r1, [r1]
bl strcpy
_080947F6:
ldr r0, _08094824
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
adds r0, r7, 0
bl sub_80073E0
add sp, 0xCC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809481C: .4byte gUnknown_202DE58
_08094820: .4byte gUnknown_81139B8
_08094824: .4byte gUnknown_81139CC
thumb_func_end sub_8094558
.align 2,0

View File

@@ -1,391 +0,0 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8027CA0
sub_8027CA0:
push {lr}
movs r0, 0x1
bl sub_801EF38
cmp r0, 0x4
bhi _08027CFA
lsls r0, 2
ldr r1, _08027CB8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08027CB8: .4byte _08027CBC
.align 2, 0
_08027CBC:
.4byte _08027CFA
.4byte _08027CFA
.4byte _08027CF0
.4byte _08027CD0
.4byte _08027CD0
_08027CD0:
bl sub_801F194
ldr r1, _08027CEC
ldr r1, [r1]
str r0, [r1, 0x20]
lsls r0, 3
adds r0, r1, r0
ldrh r0, [r0, 0x2A]
strh r0, [r1, 0x24]
movs r0, 0x10
bl SetFriendAreaActionMenuState
b _08027CFA
.align 2, 0
_08027CEC: .4byte gUnknown_203B2BC
_08027CF0:
bl sub_801F214
movs r0, 0x2
bl SetFriendAreaActionMenuState
_08027CFA:
pop {r0}
bx r0
thumb_func_end sub_8027CA0
thumb_func_start sub_8027D00
sub_8027D00:
push {lr}
bl sub_801F890
cmp r0, 0x1
bls _08027D18
cmp r0, 0x3
bhi _08027D18
bl sub_801F8D0
movs r0, 0xF
bl SetFriendAreaActionMenuState
_08027D18:
pop {r0}
bx r0
thumb_func_end sub_8027D00
thumb_func_start sub_8027D1C
sub_8027D1C:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08027D34
ldr r0, _08027D3C
ldr r0, [r0]
ldr r0, [r0, 0x4]
bl SetFriendAreaActionMenuState
_08027D34:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_08027D3C: .4byte gUnknown_203B2BC
thumb_func_end sub_8027D1C
thumb_func_start sub_8027D40
sub_8027D40:
push {r4-r6,lr}
sub sp, 0x14
adds r6, r0, 0
adds r5, r1, 0
bl sub_8008C54
adds r0, r6, 0
bl sub_80073B8
add r4, sp, 0x10
adds r0, r4, 0
adds r1, r5, 0
bl HeldItemToSlot
movs r5, 0
str r5, [sp, 0x4]
add r0, sp, 0x4
strb r5, [r0, 0x4]
adds r1, r0, 0
movs r0, 0x1
strb r0, [r1, 0x8]
strb r0, [r4]
ldr r0, _08027D94
adds r1, r4, 0
add r2, sp, 0x4
bl sub_8090E14
ldr r2, _08027D98
str r5, [sp]
movs r0, 0x4
movs r1, 0x3
adds r3, r6, 0
bl xxx_format_and_draw
adds r0, r6, 0
bl sub_80073E0
add sp, 0x14
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08027D94: .4byte gUnknown_202DE58
_08027D98: .4byte gUnknown_80DD958
thumb_func_end sub_8027D40
thumb_func_start sub_8027D9C
sub_8027D9C:
push {lr}
adds r1, r0, 0
ldrb r0, [r1, 0x2]
cmp r0, 0
bne _08027DC0
movs r2, 0
ldrb r0, [r1, 0x4]
cmp r0, 0x41
bne _08027DB0
movs r2, 0x1
_08027DB0:
cmp r2, 0
beq _08027DC4
movs r0, 0x8
bl sub_80023E4
lsls r0, 24
cmp r0, 0
bne _08027DC4
_08027DC0:
movs r0, 0
b _08027DC6
_08027DC4:
movs r0, 0x1
_08027DC6:
pop {r1}
bx r1
thumb_func_end sub_8027D9C
thumb_func_start sub_8027DCC
sub_8027DCC:
push {r4,lr}
adds r4, r0, 0
bl sub_808D3BC
cmp r0, r4
beq _08027E0E
bl sub_808D3F8
cmp r0, r4
beq _08027E0E
ldrb r0, [r4, 0x2]
cmp r0, 0
bne _08027E0E
movs r1, 0
ldrb r0, [r4, 0x4]
cmp r0, 0x41
bne _08027DF0
movs r1, 0x1
_08027DF0:
cmp r1, 0
beq _08027E00
movs r0, 0x8
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _08027E0E
_08027E00:
adds r0, r4, 0
bl sub_8027E18
cmp r0, 0x3
beq _08027E0E
movs r0, 0x1
b _08027E10
_08027E0E:
movs r0, 0
_08027E10:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8027DCC
thumb_func_start sub_8027E18
sub_8027E18:
push {r4,lr}
adds r4, r0, 0
adds r0, 0x28
ldrb r0, [r0]
cmp r0, 0
bne _08027E28
movs r0, 0
b _08027E46
_08027E28:
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
bgt _08027E34
movs r0, 0x1
b _08027E46
_08027E34:
adds r0, r4, 0
bl sub_8027E4C
lsls r0, 24
cmp r0, 0
bne _08027E44
movs r0, 0x3
b _08027E46
_08027E44:
movs r0, 0x2
_08027E46:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8027E18
thumb_func_start sub_8027E4C
sub_8027E4C:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r5, 0
adds r4, 0x28
ldrb r0, [r4]
bl IsNotMoneyOrUsedTMItem
lsls r0, 24
cmp r0, 0
beq _08027E88
ldrb r0, [r4]
bl IsThrowableItem
lsls r0, 24
cmp r0, 0
beq _08027E94
ldr r0, _08027E8C
ldr r1, [r0]
ldrb r0, [r4]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrh r1, [r1]
adds r0, r5, 0
adds r0, 0x29
ldrb r0, [r0]
adds r1, r0
ldr r0, _08027E90
cmp r1, r0
ble _08027EA8
_08027E88:
movs r0, 0
b _08027EAA
.align 2, 0
_08027E8C: .4byte gTeamInventory_203B460
_08027E90: .4byte 0x000003e7
_08027E94:
ldr r0, _08027EB0
ldr r1, [r0]
ldrb r0, [r4]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrh r1, [r1]
ldr r0, _08027EB4
cmp r1, r0
bhi _08027E88
_08027EA8:
movs r0, 0x1
_08027EAA:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08027EB0: .4byte gTeamInventory_203B460
_08027EB4: .4byte 0x000003e6
thumb_func_end sub_8027E4C
thumb_func_start sub_8027EB8
sub_8027EB8:
push {r4,lr}
ldr r4, _08027ED4
ldr r0, [r4]
ldr r0, [r0, 0x18]
bl sub_8027E18
cmp r0, 0x1
beq _08027ED8
cmp r0, 0x1
bcc _08027F7C
cmp r0, 0x2
beq _08027F0C
b _08027F7C
.align 2, 0
_08027ED4: .4byte gUnknown_203B2BC
_08027ED8:
ldr r0, _08027F08
bl PlaySound
ldr r0, [r4]
adds r0, 0x14
bl sub_8091274
bl FillInventoryGaps
ldr r0, [r4]
movs r1, 0
strb r1, [r0, 0x14]
ldr r0, [r4]
strb r1, [r0, 0x15]
ldr r1, [r4]
movs r2, 0x8
ldrsh r0, [r1, r2]
adds r1, 0x14
bl GivePokemonItem
movs r0, 0x6
bl SetFriendAreaActionMenuState
b _08027F82
.align 2, 0
_08027F08: .4byte 0x0000014d
_08027F0C:
ldr r0, _08027F38
bl PlaySound
ldr r0, [r4]
ldrb r0, [r0, 0x14]
bl IsThrowableItem
lsls r0, 24
cmp r0, 0
beq _08027F40
ldr r0, _08027F3C
ldr r1, [r0]
ldr r2, [r4]
ldrb r0, [r2, 0x14]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrh r0, [r1]
ldrb r2, [r2, 0x15]
adds r0, r2
b _08027F52
.align 2, 0
_08027F38: .4byte 0x0000014d
_08027F3C: .4byte gTeamInventory_203B460
_08027F40:
ldr r0, _08027F74
ldr r1, [r0]
ldr r0, [r4]
ldrb r0, [r0, 0x14]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrh r0, [r1]
adds r0, 0x1
_08027F52:
strh r0, [r1]
ldr r1, _08027F78
ldr r0, [r1]
movs r2, 0
strb r2, [r0, 0x14]
ldr r0, [r1]
strb r2, [r0, 0x15]
ldr r1, [r1]
movs r2, 0x8
ldrsh r0, [r1, r2]
adds r1, 0x14
bl GivePokemonItem
movs r0, 0x7
bl SetFriendAreaActionMenuState
b _08027F82
.align 2, 0
_08027F74: .4byte gTeamInventory_203B460
_08027F78: .4byte gUnknown_203B2BC
_08027F7C:
movs r0, 0x2
bl SetFriendAreaActionMenuState
_08027F82:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8027EB8
.align 2,0

View File

@@ -3915,7 +3915,7 @@ _08020D38:
bne _08020D34
ldrh r1, [r3, 0x1E]
adds r0, r2, 0
bl sub_8092AD4
bl InitZeroedPPPokemonMove
_08020D52:
cmp r5, 0x3
ble _08020D5E

View File

@@ -356,653 +356,4 @@ _08018582:
bx r0
thumb_func_end sub_80184D4
thumb_func_start sub_8018588
sub_8018588:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
ldr r4, _080185C4
ldr r0, [r4]
adds r0, 0x70
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _080185B4
ldr r0, [r4]
adds r0, 0x70
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _080185B4
ldr r0, [r4]
str r1, [r0, 0x14]
_080185B4:
ldr r0, [sp]
cmp r0, 0x2
beq _080185CE
cmp r0, 0x2
bgt _080185C8
cmp r0, 0x1
beq _08018610
b _08018616
.align 2, 0
_080185C4: .4byte gUnknown_203B20C
_080185C8:
cmp r0, 0x3
beq _080185EA
b _08018616
_080185CE:
bl GetNumberOfFilledInventorySlots
cmp r0, 0
beq _080185F6
movs r0, 0
bl sub_801CF50
lsls r0, 24
cmp r0, 0
bne _080185F6
movs r0, 0x4
bl sub_8017F10
b _08018616
_080185EA:
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
beq _08018608
_080185F6:
ldr r0, _08018604
ldr r0, [r0]
adds r0, 0x70
movs r1, 0x1
bl sub_8012EA4
b _08018616
.align 2, 0
_08018604: .4byte gUnknown_203B20C
_08018608:
movs r0, 0xA
bl sub_8017F10
b _08018616
_08018610:
movs r0, 0x3
bl sub_8017F10
_08018616:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8018588
thumb_func_start sub_8018620
sub_8018620:
push {r4-r7,lr}
movs r0, 0x1
bl sub_801A6E8
cmp r0, 0x3
beq _0801863C
cmp r0, 0x3
bhi _08018636
cmp r0, 0x2
beq _080186E8
b _080186F2
_08018636:
cmp r0, 0x4
beq _080186C0
b _080186F2
_0801863C:
bl sub_801AEA8
cmp r0, 0
beq _08018698
movs r5, 0
ldr r6, _0801868C
movs r7, 0
_0801864A:
adds r0, r5, 0
bl sub_801AED0
cmp r0, 0
beq _0801866A
lsls r4, r5, 2
ldr r0, [r6]
adds r0, r4
bl MoveToStorage
ldr r0, [r6]
adds r0, r4
strb r7, [r0, 0x2]
ldr r0, [r6]
adds r0, r4
strb r7, [r0]
_0801866A:
adds r5, 0x1
cmp r5, 0x13
ble _0801864A
bl FillInventoryGaps
bl sub_801AE84
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _08018690
bl sub_801A928
movs r0, 0x1
bl sub_8017F10
b _080186F2
.align 2, 0
_0801868C: .4byte gTeamInventory_203B460
_08018690:
movs r0, 0x5
bl sub_8017F10
b _080186F2
_08018698:
bl sub_801A8AC
ldr r1, _080186B8
ldr r2, [r1]
str r0, [r2, 0xC]
ldr r1, _080186BC
ldr r1, [r1]
lsls r0, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x8]
movs r0, 0x6
bl sub_8017F10
b _080186F2
.align 2, 0
_080186B8: .4byte gUnknown_203B20C
_080186BC: .4byte gTeamInventory_203B460
_080186C0:
bl sub_801A8AC
ldr r1, _080186E0
ldr r2, [r1]
str r0, [r2, 0xC]
ldr r1, _080186E4
ldr r1, [r1]
lsls r0, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x8]
movs r0, 0x7
bl sub_8017F10
b _080186F2
.align 2, 0
_080186E0: .4byte gUnknown_203B20C
_080186E4: .4byte gTeamInventory_203B460
_080186E8:
bl sub_801A928
movs r0, 0x1
bl sub_8017F10
_080186F2:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8018620
thumb_func_start sub_80186F8
sub_80186F8:
push {r4-r7,lr}
sub sp, 0x4
movs r0, 0x1
bl sub_801CA08
cmp r0, 0x2
bne _08018708
b _08018838
_08018708:
cmp r0, 0x2
bhi _08018714
cmp r0, 0x1
bne _08018712
b _08018844
_08018712:
b _0801884A
_08018714:
cmp r0, 0x3
beq _0801871E
cmp r0, 0x4
beq _0801880C
b _0801884A
_0801871E:
bl sub_801CFB8
cmp r0, 0
beq _080187E0
movs r6, 0
mov r5, sp
ldr r7, _0801876C
_0801872C:
lsls r0, r6, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl sub_801CFE0
cmp r0, 0
beq _080187B2
ldr r1, _08018770
ldr r0, [sp]
ands r0, r1
orrs r0, r4
str r0, [sp]
ldrb r0, [r5]
bl IsThrowableItem
lsls r0, 24
cmp r0, 0
beq _08018786
ldr r2, _08018774
ldr r1, [r2]
ldrb r0, [r5]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrh r1, [r1]
cmp r1, 0x63
bls _08018778
ldr r0, [sp]
ands r0, r7
movs r1, 0xC6
lsls r1, 7
b _08018780
.align 2, 0
_0801876C: .4byte 0xffff00ff
_08018770: .4byte 0xffffff00
_08018774: .4byte gTeamInventory_203B460
_08018778:
lsls r1, 24
lsrs r1, 16
ldr r0, [sp]
ands r0, r7
_08018780:
orrs r0, r1
str r0, [sp]
b _08018794
_08018786:
ldr r0, [sp]
ands r0, r7
movs r1, 0x80
lsls r1, 1
orrs r0, r1
str r0, [sp]
ldr r2, _080187DC
_08018794:
ldr r2, [r2]
ldrb r0, [r5]
lsls r0, 1
adds r2, 0x50
adds r2, r0
ldr r0, [sp]
lsrs r0, 8
lsls r0, 24
lsrs r0, 24
ldrh r1, [r2]
subs r1, r0
strh r1, [r2]
mov r0, sp
bl sub_8091274
_080187B2:
adds r6, 0x1
cmp r6, 0xEF
ble _0801872C
bl FillInventoryGaps
bl sub_801CF94
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
bne _08018838
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
bgt _08018838
movs r0, 0xB
bl sub_8017F10
b _0801884A
.align 2, 0
_080187DC: .4byte gTeamInventory_203B460
_080187E0:
bl sub_801CB24
ldr r4, _08018808
ldr r1, [r4]
strb r0, [r1, 0x10]
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x8
ldrb r1, [r1, 0x10]
movs r2, 0
bl xxx_init_itemslot_8090A8C
ldr r1, [r4]
movs r0, 0x1
strb r0, [r1, 0x9]
movs r0, 0xD
bl sub_8017F10
b _0801884A
.align 2, 0
_08018808: .4byte gUnknown_203B20C
_0801880C:
bl sub_801CB24
ldr r4, _08018834
ldr r1, [r4]
strb r0, [r1, 0x10]
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x8
ldrb r1, [r1, 0x10]
movs r2, 0
bl xxx_init_itemslot_8090A8C
ldr r1, [r4]
movs r0, 0x1
strb r0, [r1, 0x9]
movs r0, 0xE
bl sub_8017F10
b _0801884A
.align 2, 0
_08018834: .4byte gUnknown_203B20C
_08018838:
bl sub_801CBB8
movs r0, 0x1
bl sub_8017F10
b _0801884A
_08018844:
movs r0, 0
bl sub_801AD34
_0801884A:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80186F8
thumb_func_start sub_8018854
sub_8018854:
push {r4,lr}
sub sp, 0x4
movs r0, 0
bl sub_801CA08
ldr r4, _080188E0
ldr r0, [r4]
adds r0, 0x70
bl sub_8012FD8
ldr r0, [r4]
adds r0, 0xC0
bl sub_8013BBC
cmp r0, 0x1
beq _080188F8
cmp r0, 0x1
bcc _080188FC
cmp r0, 0x2
beq _080188F0
cmp r0, 0x3
bne _080188FC
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0xC0
ldr r0, [r0]
strb r0, [r1, 0x9]
ldr r0, _080188E4
ldr r1, [r0]
ldr r3, [r4]
ldrb r0, [r3, 0xA]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrb r2, [r3, 0x9]
ldrh r0, [r1]
subs r0, r2
strh r0, [r1]
ldrb r2, [r3, 0xA]
ldr r1, _080188E8
ldr r0, [sp]
ands r0, r1
orrs r0, r2
str r0, [sp]
ldrb r1, [r3, 0x9]
lsls r1, 8
ldr r2, _080188EC
ands r0, r2
orrs r0, r1
str r0, [sp]
mov r0, sp
bl sub_8091274
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
bne _080188D2
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _080188F0
_080188D2:
bl sub_801CBB8
movs r0, 0x1
bl sub_8017F10
b _080188FC
.align 2, 0
_080188E0: .4byte gUnknown_203B20C
_080188E4: .4byte gTeamInventory_203B460
_080188E8: .4byte 0xffffff00
_080188EC: .4byte 0xffff00ff
_080188F0:
movs r0, 0xB
bl sub_8017F10
b _080188FC
_080188F8:
bl sub_8018280
_080188FC:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8018854
thumb_func_start sub_8018904
sub_8018904:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_801A6E8
ldr r4, _08018944
ldr r0, [r4]
adds r0, 0x70
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08018934
ldr r0, [r4]
adds r0, 0x70
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _08018934
ldr r0, [r4]
str r1, [r0, 0x18]
_08018934:
ldr r0, [sp]
cmp r0, 0x2
beq _0801894E
cmp r0, 0x2
bgt _08018948
cmp r0, 0x1
beq _080189BA
b _080189C0
.align 2, 0
_08018944: .4byte gUnknown_203B20C
_08018948:
cmp r0, 0x4
beq _080189AC
b _080189C0
_0801894E:
ldr r4, _08018978
ldr r0, [r4]
ldrb r0, [r0, 0xA]
bl IsNotMoneyOrUsedTMItem
lsls r0, 24
cmp r0, 0
beq _0801896C
ldr r0, [r4]
ldr r0, [r0, 0xC]
bl sub_801ADA0
lsls r0, 24
cmp r0, 0
bne _0801897C
_0801896C:
ldr r0, [r4]
adds r0, 0x70
movs r1, 0x1
bl sub_8012EA4
b _080189C0
.align 2, 0
_08018978: .4byte gUnknown_203B20C
_0801897C:
ldr r0, [r4]
adds r0, 0x8
bl MoveToStorage
ldr r0, [r4]
ldr r0, [r0, 0xC]
bl ShiftItemsDownFrom
bl FillInventoryGaps
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _080189A4
bl sub_801A928
movs r0, 0x1
bl sub_8017F10
b _080189C0
_080189A4:
movs r0, 0x5
bl sub_8017F10
b _080189C0
_080189AC:
movs r0, 0
bl sub_8099690
movs r0, 0x7
bl sub_8017F10
b _080189C0
_080189BA:
movs r0, 0x5
bl sub_8017F10
_080189C0:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8018904
thumb_func_start sub_80189C8
sub_80189C8:
push {r4,lr}
sub sp, 0x8
movs r0, 0
str r0, [sp]
bl sub_801CA08
ldr r4, _08018A08
ldr r0, [r4]
adds r0, 0x70
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _080189F8
ldr r0, [r4]
adds r0, 0x70
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _080189F8
ldr r0, [r4]
str r1, [r0, 0x1C]
_080189F8:
ldr r0, [sp]
cmp r0, 0x3
beq _08018A12
cmp r0, 0x3
bgt _08018A0C
cmp r0, 0x1
beq _08018AB8
b _08018ABE
.align 2, 0
_08018A08: .4byte gUnknown_203B20C
_08018A0C:
cmp r0, 0x4
beq _08018AB0
b _08018ABE
_08018A12:
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018A2C
ldr r0, _08018A28
ldr r0, [r0]
adds r0, 0x70
movs r1, 0x1
bl sub_8012EA4
b _08018ABE
.align 2, 0
_08018A28: .4byte gUnknown_203B20C
_08018A2C:
ldr r4, _08018A44
ldr r0, [r4]
ldrb r0, [r0, 0xA]
bl IsThrowableItem
lsls r0, 24
cmp r0, 0
beq _08018A48
movs r0, 0xC
bl sub_8017F10
b _08018ABE
.align 2, 0
_08018A44: .4byte gUnknown_203B20C
_08018A48:
ldr r0, _08018A9C
ldr r1, [r0]
ldr r3, [r4]
ldrb r0, [r3, 0xA]
lsls r0, 1
adds r1, 0x50
adds r1, r0
ldrb r2, [r3, 0x9]
ldrh r0, [r1]
subs r0, r2
strh r0, [r1]
ldrb r2, [r3, 0xA]
ldr r1, _08018AA0
ldr r0, [sp, 0x4]
ands r0, r1
orrs r0, r2
str r0, [sp, 0x4]
ldrb r1, [r3, 0x9]
lsls r1, 8
ldr r2, _08018AA4
ands r0, r2
orrs r0, r1
str r0, [sp, 0x4]
add r0, sp, 0x4
bl sub_8091274
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
bne _08018A90
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018AA8
_08018A90:
bl sub_801CBB8
movs r0, 0x1
bl sub_8017F10
b _08018ABE
.align 2, 0
_08018A9C: .4byte gTeamInventory_203B460
_08018AA0: .4byte 0xffffff00
_08018AA4: .4byte 0xffff00ff
_08018AA8:
movs r0, 0xB
bl sub_8017F10
b _08018ABE
_08018AB0:
movs r0, 0xE
bl sub_8017F10
b _08018ABE
_08018AB8:
movs r0, 0xB
bl sub_8017F10
_08018ABE:
add sp, 0x8
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80189C8
.align 2,0

File diff suppressed because it is too large Load Diff

View File

@@ -258,7 +258,7 @@ _0808D06E:
beq _0808D07E
adds r1, r0, 0
adds r0, r4, 0
bl sub_8092AD4
bl InitZeroedPPPokemonMove
b _0808D080
_0808D07E:
strb r0, [r4]
@@ -415,7 +415,7 @@ _0808D19E:
cmp r1, 0
beq _0808D1B4
adds r0, r4, 0
bl sub_8092AD4
bl InitZeroedPPPokemonMove
b _0808D1B6
_0808D1B4:
strb r1, [r4]

View File

@@ -2678,8 +2678,8 @@ gUnknown_80DAA44:
.string "true power.\0"
.align 2, 0
.global gUnknown_80DAA98
gUnknown_80DAA98: @ 80DAA98 (Help Menu?)
.global gGameHints
gGameHints: @ 80DAA98 (Help Menu?)
.4byte gUnknown_80DAF54
.4byte gUnknown_80DAEE0
.4byte gUnknown_80DAECC
@@ -2770,6 +2770,7 @@ gUnknown_80DAF54:
.align 2, 0
.string "pksdir0\0"
.global gUnknown_80DAF70
gUnknown_80DAF70: @ 80DAF70
.byte 0x00, 0x00, 0x00, 0x00

File diff suppressed because it is too large Load Diff

View File

@@ -14,17 +14,15 @@ enum MoveFlags
struct MoveData
{
u8 *namePointer;
/* 0x4 */ u8 power;
u8 fill5;
/* 0x4 */ s16 power;
u8 type;
u8 fill7;
// Determines the range of moves.
/* 0x8 */ u16 targetingFlags;
/* 0xA */ u16 aiTargetingFlags; // The AI consider certain moves to have different range than they actually do.
/* 0x8 */ u16 targetingFlags[2]; // 0 for player and 1 for AI
// The AI consider certain moves to have different range than they actually do.
/* 0xC */ u8 maxPP;
/* 0xD */ u8 weight;
/* 0xE */ u8 accuracy1;
/* 0xF */ u8 accuracy2;
/* 0xE */ u8 accuracy[2];
// Used by the AI to determine how often to use Spikes.
// Values exist for all other moves, though they seem to be unused.
/* 0x10 */ u8 useChance;
@@ -36,7 +34,7 @@ struct MoveData
/* 0x16 */ bool8 affectedByMuzzled; // If true, this move can't be used with the Muzzled status.
/* 0x17 */ bool8 cannotHitFrozen; // Used by Status Checker to determine if a move can be used on a frozen target.
/* 0x18 */ bool8 dealsDirectDamage;
u8 unk19;
u8 rangeType;
u8 *descriptionPointer;
u8 *useText; // The text displayed when this move is used.
};

View File

@@ -10,13 +10,12 @@ struct unkStruct_203B2BC
u16 unkA;
u32 itemIndex;
struct HeldItem itemToGive;
struct ItemSlot unk14;
struct HeldItem unk14;
struct PokemonStruct *unk18;
u32 unk1C;
u32 unk20;
u32 unk24;
u32 unk28;
u8 fill2C[0x68 - 0x2C];
u16 unk24;
struct PokemonMove unk28[8];
u32 unk68;
u32 unk6C;
u32 unk70;

View File

@@ -1,12 +1,6 @@
#ifndef GUARD_GULPIN_SHOP_H
#define GUARD_GULPIN_SHOP_H
struct unkStruct_Gulpin
{
u8 fill0[0x22];
u16 unk22;
};
struct unkStruct_203B26C
{
// size: 0x18C
@@ -15,7 +9,7 @@ struct unkStruct_203B26C
u32 unk8;
s16 speciesNum; // species of chosen Pokemon
u8 unkE;
struct unkStruct_Gulpin * unk10;
struct PokemonMove * unk10;
u32 unk14;
u32 unk18;
u16 unk1C;

View File

@@ -66,8 +66,16 @@ enum ItemFlag
void LoadItemParameters(void);
struct TeamInventory *GetMoneyItemsInfo(void);
void InitializeMoneyItems(void);
s32 GetNumberOfFilledInventorySlots(void);
bool8 IsThrowableItem(u8 itemIndex);
void xxx_init_itemslot_8090A8C(struct ItemSlot *param_1,u8 itemIndex,u8 param_3);
void xxx_init_helditem_8090B08(struct HeldItem *param_1,u8 itemIndex);
void HeldItemToSlot(struct ItemSlot *param_1, struct HeldItem *param_2);
void SlotToHeldItem(struct HeldItem *held,struct ItemSlot *slot);
u8 GetItemType(u8 index);
s32 GetStackBuyValue(struct ItemSlot *param_1);
s32 GetStackSellValue(struct ItemSlot *param_1);
s32 GetStackBuyPrice(struct ItemSlot *param_1);
s32 GetStackSellPrice(struct ItemSlot *param_1);
s32 GetItemBuyPrice(u8 itemIndex);
s32 GetItemSellPrice(u8 itemIndex);
@@ -77,12 +85,8 @@ u8 GetItemCategory(u8 itemIndex);
u32 GetItemUnkThrow(u8 itemIndex, u32 r1);
u8 *GetItemDescription(u8 itemIndex);
u32 GetItemAIFlags(u8 itemIndex, u32 r1);
s32 GetNumberOfFilledInventorySlots(void);
bool8 IsThrowableItem(u8 itemIndex);
void xxx_init_itemslot_8090A8C(struct ItemSlot *param_1,u8 itemIndex,u8 param_3);
void xxx_init_helditem_8090B08(struct HeldItem *param_1,u8 itemIndex);
void HeldItemToSlot(struct ItemSlot *param_1, struct HeldItem *param_2);
void sub_8090DC4(void* param_1,u8 itemIndex, struct unkStruct_8090F58* param_3);
void sub_8090E14(u8* ext_buffer, struct ItemSlot* slot, struct unkStruct_8090F58* a3);
bool8 AddItemToInventory(const struct ItemSlot* slot);
void ConvertMoneyItemToMoney();
void AddToTeamMoney(s32 amount);
@@ -97,8 +101,11 @@ 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*);
void sub_8090E14(u8* ext_buffer, struct ItemSlot* slot, struct unkStruct_8090F58* a3);
void SlotToHeldItem(struct HeldItem *held,struct ItemSlot *slot);
void ShiftItemsDownFrom(s32 start);
void MoveToStorage(struct ItemSlot* slot);
void FillInventoryGaps();
bool8 sub_8091274(struct HeldItem* slot);
void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*);
void SaveHeldItem(struct unkStruct_8094924*, struct HeldItem*);

View File

@@ -39,4 +39,31 @@ struct unkStruct_203B208
struct UnkTextStruct2 unkEC[4];
};
struct unkStruct_203B20C
{
u32 state;
u8 unk4[4];
struct ItemSlot unk8;
u32 unkC;
u8 itemIndex;
u32 unk14;
u32 unk18;
u32 unk1C;
struct MenuItem unk20[8];
u16 unk60[8];
u32 unk70;
u8 fill74[0xC0 - 0x74];
u32 unkC0;
u32 unkC4;
u32 unkC8;
u32 unkCC;
u32 unkD0;
u32 unkD4;
struct UnkTextStruct2 *unkD8;
u32 unkDC;
u32 unkE0;
u8 fillE4[0xF0 - 0xE4];
struct UnkTextStruct2 unkF0[4];
};
#endif

View File

@@ -65,6 +65,13 @@ struct EvolveStage
u8 unkHasNextStage;
};
struct unkStruct_8094184
{
struct PokemonMove moves[MAX_MON_MOVES];
u8 unk20;
};
struct PokemonStruct2
{
// size 0x68
@@ -80,8 +87,7 @@ struct PokemonStruct2
u16 unk12; // pokeHP
struct Offense offense; // offense (other offset)
u32 unk18; // unk1C
struct PokemonMove moves[MAX_MON_MOVES];
u8 fill3c[4];
struct unkStruct_8094184 moves;
/* 40 */ struct ItemSlot itemSlot; // heldItem
u32 unk44; // some struct
u32 unk48; // some struct (same type as 44)

View File

@@ -111,6 +111,7 @@ SECTIONS {
asm/code_801D760.o(.text);
src/code_801DCC4.o(.text);
asm/code_801DCC4.o(.text);
src/hints_menu.o(.text);
src/gulpin_shop.o(.text);
asm/gulpin_shop.o(.text);
src/gulpin_shop_1.o(.text);
@@ -118,7 +119,6 @@ SECTIONS {
src/friend_area_action_menu.o(.text);
asm/friend_area_action_menu.o(.text);
src/friend_area_action_menu_1.o(.text);
asm/friend_area_action_menu_1.o(.text);
src/wonder_mail.o(.text);
src/thank_you_wonder_mail.o(.text);
src/wonder_mail_2.o(.text);
@@ -232,7 +232,10 @@ SECTIONS {
src/friend_area.o(.text);
asm/friend_area_1.o(.text);
src/friend_area_1.o(.text);
asm/code_8092334.o(.text);
src/moves.o(.text);
asm/moves_1.o(.text);
src/moves_1.o(.text);
asm/code_8094148.o(.text);
src/code_8092334.o(.text);
src/game_options.o(.text);
asm/code_8094D28.o(.text);

View File

@@ -26,7 +26,7 @@ extern u8 gUnknown_202E1C8[0x50];
extern u8 gAvailablePokemonNames[0x50];
extern u8 gUnknown_202E218[0x50];
extern void sub_8092AD4(struct PokemonMove*, u16);
extern void InitZeroedPPPokemonMove(struct PokemonMove*, u16);
extern void sub_809401C(struct PokemonMove *, struct PokemonMove *);
extern bool8 IsHMItem(u8);
extern void DisplayGulpinDialogueSprite(u32, u32, void *);
@@ -195,7 +195,7 @@ void sub_801B200(void)
pokeMove = &gUnknown_203B22C->moves[moveIndex];
if((pokeMove->moveFlags & MOVE_FLAG_EXISTS) == 0)
{
sub_8092AD4(pokeMove, gUnknown_203B22C->moveID);
InitZeroedPPPokemonMove(pokeMove, gUnknown_203B22C->moveID);
break;
}
}

View File

@@ -8,7 +8,7 @@ struct unkStruct_203B25C
{
// size: 0x11C
u32 state;
u32 unk4;
u32 chosenHintIndex;
struct UnkSaveStruct1 unk8;
u32 unk18;
const char *unk1C;
@@ -31,17 +31,17 @@ extern void sub_801DED0();
extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
extern u32 sub_801E198(struct UnkSaveStruct1 *);
extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void sub_801E658(u32);
extern void CreateHintDisplayScreen(u32);
extern void sub_801E3F0(u32);
extern void sub_801E510(u32);
extern void CreateHintSelectionScreen(u32);
extern void CreateChangeSettingsConfirmMenu(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_801E474(u32);
extern u32 sub_801E4F4(void);
extern u32 GetChosenHintIndex(void);
extern void sub_801E54C(void);
extern u32 sub_801E6CC(void);
extern void sub_801E724(void);
extern u32 HandleHintDisplayScreenInput(void);
extern void DestroyHintDisplayScreen(void);
extern u32 sub_801E218(void);
extern bool8 GameOptionsNotChange(struct UnkSaveStruct1 *);
extern void sub_801E2C4(void);
@@ -358,10 +358,10 @@ void sub_801DED0(void)
sub_801E3F0(0);
break;
case 4:
sub_801E510(1);
CreateHintSelectionScreen(1);
break;
case 5:
sub_801E658(gUnknown_203B25C->unk4);
CreateHintDisplayScreen(gUnknown_203B25C->chosenHintIndex);
break;
case 6:
// Load our current options?
@@ -446,7 +446,7 @@ void sub_801E088(void)
{
case 3:
case 4:
gUnknown_203B25C->unk4 = sub_801E4F4();
gUnknown_203B25C->chosenHintIndex = GetChosenHintIndex();
sub_801DD6C(5);
break;
case 2:
@@ -463,11 +463,11 @@ void sub_801E088(void)
void sub_801E0E0(void)
{
switch(sub_801E6CC())
switch(HandleHintDisplayScreenInput())
{
case 3:
case 2:
sub_801E724();
DestroyHintDisplayScreen();
sub_801DD6C(4);
break;
case 0:

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "dungeon_global_data.h"
#include "dungeon_entity.h"
#include "constants/move.h"
extern struct DungeonGlobalData *gDungeonGlobalData;
@@ -31,7 +32,7 @@ extern void sub_806F370(struct DungeonEntity *r0, struct DungeonEntity *r1, u32,
extern u32 gUnknown_80FD018;
extern s16 sub_8057600(void*, u32);
extern u32 sub_8092B00(void*);
extern u32 GetMoveType(void*);
bool32 sub_8057824(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
{
@@ -100,7 +101,7 @@ bool32 sub_8057954(struct DungeonEntity *param_1, struct DungeonEntity *param_2,
return TRUE;
}
bool32 sub_8057974(struct DungeonEntity *param_1, struct DungeonEntity *param_2, void* param_3, u32 param_4)
bool32 sub_8057974(struct DungeonEntity *param_1, struct DungeonEntity *param_2, struct PokemonMove *param_3, u32 param_4)
{
s32 newHP;
u8 local_24;
@@ -108,7 +109,7 @@ bool32 sub_8057974(struct DungeonEntity *param_1, struct DungeonEntity *param_2,
newHP = param_2->entityData->HP / 2;
local_24 = 0;
if (newHP != 0) {
sub_806F370(param_1,param_2,newHP,1,&local_24,sub_8092B00(param_3),sub_8057600(param_3,param_4),0,1,0);
sub_806F370(param_1,param_2,newHP,1,&local_24,GetMoveType(param_3),sub_8057600(param_3,param_4),0,1,0);
local_24 = local_24 == 0;
}
else

View File

@@ -21,13 +21,13 @@ extern const char gUnknown_80DD8D0[];
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32 *, u32, u32);
extern void sub_8027D40(u32, struct ItemSlot *);
extern void sub_8027D40(u32, struct HeldItem *);
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_8023B7C(u32);
extern void sub_8023DA4();
extern void sub_8024458(s16, u32);
extern void sub_801BEEC(s16);
extern void sub_8093560(u32, u32 *, u32 *);
extern void sub_8093560(u32, struct PokemonMove *, u32 *);
extern void sub_801F808(u32 *);
extern void sub_8027794();
extern void sub_801A5D8(u32, u32, u32, u32);
@@ -35,8 +35,8 @@ 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 *, struct PokemonMove *);
extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32);
extern void sub_809401C(struct PokemonMove *, struct PokemonMove *);
extern void sub_801EE10(u32, s16, struct PokemonMove *, u32, u32, u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void SetFriendAreaActionMenuState(u32);
@@ -206,8 +206,8 @@ void sub_8027274(void)
sub_801B3C0(&slot);
break;
case 0xe:
sub_809401C(&gUnknown_203B2BC->unk28,gUnknown_203B2BC->unk18->moves);
sub_801EE10(3,gUnknown_203B2BC->targetPoke,&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);
@@ -229,7 +229,7 @@ void sub_8027274(void)
sub_8014248(gUnknown_80DD7FC,0,3,gUnknown_203B2BC->menuItems,0,4,0,0,0x101);
break;
case 0x10:
sub_8093560(gUnknown_203B2BC->unk20,&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk68);
sub_8093560(gUnknown_203B2BC->unk20,gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk68);
sub_801F808(&gUnknown_203B2BC->unk68);
break;
case 6:

View File

@@ -4,6 +4,7 @@
#include "menu.h"
#include "item.h"
#include "team_inventory.h"
#include "pokemon.h"
#include "friend_area_action_menu.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
@@ -11,17 +12,14 @@ extern struct TeamInventory *gTeamInventory_203B460;
u32 sub_801B410();
void sub_801B450();
u32 sub_801EF38(u8 r0);
void sub_801F214();
extern u32 sub_801EF38(u8 r0);
extern void sub_801F214();
extern void SetFriendAreaActionMenuState(u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void PlaySound(u32);
extern void ShiftItemsDownFrom(u32);
extern void FillInventoryGaps();
extern void nullsub_104();
extern void sub_8091274(struct ItemSlot *);
extern void sub_801A928();
extern void sub_8099690(u32);
extern void GivePokemonItem(s16, struct HeldItem *);
@@ -31,6 +29,21 @@ extern u32 sub_801A6E8(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_8027EB8();
extern void sub_808D31C(struct PokemonStruct *);
u32 sub_8027E18(struct PokemonStruct *);
bool8 IsNotMoneyOrUsedTMItem(u8 id);
u8 sub_8027E4C(struct PokemonStruct *r0);
extern u8 sub_80023E4(u32);
extern struct PokemonStruct *sub_808D3F8(void);
extern struct PokemonStruct *sub_808D3BC(void);
extern u32 sub_801F890(void);
extern void sub_801F8D0(void);
extern u8 gUnknown_80DD958[];
extern void xxx_format_and_draw(u32, u32, u8 *, ...);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern u8 gUnknown_202DE58[];
extern u32 sub_801F194(void);
void sub_8027AE4(void)
{
@@ -93,7 +106,7 @@ void sub_8027BD8(void)
PlaySound(0x14d);
ShiftItemsDownFrom(gUnknown_203B2BC->itemIndex);
FillInventoryGaps();
if (gUnknown_203B2BC->unk14.itemFlags != 0) {
if (gUnknown_203B2BC->unk14.itemIndex != 0) {
sub_8091274(&gUnknown_203B2BC->unk14);
}
GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->itemToGive);
@@ -124,3 +137,172 @@ void sub_8027C84()
break;
}
}
void sub_8027CA0(void)
{
switch(sub_801EF38(1))
{
case 3:
case 4:
gUnknown_203B2BC->unk20 = sub_801F194();
gUnknown_203B2BC->unk24 = gUnknown_203B2BC->unk28[gUnknown_203B2BC->unk20].moveID;
SetFriendAreaActionMenuState(0x10);
break;
case 2:
sub_801F214();
SetFriendAreaActionMenuState(0x2);
break;
case 0:
case 1:
break;
}
}
void sub_8027D00(void)
{
switch(sub_801F890())
{
case 2:
case 3:
sub_801F8D0();
SetFriendAreaActionMenuState(0xF);
break;
case 0:
case 1:
break;
}
}
void sub_8027D1C(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetFriendAreaActionMenuState(gUnknown_203B2BC->unk4);
}
}
void sub_8027D40(u32 r0, struct HeldItem *heldItem)
{
struct ItemSlot slot;
struct unkStruct_8090F58 a3;
sub_8008C54(r0);
sub_80073B8(r0);
HeldItemToSlot(&slot, heldItem);
a3.unk0 = 0;
a3.unk4 = 0;
a3.unk8 = 1;
slot.itemFlags = 1;
sub_8090E14(gUnknown_202DE58, &slot, &a3);
xxx_format_and_draw(4, 3, gUnknown_80DD958, r0, 0);
sub_80073E0(r0);
}
u32 sub_8027D9C(struct PokemonStruct *r0)
{
u32 var1;
if(r0->unk2 == 0)
{
var1 = 0;
if(r0->unk4.unk4 == 0x41)
var1 = 1;
if(var1 != 0)
{
if(sub_80023E4(8) == 0)
return 0;
}
}
else
return 0;
return 1;
}
u32 sub_8027DCC(struct PokemonStruct *r0)
{
u32 var1;
if(sub_808D3BC() != r0)
if(sub_808D3F8() != r0)
if(r0->unk2 == 0)
{
var1 = 0;
if(r0->unk4.unk4 == 0x41)
var1 = 1;
if(var1 != 0)
{
if(sub_80023E4(8) != 0)
goto check;
}
else
{
check:
if(sub_8027E18(r0) != 3)
return 1;
}
}
return 0;
}
u32 sub_8027E18(struct PokemonStruct *r0)
{
if(r0->heldItem.itemIndex == 0)
return 0;
else if(GetNumberOfFilledInventorySlots() < INVENTORY_SIZE)
return 1;
else if(sub_8027E4C(r0))
return 2;
else
return 3;
}
u8 sub_8027E4C(struct PokemonStruct *r0)
{
if(!IsNotMoneyOrUsedTMItem(r0->heldItem.itemIndex))
return 0;
else
{
if(IsThrowableItem(r0->heldItem.itemIndex))
{
if(gTeamInventory_203B460->teamStorage[r0->heldItem.itemIndex] + r0->heldItem.numItems > 0x3e7)
return 0;
}
else if(gTeamInventory_203B460->teamStorage[r0->heldItem.itemIndex] > 0x3e6)
{
return 0;
}
}
return 1;
}
void sub_8027EB8(void)
{
switch(sub_8027E18(gUnknown_203B2BC->unk18))
{
case 1:
PlaySound(0x14d);
sub_8091274(&gUnknown_203B2BC->unk14);
FillInventoryGaps();
gUnknown_203B2BC->unk14.itemIndex = 0;
gUnknown_203B2BC->unk14.numItems = 0;
GivePokemonItem(gUnknown_203B2BC->targetPoke, &gUnknown_203B2BC->unk14);
SetFriendAreaActionMenuState(6);
break;
case 2:
PlaySound(0x14d);
if(IsThrowableItem(gUnknown_203B2BC->unk14.itemIndex))
gTeamInventory_203B460->teamStorage[gUnknown_203B2BC->unk14.itemIndex] += gUnknown_203B2BC->unk14.numItems;
else
gTeamInventory_203B460->teamStorage[gUnknown_203B2BC->unk14.itemIndex] += 1;
gUnknown_203B2BC->unk14.itemIndex = 0;
gUnknown_203B2BC->unk14.numItems = 0;
GivePokemonItem(gUnknown_203B2BC->targetPoke, &gUnknown_203B2BC->unk14);
SetFriendAreaActionMenuState(7);
break;
case 0:
default:
SetFriendAreaActionMenuState(2);
break;
}
}

View File

@@ -21,7 +21,7 @@ extern void sub_801EA28();
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_801EBC4();
u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct unkStruct_Gulpin *param_3)
u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct PokemonMove *param_3)
{
struct OpenedFile *faceFile;
s32 species_32;
@@ -32,7 +32,7 @@ u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct unkStruct_Gul
gUnknown_203B26C->unk0 = param_1;
gUnknown_203B26C->speciesNum = species_32;
gUnknown_203B26C->unk10 = param_3;
gUnknown_203B26C->unk1C = param_3->unk22;
gUnknown_203B26C->unk1C = param_3[4].moveID;
if (param_1 == 0) {
gUnknown_203B26C->unk128 = &gUnknown_203B26C->faceFile;

View File

@@ -9,14 +9,14 @@
extern struct unkStruct_203B26C *gUnknown_203B26C;
extern void UpdateGulpinShopState(u32);
extern void sub_8093CF8(struct unkStruct_Gulpin *, u32);
extern void sub_8093CF8(struct PokemonMove *, u32);
extern void sub_801F214(void);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801F890(void);
extern void sub_801F8D0(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u8 sub_80934B0(u32, struct unkStruct_Gulpin *);
extern u8 sub_80934B0(u32, struct PokemonMove *);
extern void PlaySound(u32);
extern void sub_801EF38(u32);

285
src/hints_menu.c Normal file
View File

@@ -0,0 +1,285 @@
#include "global.h"
#include "memory.h"
#include "text.h"
#include "input.h"
#define MAX_HINTS 5
struct Hints
{
u8 *heading;
u8 *body;
};
struct unkStruct_203B268
{
// size: 0xA0
u32 unk0;
u8 fill4[0x1E - 0x4];
s16 helpPageIndex;
u16 unk20;
u8 fill22[0x34 - 0x22];
u32 unk34;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[4];
u8 unk9C[4];
};
struct unkStruct_203B264
{
// size: 0x9C
u32 unk0;
u8 fill4[0x18 - 0x4];
s16 unk18;
s16 unk1A;
s16 unk1C;
s16 unk1E;
u16 unk20;
u8 fill22[0x34 - 0x22];
u32 unk34;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[4];
};
extern struct unkStruct_203B264 *gUnknown_203B264;
extern struct unkStruct_203B268 *gUnknown_203B268;
extern struct UnkTextStruct2 gUnknown_80DC0A0;
extern struct UnkTextStruct2 gUnknown_80DC0BC;
extern struct UnkTextStruct2 gUnknown_80DC0E4;
extern struct UnkTextStruct2 gUnknown_80DC0FC;
extern struct Hints gGameHints[MAX_HINTS];
extern u8 gUnknown_80DC0D4[MAX_HINTS];
extern void sub_801E714(void);
extern void sub_8013818(void *, u32, u32, u32);
extern bool8 sub_8013938(void *);
extern s32 GetKeyPress(void *);
extern void PlayMenuSoundEffect(u32);
extern void sub_801E714(void);
extern void sub_801E76C(void);
extern void DisplayChosenHint(void);
extern void xxx_call_draw_string(s32, u32, u8 *, u32, u32);
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
extern s32 sub_8013800(void *, u32);
extern void sub_8008C54(u32);
void DrawHintSelectionMenu(void);
void sub_801E594(void);
void sub_8013984(void *);
void AddMenuCursorSprite(void *);
extern u8 sub_80138B8(void *, u32);
extern void sub_8013660(void *);
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
u32 sub_801E3F0(u32 r0)
{
if(gUnknown_203B264 == NULL)
gUnknown_203B264 = MemoryAlloc(sizeof(struct unkStruct_203B264), 8);
gUnknown_203B264->unk34 = r0;
gUnknown_203B264->unk38 = &gUnknown_203B264->unk3C[r0];
sub_8006518(gUnknown_203B264->unk3C);
gUnknown_203B264->unk3C[gUnknown_203B264->unk34] = gUnknown_80DC0BC;
sub_8012D08(gUnknown_203B264->unk38, 0xA);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B264->unk3C, 1, 1);
sub_8013818(gUnknown_203B264, 0x5, 0xA, r0);
sub_801E594();
DrawHintSelectionMenu();
return 1;
}
u32 sub_801E474(u8 r0)
{
if(r0 == 0)
{
sub_8013660(gUnknown_203B264);
return 0;
}
switch(GetKeyPress(gUnknown_203B264))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
if(sub_80138B8(gUnknown_203B264, 1))
{
sub_801E594();
DrawHintSelectionMenu();
return 1;
}
else
return 0;
}
}
s32 GetChosenHintIndex(void)
{
return (gUnknown_203B264->unk1E * gUnknown_203B264->unk1C) + gUnknown_203B264->unk18;
}
void CreateHintSelectionScreen(u32 r0)
{
u8 bool8_r0;
bool8_r0 = r0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B264->unk3C, 0, 0);
sub_8013984(gUnknown_203B264);
sub_801E594();
DrawHintSelectionMenu();
if(bool8_r0)
AddMenuCursorSprite(gUnknown_203B264);
}
void sub_801E54C(void)
{
if(gUnknown_203B264 != NULL)
{
gUnknown_203B264->unk3C[gUnknown_203B264->unk34] = gUnknown_80DC0A0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B264->unk3C, 1, 1);
MemoryFree(gUnknown_203B264);
gUnknown_203B264 = NULL;
}
}
NAKED
void sub_801E594(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _0801E5E4\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x1A\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, 0x34]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x4A\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x34]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x4C\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x3C\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"
"_0801E5E4: .4byte gUnknown_203B264");
}
void DrawHintSelectionMenu(void)
{
s32 hintIndex;
s32 y;
sub_8008C54(gUnknown_203B264->unk34);
sub_80073B8(gUnknown_203B264->unk34);
xxx_call_draw_string(16, 0, gUnknown_80DC0D4, gUnknown_203B264->unk34, 0);
for(hintIndex = 0; hintIndex < MAX_HINTS; hintIndex++)
{
y = sub_8013800(gUnknown_203B264, hintIndex);
xxx_call_draw_string(10, y, gGameHints[hintIndex].heading, gUnknown_203B264->unk34, 0);
}
sub_80073E0(gUnknown_203B264->unk34);
}
u32 CreateHintDisplayScreen(u32 index)
{
gUnknown_203B268 = MemoryAlloc(sizeof(struct unkStruct_203B268), 8);
gUnknown_203B268->unk34 = 0;
gUnknown_203B268->unk38 = gUnknown_203B268->unk3C;
sub_8006518(gUnknown_203B268->unk3C);
gUnknown_203B268->unk3C[gUnknown_203B268->unk34] = gUnknown_80DC0FC;
gUnknown_203B268->unk38->unk14 = gUnknown_203B268->unk9C;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B268->unk3C, 1, 1);
sub_8013818(gUnknown_203B268, 5, 1, gUnknown_203B268->unk34);
gUnknown_203B268->helpPageIndex = index;
sub_801E714();
return 1;
}
u32 HandleHintDisplayScreenInput(void)
{
switch(GetKeyPress(gUnknown_203B268))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
default:
if(sub_8013938(gUnknown_203B268)){
sub_801E714();
return 1;
}
else
return 0;
}
}
void sub_801E714(void)
{
sub_801E76C();
DisplayChosenHint();
}
void DestroyHintDisplayScreen(void)
{
if(gUnknown_203B268 != NULL)
{
gUnknown_203B268->unk3C[gUnknown_203B268->unk34] = gUnknown_80DC0E4;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B268->unk3C, 1, 1);
MemoryFree(gUnknown_203B268);
gUnknown_203B268 = NULL;
}
}
void sub_801E76C(void)
{
gUnknown_203B268->unk9C[0] = gUnknown_203B268->unk20;
gUnknown_203B268->unk9C[1] = gUnknown_203B268->helpPageIndex;
gUnknown_203B268->unk9C[2] = 0xF;
gUnknown_203B268->unk9C[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B268->unk3C, 1, 1);
}
void DisplayChosenHint(void)
{
sub_80073B8(gUnknown_203B268->unk34);
xxx_call_draw_string((gUnknown_203B268->helpPageIndex << 3) + 0x10, 0, gGameHints[gUnknown_203B268->helpPageIndex].heading, gUnknown_203B268->unk34, 0);
xxx_call_draw_string(0xA, 0x14, gGameHints[gUnknown_203B268->helpPageIndex].body, gUnknown_203B268->unk34, 0);
sub_80073E0(gUnknown_203B268->unk34);
}

View File

@@ -37,11 +37,11 @@ extern void ExpandPlaceholdersBuffer(u8 *, const u8 *, ...);
extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3);
extern void sub_80073B8(u32);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
extern void sub_8092A88(void*, u16); // first arg is some struct
extern void InitPokemonMove(void*, u16); // first arg is some struct
extern void sub_80078A4(u32, u32, u32, u32, u32);
extern u32 sub_8092B00(void*);
extern u32 GetMoveType(void*);
extern u8* GetUnformattedTypeString(s16);
extern u32 sub_8092BF4(void*);
extern u32 GetMoveMaxPP(void*);
extern void sub_80073E0(u32);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3);
@@ -565,11 +565,11 @@ s32 GetItemPossessionCount(u8 itemIndex)
void ShiftItemsDownFrom(s32 start)
{
s32 i, j;
for (i = start, j = start + 1; i < 19; i++, j++) {
for (i = start, j = start + 1; i < INVENTORY_SIZE - 1; i++, j++) {
gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[j];
}
gTeamInventory_203B460->teamItems[19].itemIndex = 0;
gTeamInventory_203B460->teamItems[19].itemFlags = 0;
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].itemIndex = 0;
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].itemFlags = 0;
}
void ClearItemSlotAt(u32 index)
@@ -703,13 +703,13 @@ u32 sub_80913E0(struct ItemSlot* slot, u32 a2, struct subStruct_203B240 ** a3)
u8* typestring;
u32 result;
sub_8092A88(buffer8, move);
InitPokemonMove(buffer8, move);
sub_80078A4(a2, 4, 82, 200, 7);
xxx_format_and_draw(4, 84, gPtrTypeText, a2, 0);
moves_data = sub_8092B00(buffer8);
moves_data = GetMoveType(buffer8);
typestring = GetUnformattedTypeString(moves_data);
xxx_format_and_draw(64, 84, typestring, a2, 0);
result = sub_8092BF4(buffer8);
result = GetMoveMaxPP(buffer8);
gUnknown_202DE30 = result;
xxx_format_and_draw(128, 84, gPtrPPD0Text, a2, 0);
}

View File

@@ -9,31 +9,6 @@
extern struct unkStruct_203B208 *gUnknown_203B208;
struct unkStruct_203B20C
{
u32 state;
u8 unk4[4];
struct ItemSlot unk8;
u8 fillC[0x14 - 0xC];
u32 unk14;
u32 unk18;
u32 unk1C;
struct MenuItem unk20[8];
u16 unk60[8];
u32 unk70;
u8 fill74[0xC0 - 0x74];
u32 unkC0;
u32 unkC4;
u32 unkC8;
u32 unkCC;
u32 unkD0;
u32 unkD4;
struct UnkTextStruct2 *unkD8;
u32 unkDC;
u32 unkE0;
u8 fillE4[0xF0 - 0xE4];
struct UnkTextStruct2 unkF0[4];
};
extern struct unkStruct_203B20C *gUnknown_203B20C;
extern void sub_8017F10(u32);

View File

@@ -1,9 +1,349 @@
#include "global.h"
#include "kangaskhan_storage.h"
#include "team_inventory.h"
extern struct unkStruct_203B20C *gUnknown_203B20C;
extern u32 sub_801B410();
extern void sub_801B450();
extern void sub_8017F10(u32);
extern u8 sub_801CF14(u32);
struct HeldItem_Alt {
union tempHeld
{
struct HeldItem norm;
u32 full_bits;
} temp;
};
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_801CBB8(void);
extern void sub_8017F10(u32);
extern void sub_8012EA4(u32 *, u32);
bool8 IsNotMoneyOrUsedTMItem(u8 id);
extern u8 sub_801ADA0(s32);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A6E8(u32);
extern u32 sub_8013BBC(u32 *);
extern u32 sub_801CA08(u32);
extern void sub_8018280(void);
extern void sub_801CF94(void);
extern u8 sub_801CB24();
extern u32 sub_801CFB8(void);
extern void sub_801AD34(u32);
extern u32 sub_801CFE0(u8);
extern u32 sub_801A8AC(void);
extern u32 sub_801AEA8(void);
extern u32 sub_801AED0(u32);
extern void sub_801AE84(void);
extern u8 sub_801CF50(u32);
void sub_8018588(void)
{
s32 temp;
temp = 0;
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &temp);
if(temp != 1) gUnknown_203B20C->unk14 = temp;
}
switch(temp)
{
case 2:
if((GetNumberOfFilledInventorySlots() != 0) && sub_801CF50(0) == 0)
sub_8017F10(4);
else
sub_8012EA4(&gUnknown_203B20C->unk70, 1);;
break;
case 3:
if(sub_801CF14(1) != 0)
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else
sub_8017F10(0xA);
break;
case 1:
sub_8017F10(3);
break;
}
}
void sub_8018620(void)
{
s32 iVar6;
switch(sub_801A6E8(1))
{
case 3:
if(sub_801AEA8() != 0)
{
for(iVar6 = 0; iVar6 < INVENTORY_SIZE; iVar6++)
{
if(sub_801AED0(iVar6) != 0)
{
MoveToStorage(&gTeamInventory_203B460->teamItems[iVar6]);
gTeamInventory_203B460->teamItems[iVar6].itemIndex = 0;
gTeamInventory_203B460->teamItems[iVar6].itemFlags = 0;
}
}
FillInventoryGaps();
sub_801AE84();
if(GetNumberOfFilledInventorySlots() == 0)
{
sub_801A928();
sub_8017F10(1);
}
else
{
sub_8017F10(5);
}
}
else
{
gUnknown_203B20C->unkC = sub_801A8AC();
gUnknown_203B20C->unk8 = gTeamInventory_203B460->teamItems[gUnknown_203B20C->unkC];
sub_8017F10(6);
}
break;
case 4:
gUnknown_203B20C->unkC = sub_801A8AC();
gUnknown_203B20C->unk8 = gTeamInventory_203B460->teamItems[gUnknown_203B20C->unkC];
sub_8017F10(7);
break;
case 2:
sub_801A928();
sub_8017F10(1);
break;
}
}
void sub_80186F8(void)
{
struct HeldItem_Alt item;
u16 cast;
s32 iVar6;
u8 iVar6_32;
switch(sub_801CA08(1))
{
case 3:
if(sub_801CFB8() != 0)
{
for(iVar6 = 0; iVar6 < NUMBER_OF_ITEM_IDS; iVar6++)
{
iVar6_32 = iVar6; // dumb cast needed to match
if(sub_801CFE0(iVar6) != 0)
{
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | iVar6_32;
if(IsThrowableItem(item.temp.norm.itemIndex))
if(gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] > 0x63)
{
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | (0xC6 << 7);
}
else
{
cast = gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] << 8;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | cast;
}
else
{
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | (0x80 << 1);
}
gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] -= item.temp.norm.numItems;
sub_8091274((struct HeldItem *)&item);
}
}
FillInventoryGaps();
sub_801CF94();
if((sub_801CF14(1) == 0) && (GetNumberOfFilledInventorySlots() < INVENTORY_SIZE))
sub_8017F10(0xB);
else
{
sub_801CBB8();
sub_8017F10(1);
}
}
else
{
gUnknown_203B20C->itemIndex = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->unk8, gUnknown_203B20C->itemIndex, 0);
gUnknown_203B20C->unk8.numItems = 1;
sub_8017F10(0xD);
}
break;
case 4:
gUnknown_203B20C->itemIndex = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->unk8, gUnknown_203B20C->itemIndex, 0);
gUnknown_203B20C->unk8.numItems = 1;
sub_8017F10(0xE);
break;
case 2:
sub_801CBB8();
sub_8017F10(1);
break;
case 1:
sub_801AD34(0);
break;
}
}
void sub_8018854(void)
{
struct HeldItem_Alt item;
u32 itemsCast;
u32 indexCast;
sub_801CA08(0);
sub_8012FD8(&gUnknown_203B20C->unk70);
switch(sub_8013BBC(&gUnknown_203B20C->unkC0))
{
case 3:
gUnknown_203B20C->unk8.numItems = gUnknown_203B20C->unkC0;
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.itemIndex] -= gUnknown_203B20C->unk8.numItems;
indexCast = gUnknown_203B20C->unk8.itemIndex;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | indexCast;
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
sub_8091274((struct HeldItem *)&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
error:
sub_801CBB8();
sub_8017F10(0x1);
}
else
sub_8017F10(0xB);
else
goto error;
break;
case 2:
sub_8017F10(0xB);
break;
case 1:
sub_8018280();
break;
case 0:
break;
}
}
void sub_8018904(void)
{
s32 temp;
temp = 0;
sub_801A6E8(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &temp);
if(temp != 1) gUnknown_203B20C->unk18 = temp;
}
switch(temp)
{
case 2:
if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->unk8.itemIndex))
if(sub_801ADA0(gUnknown_203B20C->unkC) == 0)
error:
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else
{
MoveToStorage(&gUnknown_203B20C->unk8);
ShiftItemsDownFrom(gUnknown_203B20C->unkC);
FillInventoryGaps();
if(GetNumberOfFilledInventorySlots() == 0)
{
sub_801A928();
sub_8017F10(1);
}
else
sub_8017F10(5);
}
else
goto error;
break;
case 4:
sub_8099690(0);
sub_8017F10(7);
break;
case 1:
sub_8017F10(5);
break;
}
}
void sub_80189C8(void)
{
struct HeldItem_Alt item;
s32 temp;
u32 itemsCast;
u32 indexCast;
temp = 0;
sub_801CA08(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &temp);
if(temp != 1) gUnknown_203B20C->unk1C = temp;
}
switch(temp)
{
case 3:
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else if(IsThrowableItem(gUnknown_203B20C->unk8.itemIndex))
sub_8017F10(0xC);
else
{
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.itemIndex] -= gUnknown_203B20C->unk8.numItems;
indexCast = gUnknown_203B20C->unk8.itemIndex;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | indexCast;
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
sub_8091274((struct HeldItem *)&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
error:
sub_801CBB8();
sub_8017F10(1);
}
else
{
sub_8017F10(0xB);
}
else
goto error;
}
break;
case 4:
sub_8017F10(0xE);
break;
case 1:
sub_8017F10(0xB);
break;
}
}
void sub_8018AC8(void)
{
switch(sub_801B410())

View File

@@ -62,7 +62,6 @@ 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 *);
@@ -228,7 +227,7 @@ void sub_8019DAC(void)
gUnknown_203B210->unk14 = 0;
gUnknown_203B210->unk18 = 0;
for(iVar5 = 0; iVar5 < 0x14; iVar5++){
for(iVar5 = 0; iVar5 < INVENTORY_SIZE; iVar5++){
pbVar4 = &gTeamInventory_203B460->teamItems[iVar5];
if (((pbVar4->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(pbVar4->itemIndex))) {
iVar3 = GetStackSellPrice(pbVar4);

336
src/moves.c Normal file
View File

@@ -0,0 +1,336 @@
#include "global.h"
#include "file_system.h"
#include "constants/move.h"
#include "constants/move_id.h"
struct MoveDataFile
{
struct MoveData *moveData;
u8 *unk4; // unsure of this struct's structure yet
};
struct unkStruct_80928C0
{
u32 unk0;
u32 unk4;
u8 unk8;
u8 unk9;
};
extern struct unkStruct_80928C0 gUnknown_81098C4;
extern struct FileArchive gSystemFileArchive;
extern struct OpenedFile *gWazaParametersFile;
extern struct MoveData *gMovesData;
extern u8 *gMovesRelated_2038C6C;
extern u8 gUnknown_81098D0[];
extern u8 gUnknown_81098DC[];
extern u8 gUnknown_810990C[];
extern u8 gUnknown_8109908[];
extern u8 gUnknown_8109928[];
extern u8 gUnknown_8109910[];
extern u8 gUnknown_81098E0[];
extern u8 gUnknown_81098EC[];
extern u8 *gRangeNames[];
extern u8 gUnknown_810992C[];
extern void sub_8093F10(struct PokemonMove *, struct PokemonMove *);
extern void sub_80928C0(u8 *, struct PokemonMove *, struct unkStruct_80928C0 *);
extern u32 GetMoveMaxPP(struct PokemonMove*);
bool8 DoesMoveCharge(u16 move);
extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...);
void LoadWazaParameters(void)
{
gWazaParametersFile = OpenFileAndGetFileDataPtr(gUnknown_81098D0, &gSystemFileArchive);
gMovesData = ((struct MoveDataFile *)(gWazaParametersFile->data))->moveData;
gMovesRelated_2038C6C = ((struct MoveDataFile *)(gWazaParametersFile->data))->unk4;
}
u8 sub_809287C(struct PokemonMove *move)
{
if((move->moveFlags & MOVE_FLAG_DISABLED) != 0)
return 0x32;
else if((move->sealed & 1) == 0)
return 0x34;
else
return 0x32;
}
void sub_80928A0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 *r2)
{
struct PokemonMove stack;
sub_8093F10(&stack, move);
sub_80928C0(buffer, &stack, r2);
}
void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 *param_3)
{
u32 uVar2;
u32 maxPP;
u8 localBuffer[12];
uVar2 = sub_809287C(move);
if (param_3 == NULL) {
param_3 = &gUnknown_81098C4;
}
if (move->powerBoost != 0)
ExpandPlaceholdersBuffer(localBuffer,gUnknown_81098DC,move->powerBoost); // %+d
else
localBuffer[0] = '\0';
if (param_3->unk8 != 0) {
uVar2 = 2;
}
if (param_3->unk9 != 0 && DoesMoveCharge(move->moveID)) {
uVar2 = 2;
}
switch(param_3->unk0) {
case 0:
ExpandPlaceholdersBuffer
(buffer,gUnknown_81098E0,uVar2,
gMovesData[move->moveID].namePointer,localBuffer);
break;
case 1:
maxPP = GetMoveMaxPP(move);
ExpandPlaceholdersBuffer
(buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->pp,maxPP);
break;
case 2:
maxPP = GetMoveMaxPP(move);
ExpandPlaceholdersBuffer
(buffer,gUnknown_8109910,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->pp,maxPP);
break;
case 3:
maxPP = GetMoveMaxPP(move);
ExpandPlaceholdersBuffer
(buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->pp,maxPP);
break;
case 4:
maxPP = GetMoveMaxPP(move);
ExpandPlaceholdersBuffer
(buffer,gUnknown_8109910,uVar2, move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->pp,maxPP);
break;
}
}
void InitPokemonMove(struct PokemonMove *move, u16 moveID)
{
move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS;
move->sealed = FALSE;
move->moveID = moveID;
move->pp = GetMoveMaxPP(move);
move->powerBoost = 0;
}
void sub_8092AA8(struct PokemonMove *move, u16 moveID)
{
if(moveID == 0)
move->moveFlags = 0;
else
{
move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS;
move->sealed = FALSE;
move->moveID = moveID;
move->pp = GetMoveMaxPP(move);
move->powerBoost = 0;
}
}
void InitZeroedPPPokemonMove(struct PokemonMove *move, u16 moveID)
{
move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS;
move->moveID = moveID;
move->pp = 0;
}
s16 GetMoveTargetingFlags(struct PokemonMove *move, u32 r1)
{
return gMovesData[move->moveID].targetingFlags[r1];
}
u8 GetMoveType(struct PokemonMove *move)
{
return gMovesData[move->moveID].type;
}
NAKED
void sub_8092B18(s16 species)
{
asm_unified("\tpush {lr}\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"\tadds r2, r1, 0\n"
"\tldr r0, _08092B40\n"
"\tcmp r1, r0\n"
"\tbeq _08092B48\n"
"\tcmp r1, 0\n"
"\tbeq _08092B48\n"
"\tmovs r0, 0xD2\n"
"\tlsls r0, 1\n"
"\tcmp r2, r0\n"
"\tbeq _08092B48\n"
"\tldr r0, _08092B44\n"
"\tldr r1, [r0]\n"
"\tlsls r0, r2, 3\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"\tb _08092B4A\n"
"\t.align 2, 0\n"
"_08092B40: .4byte 0x000001a5\n"
"_08092B44: .4byte gMovesRelated_2038C6C\n"
"_08092B48:\n"
"\tldr r0, _08092B50\n"
"_08092B4A:\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.align 2, 0\n"
"_08092B50: .4byte gUnknown_810992B");
}
NAKED
void sub_8092B54(s16 species)
{
asm_unified("\tpush {lr}\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"\tadds r2, r1, 0\n"
"\tldr r0, _08092B7C\n"
"\tcmp r1, r0\n"
"\tbeq _08092B84\n"
"\tcmp r1, 0\n"
"\tbeq _08092B84\n"
"\tmovs r0, 0xD2\n"
"\tlsls r0, 1\n"
"\tcmp r2, r0\n"
"\tbeq _08092B84\n"
"\tldr r0, _08092B80\n"
"\tldr r1, [r0]\n"
"\tlsls r0, r2, 3\n"
"\tadds r0, r1\n"
"\tldr r0, [r0, 0x4]\n"
"\tb _08092B86\n"
"\t.align 2, 0\n"
"_08092B7C: .4byte 0x000001a5\n"
"_08092B80: .4byte gMovesRelated_2038C6C\n"
"_08092B84:\n"
"\tldr r0, _08092B8C\n"
"_08092B86:\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.align 2, 0\n"
"_08092B8C: .4byte gUnknown_810992B");
}
u8 GetMoveWeight(struct PokemonMove *move)
{
return gMovesData[move->moveID].weight;
}
u8 GetMoveHitCount(struct PokemonMove *move)
{
return gMovesData[move->moveID].hitCount;
}
s16 GetMovePower(struct PokemonMove *move)
{
return gMovesData[move->moveID].power;
}
u8 GetMoveAccuracy(struct PokemonMove *move, u32 r1)
{
return gMovesData[move->moveID].accuracy[r1];
}
u32 GetMoveMaxPP(struct PokemonMove *move)
{
return gMovesData[move->moveID].maxPP;
}
u8 GetMoveUnk12(struct PokemonMove *move)
{
return gMovesData[move->moveID].unk12;
}
u8 GetMoveCriticalHitChance(struct PokemonMove *move)
{
return gMovesData[move->moveID].criticalHitChance;
}
u8 GetMoveCannotHitFrozen(struct PokemonMove *move)
{
return gMovesData[move->moveID].cannotHitFrozen;
}
u8 GetMoveDealsDirectDamage(struct PokemonMove *move)
{
return gMovesData[move->moveID].dealsDirectDamage;
}
u32 GetMoveRangeType(struct PokemonMove *move)
{
return gMovesData[move->moveID].rangeType;
}
void sub_8092C84(u8 *buffer, u16 moveID)
{
struct PokemonMove stack;
InitPokemonMove(&stack, moveID);
sub_80928C0(buffer, &stack, NULL);
}
u8 *GetMoveUseText(u16 moveID)
{
return gMovesData[moveID].useText;
}
u8 GetMoveAffectedByMagicCoat(u16 moveID)
{
return gMovesData[moveID].affectedByMagicCoat;
}
u8 GetMoveTargetsUser(u16 moveID)
{
return gMovesData[moveID].targetsUser;
}
u8 GetMoveAffectedByMuzzled(u16 moveID)
{
return gMovesData[moveID].affectedByMuzzled;
}
bool8 IsBlockedBySoundproof(struct PokemonMove *move)
{
if(move->moveID == MOVE_GROWL) return TRUE;
if(move->moveID == MOVE_ROAR) return TRUE;
if(move->moveID == MOVE_METAL_SOUND) return TRUE;
if(move->moveID == MOVE_SING) return TRUE;
if(move->moveID == MOVE_GRASSWHISTLE) return TRUE;
if(move->moveID == MOVE_SUPERSONIC) return TRUE;
if(move->moveID == MOVE_PERISH_SONG) return TRUE;
if(move->moveID == MOVE_SCREECH) return TRUE;
if(move->moveID == MOVE_HYPER_VOICE) return TRUE;
if(move->moveID == MOVE_SNORE) return TRUE;
if(move->moveID == MOVE_HEAL_BELL) return TRUE;
return FALSE;
}
void sub_8092D54(u8 *buffer, struct PokemonMove *move)
{
ExpandPlaceholdersBuffer(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]);
}

100
src/moves_1.c Normal file
View File

@@ -0,0 +1,100 @@
#include "global.h"
#include "code_8092334.h"
#include "pokemon.h"
#include "constants/move_id.h"
void SavePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
SaveIntegerBits(r0, &move->moveFlags, 4);
SaveIntegerBits(r0, &move->moveID, 9);
SaveIntegerBits(r0, &move->pp, 7);
}
void RestorePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
RestoreIntegerBits(r0, &move->moveFlags, 4);
RestoreIntegerBits(r0, &move->moveID, 9);
RestoreIntegerBits(r0, &move->pp, 7);
}
void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet)
{
s32 iVar4;
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
{
SavePokemonMove(r0, &moveSet[iVar4]);
}
}
void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet)
{
s32 iVar4;
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
{
RestorePokemonMove(r0, &moveSet[iVar4]);
}
}
void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
SaveIntegerBits(r0, &move->moveFlags, 4);
SaveIntegerBits(r0, &move->sealed, 1);
SaveIntegerBits(r0, &move->moveID, 9);
SaveIntegerBits(r0, &move->pp, 7);
SaveIntegerBits(r0, &move->powerBoost, 7);
}
void sub_8094184(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1)
{
s32 r4;
for(r4 = 0; r4 < MAX_MON_MOVES; r4++)
{
sub_8094148(r0, &r1->moves[r4]);
}
SaveIntegerBits(r0, &r1->unk20, 8);
}
void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
memset(move, 0, sizeof(struct PokemonMove));
RestoreIntegerBits(r0, &move->moveFlags, 4);
RestoreIntegerBits(r0, &move->sealed, 1);
RestoreIntegerBits(r0, &move->moveID, 9);
RestoreIntegerBits(r0, &move->pp, 7);
RestoreIntegerBits(r0, &move->powerBoost, 7);
}
void sub_80941FC(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1)
{
s32 iVar4;
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
{
sub_80941B0(r0, &r1->moves[iVar4]);
}
r1->unk20 = 0;
RestoreIntegerBits(r0, &r1->unk20, 8);
}
bool8 DoesMoveCharge(u16 move)
{
if(move == MOVE_SOLARBEAM)
return TRUE;
if(move == MOVE_SKY_ATTACK)
return TRUE;
if(move == MOVE_RAZOR_WIND)
return TRUE;
if(move == MOVE_FOCUS_PUNCH)
return TRUE;
if(move == MOVE_SKULL_BASH)
return TRUE;
if(move == MOVE_FLY)
return TRUE;
if(move == MOVE_BOUNCE)
return TRUE;
if(move == MOVE_DIVE)
return TRUE;
if(move == MOVE_DIG)
return TRUE;
return FALSE;
}

View File

@@ -38,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 PokemonMove*, u16);
extern void InitZeroedPPPokemonMove(struct PokemonMove*, u16);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
struct unkStruct_8107654 {
@@ -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 PokemonMove*, struct PokemonMove*);
extern void sub_8093FA8(struct PokemonMove*, struct unkStruct_8094184*);
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->moves, a2->moves);
sub_8093FA8(pokemon->moves, &a2->moves);
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
pokemon->name[i] = a2->name[i];
@@ -910,7 +910,7 @@ void sub_808E490(struct PokemonMove* a1, s16 species)
i = 0;
if (i < count) {
while (i < count) {
sub_8092AD4(&a1[i], buffer[i]);
InitZeroedPPPokemonMove(&a1[i], buffer[i]);
i++;
}
i = count;

View File

@@ -500,7 +500,7 @@ string generate_move_data_text(Json data) {
<< read_json_bool(data_entry["affectedByMuzzled"])
<< read_json_bool(data_entry["cannotHitFrozen"])
<< read_json_bool(data_entry["dealsDirectDamage"])
<< read_json_int(data_entry["unk19"], 1)
<< read_json_int(data_entry["rangeType"], 1)
<< "\n.2byte 0"
<< read_json_string(data_entry["descriptionPointer"], 4)
<< read_json_string(data_entry["useText"], 4);