Merge pull request #173 from SethBarberee/feb_2024

Feb and Early Mar 2024
This commit is contained in:
AnonymousRandomPerson
2024-03-11 13:56:40 -04:00
committed by GitHub
34 changed files with 6500 additions and 7580 deletions

View File

@@ -5,424 +5,6 @@
.text
thumb_func_start sub_801EF38
sub_801EF38:
push {r4-r7,lr}
lsls r0, 24
movs r7, 0
cmp r0, 0
bne _0801EF54
ldr r0, _0801EF50
ldr r0, [r0]
adds r0, 0x1C
bl sub_8013660
b _0801F18C
.align 2, 0
_0801EF50: .4byte gUnknown_203B270
_0801EF54:
ldr r0, _0801EF70
ldr r0, [r0]
adds r0, 0x1C
bl GetKeyPress
subs r0, 0x1
cmp r0, 0xC
bls _0801EF66
b _0801F12E
_0801EF66:
lsls r0, 2
ldr r1, _0801EF74
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0801EF70: .4byte gUnknown_203B270
_0801EF74: .4byte _0801EF78
.align 2, 0
_0801EF78:
.4byte _0801EFB6
.4byte _0801EFAC
.4byte _0801F0E4
.4byte _0801EFC0
.4byte _0801F12E
.4byte _0801F12E
.4byte _0801EFE4
.4byte _0801EFCA
.4byte _0801F12E
.4byte _0801F12E
.4byte _0801F074
.4byte _0801F04C
.4byte _0801F018
_0801EFAC:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801F18E
_0801EFB6:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801F18E
_0801EFC0:
movs r0, 0x4
bl PlayMenuSoundEffect
movs r0, 0x4
b _0801F18E
_0801EFCA:
ldr r5, _0801EFE0
ldr r0, [r5]
movs r1, 0x34
ldrsh r6, [r0, r1]
adds r4, r0, 0
adds r4, 0x1C
ldr r0, [r0, 0x10]
adds r1, r6, 0
bl unk_FindMoveEnabledForAIAfter8_v2
b _0801EFF8
.align 2, 0
_0801EFE0: .4byte gUnknown_203B270
_0801EFE4:
ldr r5, _0801F014
ldr r0, [r5]
movs r1, 0x34
ldrsh r6, [r0, r1]
adds r4, r0, 0
adds r4, 0x1C
ldr r0, [r0, 0x10]
adds r1, r6, 0
bl unk_FindMoveEnabledForAIBefore8_v2
_0801EFF8:
adds r1, r0, 0
adds r0, r4, 0
bl sub_8013780
ldr r0, [r5]
movs r2, 0x34
ldrsh r0, [r0, r2]
cmp r6, r0
bne _0801F00C
b _0801F12E
_0801F00C:
movs r0, 0x3
bl PlayMenuSoundEffect
b _0801F12E
.align 2, 0
_0801F014: .4byte gUnknown_203B270
_0801F018:
ldr r0, _0801F048
ldr r2, [r0]
ldrb r1, [r2, 0x5]
adds r5, r0, 0
cmp r1, 0
bne _0801F026
b _0801F12E
_0801F026:
movs r0, 0x34
ldrsh r4, [r2, r0]
ldr r0, [r2, 0x10]
adds r1, r4, 0
bl unk_SetMoveToLastInLinkedSequence8_v2
_0801F032:
ldr r1, [r5]
strh r0, [r1, 0x34]
lsls r0, 16
asrs r0, 16
cmp r4, r0
beq _0801F06C
movs r0, 0x3
bl PlayMenuSoundEffect
b _0801F182
.align 2, 0
_0801F048: .4byte gUnknown_203B270
_0801F04C:
ldr r0, _0801F068
ldr r2, [r0]
ldrb r1, [r2, 0x5]
adds r5, r0, 0
cmp r1, 0
beq _0801F12E
movs r1, 0x34
ldrsh r4, [r2, r1]
ldr r0, [r2, 0x10]
adds r1, r4, 0
bl unk_SetMoveToFirstInLinkedSequence8_v2
b _0801F032
.align 2, 0
_0801F068: .4byte gUnknown_203B270
_0801F06C:
movs r0, 0x2
bl PlayMenuSoundEffect
b _0801F182
_0801F074:
ldr r0, _0801F0C8
ldr r2, [r0]
ldrb r1, [r2, 0x6]
adds r5, r0, 0
cmp r1, 0
beq _0801F12E
ldr r0, _0801F0CC
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
adds r0, r1
ldr r0, [r0]
cmp r0, 0x95
ble _0801F0D0
movs r1, 0x34
ldrsh r0, [r2, r1]
ldr r1, [r2, 0x10]
bl sub_8093318
lsls r0, 24
cmp r0, 0
beq _0801F0D0
ldr r1, [r5]
movs r2, 0x34
ldrsh r0, [r1, r2]
ldr r1, [r1, 0x10]
bl TryLinkMovesAfter
movs r0, 0x6
bl PlayMenuSoundEffect
movs r7, 0x1
ldr r1, [r5]
ldrb r0, [r1, 0x4]
cmp r0, 0
bne _0801F12E
strb r7, [r1, 0x4]
movs r0, 0xA6
lsls r0, 1
bl PlaySound
b _0801F12E
.align 2, 0
_0801F0C8: .4byte gUnknown_203B270
_0801F0CC: .4byte gTeamInventoryRef
_0801F0D0:
ldr r0, _0801F0E0
ldr r1, [r0]
movs r2, 0x34
ldrsh r0, [r1, r2]
ldr r1, [r1, 0x10]
bl UnlinkMovesAfter
b _0801F0FE
.align 2, 0
_0801F0E0: .4byte gUnknown_203B270
_0801F0E4:
ldr r0, _0801F10C
ldr r1, [r0]
ldrb r0, [r1, 0x7]
cmp r0, 0
beq _0801F12E
ldrb r0, [r1, 0xC]
cmp r0, 0
beq _0801F110
movs r2, 0x34
ldrsh r0, [r1, r2]
ldr r1, [r1, 0x10]
bl ToggleSetMove
_0801F0FE:
lsls r0, 24
cmp r0, 0
bne _0801F120
movs r0, 0x2
bl PlayMenuSoundEffect
b _0801F12E
.align 2, 0
_0801F10C: .4byte gUnknown_203B270
_0801F110:
movs r2, 0x34
ldrsh r0, [r1, r2]
ldr r1, [r1, 0x10]
bl ToggleMoveEnabled
lsls r0, 24
cmp r0, 0
beq _0801F128
_0801F120:
movs r0, 0x6
bl PlayMenuSoundEffect
b _0801F182
_0801F128:
movs r0, 0x2
bl PlayMenuSoundEffect
_0801F12E:
cmp r7, 0
bne _0801F182
movs r3, 0
ldr r5, _0801F160
movs r4, 0x1
_0801F138:
ldr r2, [r5]
lsls r0, r3, 3
ldr r1, [r2, 0x10]
adds r1, r0
ldrb r1, [r1]
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _0801F16C
movs r0, 0x2
ands r0, r1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _0801F164
adds r0, r2, 0
adds r0, 0x14
adds r0, r3
strb r4, [r0]
b _0801F16C
.align 2, 0
_0801F160: .4byte gUnknown_203B270
_0801F164:
adds r0, r2, 0
adds r0, 0x14
adds r0, r3
strb r1, [r0]
_0801F16C:
adds r3, 0x1
cmp r3, 0x7
ble _0801F138
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0x1C
adds r1, 0x14
bl AddMenuCursorSprite_
cmp r7, 0
beq _0801F18C
_0801F182:
movs r0, 0x1
bl sub_801F280
movs r0, 0x1
b _0801F18E
_0801F18C:
movs r0, 0
_0801F18E:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_801EF38
thumb_func_start sub_801F194
sub_801F194:
ldr r0, _0801F1A0
ldr r0, [r0]
movs r1, 0x34
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0801F1A0: .4byte gUnknown_203B270
thumb_func_end sub_801F194
thumb_func_start sub_801F1A4
sub_801F1A4:
ldr r0, _0801F1AC
ldr r0, [r0]
ldrb r0, [r0, 0x4]
bx lr
.align 2, 0
_0801F1AC: .4byte gUnknown_203B270
thumb_func_end sub_801F1A4
thumb_func_start sub_801F1B0
sub_801F1B0:
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 24
lsrs r1, 24
ldr r4, _0801F210
ldr r2, [r4]
ldrb r0, [r2, 0x4]
cmp r0, 0
bne _0801F1C6
strb r1, [r2, 0x4]
_0801F1C6:
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x58
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
bl sub_801F3F8
adds r1, r0, 0
ldr r0, [r4]
strh r1, [r0, 0x3E]
adds r0, 0x1C
bl sub_8013984
ldr r1, [r4]
ldr r0, [r1, 0x10]
movs r2, 0x34
ldrsh r1, [r1, r2]
bl sub_8092F4C
ldr r1, [r4]
strh r0, [r1, 0x34]
movs r0, 0x1
bl sub_801F280
cmp r5, 0
beq _0801F208
ldr r0, [r4]
adds r0, 0x1C
bl AddMenuCursorSprite
_0801F208:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801F210: .4byte gUnknown_203B270
thumb_func_end sub_801F1B0
thumb_func_start sub_801F214
sub_801F214:
push {r4-r6,lr}
ldr r4, _0801F278
ldr r2, [r4]
cmp r2, 0
beq _0801F272
ldr r0, [r2, 0x50]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
ldr r3, _0801F27C
adds r1, 0x58
adds r0, r3, 0
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldr r2, [r4]
adds r0, r2, 0
adds r0, 0xB8
ldr r0, [r0]
cmp r0, 0
beq _0801F258
ldr r0, [r2, 0x54]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x58
adds r0, r3, 0
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
_0801F258:
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x58
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801F272:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801F278: .4byte gUnknown_203B270
_0801F27C: .4byte gUnknown_80DC240
thumb_func_end sub_801F214
thumb_func_start sub_801F280
sub_801F280:
push {r4-r7,lr}

View File

@@ -1,126 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start SketchMoveAction
SketchMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r6, r0, 0
adds r7, r1, 0
adds r5, r2, 0
movs r0, 0
mov r10, r0
ldr r1, [r6, 0x70]
str r1, [sp]
ldr r0, [r7, 0x70]
movs r2, 0
mov r12, r2
movs r4, 0
movs r1, 0x8C
lsls r1, 1
adds r3, r0, r1
adds r1, r0, 0
movs r2, 0x1
mov r9, r2
movs r0, 0x10
mov r8, r0
_08059372:
ldrb r2, [r3]
mov r0, r9
ands r0, r2
cmp r0, 0
beq _08059384
mov r0, r8
ands r0, r2
cmp r0, 0
bne _080593A8
_08059384:
adds r3, 0x8
adds r1, 0x8
adds r4, 0x1
cmp r4, 0x3
ble _08059372
movs r0, 0
cmp r0, 0
bne _080593B2
ldr r0, _080593A4
ldr r2, [r0]
adds r0, r6, 0
adds r1, r7, 0
bl sub_80522F4
movs r0, 0
b _0805940A
.align 2, 0
_080593A4: .4byte gUnknown_80FE3BC
_080593A8:
movs r2, 0x8D
lsls r2, 1
adds r0, r1, r2
ldrh r0, [r0]
mov r12, r0
_080593B2:
mov r0, r12
cmp r0, 0
bne _080593CC
ldr r0, _080593C8
ldr r2, [r0]
adds r0, r6, 0
adds r1, r7, 0
bl sub_80522F4
b _08059408
.align 2, 0
_080593C8: .4byte gUnknown_80FE3BC
_080593CC:
adds r0, r5, 0
mov r1, r12
bl InitPokemonMove
ldr r0, _0805941C
adds r1, r5, 0
movs r2, 0
bl sub_80928C0
ldrb r1, [r5, 0x1]
movs r0, 0x4
orrs r0, r1
movs r1, 0x20
orrs r0, r1
strb r0, [r5, 0x1]
ldr r0, _08059420
ldr r2, [r0]
adds r0, r6, 0
adds r1, r7, 0
bl sub_80522F4
ldr r1, [sp]
adds r1, 0xFB
ldrb r0, [r1]
cmp r0, 0
bne _08059404
movs r0, 0x1
strb r0, [r1]
_08059404:
movs r1, 0x1
mov r10, r1
_08059408:
mov r0, r10
_0805940A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0805941C: .4byte gUnknown_202DE58
_08059420: .4byte gUnknown_80FE38C
thumb_func_end SketchMoveAction
.align 2, 0

File diff suppressed because it is too large Load Diff

3369
asm/code_8080CF0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -5,65 +5,6 @@
.text
thumb_func_start sub_809A83C
sub_809A83C:
push {r4-r7,lr}
lsls r0, 16
asrs r0, 16
ldr r2, _0809A8A0
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r3, _0809A8A4
adds r1, r3
ldr r2, [r2]
adds r6, r2, r1
ldr r1, _0809A8A8
strh r1, [r6]
movs r2, 0
movs r7, 0
strh r7, [r6, 0x2]
strb r2, [r6, 0x4]
strb r2, [r6, 0x5]
movs r1, 0xFF
strb r1, [r6, 0x6]
strb r2, [r6, 0x7]
str r7, [r6, 0x8]
str r7, [r6, 0xC]
str r7, [r6, 0x10]
str r7, [r6, 0x14]
strb r2, [r6, 0x1C]
lsls r4, r0, 2
adds r4, r0
lsls r4, 4
ldr r0, _0809A8AC
adds r0, r4, r0
ldr r5, _0809A8B0
adds r1, r5, 0
bl strcpy
ldr r0, _0809A8B4
adds r4, r0
adds r0, r4, 0
adds r1, r5, 0
bl strcpy
ldr r0, [r6, 0x20]
cmp r0, 0
beq _0809A89A
bl CloseFile
str r7, [r6, 0x20]
_0809A89A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809A8A0: .4byte gUnknown_3001B64
_0809A8A4: .4byte 0x0000043c
_0809A8A8: .4byte 0x0000ffff
_0809A8AC: .4byte gAvailablePokemonNames
_0809A8B0: .4byte gInvalidityText
_0809A8B4: .4byte gPlayerName
thumb_func_end sub_809A83C
thumb_func_start sub_809A8B8
sub_809A8B8:
push {r4-r7,lr}

View File

@@ -1,103 +0,0 @@
.section .rodata
@ code_801EE10
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC240
gUnknown_80DC240: @ 80DC240
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global Data_80DC258
Data_80DC258:
.byte 0x01, 0x00, 0x0f, 0x00
.global gUnknown_80DC25C
gUnknown_80DC25C: @ 80DC25C
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x02, 0x00
.byte 0x02, 0x00
.byte 0x12, 0x00
.byte 0x08, 0x00
.byte 0x08, 0x00
.byte 0x00, 0x00
.4byte Data_80DC258
.global gUnknown_80DC274
gUnknown_80DC274: @ 80DC274
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x0f, 0x00
.byte 0x1a, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC28C
gUnknown_80DC28C: @ 80DC28C
.string "Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} \0"
.align 2,0
.global gUnknown_80DC2A0
gUnknown_80DC2A0: @ 80DC2A0
.string "{ARG_MOVE_ITEM_0}\0"
@ code_801EE10_mid #1
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC2AC
gUnknown_80DC2AC: @ 80DC2AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC2C4
gUnknown_80DC2C4: @ 80DC2C4
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x02, 0x00
.byte 0x02, 0x00
.byte 0x0f, 0x00
.byte 0x04, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x00, 0x00
.global gUnknown_80DC2DC
gUnknown_80DC2DC: @ 80DC2DC
.string "Moves Page: %d/%d \0"
.align 2,0
@ code_801EE10_mid #2
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC2F8
gUnknown_80DC2F8: @ 80DC2F8
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC310
gUnknown_80DC310: @ 80DC310
.string "{ARG_POKEMON_0}\0"

View File

@@ -1890,176 +1890,5 @@ gFinalScenarioText: @ 8109CF4
@ 8109D30
#include "dungeon/dungeon_data.inc"
.global gUnknown_810A350
gUnknown_810A350: @ 810A350
@ replacing .incbin "baserom.gba", 0x0010a350, 0xb
.byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f
.align 2,0
.global gInvalidItemIDs
gInvalidItemIDs: @ 810A35B (item related)
@ replacing .incbin "baserom.gba", 0x0010a35b, 0x10
.byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0
.global gTacticsTargetLeader
gTacticsTargetLeader: @ 810A36B
@ replacing .incbin "baserom.gba", 0x0010a36b, 0xd
.byte 0x01
.byte 0x00
.byte 0x00
.byte 0x00
.byte 0x01
.byte 0x01
.byte 0x01
.byte 0x01
.byte 0x01
.byte 0x00
.byte 0x01
.byte 0x00
.byte 0x00
.global gReqTacticLvls
gReqTacticLvls: @ 810A378
@ replacing .incbin "baserom.gba", 0x0010a378, 0x18
.2byte 1
.2byte 25
.2byte 1
.2byte 1
.2byte 999
.2byte 999
.2byte 35
.2byte 40
.2byte 20
.2byte 15
.2byte 10
.2byte 999
.global gReqIQSkillPts
gReqIQSkillPts: @ 810A390
.byte 0x0f, 0x27, 0x00, 0x00
.byte 0x69, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.byte 0xf4, 0x01, 0x00, 0x00
.byte 0x64, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x28, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00
.byte 0xc8, 0x00, 0x00, 0x00
.byte 0x0a, 0x00, 0x00, 0x00
.byte 0x7d, 0x00, 0x00, 0x00
.byte 0x90, 0x01, 0x00, 0x00
.byte 0xde, 0x03, 0x00, 0x00
.byte 0x8c, 0x00, 0x00, 0x00
.byte 0x20, 0x03, 0x00, 0x00
.byte 0xfa, 0x00, 0x00, 0x00
.byte 0xa0, 0x00, 0x00, 0x00
.byte 0x46, 0x00, 0x00, 0x00
.byte 0x58, 0x02, 0x00, 0x00
.byte 0x2c, 0x01, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.global gUnknown_810A3F0
gUnknown_810A3F0: @ 810A3F0 (money related according to PMDe
@ LUT for money item stack size -> money amount
.4byte 4, 6, 10, 14, 22, 26, 34, 38, 46, 58
.4byte 62, 74, 82, 86, 94, 106, 118, 122, 134, 142
.4byte 146, 158, 166, 178, 194, 202, 206, 214, 218, 226
.4byte 254, 262, 274, 278, 298, 302, 314, 326, 334, 346
.4byte 358, 362, 382, 386, 394, 398, 422, 446, 454, 458
.4byte 466, 478, 482, 502, 514, 526, 538, 542, 554, 562
.4byte 566, 586, 614, 622, 626, 634, 662, 674, 694, 698
.4byte 706, 718, 734, 746, 758, 768, 778, 794, 802, 818
.4byte 838, 842, 862, 866, 878, 886, 898, 914, 922, 926
.4byte 934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000
.global gTypeGummiIQBoost
gTypeGummiIQBoost: @ 810A580
// s16[0x12][NUMBER_OF_GUMMIS = 18]
// relates [type][gummi tyep] -> iq boost amount
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00
.byte 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00
.byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00
.byte 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00
.byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00
.byte 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00
.byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x07, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00
.byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00
.byte 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00
.byte 0x02, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00
.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00
.byte 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00
.byte 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00
.byte 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00
.global gUnknown_810A808
gUnknown_810A808: @ 810A808
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00
.byte 0x14, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00
.byte 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x3c, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00
.byte 0x1e, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00
.byte 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00
.byte 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x05, 0x00
.byte 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00
.byte 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00
.byte 0x19, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00
.byte 0x14, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00
.byte 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00
.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00
.byte 0x3c, 0x00, 0x19, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00
.byte 0x14, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00
.byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3c, 0x00

View File

@@ -10,7 +10,7 @@
typedef struct unkStruct_203B270
{
u32 unk0;
u8 unk4;
bool8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
@@ -18,7 +18,7 @@ typedef struct unkStruct_203B270
/* 0xC */ u8 isTeamLeader;
/* 0x10 */ Move *moves;
u8 fill14[0x1C - 0x14];
MenuInputStruct input;
/* 0x1C */ MenuInputStruct input;
u32 unk50;
u32 unk54;
UnkTextStruct2 unk58[4];
@@ -26,13 +26,13 @@ typedef struct unkStruct_203B270
} unkStruct_203B270;
u8 sub_801EE10(u32, s16 species, Move *moves, u32, const u8 *text, u32);
u32 sub_801EF38(char);
s32 sub_801F194(void);
bool8 sub_801F1A4(void);
void sub_801F1B0(bool8, bool8);
void sub_801F214(void);
// code_801EE10.s
extern u32 sub_801EF38(u32);
extern u32 sub_801F194(void);
extern bool8 sub_801F1A4(void);
extern void sub_801F1B0(bool8, bool8);
extern void sub_801F214(void);
extern void sub_801F280(u32); // Probably bool
#endif // CODE_801EE10_H
#endif // CODE_801EE10_H

View File

@@ -47,6 +47,6 @@ void PrintDungeonLocationtoBuffer(u8 *buffer, DungeonLocation *dungeonLocation);
u32 sub_80908D8(DungeonLocation *dungeon);
u8 sub_8090910(DungeonLocation *dungeon, u32 param_2);
bool8 sub_809095C(u8 dungeon);
bool8 IsNotValidDungeon(u8 dungeon);
#endif // GUARD_DUNGEON_H

View File

@@ -40,7 +40,7 @@ bool8 sub_8013938(MenuInputStruct *param_1);
void sub_8013984(MenuInputStruct * param_1);
void sub_8013A54(MenuInputStruct *param_1);
void sub_8013A7C(MenuInputStruct *param_1);
void AddMenuCursorSprite_(MenuInputStruct *, u32);
void AddMenuCursorSprite_(MenuInputStruct *, u8 *);
void nullsub_34(MenuInputStructSub *);
void sub_8013AA0(unkStructFor8013AA0 *);
@@ -48,4 +48,4 @@ u32 sub_8013BBC(unkStructFor8013AA0 *);
void sub_8013C68(unkStructFor8013AA0 *);
void sub_8013D10(unkStructFor8013AA0 *);
#endif // GUARD_MENU_INPUT_H
#endif // GUARD_MENU_INPUT_H

View File

@@ -245,7 +245,7 @@ typedef struct EntityInfo
/* 0x1F4 */ u8 numMoveTiles; // Number of tiles to move in a turn. Can be greater than 1 if the user's movement speed is boosted.
u8 fill1F5;
/* 0x1F6 */ bool8 notMoving;
u8 fill1F7[0x1FA - 0x1F7];
/* 0x1F8 */ s16 unk1F8;
/* 0x1FA */ s16 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
/* 0x1FC */ u32 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn.
/* 0x200 */ u32 statusIcons;

View File

@@ -13,6 +13,8 @@
#define DUNGEON_MAX_SIZE_Y 32
#define DUNGEON_MAX_WILD_POKEMON 16
#define DUNGEON_MAX_POKEMON MAX_TEAM_MEMBERS + DUNGEON_MAX_WILD_POKEMON
#define DUNGEON_MAX_TRAPS 64
#define DUNGEON_MAX_ITEMS 64
// size: 0x4
typedef struct DungeonLocation
@@ -196,12 +198,12 @@ typedef struct Dungeon
/* 0x1357C */ Entity *teamPokemon[MAX_TEAM_MEMBERS];
/* 0x1358C */ Entity *wildPokemon[DUNGEON_MAX_WILD_POKEMON];
/* 0x135CC */ Entity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon
/* 0x1361C */ Entity *clientPokemon[0x40];
/* 0x1371C */ Entity *unk1371C[0x40];
/* 0x1361C */ Entity *items[DUNGEON_MAX_ITEMS];
/* 0x1371C */ Entity *traps[DUNGEON_MAX_TRAPS];
/* 0x1381C */ Entity teamPokemonEntities[MAX_TEAM_MEMBERS];
/* 0x139EC */ Entity wildPokemonEntities[DUNGEON_MAX_WILD_POKEMON];
/* 0x1412C */ Entity clientPokemonEntities[0x40];
/* 0x15E2C */ Entity unk15E2C[0x40];
/* 0x1412C */ Entity itemEntities[DUNGEON_MAX_ITEMS];
/* 0x15E2C */ Entity trapEntites[DUNGEON_MAX_TRAPS];
/* 0x17B2C */ Entity *lightningRodPokemon;
/* 0x17B30 */ Entity *snatchPokemon;
/* 0x17B34 */ Entity *unk17B34;

View File

@@ -123,6 +123,8 @@ SECTIONS {
src/code_801EE10.o(.text);
asm/code_801EE10.o(.text);
src/code_801EE10_mid.o(.text);
src/code_801F428.o(.text);
src/code_801F808.o(.text);
src/gulpin_shop_801FB50.o(.text);
src/wigglytuff_shop1.o(.text);
src/wigglytuff_shop2.o(.text);
@@ -223,9 +225,7 @@ SECTIONS {
asm/code_80521D0.o(.text);
src/charge_move.o(.text);
src/move_util.o(.text);
src/code_8057824.o(.text);
asm/code_8057824.o(.text);
src/code_805A120.o(.text);
src/move_actions.o(.text);
src/status_actions.o(.text);
src/move_checks.o(.text);
asm/code_805D8C8.o(.text);
@@ -272,6 +272,8 @@ SECTIONS {
src/code_807E5AC.o(.text);
src/trap.o(.text);
asm/code_807FCD4.o(.text);
src/trap_1.o(.text);
asm/code_8080CF0.o(.text);
src/code_8083288.o(.text);
src/dungeon_range.o(.text);
src/code_808333C.o(.text);
@@ -458,7 +460,9 @@ SECTIONS {
src/hints_menu1.o(.rodata);
src/hints_menu2.o(.rodata);
src/gulpin_shop.o(.rodata);
data/data_80DC240.o(.rodata);
src/code_801EE10.o(.rodata);
src/code_801F428.o(.rodata);
src/code_801F808.o(.rodata);
src/gulpin_shop_801FB50.o(.rodata);
src/wigglytuff_shop1.o(.rodata);
src/wigglytuff_shop2.o(.rodata);
@@ -541,6 +545,9 @@ SECTIONS {
src/dungeon_capabilities.o(.rodata);
src/dungeon_ai_targeting.o(.rodata);
data/data_8107010.o(.rodata);
src/pokemon_3.o(.rodata);
src/items.o(.rodata);
src/code_8048480.o(.rodata);
src/friend_area.o(.rodata);
data/data_810AC60.o(.rodata);
src/tile_types.o(.rodata);

View File

@@ -1,67 +1,277 @@
#include "global.h"
#include "globaldata.h"
#include "constants/input.h"
#include "input.h"
#include "items.h"
#include "text1.h"
#include "text2.h"
#include "memory.h"
#include "moves.h"
#include "code_801EE10.h"
#include "code_80118A4.h"
#include "menu_input.h"
extern unkStruct_203B270 *gUnknown_203B270;
extern UnkTextStruct2 gUnknown_80DC25C;
extern UnkTextStruct2 gUnknown_80DC274;
const UnkTextStruct2 gUnknown_80DC240 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const u8 gUnkData_80DC258[4] = {0x01, 0x00, 0x0F, 0x00};
const UnkTextStruct2 gUnknown_80DC25C = {
0, 0, 0, 0,
6,
0x2, 0x2,
0x12, 0x8,
0x8, 0,
gUnkData_80DC258
};
const UnkTextStruct2 gUnknown_80DC274 = {
0, 0, 0, 0,
3,
0x2, 0xF,
0x1A, 0x3,
0x3, 0,
NULL,
};
ALIGNED(4) const u8 gUnknown_80DC28C[] = _("Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} ");
ALIGNED(4) const u8 gUnknown_80DC2A0[] = _("{ARG_MOVE_ITEM_0}");
u32 sub_8006544(u32 index);
s32 sub_801F3F8(void);
u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *text, u32 param_6)
{
s32 iVar5;
s32 iVar8;
s32 species_s32;
u8 param_4_u8;
s32 four;
species_s32 = species;
param_4_u8 = param_4;
gUnknown_203B270 = MemoryAlloc(sizeof(unkStruct_203B270), 8);
gUnknown_203B270->unk4 = param_4_u8;
gUnknown_203B270->unk5 = 1;
gUnknown_203B270->unk6 = 1;
gUnknown_203B270->unk7 = 1;
gUnknown_203B270->unk0 = param_1;
switch(param_1)
{
case 2:
case 3:
gUnknown_203B270->unk5 = 0;
gUnknown_203B270->unk6 = 0;
gUnknown_203B270->unk7 = 0;
break;
case 0:
case 1:
break;
}
gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader;
gUnknown_203B270->moves = moves;
gUnknown_203B270->text = text;
iVar8 = iVar5 = sub_801F3F8();
four = 4;
if (iVar8 < four) {
iVar8 = 4;
}
sub_8006518(gUnknown_203B270->unk58);
gUnknown_203B270->unk50 = param_6;
gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C;
if (gUnknown_203B270->text != NULL) {
gUnknown_203B270->unk54 = sub_8006544(param_6);
gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274;
}
sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE);
sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6);
sub_8013780(&gUnknown_203B270->input,0);
sub_801F280(1);
return 1;
s32 iVar5;
s32 iVar8;
s32 species_s32;
u8 param_4_u8;
s32 four;
species_s32 = species;
param_4_u8 = param_4;
gUnknown_203B270 = MemoryAlloc(sizeof(unkStruct_203B270), 8);
gUnknown_203B270->unk4 = param_4_u8;
gUnknown_203B270->unk5 = 1;
gUnknown_203B270->unk6 = 1;
gUnknown_203B270->unk7 = 1;
gUnknown_203B270->unk0 = param_1;
switch(param_1)
{
case 2:
case 3:
gUnknown_203B270->unk5 = 0;
gUnknown_203B270->unk6 = 0;
gUnknown_203B270->unk7 = 0;
break;
case 0:
case 1:
break;
}
gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader;
gUnknown_203B270->moves = moves;
gUnknown_203B270->text = text;
iVar8 = iVar5 = sub_801F3F8();
four = 4;
if (iVar8 < four) {
iVar8 = 4;
}
sub_8006518(gUnknown_203B270->unk58);
gUnknown_203B270->unk50 = param_6;
gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C;
if (gUnknown_203B270->text != NULL) {
gUnknown_203B270->unk54 = sub_8006544(param_6);
gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274;
}
sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE);
sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6);
sub_8013780(&gUnknown_203B270->input,0);
sub_801F280(1);
return 1;
}
u32 sub_801EF38(char param_1)
{
bool8 flag;
s32 index;
s32 index2;
s32 moveIndex;
s32 newIndex;
struct Move *move;
flag = FALSE;
if (param_1 == 0) {
sub_8013660(&gUnknown_203B270->input);
return 0;
}
switch(GetKeyPress(&gUnknown_203B270->input)) {
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
case INPUT_START_BUTTON:
PlayMenuSoundEffect(4);
return 4;
case INPUT_DPAD_DOWN:
index = gUnknown_203B270->input.menuIndex;
sub_8013780(&gUnknown_203B270->input, unk_FindMoveEnabledForAIAfter8_v2(gUnknown_203B270->moves, index));
if (index != gUnknown_203B270->input.menuIndex) {
PlayMenuSoundEffect(3);
}
break;
case INPUT_DPAD_UP:
index = gUnknown_203B270->input.menuIndex;
sub_8013780(&gUnknown_203B270->input,unk_FindMoveEnabledForAIBefore8_v2(gUnknown_203B270->moves,index));
if (index != gUnknown_203B270->input.menuIndex) {
PlayMenuSoundEffect(3);
}
break;
case INPUT_R_DPAD_DOWN_BUTTONS:
if (gUnknown_203B270->unk5 == 0) break;
moveIndex = gUnknown_203B270->input.menuIndex;
newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToLastInLinkedSequence8_v2(gUnknown_203B270->moves, moveIndex);
if (moveIndex != newIndex) {
PlayMenuSoundEffect(3);
}
else {
goto _134;
}
sub_801F280(1);
return 1;
case INPUT_R_DPAD_UP_BUTTONS:
if (gUnknown_203B270->unk5 == 0) break;
moveIndex = gUnknown_203B270->input.menuIndex;
newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToFirstInLinkedSequence8_v2(gUnknown_203B270->moves,moveIndex);
if (moveIndex != newIndex) {
PlayMenuSoundEffect(3);
}
else {
_134:
PlayMenuSoundEffect(2);
}
sub_801F280(1);
return 1;
case INPUT_R_A_BUTTONS:
if (gUnknown_203B270->unk6 != 0) {
if ((gTeamInventoryRef->teamMoney > 0x95) && (sub_8093318(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)))
{
TryLinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves);
PlayMenuSoundEffect(6);
flag = TRUE;
if (!gUnknown_203B270->unk4) {
gUnknown_203B270->unk4 = TRUE;
PlaySound(0x14c);
}
break;
}
else if (UnlinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) {
PlayMenuSoundEffect(6);
goto _ret;
}
else {
PlayMenuSoundEffect(2);
break;
}
}
break;
case INPUT_SELECT_BUTTON:
if (gUnknown_203B270->unk7 != 0) {
if (gUnknown_203B270->isTeamLeader) {
if (!ToggleSetMove(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) {
PlayMenuSoundEffect(2);
break;
}
else {
PlayMenuSoundEffect(6);
goto _ret;
}
}
else if (ToggleMoveEnabled(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) {
PlayMenuSoundEffect(6);
goto _ret;
}
else {
PlayMenuSoundEffect(2);
break;
}
}
break;
}
if (!flag) {
for(index2 = 0; index2 < 8; index2++)
{
move = &gUnknown_203B270->moves[index2];
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
if ((move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) {
gUnknown_203B270->fill14[index2] = 1;
}
else {
gUnknown_203B270->fill14[index2] = 0;
}
}
}
AddMenuCursorSprite_(&gUnknown_203B270->input, gUnknown_203B270->fill14);
}
if (flag) {
_ret:
sub_801F280(1);
return 1;
}
else
{
return 0;
}
}
s32 sub_801F194 (void)
{
return gUnknown_203B270->input.menuIndex;
}
bool8 sub_801F1A4(void)
{
return gUnknown_203B270->unk4;
}
void sub_801F1B0(bool8 param_1, bool8 param_2)
{
if(!gUnknown_203B270->unk4)
gUnknown_203B270->unk4 = param_2;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE);
gUnknown_203B270->input.unk22 = sub_801F3F8();
sub_8013984(&gUnknown_203B270->input);
gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex);
sub_801F280(1);
if(param_1)
AddMenuCursorSprite(&gUnknown_203B270->input);
}
void sub_801F214(void)
{
if(gUnknown_203B270)
{
gUnknown_203B270->unk58[gUnknown_203B270->unk50] = gUnknown_80DC240;
if(gUnknown_203B270->text)
{
gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC240;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE);
MemoryFree(gUnknown_203B270);
gUnknown_203B270 = NULL;
}
}

View File

@@ -1,72 +1,8 @@
#include "global.h"
#include "memory.h"
#include "text1.h"
#include "text2.h"
#include "pokemon.h"
#include "code_800D090.h"
#include "moves.h"
#include "code_801EE10.h"
#include "menu_input.h"
#include "structs/subStruct_203B240.h"
#include "sprite.h"
#include "code_80130A8.h"
#include "code_801EE10_mid.h"
#include "code_80118A4.h"
#include "input.h"
extern unkStruct_203B270 *gUnknown_203B270;
struct unkStruct_203B274
{
// size: 0x3e8
PokemonStruct1 *pokeStruct;
unkStruct_808E218_arg *unk4;
unkStruct_808E218_arg unk8;
MenuInputStruct input;
s32 unk37C;
UnkTextStruct2 *unk380;
UnkTextStruct2 unk384[4];
u8 unk3E4[4];
};
extern struct unkStruct_203B274 *gUnknown_203B274;
struct unkStruct_203B278
{
s32 state;
u16 *moveIDs;
u16 unk8;
u16 fillA;
s32 unkC;
s32 unk10;
struct subStruct_203B240 *unk14[4];
u32 unk24;
MenuInputStruct unk28;
u32 unk5C;
UnkTextStruct2 *unk60;
UnkTextStruct2 unk64[4];
u8 unkC4[4];
MenuInputStructSub unkC8;
};
extern struct unkStruct_203B278 *gUnknown_203B278;
extern UnkTextStruct2 gUnknown_80DC2C4;
extern UnkTextStruct2 gUnknown_80DC2AC;
extern UnkTextStruct2 gUnknown_80DC2F8;
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_80DC310[];
extern u8 gUnknown_80DC2DC[];
extern void sub_801F918(s32);
extern void sub_801FA58(void);
extern void sub_801FAD4(void);
extern void sub_801F930(void);
extern void sub_801F9A4(void);
u32 sub_801F7E4(void);
void sub_801F690(void);
s32 sub_801F3F8(void)
{
Move *move;
@@ -83,355 +19,3 @@ s32 sub_801F3F8(void)
}
return counter;
}
// THIS IS A NEW FILE
bool8 sub_801F428(s16 index, s32 param_2)
{
s32 index_s32 = index;
gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8);
gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32];
gUnknown_203B274->unk4 = &gUnknown_203B274->unk8;
gUnknown_203B274->unk37C = param_2;
gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C];
sub_8006518(gUnknown_203B274->unk384);
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2C4;
gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4;
gUnknown_203B274->unk3E4[0] = 1;
gUnknown_203B274->unk3E4[1] = 0;
gUnknown_203B274->unk3E4[2] = 0xC;
gUnknown_203B274->unk3E4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return TRUE;
}
u32 sub_801F520(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B274->input);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B274->input))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
break;
}
if (sub_80138B8(&gUnknown_203B274->input,1) != 0) {
sub_801F690();
sub_801F700();
return 1;
}
else {
return 0;
}
}
}
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex];
}
void sub_801F5F0(bool8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE);
sub_8013984(&gUnknown_203B274->input);
sub_801F690();
sub_801F700();
if(r0)
AddMenuCursorSprite(&gUnknown_203B274->input);
}
void sub_801F63C(void)
{
if(gUnknown_203B274 != NULL)
{
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2AC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
MemoryFree(gUnknown_203B274);
gUnknown_203B274 = NULL;
}
}
NAKED // sub_80095E4 memes
void sub_801F690(void)
{
asm_unified(
"\tpush {r4,r5,lr}\n"
"\tldr r5, _0801F6F4\n"
"\tldr r0, [r5]\n"
"\tldr r1, _0801F6F8\n"
"\tadds r0, r1\n"
"\tmovs r2, 0\n"
"\tldrsh r0, [r0, r2]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r3, [r5]\n"
"\tmovs r1, 0xDF\n"
"\tlsls r1, 2\n"
"\tadds r4, r3, r1\n"
"\tldr r2, [r4]\n"
"\tlsls r1, r2, 1\n"
"\tadds r1, r2\n"
"\tlsls r1, 3\n"
"\tadds r1, r3, r1\n"
"\tldr r2, _0801F6FC\n"
"\tadds r1, r2\n"
"\tasrs r2, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r4]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r3, r0\n"
"\tadds r2, 0x2\n"
"\tmovs r0, 0xE5\n"
"\tlsls r0, 2\n"
"\tadds r3, r0\n"
"\tstrh r2, [r3]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0xE1\n"
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801F6F4: .4byte gUnknown_203B274\n"
"_0801F6F8: .4byte 0x00000362\n"
"_0801F6FC: .4byte 0x00000392");
}
void sub_801F700(void)
{
u32 y;
int index;
u8 buffer2 [48];
u8 buffer1 [128];
sub_8008C54(gUnknown_203B274->unk37C);
sub_80073B8(gUnknown_203B274->unk37C);
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
for(index = 0; index < gUnknown_203B274->input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]);
y = sub_8013800(&gUnknown_203B274->input, index);
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
}
sub_80073E0(gUnknown_203B274->unk37C);
}
u32 sub_801F7E4(void)
{
sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct);
return gUnknown_203B274->unk4->count;
}
// THIS IS A NEW FILE
bool8 sub_801F808(u16 *moveIDs)
{
s32 index;
ResetSprites(TRUE);
gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8);
gUnknown_203B278->unk5C = 0;
gUnknown_203B278->unk60 = gUnknown_203B278->unk64;
sub_80140B4(gUnknown_203B278->unk64);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
gUnknown_203B278->moveIDs = moveIDs;
for(index = 4; index > 1; index--)
{
if(gUnknown_203B278->moveIDs[index - 1] != 0) break;
}
sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
sub_801317C(&gUnknown_203B278->unkC8);
sub_801F918(0);
return 1;
}
u32 sub_801F890(void)
{
switch (gUnknown_203B278->state) {
case 0:
sub_801FA58();
break;
case 1:
sub_801FAD4();
break;
case 3:
return 3;
default:
case 2:
return 2;
}
return 0;
}
void sub_801F8D0(void)
{
if(gUnknown_203B278)
{
gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = gUnknown_80DC2F8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
MemoryFree(gUnknown_203B278);
gUnknown_203B278 = NULL;
}
}
void sub_801F918(s32 newState)
{
gUnknown_203B278->state = newState;
sub_801F930();
sub_801F9A4();
}
void sub_801F930(void)
{
sub_80140B4(gUnknown_203B278->unk64);
switch(gUnknown_203B278->state)
{
case 0:
gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4;
gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20;
gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E;
gUnknown_203B278->unkC4[2] = 0x10;
gUnknown_203B278->unkC4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
case 1:
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
default:
break;
}
}
void sub_801F9A4(void)
{
u8 **name;
switch (gUnknown_203B278->state) {
case 0:
sub_8008C54(gUnknown_203B278->unk5C);
gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
gUnknown_203B278->unk24 = 0;
break;
case 1:
sub_8008C54(gUnknown_203B278->unk5C);
sub_80073B8(gUnknown_203B278->unk5C);
name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName);
strcpy(gAvailablePokemonNames, *name);
xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0
xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0);
sub_80073E0(gUnknown_203B278->unk5C);
break;
case 2:
break;
}
}
void sub_801FA58(void)
{
if(gUnknown_203B278->unk10 != 0)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B278->unk10 != 0)
{
gUnknown_203B278->unkC = 0;
sub_801F918(1);
}
else
{
sub_801F918(3);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
default:
if(sub_8013938(&gUnknown_203B278->unk28))
{
sub_801F918(0);
}
}
}
void sub_801FAD4(void)
{
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
gUnknown_203B278->unkC++;
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10)
{
sub_801F918(1);
}
else {
sub_801F918(0);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
}
}

218
src/code_801F428.c Normal file
View File

@@ -0,0 +1,218 @@
#include "global.h"
#include "globaldata.h"
#include "code_80118A4.h"
#include "code_800D090.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "moves.h"
#include "pokemon.h"
#include "text1.h"
#include "text2.h"
struct unkStruct_203B274
{
// size: 0x3e8
PokemonStruct1 *pokeStruct;
unkStruct_808E218_arg *unk4;
unkStruct_808E218_arg unk8;
MenuInputStruct input;
s32 unk37C;
UnkTextStruct2 *unk380;
UnkTextStruct2 unk384[4];
u8 unk3E4[4];
};
extern struct unkStruct_203B274 *gUnknown_203B274;
extern u8 gAvailablePokemonNames[];
static const UnkTextStruct2 sUnknown_80DC2AC = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
static const UnkTextStruct2 sUnknown_80DC2C4 = {
0, 0, 0, 0,
6,
2, 2,
0xF, 4,
6, 0,
NULL
};
ALIGNED(4) const u8 gUnknown_80DC2DC[] = _("Moves Page: %d/%d ");
u32 sub_801F7E4(void);
void sub_801F690(void);
void sub_801F700(void);
bool8 sub_801F428(s16 index, s32 param_2)
{
s32 index_s32 = index;
gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8);
gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32];
gUnknown_203B274->unk4 = &gUnknown_203B274->unk8;
gUnknown_203B274->unk37C = param_2;
gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C];
sub_8006518(gUnknown_203B274->unk384);
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2C4;
gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4;
gUnknown_203B274->unk3E4[0] = 1;
gUnknown_203B274->unk3E4[1] = 0;
gUnknown_203B274->unk3E4[2] = 0xC;
gUnknown_203B274->unk3E4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return TRUE;
}
u32 sub_801F520(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B274->input);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B274->input))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
break;
}
if (sub_80138B8(&gUnknown_203B274->input,1) != 0) {
sub_801F690();
sub_801F700();
return 1;
}
else {
return 0;
}
}
}
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex];
}
void sub_801F5F0(bool8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE);
sub_8013984(&gUnknown_203B274->input);
sub_801F690();
sub_801F700();
if(r0)
AddMenuCursorSprite(&gUnknown_203B274->input);
}
void sub_801F63C(void)
{
if(gUnknown_203B274 != NULL)
{
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2AC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
MemoryFree(gUnknown_203B274);
gUnknown_203B274 = NULL;
}
}
NAKED // sub_80095E4 memes
void sub_801F690(void)
{
asm_unified(
"\tpush {r4,r5,lr}\n"
"\tldr r5, _0801F6F4\n"
"\tldr r0, [r5]\n"
"\tldr r1, _0801F6F8\n"
"\tadds r0, r1\n"
"\tmovs r2, 0\n"
"\tldrsh r0, [r0, r2]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r3, [r5]\n"
"\tmovs r1, 0xDF\n"
"\tlsls r1, 2\n"
"\tadds r4, r3, r1\n"
"\tldr r2, [r4]\n"
"\tlsls r1, r2, 1\n"
"\tadds r1, r2\n"
"\tlsls r1, 3\n"
"\tadds r1, r3, r1\n"
"\tldr r2, _0801F6FC\n"
"\tadds r1, r2\n"
"\tasrs r2, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r4]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r3, r0\n"
"\tadds r2, 0x2\n"
"\tmovs r0, 0xE5\n"
"\tlsls r0, 2\n"
"\tadds r3, r0\n"
"\tstrh r2, [r3]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0xE1\n"
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801F6F4: .4byte gUnknown_203B274\n"
"_0801F6F8: .4byte 0x00000362\n"
"_0801F6FC: .4byte 0x00000392");
}
void sub_801F700(void)
{
u32 y;
int index;
u8 buffer2 [48];
u8 buffer1 [128];
sub_8008C54(gUnknown_203B274->unk37C);
sub_80073B8(gUnknown_203B274->unk37C);
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
for(index = 0; index < gUnknown_203B274->input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]);
y = sub_8013800(&gUnknown_203B274->input, index);
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
}
sub_80073E0(gUnknown_203B274->unk37C);
}
u32 sub_801F7E4(void)
{
sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct);
return gUnknown_203B274->unk4->count;
}

227
src/code_801F808.c Normal file
View File

@@ -0,0 +1,227 @@
#include "global.h"
#include "globaldata.h"
#include "code_80130A8.h"
#include "code_80118A4.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "moves.h"
#include "sprite.h"
#include "structs/menu.h"
#include "structs/str_text.h"
#include "text1.h"
#include "text2.h"
extern u8 gAvailablePokemonNames[];
struct unkStruct_203B278
{
s32 state;
u16 *moveIDs;
u16 unk8;
u16 fillA;
s32 unkC;
s32 unk10;
struct subStruct_203B240 *unk14[4];
u32 unk24;
MenuInputStruct unk28;
u32 unk5C;
UnkTextStruct2 *unk60;
UnkTextStruct2 unk64[4];
u8 unkC4[4];
MenuInputStructSub unkC8;
};
extern struct unkStruct_203B278 *gUnknown_203B278;
static const UnkTextStruct2 sUnknown_80DC2F8 = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
const u8 gUnknown_80DC310[] = _("{ARG_POKEMON_0}");
extern void sub_801F918(s32);
extern void sub_801FA58(void);
extern void sub_801FAD4(void);
extern void sub_801F930(void);
extern void sub_801F9A4(void);
bool8 sub_801F808(u16 *moveIDs)
{
s32 index;
ResetSprites(TRUE);
gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8);
gUnknown_203B278->unk5C = 0;
gUnknown_203B278->unk60 = gUnknown_203B278->unk64;
sub_80140B4(gUnknown_203B278->unk64);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
gUnknown_203B278->moveIDs = moveIDs;
for(index = 4; index > 1; index--)
{
if(gUnknown_203B278->moveIDs[index - 1] != 0) break;
}
sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
sub_801317C(&gUnknown_203B278->unkC8);
sub_801F918(0);
return 1;
}
u32 sub_801F890(void)
{
switch (gUnknown_203B278->state) {
case 0:
sub_801FA58();
break;
case 1:
sub_801FAD4();
break;
case 3:
return 3;
default:
case 2:
return 2;
}
return 0;
}
void sub_801F8D0(void)
{
if(gUnknown_203B278)
{
gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = sUnknown_80DC2F8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
MemoryFree(gUnknown_203B278);
gUnknown_203B278 = NULL;
}
}
void sub_801F918(s32 newState)
{
gUnknown_203B278->state = newState;
sub_801F930();
sub_801F9A4();
}
void sub_801F930(void)
{
sub_80140B4(gUnknown_203B278->unk64);
switch(gUnknown_203B278->state)
{
case 0:
gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4;
gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20;
gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E;
gUnknown_203B278->unkC4[2] = 0x10;
gUnknown_203B278->unkC4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
case 1:
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
default:
break;
}
}
void sub_801F9A4(void)
{
u8 **name;
switch (gUnknown_203B278->state) {
case 0:
sub_8008C54(gUnknown_203B278->unk5C);
gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
gUnknown_203B278->unk24 = 0;
break;
case 1:
sub_8008C54(gUnknown_203B278->unk5C);
sub_80073B8(gUnknown_203B278->unk5C);
name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName);
strcpy(gAvailablePokemonNames, *name);
xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0
xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0);
sub_80073E0(gUnknown_203B278->unk5C);
break;
case 2:
break;
}
}
void sub_801FA58(void)
{
if(gUnknown_203B278->unk10 != 0)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B278->unk10 != 0)
{
gUnknown_203B278->unkC = 0;
sub_801F918(1);
}
else
{
sub_801F918(3);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
default:
if(sub_8013938(&gUnknown_203B278->unk28))
{
sub_801F918(0);
}
}
}
void sub_801FAD4(void)
{
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
gUnknown_203B278->unkC++;
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10)
{
sub_801F918(1);
}
else {
sub_801F918(0);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
}
}

View File

@@ -24,7 +24,6 @@ extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DE58[];
extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS];
extern s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS];
extern u8 *gUnknown_80F89F4[];
extern u8 *gUnknown_80FB580[];
@@ -66,6 +65,8 @@ extern u8 *gUnknown_80FECA0[];
extern u8 *gUnknown_80FE3E8[];
extern u8 *gUnknown_80F9BD8[];
#include "data/code_8048480.h"
extern void sub_80421C0(Entity *r0, u16 r1);
extern void sub_8078B5C(Entity *, Entity *, u32, u32, u32);
extern u8 sub_806A538(s32);

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "structs/str_position.h"
extern void sub_8082FE0(u32, void *, u32);
extern void sub_8082FA8(void *, void *, u32);
@@ -76,10 +77,10 @@ void sub_80830B4(u32 *param_1, u8 param_2)
sub_8082FA8(param_1,&local_8,1);
}
void sub_80830D8(u32 *param_1, u16 *param_2)
void SavePosition(u32 *param_1, Position *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
sub_8082FA8(param_1, &param_2->x, 1);
sub_8082FA8(param_1, &param_2->y, 1);
}
void sub_80830F8(u32 *param_1, u32 *param_2)
@@ -96,9 +97,9 @@ void sub_808312C(u32 *param_1, u16 *param_2)
sub_8082FA8(param_1, &param_2[1], 1);
}
void sub_808314C(u32 *param_1, u32 *param_2, u32 param_3)
void SaveSpeedCounters(u32 *param_1, u32 *speedCounters, u32 numCounters)
{
sub_8082FA8(param_1, param_2, param_3);
sub_8082FA8(param_1, speedCounters, numCounters);
}
u16 sub_8083158(u32 param_1)

View File

@@ -90,7 +90,7 @@ bool8 ValidateWonderMail(WonderMail *data)
if(data->unk2 > 9)
return FALSE;
if(sub_809095C(data->unk4.dungeon.id))
if(IsNotValidDungeon(data->unk4.dungeon.id))
return FALSE;
if(data->unk4.dungeon.floor >= GetDungeonFloorCount(data->unk4.dungeon.id))
return FALSE;

View File

@@ -15,7 +15,7 @@ struct unkStruct_3001B64_sub
u32 unk8;
u32 unkC;
u32 unk10;
/* 0x14 */ u32 faceData;
/* 0x14 */ u8 *faceData;
u32 fill18;
u8 unk1C;
u8 fill1D[0x20 - 0x1D];
@@ -237,29 +237,32 @@ void sub_809A7EC(void)
}
}
// https://decomp.me/scratch/4MpWc (96.23% matching - Seth)
// void sub_809A83C(s16 index)
// {
// struct unkStruct_3001B64_sub *temp;
//
// temp = &gUnknown_3001B64->unk43C[index];
//
// temp->unk0 = -1;
// temp->speciesID = MONSTER_NONE;
// temp->unk4 = 0;
// temp->unk5 = 0;
// temp->unk6 = -1;
// temp->unk7 = 0;
// temp->unk8 = 0;
// temp->unkC = 0;
// temp->unk10 = 0;
// temp->faceData = NULL;
// temp->unk1C = 0;
// strcpy(gAvailablePokemonNames + (index * 0x50), gInvalidityText);
// strcpy(gPlayerName + (index * 0x50), gInvalidityText);
// if(temp->faceFile)
// {
// CloseFile(temp->faceFile);
// temp->faceFile = NULL;
// }
// }
static inline struct unkStruct_3001B64_sub *sub_809A83C_inline(s16 p, struct unkStruct_3001B64 **thing) {
return &thing[0]->unk43C[p];
}
void sub_809A83C(s16 param_1)
{
struct unkStruct_3001B64_sub *temp;
temp = sub_809A83C_inline(param_1, &gUnknown_3001B64);
temp->unk0 = -1;
temp->speciesID = 0;
temp->unk4 = 0;
temp->unk5 = 0;
temp->unk6 = -1;
temp->unk7 = 0;
temp->unk8 = 0;
temp->unkC = 0;
temp->unk10 = 0;
temp->faceData = NULL;
temp->unk1C = 0;
strcpy(gAvailablePokemonNames + (param_1 * 0x50), gInvalidityText);
strcpy(gPlayerName + (param_1 * 0x50), gInvalidityText);
if(temp->faceFile)
{
CloseFile(temp->faceFile);
temp->faceFile = NULL;
}
}

21
src/data/code_8048480.h Normal file
View File

@@ -0,0 +1,21 @@
const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] =
{
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
[TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19},
[TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14},
[TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
[TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19},
[TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
[TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e},
[TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19},
[TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19},
[TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19},
[TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19},
[TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19},
[TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19},
[TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e},
[TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19},
[TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19},
[TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19},
[TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c},
};

36
src/data/items.h Normal file
View File

@@ -0,0 +1,36 @@
// LUT for money item stack size -> money amount
const s32 gUnknown_810A3F0[100] = {
4, 6, 10, 14, 22, 26, 34, 38, 46, 58,
62, 74, 82, 86, 94, 106, 118, 122, 134, 142,
146, 158, 166, 178, 194, 202, 206, 214, 218, 226,
254, 262, 274, 278, 298, 302, 314, 326, 334, 346,
358, 362, 382, 386, 394, 398, 422, 446, 454, 458,
466, 478, 482, 502, 514, 526, 538, 542, 554, 562,
566, 586, 614, 622, 626, 634, 662, 674, 694, 698,
706, 718, 734, 746, 758, 768, 778, 794, 802, 818,
838, 842, 862, 866, 878, 886, 898, 914, 922, 926,
934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000};
const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] =
{
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
[TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03},
[TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02},
[TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
[TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03},
[TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
[TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04},
[TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03},
[TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03},
[TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03},
[TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03},
[TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03},
[TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03},
[TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04},
[TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03},
[TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03},
[TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03},
[TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07},
};

96
src/data/pokemon_3.h Normal file
View File

@@ -0,0 +1,96 @@
const u8 gInvalidDungeonIDs[11] =
{
DUNGEON_BOSS_3,
DUNGEON_BOSS_4,
DUNGEON_BOSS_9,
DUNGEON_WONDROUS_SEA,
DUNGEON_AUTOPILOT,
DUNGEON_D50,
DUNGEON_D51,
DUNGEON_D54,
DUNGEON_POISON_MAZE,
DUNGEON_D61,
DUNGEON_OUT_ON_RESCUE
};
const u8 gInvalidItemIDs[0x10] =
{
ITEM_G_MACHINE_6,
ITEM_G_MACHINE_7,
ITEM_G_MACHINE_8,
ITEM_TM_SPIN_SLASH,
ITEM_SWITCH_BOX,
ITEM_ALERT_SPECS,
ITEM_POSSESS_ORB,
ITEM_REVIVER_ORB,
ITEM_TM_EXCAVATE,
ITEM_TOSS_ORB,
ITEM_RING_D,
ITEM_RING_E,
ITEM_RING_F,
ITEM_OBSERVER_ORB,
ITEM_BEATUP_ORB,
NUMBER_OF_ITEM_IDS
};
const bool8 gTacticsTargetLeader[NUM_TACTICS] =
{
[TACTIC_LETS_GO_TOGETHER] = TRUE,
[TACTIC_GO_THE_OTHER_WAY] = FALSE,
[TACTIC_GO_AFTER_FOES] = FALSE,
[TACTIC_AVOID_THE_FIRST_HIT] = FALSE,
[TACTIC_ALL_FOR_ONE] = TRUE,
[TACTIC_GROUP_SAFETY] = TRUE,
[TACTIC_AVOID_TROUBLE] = TRUE,
[TACTIC_BE_PATIENT] = TRUE,
[TACTIC_KEEP_YOUR_DISTANCE] = TRUE,
[TACTIC_WAIT_THERE] = FALSE,
[TACTIC_GET_AWAY] = TRUE,
[TACTIC_UNUSED] = FALSE
};
const s16 gReqTacticLvls[NUM_TACTICS] =
{
[TACTIC_LETS_GO_TOGETHER] = 1,
[TACTIC_GO_THE_OTHER_WAY] = 25,
[TACTIC_GO_AFTER_FOES] = 1,
[TACTIC_AVOID_THE_FIRST_HIT] = 1,
[TACTIC_ALL_FOR_ONE] = 999,
[TACTIC_GROUP_SAFETY] = 999,
[TACTIC_AVOID_TROUBLE] = 35,
[TACTIC_BE_PATIENT] = 40,
[TACTIC_KEEP_YOUR_DISTANCE] = 20,
[TACTIC_WAIT_THERE] = 15,
[TACTIC_GET_AWAY] = 10,
[TACTIC_UNUSED] = 999,
};
const s32 gReqIQSkillPts[NUM_IQ_SKILLS] =
{
[IQ_NONE] = 9999,
[IQ_TYPE_ADVANTAGE_MASTER] = 105,
[IQ_ITEM_CATCHER] = 1,
[IQ_COURSE_CHECKER] = 1,
[IQ_SURE_HIT_ATTACKER] = 500,
[IQ_QUICK_DODGER] = 100,
[IQ_PP_CHECKER] = 2,
[IQ_NONTRAITOR] = 40,
[IQ_STATUS_CHECKER] = 25,
[IQ_EXP_GO_GETTER] = 200,
[IQ_EFFICIENCY_EXPERT] = 10,
[IQ_WEAK_TYPE_PICKER] = 125,
[IQ_ALL_TERRAIN_HIKER] = 400,
[IQ_SUPER_MOBILE] = 990,
[IQ_TRAP_AVOIDER] = 140,
[IQ_HOUSE_AVOIDER] = 800,
[IQ_ENERGY_SAVER] = 250,
[IQ_NONSLEEPER] = 160,
[IQ_SELF_CURER] = 70,
[IQ_TRAP_SEER] = 600,
[IQ_LAVA_EVADER] = 300,
[IQ_DEDICATED_TRAVELER] = 1,
[IQ_ITEM_MASTER] = 1,
[IQ_EXCLUSIVE_MOVE_USER] = 1,
};

View File

@@ -6,7 +6,7 @@
#include "random.h"
#include "code_8092334.h"
extern u8 gUnknown_810A350[];
extern u8 gInvalidDungeonIDs[];
extern u8 gDungeonFloorCount[];
extern u8 *gUnknown_8108084[];
@@ -97,7 +97,7 @@ u8 sub_8090910(DungeonLocation *dungeon, u32 param_2)
}
}
bool8 sub_809095C(u8 dungeon)
bool8 IsNotValidDungeon(u8 dungeon)
{
s32 counter;
@@ -107,10 +107,10 @@ bool8 sub_809095C(u8 dungeon)
else
{
counter = 0;
if (gUnknown_810A350[0] != DUNGEON_OUT_ON_RESCUE) {
for(; gUnknown_810A350[counter] != DUNGEON_OUT_ON_RESCUE; counter++)
if (gInvalidDungeonIDs[0] != DUNGEON_OUT_ON_RESCUE) {
for(; gInvalidDungeonIDs[counter] != DUNGEON_OUT_ON_RESCUE; counter++)
{
if (gUnknown_810A350[counter] == dungeon) return TRUE;
if (gInvalidDungeonIDs[counter] == dungeon) return TRUE;
}
}
return FALSE;

View File

@@ -105,16 +105,16 @@ void sub_804513C(void)
gDungeon->allPokemon[index] = NULL;
}
for (index = 0; index < 0x40; index++)
for (index = 0; index < DUNGEON_MAX_ITEMS; index++)
{
gDungeon->clientPokemon[index] = &gDungeon->clientPokemonEntities[index];
gDungeon->clientPokemon[index]->type = ENTITY_NOTHING;
gDungeon->items[index] = &gDungeon->itemEntities[index];
gDungeon->items[index]->type = ENTITY_NOTHING;
}
for(index = 0; index < 0x40; index++)
for(index = 0; index < DUNGEON_MAX_TRAPS; index++)
{
gDungeon->unk1371C[index] = &gDungeon->unk15E2C[index];
gDungeon->unk1371C[index]->type = ENTITY_NOTHING;
gDungeon->traps[index] = &gDungeon->trapEntites[index];
gDungeon->traps[index]->type = ENTITY_NOTHING;
}
}
@@ -168,7 +168,7 @@ void sub_804522C(void) {
for(index = 0; index < gDungeon->unk3904; index++)
{
sub_80462AC(gDungeon->clientPokemon[index], crossEyed, 1, 0xFF, 0);
sub_80462AC(gDungeon->items[index], crossEyed, 1, 0xFF, 0);
}
if(crossEyed)

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "code_8097DD0.h"
#include "constants/colors.h"
#include "constants/type.h"
#include "items.h"
#include "moves.h"
#include "random.h"
@@ -23,12 +24,10 @@ extern u8 gUnknown_202DE58[];
extern u32 gUnknown_202DE30;
extern u8* gPtrTypeText; // ptr to "Type\0"
extern u8* gPtrPPD0Text; // ptr to "PP {ARG_VALUE_0} \0"
extern u32 gUnknown_810A3F0[100];
extern u32 gUnknown_81097E8[4]; // some sort of lookup table (16, 18, 20, 22)
extern u32 gUnknown_81097F8[4]; // some sort of lookup table (17, 19, 21, 23)
extern const char *gUnknown_810AF50[];
extern u8 gUnknown_8108F64[0x3f][32]; // some sort of bit lookup table
extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS];
extern u8 gInvalidItemIDs[0x10];
EWRAM_DATA OpenedFile *gItemParametersFile = {0};
@@ -40,6 +39,7 @@ extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3);
extern void SortKecleonShopInventory();
bool8 AddKecleonWareItem(u8);
#include "data/items.h"
static void sub_8090F58(u8 *, u8 *, Item *, unkStruct_8090F58 *);

View File

@@ -587,7 +587,7 @@ void AddMenuCursorSprite(MenuInputStruct *param_1)
AddMenuCursorSprite_(param_1, 0);
}
void AddMenuCursorSprite_(MenuInputStruct *a0, u32 a1)
void AddMenuCursorSprite_(MenuInputStruct *a0, u8 *a1)
{
SpriteOAM sp = {};
SpriteOAM* ptr;

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@
#include "pokemon.h"
#include "pokemon_3.h"
#include "random.h"
#include "constants/dungeon.h"
#include "constants/evolve_type.h"
#include "constants/evolution_status.h"
#include "constants/iq_skill.h"
@@ -17,10 +18,6 @@ extern u8 *gIQSkillNames[];
extern u8 *gIQSkillDescriptions[];
extern u8 *gTacticsDescriptions[];
extern u8 *gTactics[];
extern bool8 gTacticsTargetLeader[];
extern s16 gReqTacticLvls[];
extern s32 gReqIQSkillPts[];
extern u32 gIQSkillGroups[];
struct unkStruct_808E9EC
@@ -46,6 +43,8 @@ extern s16 gUnknown_810AC66; // 0x8
// 2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11
extern s32 gUnknown_810AC90[10];
#include "data/pokemon_3.h"
extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);

View File

@@ -20,8 +20,9 @@
#include "dungeon_visibility.h"
#include "structs/map.h"
#include "moves.h"
#include "move_util.h"
#include "number_util.h"
//#include "pokemon.h" // NOTE: overriding some of the funcs below... when fixed, uncomment this
#include "pokemon.h"
#include "status.h"
#include "status_checks_1.h"
@@ -31,7 +32,6 @@
#include "weather.h"
extern void sub_807F43C(Entity *, Entity *);
extern void MobileStatusTarget(Entity *, Entity *);
extern void sub_807DC68(Entity *, Entity *);
extern void sub_8078A58(Entity *, Entity *, s16, u32);
extern u32 sub_803D73C(u32);
@@ -59,16 +59,12 @@ extern void sub_807DA14(Entity *, Entity *, s32);
extern s16 sub_803D970(u32);
extern u8 sub_806AA0C(s32, u32);
extern void sub_806BB6C(Entity *, s32);
extern void sub_8075C58(Entity *, Entity *, s32, s32);
extern void sub_807E254(Entity *, Entity *, u32);
extern bool8 sub_805727C(Entity * pokemon, Entity * target, s32 chance);
extern u32 sub_8055640(Entity *, Entity *, Move *, u32, u32);
extern void sub_806A6E8(Entity *);
extern void sub_807D3CC(Entity *, Entity *);
extern u8 sub_8069D18(Position *);
extern u8 sub_804AD34(Position *);
extern u8 sub_8057308(Entity *, u32);
// TODO include dungeon_ai.h when SqueezedStatusTarget is figured out
extern void LowerDefenseStageTarget(Entity *, Entity *, s32, s32, u8, bool8);
@@ -80,8 +76,9 @@ extern void LowerAttackStageTarget(Entity *, Entity *, s32, s32, u8, bool8);
extern void PetrifiedStatusTarget(Entity *, Entity *);
extern void WrapTarget(Entity *, Entity *);
// TODO having matching issues when this isn't s32..
// TODO having matching issues when this isn't s32.. (move_effects_target.h)
extern void SqueezedStatusTarget(Entity *, Entity *, s32, bool32);
extern void sub_8075C58(Entity *, Entity *, s32, s32);
extern void sub_806F324(Entity *, s32, u32, u32);
extern bool8 sub_805755C(Entity* pokemon,u16 moveID);

View File

@@ -6,6 +6,7 @@
#include "status.h"
#include "code_80521D0.h"
#include "items.h"
#include "moves.h"
#include "code_808417C.h"
#include "dungeon_engine.h"
@@ -35,7 +36,11 @@ extern u8 *gUnknown_80FD788[];
extern u8 *gUnknown_80FD7D4[];
extern u8 *gUnknown_80F970C[];
extern u8 *gUnknown_80F9728[];
extern u8 *gUnknown_80FED00[];
extern u8 *gUnknown_80FED04[];
extern u8 *gUnknown_80FED0C[];
extern u8 *gUnknown_80FDAA0[];
extern u8 *gUnknown_80FDA80[];
extern s16 gUnknown_80F4E0E;
extern s16 gUnknown_80F4F84;
@@ -44,8 +49,27 @@ extern u32 gUnknown_8106A4C;
extern u32 gUnknown_8106A50;
extern s16 gUnknown_80F4F8A;
struct unkStruct_806B7F8
{
s16 species;
u8 unk2;
u32 unk4;
u16 level;
u8 fillA[2];
struct Position pos;
u8 unk10;
};
extern u32 sub_806B7F8(struct unkStruct_806B7F8 *, u32);
void sub_806A9B4(Entity *, u32);
void sub_8079E34(Entity *param_1, Entity *param_2, u32);
s16 sub_803D970(u32);
u8 sub_806AA0C(s32, s32);
void sub_80421EC(Position *, u32);
bool8 sub_8045888(Entity *);
void sub_8080B00(Tile *, u32);
void SetTrap(Tile *, u32);
void sub_803E708(u32, u32);
u8 sub_8043D10(void);
void SetMessageArgument(u8 *, Entity *, u32);
@@ -686,7 +710,7 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile)
{
info = target->info;
if (sub_8045888(target)) {
sub_8080B00(tile, 0x1B);
SetTrap(tile, 0x1B);
flag = TRUE;
sub_80421C0(target,0x193);
sub_803E708(0x1e,0x48);
@@ -714,8 +738,101 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile)
sub_8068FE0(target,0x215,pokemon);
}
if (flag) {
sub_8080B00(tile, 5);
SetTrap(tile, TRAP_PITFALL_TRAP);
}
}
}
}
void HandleSummonTrap(Entity *pokemon,Position *pos)
{
s32 r4;
u32 direction;
int pokemonSummonCount;
s16 species;
struct unkStruct_806B7F8 stack;
s32 i;
r4 = DungeonRandInt(3) + 2;
direction = DungeonRandInt(NUM_DIRECTIONS);
if (IsBossFight()) {
goto _ret;
}
else
{
pokemonSummonCount = 0;
if (pokemonSummonCount < r4) {
for (i = 0; i < r4; i++)
{
species = sub_803D970(0);
direction &= DIRECTION_MASK;
stack.species = species;
if (sub_806AA0C(stack.species,0) != 0) {
stack.level = 0;
stack.unk2 = 0;
stack.pos.x = pos->x + gAdjacentTileOffsets[direction].x;
stack.pos.y = pos->y + gAdjacentTileOffsets[direction].y;
stack.unk4 = 0;
stack.unk10 = 0;
if (sub_806B7F8(&stack,1) != 0) {
pokemonSummonCount++;
}
}
direction++;
}
}
sub_80421EC(pos,0x194);
if (pokemonSummonCount == 0) {
_ret:
SendMessage(pokemon,*gUnknown_80FED04);
}
else
{
SendMessage(pokemon,*gUnknown_80FED00);
}
}
}
void HandlePPZeroTrap(Entity *param_1,Entity *param_2)
{
Move *move;
s32 moveIndex;
s32 i;
s32 counter;
EntityInfo *info;
Move *moveStack [MAX_MON_MOVES];
s32 indexStack [MAX_MON_MOVES];
bool8 flag = FALSE;
if (param_2 != NULL) {
info = param_2->info;
counter = 0;
for(i = 0; i < MAX_MON_MOVES; move++, i++)
{
move = &info->moves[i];
if (((move->moveFlags & MOVE_FLAG_EXISTS) != 0) && (move->PP != 0)) {
moveStack[counter] = move;
indexStack[counter] = i;
counter++;
}
}
if (counter != 0) {
moveIndex = DungeonRandInt(counter);
moveStack[moveIndex]->PP = 0;
sub_80928C0(gUnknown_202DE58,moveStack[moveIndex],0);
sub_806A9B4(param_2, indexStack[moveIndex]);
flag = TRUE;
}
if(flag)
sub_80522F4(param_1,param_2,*gUnknown_80FDA80);
else
sub_80522F4(param_1,param_2,*gUnknown_80FDAA0);
}
}
void HandleWonderTile(Entity *param_1, Entity *param_2)
{
sub_8079E34(param_1, param_2, 0);
}

444
src/trap_1.c Normal file
View File

@@ -0,0 +1,444 @@
#include "global.h"
#include "trap.h"
#include "code_806CD90.h"
#include "code_8092334.h"
#include "items.h"
#include "dungeon_util.h"
#include "structs/str_dungeon.h"
#include "structs/str_traps.h"
extern u8 gUnknown_81071E0[];
extern u8 gUnknown_81071D4[];
extern void sub_8082FA8(void *, void *, u32);
void sub_8083078(void *, u32);
void sub_80830B4(void *, u8);
void sub_8083030(void *, u16);
void sub_8080E0C(unkStruct_8094924 *, Entity *);
void sub_808300C(void *, u8 *);
void sub_8081788(void *, Item *);
void sub_8080B90(unkStruct_8094924 *param_1);
void SaveItemData(unkStruct_8094924 *param_1);
void sub_8081454(unkStruct_8094924 *param_1);
void sub_808165C(unkStruct_8094924 *param_1);
void sub_808173C(unkStruct_8094924 *param_1);
void SaveTrapData(unkStruct_8094924 *param_1);
void sub_8080CF0(unkStruct_8094924 *param_1);
void nullsub_98(unkStruct_8094924 *param_1);
void sub_8082F9C(unkStruct_8094924 *param_1, u32, u32);
void sub_8049ED4(void);
void sub_8083060(void *, u32);
void sub_80817F4(void *, u32);
void sub_80830A0(void *, u32);
void sub_808180C(void *, u32);
void sub_8083048(void *, u32);
void sub_80818C8(void *, bool8 *);
void sub_80817C8(void *, void *);
void sub_8081B34(void *, void *);
void sub_8081B08(void *, Move *);
void sub_8081824(void *, u32);
void sub_80817B0(void *, u32);
void SavePosition(void*, Position *);
void sub_80818E4(void *, u8 *);
void sub_8081B54(void *, u8 *);
void sub_808186C(void *, s32);
void sub_8081854(void *, s32);
void sub_808183C(void *, s32);
void sub_8081AB8(void *, bool8 *);
void sub_8081A9C(void *, u8*);
void sub_8081A80(void *, u8*);
void sub_8081A74(void *, u8*);
void sub_8081A58(void *, u8*);
void sub_8081A24(void *, u8*);
void sub_8081994(void *, u8*);
void sub_8081968(void *, u8*);
void sub_808193C(void *, u8*);
void sub_8081920(void *, u8*);
void sub_8081880(void *, u8);
void sub_8081898(void *, s16 *);
void sub_80819B0(void *, u8 *);
void sub_80819D4(void *, u8 *);
void sub_80819F0(void *, u8 *);
void SaveSpeedCounters(void *, u8 *, u32);
void sub_80818B8(void *, u32);
void sub_803E708(u32, u32);
void sub_80421C0(Entity *, u32);
void sub_804687C(Entity *, Position *, Position *, Item *, u32);
void HandleTripTrap(Entity *param_1, Entity *param_2)
{
u32 direction;
EntityInfo *info;
Position pos;
Item item;
if (param_2 != NULL) {
sub_806CDD4(param_2, 6, NUM_DIRECTIONS);
sub_803E708(0x10, 0x55);
sub_806CE68(param_2, NUM_DIRECTIONS);
info = param_2->info;
if ((info->heldItem).flags & ITEM_FLAG_EXISTS) {
item = (info->heldItem);
(info->heldItem).flags = 0;
FillInventoryGaps();
sub_80421C0(param_2, 400);
direction = (info->action).direction & DIRECTION_MASK;
pos.x = (param_2->pos).x + gAdjacentTileOffsets[direction].x;
pos.y = (param_2->pos).y + gAdjacentTileOffsets[direction].y;
sub_804687C(param_1, &param_2->pos, &pos, &item, 1);
}
}
}
void SetTrap(Tile *tile, u8 id)
{
Trap *trapData;
Entity *entity;
entity = tile->object;
if (EntityExists(entity)) {
if (GetEntityType(entity) == ENTITY_TRAP) {
trapData = GetTrapData(entity);
trapData->id = id;
}
sub_8049ED4();
}
}
void sub_8080B30(u32 param_1,u32 param_2)
{
unkStruct_8094924 uStack_14;
sub_8082F9C(&uStack_14,param_1,param_2);
uStack_14.unkC = 0;
sub_8082FA8(&uStack_14,&uStack_14.unkC,4);
sub_8080B90(&uStack_14);
sub_8081454(&uStack_14);
sub_808165C(&uStack_14);
sub_808173C(&uStack_14);
SaveItemData(&uStack_14);
SaveTrapData(&uStack_14);
sub_8080CF0(&uStack_14);
sub_808300C(&uStack_14,gUnknown_81071D4);
nullsub_98(&uStack_14);
}
void sub_8080B90(unkStruct_8094924 *param_1)
{
sub_808300C(param_1,gUnknown_81071E0);
sub_8082FA8(param_1,&gDungeon->dungeonLocation,0x58);
}
void SaveItemData(unkStruct_8094924 *param_1)
{
bool8 flag;
Item *item;
Entity *entity;
int counter;
u8 local_1c [5];
for(counter = 0; counter < 5; counter++)
{
local_1c[counter] = 0;
}
sub_808300C(param_1,gUnknown_81071E0);
for(counter = 0; counter < DUNGEON_MAX_ITEMS; counter++)
{
entity = gDungeon->items[counter];
flag = FALSE;
if ((entity != NULL) && (GetEntityType(entity) == ENTITY_ITEM)) {
item = GetItemData(entity);
sub_8081788(param_1,item);
sub_8082FA8(param_1,&entity->pos.x,1);
sub_8082FA8(param_1,&entity->pos.y,1);
flag = TRUE;
}
if (!flag) {
sub_8082FA8(param_1,local_1c,5);
}
}
}
void SaveTrapData(unkStruct_8094924 *param_1)
{
bool8 flag;
Trap *trap;
Entity *entity;
int counter;
u8 local_1c [5];
for(counter = 0; counter < 5; counter++)
{
local_1c[counter] = -1;
}
sub_808300C(param_1,gUnknown_81071E0);
for(counter = 0; counter < DUNGEON_MAX_TRAPS; counter++)
{
entity = gDungeon->traps[counter];
flag = FALSE;
if ((entity != NULL) && (GetEntityType(entity) == ENTITY_TRAP)) {
trap = GetTrapData(entity);
sub_8082FA8(param_1,&trap->id,1);
sub_8082FA8(param_1,&trap->unk1,1);
sub_8082FA8(param_1,&entity->isVisible,1);
sub_8082FA8(param_1,&entity->pos.x,1);
sub_8082FA8(param_1,&entity->pos.y,1);
flag = TRUE;
}
if (!flag) {
sub_8082FA8(param_1,local_1c,5);
}
}
}
void sub_8080CF0(unkStruct_8094924 *param_1)
{
s32 counter;
sub_808300C(param_1,gUnknown_81071E0);
sub_8083078(param_1,gDungeon->unk37F0);
sub_8083078(param_1,gDungeon->unk37F4);
sub_80830B4(param_1,gDungeon->plusIsActive[0]);
sub_80830B4(param_1,gDungeon->plusIsActive[1]);
sub_80830B4(param_1,gDungeon->minusIsActive[0]);
sub_80830B4(param_1,gDungeon->minusIsActive[1]);
sub_80830B4(param_1,gDungeon->decoyActive);
sub_80830B4(param_1,gDungeon->fill37FD);
sub_80830B4(param_1,gDungeon->deoxysDefeat);
sub_80830B4(param_1,gDungeon->fill37FF);
sub_8083030(param_1,gDungeon->unk3800);
for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++)
{
sub_8080E0C(param_1,gDungeon->teamPokemon[counter]);
}
for(counter = 0; counter < DUNGEON_MAX_WILD_POKEMON; counter++)
{
sub_8080E0C(param_1,gDungeon->wildPokemon[counter]);
}
}
void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
{
Position *pos;
EntityInfo *info;
int counter;
EntityInfo info2;
u32 uStack_ac;
u32 uStack_a8;
s16 *psStack_a4;
u8 *temp1;
u8 *temp2;
u8 *temp3;
u8 *puStack_a0;
u32 *puStack_9c;
u32 *puStack_98;
u32 *puStack_94;
u8 *puStack_90;
u8 *puStack_8c;
u8 *puStack_88;
u8 *puStack_84;
u8 *puStack_80;
u8 *puStack_7c;
u8 *puStack_78;
u8 *puStack_74;
u8 *puStack_70;
u8 *puStack_6c;
u8 *puStack_68;
u8 *puStack_64;
u8 *puStack_60;
bool8 *pbStack_5c;
bool8 *pbStack_58;
bool8 *pbStack_54;
bool8 *pbStack_50;
u8 *puStack_4c;
bool8 *pbStack_48;
bool8 *pbStack_44;
bool8 *pbStack_40;
bool8 *pbStack_3c;
u8 *puStack_38;
u8 *puStack_34;
bool8 *pbStack_30;
u8 *puStack_2c;
u8 *puStack_28;
u8 *puStack_24;
uStack_a8 = 0;
uStack_ac = 1;
sub_8083060(param_1,0xaa);
sub_8083060(param_1,0x55);
if (EntityExists(param_2)) {
info = param_2->info;
sub_8082FA8(param_1,&uStack_ac,1);
sub_8082FA8(param_1,&param_2->pos.x,1);
sub_8082FA8(param_1,&param_2->pos.y,1);
sub_8082FA8(param_1,&param_2->isVisible,1);
sub_8082FA8(param_1,&param_2->spawnGenID,2);
}
else {
memset(&info2,0,sizeof(EntityInfo));
info = &info2;
sub_8082FA8(param_1,&uStack_a8,1);
sub_8082FA8(param_1,&uStack_a8,1);
sub_8082FA8(param_1,&uStack_a8,1);
sub_8082FA8(param_1,&uStack_a8,1);
sub_8082FA8(param_1,&uStack_a8,2);
}
sub_8083030(param_1,info->flags);
sub_80817F4(param_1,info->apparentID);
sub_80817F4(param_1,info->id);
sub_80830B4(param_1,info->isNotTeamMember);
sub_80830B4(param_1,info->isTeamLeader);
sub_8083060(param_1,info->shopkeeper);
sub_8083060(param_1,info->level);
sub_8083060(param_1,info->teamIndex);
sub_80818C8(param_1,&info->joinedAt);
sub_8083048(param_1,info->IQ);
sub_8083048(param_1,info->HP);
sub_8083048(param_1,info->maxHPStat);
sub_8083048(param_1,info->originalHP);
sub_8083060(param_1,info->atk);
sub_8083060(param_1,info->spAtk);
sub_8083060(param_1,info->def);
sub_8083060(param_1,info->spDef);
sub_8083078(param_1,info->exp);
sub_8083048(param_1,info->offensiveStages[0]);
sub_8083048(param_1,info->offensiveStages[1]);
sub_8083048(param_1,info->defensiveStages[0]);
sub_8083048(param_1,info->defensiveStages[1]);
sub_8083048(param_1,info->hitChanceStages[0]);
sub_8083048(param_1,info->hitChanceStages[1]);
sub_8083048(param_1,info->flashFireBoost);
sub_80830A0(param_1,info->offensiveMultipliers[0]);
sub_80830A0(param_1,info->offensiveMultipliers[1]);
sub_80830A0(param_1,info->defensiveMultipliers[0]);
sub_80830A0(param_1,info->defensiveMultipliers[1]);
sub_80817C8(param_1,&info->action);
sub_808180C(param_1,info->types[0]);
sub_808180C(param_1,info->types[1]);
sub_8081824(param_1,info->abilities[0]);
sub_8081824(param_1,info->abilities[1]);
sub_8081788(param_1,&info->heldItem);
sub_80817B0(param_1,info->fill64[0]);
temp3 = &info->aiObjective;
temp2 = info->IQSkillMenuFlags;
temp1 = info->IQSkillFlags;
puStack_a0 = &info->tactic;
psStack_a4 = &info->hiddenPowerBasePower;
puStack_9c = &info->unk98;
puStack_98 = &info->unk9C;
puStack_94 = &info->unkA0;
puStack_8c = &info->sleep;
puStack_88 = &info->nonVolatileStatus;
puStack_84 = &info->immobilizeStatus;
puStack_80 = &info->volatileStatus;
puStack_7c = &info->chargingStatus;
puStack_78 = &info->protectionStatus;
puStack_74 = &info->waitingStatus;
puStack_70 = &info->linkedStatus;
puStack_6c = &info->moveStatus;
puStack_68 = &info->itemStatus;
puStack_64 = &info->transformStatus;
puStack_60 = &info->eyesightStatus;
pbStack_5c = &info->muzzled;
pbStack_58 = &info->powerEars;
pbStack_54 = &info->scanning;
pbStack_50 = &info->stairSpotter;
puStack_4c = &info->fillF3;
pbStack_48 = &info->grudge;
puStack_34 = &info->unkFB;
pbStack_44 = &info->exposed;
pbStack_40 = &info->isColorChanged;
pbStack_3c = &info->bossFlag;
puStack_38 = &info->terrifiedTurns;
pbStack_30 = &info->useHeldItem;
puStack_2c = &info->perishSongTurns;
puStack_28 = &info->unkFE;
puStack_24 = &info->unkFF;
puStack_90 = &info->clientType;
pos = info->prevPos;
for(counter = 0; counter < NUM_PREV_POS; counter++)
{
SavePosition(param_1,pos);
pos++;
}
sub_80818E4(param_1,temp3);
sub_8081B54(param_1,temp2);
sub_8081B54(param_1,temp1);
sub_8081880(param_1,*puStack_a0);
sub_8081898(param_1,psStack_a4);
sub_8083078(param_1,*puStack_9c);
sub_8083078(param_1,*puStack_98);
sub_8083078(param_1,*puStack_94);
sub_8081920(param_1,puStack_8c);
sub_808193C(param_1,puStack_88);
sub_8081968(param_1,puStack_84);
sub_8081994(param_1,puStack_80);
sub_80819B0(param_1,puStack_7c);
sub_80819D4(param_1,puStack_78);
sub_80819F0(param_1,puStack_74);
sub_8081A24(param_1,puStack_70);
sub_8081A58(param_1,puStack_6c);
sub_8081A74(param_1,puStack_68);
sub_8081A80(param_1,puStack_64);
sub_8081A9C(param_1,puStack_60);
sub_8081AB8(param_1,pbStack_5c);
sub_80830B4(param_1,*pbStack_58);
sub_80830B4(param_1,*pbStack_54);
sub_80830B4(param_1,*pbStack_50);
sub_80830B4(param_1,*puStack_4c);
sub_80830B4(param_1,*pbStack_48);
sub_8083060(param_1,*puStack_34);
sub_80830B4(param_1,*pbStack_44);
sub_80830B4(param_1,*pbStack_40);
sub_80830B4(param_1,*pbStack_3c);
sub_8083060(param_1,*puStack_38);
sub_80830B4(param_1,*pbStack_30);
sub_8083060(param_1,*puStack_2c);
sub_8083060(param_1,*puStack_28);
sub_808183C(param_1,*puStack_24);
sub_8081854(param_1,info->targetingDecoy);
sub_808186C(param_1,info->speedStage);
SaveSpeedCounters(param_1,info->speedUpCounters,NUM_SPEED_COUNTERS);
SaveSpeedCounters(param_1,info->speedDownCounters,NUM_SPEED_COUNTERS);
sub_8083060(param_1,info->stockpileStage);
sub_8083060(param_1,info->fill113);
sub_8083060(param_1,(u8)info->moveRandomly);
sub_8081B08(param_1,info->moves);
sub_8081B34(param_1,&info->belly);
sub_8081B34(param_1,&info->maxBelly);
sub_80830B4(param_1,info->aiNextToTarget);
sub_80830B4(param_1,info->recalculateFollow);
sub_80830B4(param_1,info->waiting);
sub_80830B4(param_1,info->fill146);
sub_80830B4(param_1,info->attacking);
sub_80830B4(param_1,info->unk149);
sub_80830B4(param_1,info->unk14A);
sub_80830B4(param_1,info->unk14B);
sub_80830B4(param_1,info->unk14C);
sub_8083030(param_1,info->visualFlags);
sub_8083030(param_1,info->previousVisualFlags);
sub_80830B4(param_1,info->unk152);
sub_8083060(param_1,info->unk153);
sub_80830B4(param_1,info->unk154);
sub_80830B4(param_1,info->unk155);
sub_80830B4(param_1,info->unk156);
sub_8083060(param_1,info->unk164);
sub_8083060(param_1,info->unk165);
sub_8083060(param_1,info->unk166);
sub_8083060(param_1,info->unk167);
sub_8083060(param_1,info->unk168);
sub_8083060(param_1,info->turnsSinceWarpScarfActivation);
SavePosition(param_1,&(info->targetPos));
sub_80830A0(param_1,info->unk174);
sub_8083030(param_1,info->unk178);
sub_8083048(param_1,info->unk1F8);
sub_8083048(param_1,info->mobileTurnTimer);
sub_8083078(param_1,info->expGainedInTurn);
sub_80818B8(param_1,*puStack_90);
}