Merge remote-tracking branch 'upstream/master'

This commit is contained in:
AnonymousRandomPerson 2023-01-13 22:36:16 -05:00
commit b22feb80af
162 changed files with 19666 additions and 22331 deletions

View File

@ -12,17 +12,27 @@ else
HOSTCXX := $(CXX)
endif
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
include $(TOOLCHAIN)/base_tools
else
# don't use dkP's base_tools anymore
# because the redefinition of $(CC) conflicts
# with when we want to use $(CC) to preprocess files
# thus, manually create the variables for the bin
# files, or use arm-none-eabi binaries on the system
# if dkP is not installed on this system
ifneq (,$(TOOLCHAIN))
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
export PATH := $(TOOLCHAIN)/bin:$(PATH)
PREFIX := arm-none-eabi-
OBJCOPY := $(PREFIX)objcopy
export CC := $(PREFIX)gcc
export AS := $(PREFIX)as
endif
export CPP := $(CC) -E
export LD := $(PREFIX)ld
endif
PREFIX := arm-none-eabi-
OBJCOPY := $(PREFIX)objcopy
OBJDUMP := $(PREFIX)objdump
AS := $(PREFIX)as
CC := $(PREFIX)gcc
AS := $(PREFIX)as
LD := $(PREFIX)ld
CPP := $(CC) -E
ifeq ($(OS),Windows_NT)
EXE := .exe

View File

@ -154,7 +154,7 @@ QuickSave:
adds r1, r2, 0
strh r1, [r0]
bl sub_8099648
bl sub_8094C14
bl SetWindowBGColor
movs r0, 0
bl sub_8099690
bl sub_8099744
@ -335,7 +335,7 @@ sub_80008C0:
adds r0, r2, 0
strh r0, [r1]
bl sub_8099648
bl sub_8094C14
bl SetWindowBGColor
movs r0, 0
bl sub_8099690
bl sub_8099744
@ -1121,7 +1121,7 @@ _08000F5E:
.align 2, 0
_08000F64: .4byte 0x000f1209
_08000F68:
bl sub_809674C
bl GeneratePelipperJobs
bl sub_80961B4
bl sub_808ED00
adds r7, r4, 0
@ -1132,7 +1132,7 @@ _08000F78:
adds r0, r4, 0
bl xxx_dungeon_8001340
bl sub_8099648
bl sub_8094C14
bl SetWindowBGColor
movs r0, 0
bl sub_8099690
b _08000F96

File diff suppressed because it is too large Load Diff

7515
asm/code_800DAC0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3271,7 +3271,7 @@ _08014408:
ands r0, r4
cmp r0, 0
beq _08014418
bl sub_8094C14
bl SetWindowBGColor
_08014418:
ldr r0, _08014460
movs r1, 0x1

File diff suppressed because it is too large Load Diff

1737
asm/code_801EE10_1.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2131,7 +2131,7 @@ _0803E138: .4byte 0x0000017d
thumb_func_start sub_803E13C
sub_803E13C:
push {r4,r5,lr}
bl sub_8094C14
bl SetWindowBGColor
ldr r0, _0803E170
ldr r0, [r0]
ldrb r0, [r0, 0xB]
@ -2156,7 +2156,7 @@ _0803E156:
pop {r0}
bx r0
.align 2, 0
_0803E170: .4byte gUnknown_203B46C
_0803E170: .4byte gGameOptionsRef
_0803E174: .4byte gUnknown_202D038
thumb_func_end sub_803E13C
@ -2713,7 +2713,7 @@ _0803E630: .4byte 0x000181f0
_0803E634: .4byte 0x000181f2
_0803E638: .4byte 0x000181fc
_0803E63C: .4byte gUnknown_202EDD0
_0803E640: .4byte gUnknown_203B46C
_0803E640: .4byte gGameOptionsRef
_0803E644: .4byte 0x00018215
_0803E648: .4byte 0x0001c06c
_0803E64C: .4byte gUnknown_203B40D
@ -2778,7 +2778,7 @@ sub_803E668:
bx r0
.align 2, 0
_0803E6F0: .4byte gUnknown_202EDD4
_0803E6F4: .4byte gUnknown_203B46C
_0803E6F4: .4byte gGameOptionsRef
_0803E6F8: .4byte gUnknown_202EDCC
_0803E6FC: .4byte gPlayTimeRef
_0803E700: .4byte gDungeon
@ -4467,7 +4467,7 @@ _0803F410: .4byte gDungeon
_0803F414: .4byte 0x000181e8
_0803F418: .4byte 0x0000ffff
_0803F41C: .4byte 0x00018228
_0803F420: .4byte gUnknown_203B46C
_0803F420: .4byte gGameOptionsRef
_0803F424: .4byte gUnknown_202D06C
thumb_func_end sub_803F38C
@ -5610,7 +5610,7 @@ _0803FCB0:
movs r0, 0
b _0803FD00
.align 2, 0
_0803FCE4: .4byte gUnknown_203B46C
_0803FCE4: .4byte gGameOptionsRef
_0803FCE8: .4byte gUnknown_202D068
_0803FCEC: .4byte gUnknown_202B038
_0803FCF0: .4byte gDungeon

View File

@ -635,9 +635,9 @@ _08040606:
adds r0, 0x80
b _0804062C
.align 2, 0
_08040618: .4byte gUnknown_203B46C
_08040618: .4byte gGameOptionsRef
_0804061C:
bl sub_8094C68
bl DoesNotHaveShadedMap
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@ -1146,7 +1146,7 @@ _08040A24: .4byte 0x00000215
_08040A28: .4byte 0x00000fff
_08040A2C: .4byte 0x0000fffe
_08040A30: .4byte 0x0000fffd
_08040A34: .4byte gUnknown_203B46C
_08040A34: .4byte gGameOptionsRef
_08040A38: .4byte 0x000001ff
_08040A3C:
movs r1, 0
@ -1237,7 +1237,7 @@ sub_8040ABC:
movs r0, 0
b _08040AEC
.align 2, 0
_08040AD8: .4byte gUnknown_203B46C
_08040AD8: .4byte gGameOptionsRef
_08040ADC:
cmp r1, 0
beq _08040AE8
@ -2873,446 +2873,4 @@ _08041758:
bx r1
thumb_func_end sub_80416E0
thumb_func_start sub_8041764
sub_8041764:
push {r4,r5,lr}
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
ldr r0, [r5]
bl sub_800EE5C
bl sub_800EF64
cmp r4, 0
beq _08041780
movs r0, 0x42
bl sub_803E46C
_08041780:
adds r0, r5, 0
bl sub_800E890
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8041764
thumb_func_start sub_804178C
sub_804178C:
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r0, _080417B0
ldr r0, [r0]
ldr r1, _080417B4
adds r0, r1
str r4, [r0]
adds r0, r5, 0
bl sub_800E9FC
lsls r0, 24
cmp r0, 0
beq _080417E0
ldr r6, _080417B8
b _080417C4
.align 2, 0
_080417B0: .4byte gDungeon
_080417B4: .4byte 0x00018204
_080417B8: .4byte 0x000003e7
_080417BC:
movs r0, 0x4A
bl sub_803E46C
adds r4, 0x1
_080417C4:
cmp r4, r6
bgt _080417D4
adds r0, r5, 0
bl sub_800E9FC
lsls r0, 24
cmp r0, 0
bne _080417BC
_080417D4:
movs r0, 0x4A
bl sub_803E46C
movs r0, 0x4A
bl sub_803E46C
_080417E0:
movs r0, 0xFA
lsls r0, 2
cmp r4, r0
beq _080417EC
cmp r5, 0
beq _080417F0
_080417EC:
bl sub_800DBBC
_080417F0:
ldr r2, _08041824
ldr r0, [r2]
cmp r0, 0x1E
bgt _08041860
ldr r1, _08041828
ldrb r7, [r1]
movs r0, 0x1
strb r0, [r1]
movs r4, 0
adds r5, r2, 0
ldr r6, _0804182C
_08041806:
ldr r0, [r5]
cmp r0, 0x1E
bgt _08041838
adds r0, 0x4
str r0, [r5]
ldr r1, _08041830
ldrh r2, [r1]
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, r6
beq _0804183C
ldr r3, _08041834
adds r0, r2, r3
strh r0, [r1]
b _0804183C
.align 2, 0
_08041824: .4byte gUnknown_202EDC8
_08041828: .4byte gUnknown_203B40D
_0804182C: .4byte 0x00000808
_08041830: .4byte gUnknown_2026E4E
_08041834: .4byte 0xfffffeff
_08041838:
movs r0, 0x1F
str r0, [r5]
_0804183C:
bl sub_803EA10
movs r0, 0x4A
bl sub_803E46C
ldr r0, [r5]
cmp r0, 0x1F
beq _08041854
adds r4, 0x1
ldr r0, _0804186C
cmp r4, r0
ble _08041806
_08041854:
ldr r0, _08041870
ldr r2, _08041874
adds r1, r2, 0
strh r1, [r0]
ldr r0, _08041878
strb r7, [r0]
_08041860:
bl sub_8042E98
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0804186C: .4byte 0x000003e7
_08041870: .4byte gUnknown_2026E4E
_08041874: .4byte 0x00000808
_08041878: .4byte gUnknown_203B40D
thumb_func_end sub_804178C
thumb_func_start EntityGetStatusSprites
@ int EntityGetStatusSprites(struct Entity *entity)
EntityGetStatusSprites:
ldr r0, [r0, 0x70]
movs r1, 0x80
lsls r1, 2
adds r0, r1
ldr r0, [r0]
bx lr
thumb_func_end EntityGetStatusSprites
thumb_func_start sub_8041888
sub_8041888:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
_08041890:
ldr r0, _080418CC
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _080418D0
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _080418C0
ldr r1, [r4, 0x70]
cmp r6, 0
beq _080418BA
movs r0, 0xA6
lsls r0, 1
adds r1, r0
movs r0, 0x1
strb r0, [r1]
_080418BA:
adds r0, r4, 0
bl DungeonEntityUpdateStatusSprites
_080418C0:
adds r5, 0x1
cmp r5, 0x13
ble _08041890
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080418CC: .4byte gDungeon
_080418D0: .4byte 0x000135cc
thumb_func_end sub_8041888
thumb_func_start DungeonEntityUpdateStatusSprites
DungeonEntityUpdateStatusSprites:
push {r4,lr}
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _080418E4
b _08041A8C
_080418E4:
ldr r2, [r4, 0x70]
movs r3, 0
movs r1, 0x1
movs r4, 0x2
ldrsh r0, [r2, r4]
cmp r0, 0xB9
bne _08041902
adds r0, r2, 0
adds r0, 0xA9
ldrb r0, [r0]
movs r1, 0x7F
eors r0, r1
negs r1, r0
orrs r1, r0
lsrs r1, 31
_08041902:
cmp r1, 0
beq _08041914
ldr r1, _08041A94
adds r0, r2, 0
adds r0, 0xA8
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r3, [r0]
_08041914:
ldr r1, _08041A98
adds r0, r2, 0
adds r0, 0xAC
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041A9C
adds r0, r2, 0
adds r0, 0xB0
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AA0
adds r0, r2, 0
adds r0, 0xBC
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AA4
adds r0, r2, 0
adds r0, 0xC0
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AA8
adds r0, r2, 0
adds r0, 0xC4
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AAC
adds r0, r2, 0
adds r0, 0xC8
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AB0
adds r0, r2, 0
adds r0, 0xD0
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AB4
adds r0, r2, 0
adds r0, 0xDC
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AB8
adds r0, r2, 0
adds r0, 0xE0
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041ABC
adds r0, r2, 0
adds r0, 0xE4
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AC0
adds r0, r2, 0
adds r0, 0xE8
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
ldr r1, _08041AC4
adds r0, r2, 0
adds r0, 0xEC
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
orrs r3, r0
adds r0, r2, 0
adds r0, 0xF4
ldrb r0, [r0]
cmp r0, 0
beq _080419E4
movs r0, 0x80
lsls r0, 17
orrs r3, r0
_080419E4:
adds r0, r2, 0
adds r0, 0xF5
ldrb r0, [r0]
cmp r0, 0
beq _080419F4
movs r0, 0x80
lsls r0, 18
orrs r3, r0
_080419F4:
ldrb r0, [r2, 0x6]
cmp r0, 0
bne _08041A14
movs r0, 0x10
ldrsh r1, [r2, r0]
cmp r1, 0
bge _08041A04
adds r1, 0x3
_08041A04:
asrs r1, 2
movs r4, 0xE
ldrsh r0, [r2, r4]
cmp r1, r0
ble _08041A14
movs r0, 0x80
lsls r0, 6
orrs r3, r0
_08041A14:
ldr r0, _08041AC8
ldr r0, [r0]
ldr r1, _08041ACC
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08041A36
adds r0, r2, 0
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08041A36
movs r0, 0x80
lsls r0, 6
orrs r3, r0
_08041A36:
ldr r0, [r2, 0x2C]
cmp r0, 0xFF
ble _08041A7E
ldr r0, [r2, 0x30]
cmp r0, 0xFF
ble _08041A7E
ldr r0, [r2, 0x34]
cmp r0, 0xFF
ble _08041A7E
ldr r0, [r2, 0x38]
cmp r0, 0xFF
ble _08041A7E
movs r4, 0x1C
ldrsh r0, [r2, r4]
cmp r0, 0x9
ble _08041A7E
movs r1, 0x1E
ldrsh r0, [r2, r1]
cmp r0, 0x9
ble _08041A7E
movs r4, 0x20
ldrsh r0, [r2, r4]
cmp r0, 0x9
ble _08041A7E
movs r1, 0x22
ldrsh r0, [r2, r1]
cmp r0, 0x9
ble _08041A7E
movs r4, 0x24
ldrsh r0, [r2, r4]
cmp r0, 0x9
ble _08041A7E
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0x9
bgt _08041A84
_08041A7E:
movs r0, 0x80
lsls r0, 20
orrs r3, r0
_08041A84:
movs r4, 0x80
lsls r4, 2
adds r0, r2, r4
str r3, [r0]
_08041A8C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08041A94: .4byte gStatusSpriteMasks_SleepStatus
_08041A98: .4byte gStatusSpriteMasks_NonVolatileStatus
_08041A9C: .4byte gStatusSpriteMasks_ImmobilizeStatus
_08041AA0: .4byte gStatusSpriteMasks_VolatileStatus
_08041AA4: .4byte gStatusSpriteMasks_ChargingStatus
_08041AA8: .4byte gStatusSpriteMasks_ProtectionStatus
_08041AAC: .4byte gStatusSpriteMasks_WaitingStatus
_08041AB0: .4byte gStatusSpriteMasks_LinkedStatus
_08041AB4: .4byte gStatusSpriteMasks_MoveStatus
_08041AB8: .4byte gStatusSpriteMasks_ItemStatus
_08041ABC: .4byte gStatusSpriteMasks_TransformStatus
_08041AC0: .4byte gStatusSpriteMasks_EyesightStatus
_08041AC4: .4byte gStatusSpriteMasks_MuzzledStatus
_08041AC8: .4byte gDungeon
_08041ACC: .4byte 0x00000676
thumb_func_end DungeonEntityUpdateStatusSprites
.align 2,0

View File

@ -54,7 +54,7 @@ _08044592:
adds r0, r6, r2
strb r4, [r0]
adds r0, r5, 0
bl GetSpeedStatus
bl CalcSpeedStage
mov r3, r9
ldr r1, [r3]
movs r2, 0xCC

View File

@ -2146,7 +2146,7 @@ _0804A8AC:
adds r0, r3, r1
b _0804A8DC
.align 2, 0
_0804A8C0: .4byte gUnknown_203B46C
_0804A8C0: .4byte gGameOptionsRef
_0804A8C4: .4byte 0x00012b80
_0804A8C8:
ldr r4, _0804A8D4
@ -2299,7 +2299,7 @@ _0804A9D6:
adds r0, r3, r1
b _0804AA08
.align 2, 0
_0804A9EC: .4byte gUnknown_203B46C
_0804A9EC: .4byte gGameOptionsRef
_0804A9F0: .4byte 0x00012b80
_0804A9F4:
ldr r4, _0804AA00

View File

@ -4301,7 +4301,7 @@ _080549C8:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8057954
bl RageMoveAction
bl _080554BA
_080549D8:
adds r0, r7, 0
@ -4716,7 +4716,7 @@ _08054D64:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805867C
bl FocusPunchMoveAction
b _080554BA
_08054D72:
adds r0, r7, 0
@ -5180,7 +5180,7 @@ _08055104:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8059060
bl ChargeMoveAction
b _080554BA
_08055112:
adds r0, r7, 0

View File

@ -498,7 +498,7 @@ _080596EC:
adds r1, r5, 0
movs r2, 0x2
adds r3, r6, 0
bl sub_8079618
bl SetChargeStatusTarget
movs r4, 0x1
_08059700:
adds r0, r4, 0
@ -611,7 +611,7 @@ _080597CC:
adds r1, r5, 0
movs r2, 0x7
adds r3, r4, 0
bl sub_8079618
bl SetChargeStatusTarget
movs r4, 0x1
_080597E0:
adds r0, r4, 0
@ -717,7 +717,7 @@ _080598A4:
adds r1, r4, 0
movs r2, 0x9
adds r3, r5, 0
bl sub_8079618
bl SetChargeStatusTarget
movs r6, 0x1
_080598B8:
adds r0, r6, 0
@ -1657,7 +1657,7 @@ _08059FA0:
adds r1, r4, 0
movs r2, 0x8
adds r3, r5, 0
bl sub_8079618
bl SetChargeStatusTarget
movs r0, 0x1
mov r8, r0
_08059FB6:

View File

@ -633,7 +633,7 @@ _0805DDC2:
.align 2, 0
_0805DDC8: .4byte gRealInputs
_0805DDCC: .4byte 0x00000707
_0805DDD0: .4byte gUnknown_203B46C
_0805DDD0: .4byte gGameOptionsRef
_0805DDD4: .4byte gUnknown_202F22D
_0805DDD8: .4byte gUnknown_202F22C
_0805DDDC: .4byte gUnknown_202F22E
@ -782,7 +782,7 @@ _0805DEDC:
b _0805DF3A
.align 2, 0
_0805DEF8: .4byte gUnknown_202F22C
_0805DEFC: .4byte gUnknown_203B46C
_0805DEFC: .4byte gGameOptionsRef
_0805DF00: .4byte gRealInputs
_0805DF04: .4byte gUnknown_202F22D
_0805DF08: .4byte 0x01000200
@ -859,7 +859,7 @@ _0805DFA0: .4byte gUnknown_202EE00
_0805DFA4: .4byte gRealInputs
_0805DFA8: .4byte gDungeon
_0805DFAC: .4byte 0x00018214
_0805DFB0: .4byte gUnknown_203B46C
_0805DFB0: .4byte gGameOptionsRef
_0805DFB4: .4byte 0x0000066d
_0805DFB8: .4byte gUnknown_202F22C
_0805DFBC:
@ -14595,7 +14595,7 @@ _08064DFE:
b _08064E40
.align 2, 0
_08064E2C: .4byte gUnknown_202EE10
_08064E30: .4byte gUnknown_203B46C
_08064E30: .4byte gGameOptionsRef
_08064E34: .4byte gUnknown_202F2E8
_08064E38:
cmp r0, 0x1
@ -14896,7 +14896,7 @@ _08065088:
bx r0
.align 2, 0
_08065090: .4byte gUnknown_80FEBF8
_08065094: .4byte gUnknown_203B46C
_08065094: .4byte gGameOptionsRef
_08065098: .4byte gUnknown_202F2E8
thumb_func_end sub_8065040
@ -16681,7 +16681,7 @@ _08065F16:
movs r6, 0
b _08065F64
.align 2, 0
_08065F28: .4byte gUnknown_203B46C
_08065F28: .4byte gGameOptionsRef
_08065F2C: .4byte gUnknown_202EE10
_08065F30: .4byte gUnknown_2027370
_08065F34: .4byte gUnknown_80FF774

View File

@ -553,7 +553,7 @@ _0806A744:
cmp r0, 0
beq _0806A776
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
b _0806A776
.align 2, 0
_0806A75C: .4byte gDungeon
@ -3301,7 +3301,7 @@ _0806BC14:
adds r0, r7, 0
bl sub_80429E8
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
add sp, 0x1C
pop {r3-r5}
mov r8, r3
@ -3663,7 +3663,7 @@ _0806BE12:
adds r0, r6, r1
strb r7, [r0]
mov r0, r8
bl GetSpeedStatus
bl CalcSpeedStage
movs r2, 0xAB
lsls r2, 1
adds r1, r6, r2

View File

@ -772,7 +772,7 @@ _0806D62A:
cmp r0, 0x7F
bne _0806D63A
adds r0, r7, 0
bl sub_807A9B0
bl WakeUpPokemon
_0806D63A:
adds r0, r7, 0
movs r1, 0x23
@ -1076,7 +1076,7 @@ _0806D858:
lsrs r4, r1, 31
b _0806D8B6
.align 2, 0
_0806D8B0: .4byte gUnknown_203B46C
_0806D8B0: .4byte gGameOptionsRef
_0806D8B4:
movs r4, 0
_0806D8B6:
@ -1724,7 +1724,7 @@ _0806DDA2:
adds r0, r7, 0
bl sub_806CCB4
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
ldr r4, _0806DDF0
adds r0, r4, 0
adds r1, r7, 0
@ -1885,7 +1885,7 @@ _0806DEF2:
adds r0, r7, 0
bl sub_806CCB4
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
ldr r0, _0806DF40
adds r1, r7, 0
movs r2, 0

View File

@ -5,288 +5,6 @@
.text
thumb_func_start sub_806E8B0
sub_806E8B0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
adds r6, r0, 0
mov r9, r1
adds r0, r2, 0
str r3, [sp]
lsls r0, 24
lsrs r0, 24
movs r7, 0x1
movs r1, 0x1
mov r8, r1
movs r2, 0x1
str r2, [sp, 0x4]
str r1, [sp, 0x8]
bl sub_8092354
movs r2, 0
mov r10, r2
lsls r0, 24
cmp r0, 0
bne _0806E8E6
movs r0, 0x1
mov r10, r0
_0806E8E6:
adds r0, r6, 0
movs r1, 0x11
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E92C
ldr r5, [r6, 0x70]
adds r0, r6, 0
bl HasNegativeStatus
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
movs r1, 0x1
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r0, 24
cmp r4, 0
beq _0806E916
movs r7, 0x2
_0806E916:
cmp r0, 0
beq _0806E92C
adds r0, r6, 0
bl sub_80428B0
ldr r0, _0806EADC
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806E92C:
adds r0, r6, 0
movs r1, 0x22
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806E948
adds r0, r6, 0
movs r1, 0x4B
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E98E
_0806E948:
ldr r2, [r6, 0x70]
movs r4, 0
ldr r0, [sp, 0x30]
cmp r0, 0x20
bgt _0806E95A
mov r1, r10
cmp r1, 0
bne _0806E95A
movs r4, 0x1
_0806E95A:
movs r1, 0x80
lsls r1, 1
adds r0, r2, 0
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r1, r0, 24
cmp r4, 0
beq _0806E978
lsls r0, r7, 1
adds r7, r0, r7
mov r2, r8
lsls r2, 1
mov r8, r2
_0806E978:
cmp r1, 0
beq _0806E98E
adds r0, r6, 0
bl sub_80428C4
ldr r0, _0806EAE0
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806E98E:
adds r0, r6, 0
movs r1, 0x30
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E9AC
mov r0, r10
cmp r0, 0
bne _0806E9AC
lsls r0, r7, 1
adds r7, r0, r7
mov r1, r8
lsls r1, 1
mov r8, r1
_0806E9AC:
ldr r0, [r6, 0x70]
ldrb r0, [r0, 0x6]
movs r4, 0x1
cmp r0, 0
beq _0806E9B8
movs r4, 0
_0806E9B8:
adds r0, r6, 0
movs r1, 0x38
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E9EA
mov r2, r10
cmp r2, 0x1
bne _0806E9EA
ldr r0, _0806EAE4
ldr r0, [r0]
ldr r1, _0806EAE8
adds r0, r1
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0806E9EA
lsls r0, r7, 4
subs r7, r0, r7
mov r2, r8
lsls r0, r2, 2
add r0, r8
lsls r0, 1
mov r8, r0
_0806E9EA:
adds r0, r6, 0
movs r1, 0x3F
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA1C
mov r0, r10
cmp r0, 0x1
bne _0806EA1C
ldr r0, _0806EAE4
ldr r0, [r0]
ldr r1, _0806EAEC
adds r0, r1
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0806EA1C
lsls r0, r7, 4
subs r7, r0, r7
mov r2, r8
lsls r0, r2, 2
add r0, r8
lsls r0, 1
mov r8, r0
_0806EA1C:
mov r0, r9
movs r1, 0x6
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA38
mov r0, r10
cmp r0, 0
bne _0806EA38
lsls r7, 2
mov r1, r8
lsls r0, r1, 2
add r8, r0
_0806EA38:
mov r0, r9
movs r1, 0x34
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA90
mov r2, r10
cmp r2, 0
bne _0806EA90
mov r0, r9
ldr r5, [r0, 0x70]
bl HasNegativeStatus
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
movs r1, 0x8
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r1, r0, 24
cmp r4, 0
beq _0806EA7A
ldr r2, [sp, 0x4]
lsls r0, r2, 1
adds r2, r0, r2
str r2, [sp, 0x4]
ldr r0, [sp, 0x8]
lsls r0, 1
str r0, [sp, 0x8]
_0806EA7A:
cmp r1, 0
beq _0806EA90
mov r0, r9
bl sub_8042940
ldr r0, _0806EAF0
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806EA90:
ldr r1, [sp]
ldr r0, [r1]
muls r0, r7
str r0, [r1]
ldr r2, [sp, 0x2C]
ldr r0, [r2]
ldr r1, [sp, 0x4]
muls r0, r1
str r0, [r2]
mov r2, r8
cmp r2, 0x1
beq _0806EAB6
ldr r1, [sp]
ldr r0, [r1]
mov r1, r8
bl __divsi3
ldr r2, [sp]
str r0, [r2]
_0806EAB6:
ldr r0, [sp, 0x8]
cmp r0, 0x1
beq _0806EACA
ldr r1, [sp, 0x2C]
ldr r0, [r1]
ldr r1, [sp, 0x8]
bl __divsi3
ldr r2, [sp, 0x2C]
str r0, [r2]
_0806EACA:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806EADC: .4byte gUnknown_80FEE04
_0806EAE0: .4byte gUnknown_80FEE2C
_0806EAE4: .4byte gDungeon
_0806EAE8: .4byte 0x000037fa
_0806EAEC: .4byte 0x000037f8
_0806EAF0: .4byte gUnknown_80FEE54
thumb_func_end sub_806E8B0
thumb_func_start sub_806EAF4
sub_806EAF4:
push {r4-r7,lr}

View File

@ -1,214 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80701A4
sub_80701A4:
push {r4-r7,lr}
adds r7, r0, 0
ldr r6, [r7, 0x70]
movs r4, 0
ldr r0, _080701D4
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
adds r0, r6, 0
adds r0, 0x44
movs r1, 0x1
bl SetMonsterActionFields
adds r0, r6, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x3
beq _080701DC
cmp r0, 0x3
bgt _080701D8
cmp r0, 0x1
beq _080701DC
b _080701E4
.align 2, 0
_080701D4: .4byte gAvailablePokemonNames
_080701D8:
cmp r0, 0x5
bne _080701E4
_080701DC:
ldr r0, _080701E0
b _08070278
.align 2, 0
_080701E0: .4byte gUnknown_80F95EC
_080701E4:
adds r0, r6, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x3
beq _0807020C
cmp r0, 0x3
bgt _080701F8
cmp r0, 0x1
beq _08070202
b _0807021C
_080701F8:
cmp r0, 0x4
beq _08070214
cmp r0, 0x6
beq _08070280
b _0807021C
_08070202:
ldr r0, _08070208
b _08070278
.align 2, 0
_08070208: .4byte gPtrFrozenMessage
_0807020C:
ldr r0, _08070210
b _08070278
.align 2, 0
_08070210: .4byte gPtrWrappedAroundMessage
_08070214:
ldr r0, _08070218
b _08070278
.align 2, 0
_08070218: .4byte gPtrWrappedByMessage
_0807021C:
adds r0, r6, 0
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0x8
bhi _0807026C
lsls r0, 2
ldr r1, _08070230
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08070230: .4byte _08070234
.align 2, 0
_08070234:
.4byte _0807026C
.4byte _0807026C
.4byte _08070258
.4byte _0807025C
.4byte _0807026C
.4byte _0807026C
.4byte _0807026C
.4byte _08070264
.4byte _0807026C
_08070258:
movs r4, 0x1
b _0807026C
_0807025C:
ldr r0, _08070260
b _08070278
.align 2, 0
_08070260: .4byte gPtrPausedMessage
_08070264:
ldr r0, _08070268
b _08070278
.align 2, 0
_08070268: .4byte gPtrInfatuatedMessage
_0807026C:
adds r0, r6, 0
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x1
bne _08070288
ldr r0, _08070284
_08070278:
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
_08070280:
movs r0, 0x1
b _08070322
.align 2, 0
_08070284: .4byte gPtrBideMessage
_08070288:
cmp r0, 0
beq _08070320
cmp r0, 0xB
beq _08070320
cmp r0, 0xC
beq _08070320
cmp r4, 0
beq _080702A8
ldr r0, _080702A4
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
b _0807031A
.align 2, 0
_080702A4: .4byte gPtrMoveInterruptedMessage
_080702A8:
movs r5, 0
movs r0, 0x8C
lsls r0, 1
adds r4, r6, r0
_080702B0:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08070312
adds r0, r7, 0
adds r1, r4, 0
bl MoveMatchesChargingStatus
lsls r0, 24
cmp r0, 0
beq _08070312
adds r0, r6, 0
adds r0, 0xC2
ldrb r0, [r0]
cmp r0, r5
bne _08070312
adds r0, r6, 0
adds r0, 0x44
movs r1, 0x14
bl SetMonsterActionFields
adds r3, r5, 0
adds r7, r6, 0
adds r7, 0x50
cmp r5, 0
ble _0807030E
ldrb r1, [r4]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0807030E
movs r4, 0x2
lsls r0, r5, 3
movs r1, 0x8C
lsls r1, 1
adds r0, r1
adds r2, r0, r6
_080702FC:
subs r2, 0x8
subs r3, 0x1
cmp r3, 0
ble _0807030E
ldrb r1, [r2]
adds r0, r4, 0
ands r0, r1
cmp r0, 0
bne _080702FC
_0807030E:
strb r3, [r7]
b _08070280
_08070312:
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
ble _080702B0
_0807031A:
adds r0, r7, 0
bl sub_8079764
_08070320:
movs r0, 0
_08070322:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80701A4
.align 2, 0

View File

@ -3,83 +3,4 @@
.syntax unified
.text
thumb_func_start sub_8070564
sub_8070564:
push {r4-r6,lr}
adds r4, r1, 0
ldr r6, [r0, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetTile
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _080705E6
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _080705E6
cmp r0, 0x37
bgt _080705E6
cmp r1, 0x1F
bgt _080705E6
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080705E6
ldr r0, [r5, 0x10]
cmp r0, 0
beq _080705A8
bl GetEntityType
cmp r0, 0x1
bne _080705E6
_080705A8:
movs r1, 0x2
ldrsh r0, [r6, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r2, r0, 24
adds r3, r2, 0
ldrh r0, [r5]
movs r1, 0x3
ands r1, r0
adds r0, r1, 0
cmp r2, 0x1
beq _080705DE
cmp r2, 0x1
bgt _080705CC
cmp r2, 0
beq _080705D8
b _080705D4
_080705CC:
cmp r3, 0x3
bgt _080705D4
cmp r1, 0
beq _080705E6
_080705D4:
movs r0, 0
b _080705E8
_080705D8:
cmp r1, 0x1
bne _080705E6
b _080705D4
_080705DE:
cmp r1, 0x2
beq _080705D4
cmp r0, 0x1
beq _080705D4
_080705E6:
movs r0, 0x1
_080705E8:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8070564
.align 2, 0

View File

@ -2253,7 +2253,7 @@ _08074F5C:
adds r0, r2
ldr r4, [r0]
adds r0, r7, 0
bl GetSpeedStatus
bl CalcSpeedStage
adds r5, r0, 0
cmp r4, r5
beq _08074F96
@ -2308,7 +2308,7 @@ _08074FD0:
movs r0, 0x2
b _08074FEC
.align 2, 0
_08074FE0: .4byte gUnknown_203B46C
_08074FE0: .4byte gGameOptionsRef
_08074FE4: .4byte gUnknown_202F378
_08074FE8:
ldr r1, _08075048
@ -2383,7 +2383,7 @@ sub_8075050:
movs r0, 0x2
b _0807507C
.align 2, 0
_08075070: .4byte gUnknown_203B46C
_08075070: .4byte gGameOptionsRef
_08075074: .4byte gUnknown_202F378
_08075078:
ldr r1, _080750D0
@ -2611,7 +2611,7 @@ UseAttack:
b _08075248
.align 2, 0
_08075238: .4byte gUnknown_202F32D
_0807523C: .4byte gUnknown_203B46C
_0807523C: .4byte gGameOptionsRef
_08075240: .4byte gUnknown_202F378
_08075244:
ldr r1, _080752D0

View File

@ -112,7 +112,7 @@ _08078A38:
bl sub_80522F4
_08078A44:
adds r0, r4, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
_08078A4A:
pop {r3}
mov r8, r3
@ -230,7 +230,7 @@ _08078B38:
bl sub_80522F4
_08078B44:
adds r0, r6, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
_08078B4A:
add sp, 0x14
pop {r3}
@ -487,7 +487,7 @@ _08078D60:
bl sub_80522F4
_08078D72:
adds r0, r6, 0
bl DungeonEntityUpdateStatusSprites
bl EntityUpdateStatusSprites
_08078D78:
add sp, 0x28
pop {r3-r5}

View File

@ -344,7 +344,7 @@ _0807E90E:
ldrb r0, [r7]
strb r0, [r1, 0x1]
adds r0, r5, 0
bl GetSpeedStatus
bl CalcSpeedStage
adds r0, r5, 0
movs r1, 0x25
bl HasAbility
@ -1688,7 +1688,7 @@ _0807F3BC:
movs r0, 0
strb r0, [r4, 0x8]
adds r0, r5, 0
bl GetSpeedStatus
bl CalcSpeedStage
adds r4, 0x60
ldrb r1, [r4]
movs r0, 0x1

View File

@ -65,14 +65,14 @@ sub_80841EC:
ldr r0, _08084274
cmp r1, r0
ble _08084278
bl sub_8083DE0
bl PlayDungeonCompleteBGM
b _0808427C
.align 2, 0
_0808426C: .4byte gDungeon
_08084270: .4byte 0x0001ceac
_08084274: .4byte 0x00000225
_08084278:
bl sub_8083D98
bl PlayDungeonFailBGM
_0808427C:
ldr r0, _080842B8
ldr r1, [r0]

View File

@ -9,7 +9,7 @@
sub_80951BC:
push {r4,lr}
adds r4, r0, 0
bl sub_8095190
bl FindOpenMailSlot
adds r2, r0, 0
movs r0, 0x1
negs r0, r0
@ -42,414 +42,4 @@ _080951F6:
bx r1
thumb_func_end sub_80951BC
thumb_func_start sub_80951FC
sub_80951FC:
push {r4,r5,lr}
ldr r1, _08095224
ldr r1, [r1]
adds r1, 0x30
ldrb r2, [r1]
negs r3, r2
orrs r3, r2
lsrs r3, 31
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
adds r0, r3, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08095224: .4byte gUnknown_203B480
thumb_func_end sub_80951FC
thumb_func_start sub_8095228
sub_8095228:
lsls r0, 24
lsrs r0, 24
ldr r2, _0809523C
lsls r1, r0, 1
adds r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
bx lr
.align 2, 0
_0809523C: .4byte gUnknown_203B480
thumb_func_end sub_8095228
thumb_func_start sub_8095240
sub_8095240:
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _08095270
lsls r4, r0, 1
adds r4, r0
lsls r4, 4
ldr r0, [r5]
adds r0, r4
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r5]
adds r0, r4
movs r1, 0
strb r1, [r0]
ldr r0, [r5]
adds r0, r4
adds r0, 0x22
strb r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08095270: .4byte gUnknown_203B480
thumb_func_end sub_8095240
thumb_func_start sub_8095274
sub_8095274:
push {lr}
ldr r1, _08095294
ldr r3, [r1]
adds r2, r3, 0
ldm r2!, {r1}
lsls r1, 2
adds r2, r1
str r0, [r2]
ldr r0, [r3]
movs r1, 0
cmp r0, 0x1E
bgt _0809528E
adds r1, r0, 0x1
_0809528E:
str r1, [r3]
pop {r0}
bx r0
.align 2, 0
_08095294: .4byte gUnknown_203B48C
thumb_func_end sub_8095274
thumb_func_start sub_8095298
sub_8095298:
push {lr}
adds r3, r0, 0
movs r2, 0
ldr r0, _080952B0
ldr r0, [r0]
adds r1, r0, 0x4
_080952A4:
ldr r0, [r1]
cmp r0, r3
bne _080952B4
movs r0, 0x1
b _080952BE
.align 2, 0
_080952B0: .4byte gUnknown_203B48C
_080952B4:
adds r1, 0x4
adds r2, 0x1
cmp r2, 0x1F
ble _080952A4
movs r0, 0
_080952BE:
pop {r1}
bx r1
thumb_func_end sub_8095298
thumb_func_start sub_80952C4
sub_80952C4:
push {r4,lr}
ldr r2, _080952EC
ldr r1, [r2]
movs r0, 0
str r0, [r1]
movs r3, 0
adds r4, r2, 0
movs r2, 0x1
negs r2, r2
_080952D6:
ldr r0, [r4]
lsls r1, r3, 2
adds r0, 0x4
adds r0, r1
str r2, [r0]
adds r3, 0x1
cmp r3, 0x1F
ble _080952D6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080952EC: .4byte gUnknown_203B48C
thumb_func_end sub_80952C4
thumb_func_start sub_80952F0
sub_80952F0:
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, _08095310
ldr r2, [r0]
_080952FE:
ldrb r0, [r2]
cmp r0, r1
bne _08095314
ldr r0, [r2, 0x10]
cmp r0, r4
bne _08095314
movs r0, 0x1
b _0809531E
.align 2, 0
_08095310: .4byte gUnknown_203B480
_08095314:
adds r2, 0x30
adds r3, 0x1
cmp r3, 0x1F
ble _080952FE
movs r0, 0
_0809531E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80952F0
thumb_func_start sub_8095324
sub_8095324:
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r3, 0
ldr r0, _0809534C
ldr r1, [r0]
movs r2, 0x1F
_08095332:
ldrb r0, [r1]
cmp r0, r4
bne _0809533A
adds r3, 0x1
_0809533A:
adds r1, 0x30
subs r2, 0x1
cmp r2, 0
bge _08095332
adds r0, r3, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809534C: .4byte gUnknown_203B480
thumb_func_end sub_8095324
thumb_func_start sub_8095350
sub_8095350:
push {lr}
movs r3, 0
ldr r0, _08095370
ldr r1, [r0]
movs r2, 0x1F
_0809535A:
ldrb r0, [r1]
cmp r0, 0
beq _08095362
adds r3, 0x1
_08095362:
adds r1, 0x30
subs r2, 0x1
cmp r2, 0
bge _0809535A
adds r0, r3, 0
pop {r1}
bx r1
.align 2, 0
_08095370: .4byte gUnknown_203B480
thumb_func_end sub_8095350
thumb_func_start sub_8095374
sub_8095374:
push {lr}
movs r3, 0x1
negs r3, r3
movs r2, 0
ldr r0, _08095398
ldr r1, [r0]
_08095380:
ldrb r0, [r1]
cmp r0, 0x1
bne _08095388
adds r3, r2, 0
_08095388:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _08095380
adds r0, r3, 0
pop {r1}
bx r1
.align 2, 0
_08095398: .4byte gUnknown_203B480
thumb_func_end sub_8095374
thumb_func_start sub_809539C
sub_809539C:
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, _080953BC
ldr r2, [r0]
_080953AA:
ldrb r0, [r2]
cmp r0, r1
bne _080953C0
ldr r0, [r2, 0x10]
cmp r0, r4
bne _080953C0
adds r0, r3, 0
b _080953CC
.align 2, 0
_080953BC: .4byte gUnknown_203B480
_080953C0:
adds r2, 0x30
adds r3, 0x1
cmp r3, 0x1F
ble _080953AA
movs r0, 0x1
negs r0, r0
_080953CC:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_809539C
thumb_func_start sub_80953D4
sub_80953D4:
push {lr}
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
ldr r0, _080953EC
ldr r1, [r0]
_080953E0:
ldrb r0, [r1]
cmp r0, r3
bne _080953F0
adds r0, r2, 0
b _080953FC
.align 2, 0
_080953EC: .4byte gUnknown_203B480
_080953F0:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _080953E0
movs r0, 0x1
negs r0, r0
_080953FC:
pop {r1}
bx r1
thumb_func_end sub_80953D4
thumb_func_start sub_8095400
sub_8095400:
push {lr}
adds r3, r0, 0
movs r2, 0
ldr r0, _08095418
ldr r0, [r0]
adds r1, r0, 0
adds r1, 0x10
_0809540E:
ldr r0, [r1]
cmp r0, r3
bne _0809541C
adds r0, r2, 0
b _08095428
.align 2, 0
_08095418: .4byte gUnknown_203B480
_0809541C:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _0809540E
movs r0, 0x1
negs r0, r0
_08095428:
pop {r1}
bx r1
thumb_func_end sub_8095400
thumb_func_start sub_809542C
sub_809542C:
push {r4,lr}
sub sp, 0x14
ldr r4, _08095490
ldr r2, [r4]
movs r1, 0x1
strb r1, [r2]
ldr r2, [r4]
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2, 0x4]
str r1, [r2, 0x8]
bl Rand32Bit
bl sub_8094D28
bl sub_8094E4C
ldr r1, [r4]
str r0, [r1, 0x10]
bl GetPlayerPokemonStruct
ldr r1, [r4]
ldrh r0, [r0, 0x8]
strh r0, [r1, 0xC]
bl GetPlayerPokemonStruct
adds r1, r0, 0
mov r0, sp
bl PrintPokeNameToBuffer
ldr r0, [r4]
adds r0, 0x14
mov r1, sp
bl CopyStringtoBuffer
bl sub_8011C34
ldr r1, [r4]
str r0, [r1, 0x24]
ldrb r0, [r1, 0x4]
bl GetUnk3
ldr r1, [r4]
adds r1, 0x2C
strb r0, [r1]
add sp, 0x14
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08095490: .4byte gUnknown_203B480
thumb_func_end sub_809542C
thumb_func_start sub_8095494
sub_8095494:
lsls r1, 24
lsrs r1, 24
ldr r2, _080954B0
ldr r3, [r2]
lsls r2, r1, 1
adds r2, r1
lsls r2, 4
adds r3, r2
ldr r1, [r3, 0x4]
ldr r2, [r3, 0x8]
str r1, [r0]
str r2, [r0, 0x4]
bx lr
.align 2, 0
_080954B0: .4byte gUnknown_203B480
thumb_func_end sub_8095494
.align 2,0

File diff suppressed because it is too large Load Diff

844
asm/code_80958E8_1.s Normal file
View File

@ -0,0 +1,844 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8096078
sub_8096078:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r2, 0
movs r3, 0
ldr r0, _08096090
mov r12, r0
mov r8, r3
movs r4, 0
mov r9, r4
b _080960B6
.align 2, 0
_08096090: .4byte gUnknown_203B490
_08096094:
cmp r2, r3
ble _080960AA
mov r1, r12
ldr r0, [r1]
mov r5, r8
adds r1, r0, r5
adds r0, r4
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldm r0!, {r6,r7}
stm r1!, {r6,r7}
_080960AA:
adds r4, 0x14
movs r0, 0x14
add r9, r0
adds r2, 0x1
add r8, r0
adds r3, 0x1
_080960B6:
cmp r2, 0x3
bgt _080960E2
mov r1, r12
ldr r0, [r1]
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
bne _080960E2
ldr r6, _08096110
mov r1, r9
_080960CA:
adds r1, 0x14
adds r4, 0x14
movs r5, 0x14
add r9, r5
adds r2, 0x1
cmp r2, 0x3
bgt _080960E2
ldr r0, [r6]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _080960CA
_080960E2:
cmp r2, 0x4
bne _08096094
cmp r3, 0x3
bgt _08096102
ldr r4, _08096110
movs r2, 0
lsls r0, r3, 2
adds r0, r3
lsls r1, r0, 2
_080960F4:
ldr r0, [r4]
adds r0, r1
strb r2, [r0]
adds r1, 0x14
adds r3, 0x1
cmp r3, 0x3
ble _080960F4
_08096102:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096110: .4byte gUnknown_203B490
thumb_func_end sub_8096078
thumb_func_start sub_8096114
sub_8096114:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
movs r1, 0
_08096122:
adds r0, r1, 0x1
mov r10, r0
mov r8, r10
cmp r0, 0x3
bgt _08096198
ldr r2, _080961B0
mov r9, r2
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
mov r12, r0
mov r3, r10
lsls r0, r3, 2
add r0, r10
lsls r4, r0, 2
_08096140:
mov r5, r9
ldr r1, [r5]
adds r3, r1, r4
ldrb r0, [r3]
cmp r0, 0
beq _0809618C
mov r6, r12
adds r2, r1, r6
ldrb r1, [r2, 0x4]
ldrb r0, [r3, 0x4]
cmp r1, r0
bhi _08096164
cmp r1, r0
bne _0809618C
ldrb r0, [r2, 0x5]
ldrb r7, [r3, 0x5]
cmp r0, r7
bls _0809618C
_08096164:
mov r1, sp
adds r0, r2, 0
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldm r0!, {r5,r6}
stm r1!, {r5,r6}
adds r1, r2, 0
adds r0, r3, 0
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r5,r6}
stm r1!, {r5,r6}
mov r7, r9
ldr r1, [r7]
adds r1, r4
mov r0, sp
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r6,r7}
stm r1!, {r6,r7}
_0809618C:
adds r4, 0x14
movs r0, 0x1
add r8, r0
mov r1, r8
cmp r1, 0x3
ble _08096140
_08096198:
mov r1, r10
cmp r1, 0x2
ble _08096122
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080961B0: .4byte gUnknown_203B490
thumb_func_end sub_8096114
thumb_func_start sub_80961B4
sub_80961B4:
push {lr}
bl sub_8096E2C
lsls r0, 24
cmp r0, 0
beq _080961CE
ldr r0, _080961D4
ldr r0, [r0]
movs r1, 0xCA
lsls r1, 2
adds r0, r1
movs r1, 0x1
strb r1, [r0]
_080961CE:
pop {r0}
bx r0
.align 2, 0
_080961D4: .4byte gUnknown_203B490
thumb_func_end sub_80961B4
thumb_func_start sub_80961D8
sub_80961D8:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r7, 0
bl CountFilledMailboxSlots
adds r6, r0, 0
movs r1, 0x4
bl RandRange
mov r8, r0
cmp r6, 0x3
bgt _08096202
ldr r4, _08096208
ldr r0, [r4]
movs r2, 0xCA
lsls r2, 2
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, 0
bne _0809620C
_08096202:
movs r0, 0
b _080963A8
.align 2, 0
_08096208: .4byte gUnknown_203B490
_0809620C:
strb r7, [r1]
movs r5, 0x38
movs r0, 0xA
movs r1, 0x31
movs r2, 0x1
bl sub_8001D08
lsls r0, 24
cmp r0, 0
beq _0809623A
ldr r0, [r4]
ldr r1, _08096328
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0809623A
movs r0, 0x35
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _0809623A
movs r5, 0x35
_0809623A:
movs r0, 0xF
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _0809629C
ldr r0, _0809632C
ldr r0, [r0]
movs r2, 0xC9
lsls r2, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0
bne _08096264
movs r0, 0x34
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _08096264
movs r5, 0x34
_08096264:
ldr r0, _0809632C
ldr r0, [r0]
ldr r1, _08096330
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _08096280
movs r0, 0x33
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _08096280
movs r5, 0x33
_08096280:
ldr r0, _0809632C
ldr r0, [r0]
ldr r2, _08096334
adds r0, r2
ldrb r0, [r0]
cmp r0, 0
bne _0809629C
movs r0, 0x32
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _0809629C
movs r5, 0x32
_0809629C:
bl GetRescueTeamRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _080962C4
ldr r0, _0809632C
ldr r0, [r0]
ldr r1, _08096338
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _080962C4
movs r0, 0x36
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _080962C4
movs r5, 0x36
_080962C4:
movs r0, 0x6
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080962EC
ldr r0, _0809632C
ldr r0, [r0]
ldr r2, _0809633C
adds r0, r2
ldrb r0, [r0]
cmp r0, 0
bne _080962EC
movs r0, 0x37
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _080962EC
movs r5, 0x37
_080962EC:
cmp r5, 0x38
bne _08096310
cmp r6, r8
bgt _08096392
bl sub_8096E2C
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0xE
bl sub_80023E4
lsls r0, 24
cmp r0, 0
bne _0809630C
cmp r5, 0x2
bhi _0809638E
_0809630C:
cmp r5, 0x31
bhi _0809638E
_08096310:
lsls r0, r6, 24
lsrs r0, 24
bl GetMailboxSlotInfo
adds r4, r0, 0
movs r0, 0x1
strb r0, [r4]
movs r0, 0x62
strb r0, [r4, 0x4]
strb r5, [r4, 0x5]
b _0809638A
.align 2, 0
_08096328: .4byte 0x00000325
_0809632C: .4byte gUnknown_203B490
_08096330: .4byte 0x00000323
_08096334: .4byte 0x00000322
_08096338: .4byte 0x00000326
_0809633C: .4byte 0x00000327
_08096340:
lsls r0, r6, 24
lsrs r0, 24
bl GetMailboxSlotInfo
adds r4, r0, 0
bl sub_8095B28
lsls r0, 24
cmp r0, 0
beq _08096392
bl sub_8095E78
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0x4
ldrb r1, [r4, 0x1]
bl sub_803C1D0
lsls r0, 24
cmp r0, 0
bne _0809636C
movs r5, 0
_0809636C:
movs r0, 0x5
movs r1, 0xA
bl RandRange
strb r0, [r4, 0x11]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x9
bne _0809638A
cmp r5, 0
bne _08096388
movs r0, 0x5
strb r0, [r4, 0x11]
b _0809638A
_08096388:
strb r5, [r4, 0x13]
_0809638A:
movs r7, 0x1
adds r6, 0x1
_0809638E:
cmp r6, r8
ble _08096340
_08096392:
bl sub_80963B4
lsls r0, 24
cmp r0, 0
beq _0809639E
movs r7, 0x1
_0809639E:
bl sub_8096078
bl sub_8096114
adds r0, r7, 0
_080963A8:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80961D8
thumb_func_start sub_80963B4
sub_80963B4:
push {r4-r6,lr}
movs r6, 0
bl sub_8096E2C
lsls r0, 24
lsrs r5, r0, 24
bl CountFilledMailboxSlots
adds r4, r0, 0
cmp r4, 0x3
ble _080963CE
movs r0, 0
b _080963F4
_080963CE:
movs r0, 0xE
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _080963F2
cmp r5, 0x31
bhi _080963F2
lsls r0, r4, 24
lsrs r0, 24
bl GetMailboxSlotInfo
movs r1, 0x1
strb r1, [r0]
movs r1, 0x62
strb r1, [r0, 0x4]
strb r5, [r0, 0x5]
movs r6, 0x1
_080963F2:
adds r0, r6, 0
_080963F4:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80963B4
thumb_func_start sub_80963FC
sub_80963FC:
push {r4-r6,lr}
movs r6, 0
_08096400:
lsls r0, r6, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl GetMailboxSlotInfo
adds r5, r0, 0
ldrb r0, [r5]
cmp r0, 0x1
beq _08096418
adds r0, r4, 0
bl ResetMailboxSlot
_08096418:
adds r6, 0x1
cmp r6, 0x3
ble _08096400
bl sub_8096078
bl CountFilledMailboxSlots
lsls r0, 24
lsrs r0, 24
bl GetMailboxSlotInfo
adds r5, r0, 0
movs r0, 0
movs r4, 0x5
strb r4, [r5]
strb r0, [r5, 0x1]
strb r0, [r5, 0x2]
movs r0, 0x2
strb r0, [r5, 0x4]
movs r0, 0x3
strb r0, [r5, 0x5]
bl Rand32Bit
ldr r1, _08096484
ands r1, r0
str r1, [r5, 0x8]
movs r0, 0x10
strh r0, [r5, 0xC]
strh r0, [r5, 0xE]
ldrb r0, [r5, 0x4]
bl sub_8095F28
strb r0, [r5, 0x10]
strb r4, [r5, 0x11]
_0809645C:
ldrb r1, [r5, 0x1]
adds r0, r5, 0x4
adds r2, r5, 0
adds r2, 0x12
bl sub_803C37C
ldrb r0, [r5, 0x10]
ldrb r1, [r5, 0x12]
cmp r0, r1
beq _0809645C
movs r0, 0
strb r0, [r5, 0x13]
bl sub_8096078
bl sub_8096114
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08096484: .4byte 0x00ffffff
thumb_func_end sub_80963FC
thumb_func_start sub_8096488
sub_8096488:
push {r4,lr}
movs r4, 0
_0809648C:
lsls r0, r4, 24
lsrs r0, 24
bl ResetMailboxSlot
adds r4, 0x1
cmp r4, 0x3
ble _0809648C
movs r0, 0
bl GetMailboxSlotInfo
movs r2, 0
movs r1, 0x1
strb r1, [r0]
movs r1, 0x62
strb r1, [r0, 0x4]
strb r2, [r0, 0x5]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8096488
thumb_func_start sub_80964B4
sub_80964B4:
push {lr}
ldr r0, _080964D4
ldr r0, [r0]
ldr r1, _080964D8
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _080964DC
movs r0, 0x35
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _080964DC
movs r0, 0
b _080964DE
.align 2, 0
_080964D4: .4byte gUnknown_203B490
_080964D8: .4byte 0x00000325
_080964DC:
movs r0, 0x1
_080964DE:
pop {r1}
bx r1
thumb_func_end sub_80964B4
thumb_func_start sub_80964E4
sub_80964E4:
push {lr}
ldr r0, _08096504
ldr r0, [r0]
ldr r1, _08096508
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0809650C
movs r0, 0x36
bl sub_8096E80
lsls r0, 24
cmp r0, 0
bne _0809650C
movs r0, 0
b _0809650E
.align 2, 0
_08096504: .4byte gUnknown_203B490
_08096508: .4byte 0x00000326
_0809650C:
movs r0, 0x1
_0809650E:
pop {r1}
bx r1
thumb_func_end sub_80964E4
thumb_func_start CountFilledPelipperBoardSlots
CountFilledPelipperBoardSlots:
push {r4,r5,lr}
movs r5, 0
movs r4, 0
_0809651A:
lsls r0, r4, 24
lsrs r0, 24
bl IsPelipperBoardSlotEmpty
lsls r0, 24
cmp r0, 0
bne _0809652A
adds r5, 0x1
_0809652A:
adds r4, 0x1
cmp r4, 0x7
ble _0809651A
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end CountFilledPelipperBoardSlots
thumb_func_start sub_8096538
sub_8096538:
push {r4,r5,lr}
adds r4, r0, 0
movs r3, 0
ldr r5, _08096560
movs r2, 0
_08096542:
ldr r0, [r5]
adds r0, r2
adds r1, r0, 0
adds r1, 0x50
ldrb r0, [r1]
cmp r0, 0
bne _08096564
adds r0, r4, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3}
stm r1!, {r2,r3}
movs r0, 0
b _0809656E
.align 2, 0
_08096560: .4byte gUnknown_203B490
_08096564:
adds r2, 0x14
adds r3, 0x1
cmp r3, 0x7
ble _08096542
movs r0, 0x1
_0809656E:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8096538
thumb_func_start GetPelipperBoardSlotInfo
GetPelipperBoardSlotInfo:
lsls r0, 24
lsrs r0, 24
ldr r2, _08096588
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, 0x50
ldr r0, [r2]
adds r0, r1
bx lr
.align 2, 0
_08096588: .4byte gUnknown_203B490
thumb_func_end GetPelipperBoardSlotInfo
thumb_func_start IsPelipperBoardSlotEmpty
IsPelipperBoardSlotEmpty:
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080965AC
ldr r2, [r1]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r2, r1
adds r2, 0x50
ldrb r0, [r2]
cmp r0, 0
beq _080965B0
movs r0, 0
b _080965B2
.align 2, 0
_080965AC: .4byte gUnknown_203B490
_080965B0:
movs r0, 0x1
_080965B2:
pop {r1}
bx r1
thumb_func_end IsPelipperBoardSlotEmpty
thumb_func_start ResetPelipperBoardSlot
ResetPelipperBoardSlot:
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, _080965F0
ldr r1, [r4]
lsls r2, r0, 2
adds r2, r0
lsls r2, 2
adds r1, r2
adds r1, 0x50
movs r3, 0
strb r3, [r1]
ldr r0, [r4]
adds r0, r2
adds r0, 0x54
movs r1, 0x63
strb r1, [r0]
ldr r0, [r4]
adds r0, r2
adds r0, 0x55
strb r3, [r0]
ldr r0, [r4]
adds r0, r2
adds r0, 0x61
strb r3, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080965F0: .4byte gUnknown_203B490
thumb_func_end ResetPelipperBoardSlot
thumb_func_start sub_80965F4
sub_80965F4:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r2, 0
movs r3, 0
ldr r0, _0809660C
mov r12, r0
mov r8, r3
movs r4, 0
mov r9, r4
b _08096636
.align 2, 0
_0809660C: .4byte gUnknown_203B490
_08096610:
cmp r2, r3
ble _0809662A
mov r1, r12
ldr r0, [r1]
mov r5, r8
adds r1, r0, r5
adds r0, r4
adds r1, 0x50
adds r0, 0x50
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldm r0!, {r6,r7}
stm r1!, {r6,r7}
_0809662A:
adds r4, 0x14
movs r0, 0x14
add r9, r0
adds r2, 0x1
add r8, r0
adds r3, 0x1
_08096636:
cmp r2, 0x7
bgt _08096666
mov r1, r12
ldr r0, [r1]
adds r0, r4
adds r0, 0x50
ldrb r0, [r0]
cmp r0, 0
bne _08096666
ldr r6, _08096694
mov r1, r9
_0809664C:
adds r1, 0x14
adds r4, 0x14
movs r5, 0x14
add r9, r5
adds r2, 0x1
cmp r2, 0x7
bgt _08096666
ldr r0, [r6]
adds r0, r1
adds r0, 0x50
ldrb r0, [r0]
cmp r0, 0
beq _0809664C
_08096666:
cmp r2, 0x8
bne _08096610
cmp r3, 0x7
bgt _08096688
ldr r4, _08096694
movs r2, 0
lsls r0, r3, 2
adds r0, r3
lsls r1, r0, 2
_08096678:
ldr r0, [r4]
adds r0, r1
adds r0, 0x50
strb r2, [r0]
adds r1, 0x14
adds r3, 0x1
cmp r3, 0x7
ble _08096678
_08096688:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096694: .4byte gUnknown_203B490
thumb_func_end sub_80965F4
.align 2,0

425
asm/code_8096AF8.s Normal file
View File

@ -0,0 +1,425 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8096C80
sub_8096C80:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r2, 0
movs r3, 0
ldr r0, _08096C98
mov r12, r0
mov r8, r3
movs r4, 0
mov r9, r4
b _08096CC2
.align 2, 0
_08096C98: .4byte gUnknown_203B490
_08096C9C:
cmp r2, r3
ble _08096CB6
mov r1, r12
ldr r0, [r1]
mov r5, r8
adds r1, r0, r5
adds r0, r4
adds r1, 0xF0
adds r0, 0xF0
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldm r0!, {r6,r7}
stm r1!, {r6,r7}
_08096CB6:
adds r4, 0x14
movs r0, 0x14
add r9, r0
adds r2, 0x1
add r8, r0
adds r3, 0x1
_08096CC2:
cmp r2, 0x7
bgt _08096CF2
mov r1, r12
ldr r0, [r1]
adds r0, r4
adds r0, 0xF0
ldrb r0, [r0]
cmp r0, 0
bne _08096CF2
ldr r6, _08096D20
mov r1, r9
_08096CD8:
adds r1, 0x14
adds r4, 0x14
movs r5, 0x14
add r9, r5
adds r2, 0x1
cmp r2, 0x7
bgt _08096CF2
ldr r0, [r6]
adds r0, r1
adds r0, 0xF0
ldrb r0, [r0]
cmp r0, 0
beq _08096CD8
_08096CF2:
cmp r2, 0x8
bne _08096C9C
cmp r3, 0x7
bgt _08096D14
ldr r4, _08096D20
movs r2, 0
lsls r0, r3, 2
adds r0, r3
lsls r1, r0, 2
_08096D04:
ldr r0, [r4]
adds r0, r1
adds r0, 0xF0
strb r2, [r0]
adds r1, 0x14
adds r3, 0x1
cmp r3, 0x7
ble _08096D04
_08096D14:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096D20: .4byte gUnknown_203B490
thumb_func_end sub_8096C80
thumb_func_start sub_8096D24
sub_8096D24:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
movs r1, 0
_08096D32:
adds r6, r1, 0x1
mov r10, r6
cmp r6, 0x7
bgt _08096DBC
ldr r0, _08096DD4
mov r8, r0
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
mov r9, r0
lsls r0, r6, 2
adds r0, r6
lsls r4, r0, 2
_08096D4C:
mov r1, r8
ldr r2, [r1]
adds r3, r2, r4
adds r5, r3, 0
adds r5, 0xF0
str r5, [sp, 0x14]
ldrb r0, [r5]
cmp r0, 0
beq _08096DB0
add r2, r9
mov r12, r2
mov r0, r12
adds r0, 0xF4
adds r1, r3, 0
adds r1, 0xF4
ldrb r2, [r0]
ldrb r0, [r1]
cmp r2, r0
bhi _08096D84
cmp r2, r0
bne _08096DB0
mov r0, r12
adds r0, 0xF5
adds r1, 0x1
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bls _08096DB0
_08096D84:
mov r2, r12
adds r2, 0xF0
mov r1, sp
adds r0, r2, 0
ldm r0!, {r3,r5,r7}
stm r1!, {r3,r5,r7}
ldm r0!, {r3,r7}
stm r1!, {r3,r7}
ldr r0, [sp, 0x14]
ldm r0!, {r1,r5,r7}
stm r2!, {r1,r5,r7}
ldm r0!, {r3,r5}
stm r2!, {r3,r5}
mov r7, r8
ldr r1, [r7]
adds r1, r4
adds r1, 0xF0
mov r0, sp
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r7}
stm r1!, {r2,r7}
_08096DB0:
adds r4, 0x14
movs r3, 0x1
add r10, r3
mov r5, r10
cmp r5, 0x7
ble _08096D4C
_08096DBC:
adds r1, r6, 0
cmp r1, 0x6
ble _08096D32
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096DD4: .4byte gUnknown_203B490
thumb_func_end sub_8096D24
thumb_func_start sub_8096DD8
sub_8096DD8:
ldr r0, _08096DE4
ldr r0, [r0]
movs r1, 0xC8
lsls r1, 1
adds r0, r1
bx lr
.align 2, 0
_08096DE4: .4byte gUnknown_203B490
thumb_func_end sub_8096DD8
thumb_func_start sub_8096DE8
sub_8096DE8:
ldr r0, _08096DF4
ldr r0, [r0]
movs r1, 0xDC
lsls r1, 1
adds r0, r1
bx lr
.align 2, 0
_08096DF4: .4byte gUnknown_203B490
thumb_func_end sub_8096DE8
thumb_func_start ReceivePKMNNews
ReceivePKMNNews:
lsls r0, 24
lsrs r0, 24
ldr r1, _08096E10
ldr r1, [r1]
movs r2, 0xBC
lsls r2, 2
adds r1, r2
adds r1, r0
movs r0, 0x1
strb r0, [r1]
bx lr
.align 2, 0
_08096E10: .4byte gUnknown_203B490
thumb_func_end ReceivePKMNNews
thumb_func_start CheckPKMNNewsSlot
CheckPKMNNewsSlot:
lsls r0, 24
lsrs r0, 24
ldr r1, _08096E28
ldr r1, [r1]
movs r2, 0xBC
lsls r2, 2
adds r1, r2
adds r1, r0
ldrb r0, [r1]
bx lr
.align 2, 0
_08096E28: .4byte gUnknown_203B490
thumb_func_end CheckPKMNNewsSlot
thumb_func_start sub_8096E2C
sub_8096E2C:
push {lr}
movs r3, 0
ldr r0, _08096E70
ldr r1, [r0]
movs r2, 0x3
_08096E36:
ldrb r0, [r1]
cmp r0, 0x1
bne _08096E48
ldrb r0, [r1, 0x5]
cmp r3, r0
bgt _08096E48
cmp r0, 0x31
bhi _08096E48
adds r3, r0, 0x1
_08096E48:
adds r1, 0x14
subs r2, 0x1
cmp r2, 0
bge _08096E36
adds r2, r3, 0
cmp r2, 0x31
bgt _08096E7A
ldr r0, _08096E70
ldr r0, [r0]
movs r3, 0xBC
lsls r3, 2
adds r1, r0, r3
_08096E60:
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _08096E74
lsls r0, r2, 24
lsrs r0, 24
b _08096E7C
.align 2, 0
_08096E70: .4byte gUnknown_203B490
_08096E74:
adds r2, 0x1
cmp r2, 0x31
ble _08096E60
_08096E7A:
movs r0, 0x38
_08096E7C:
pop {r1}
bx r1
thumb_func_end sub_8096E2C
thumb_func_start sub_8096E80
sub_8096E80:
push {lr}
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
ldr r0, _08096E9C
ldr r1, [r0]
_08096E8C:
ldrb r0, [r1]
cmp r0, 0x1
bne _08096EA0
ldrb r0, [r1, 0x5]
cmp r3, r0
bne _08096EA0
movs r0, 0x1
b _08096EAA
.align 2, 0
_08096E9C: .4byte gUnknown_203B490
_08096EA0:
adds r1, 0x14
adds r2, 0x1
cmp r2, 0x3
ble _08096E8C
movs r0, 0
_08096EAA:
pop {r1}
bx r1
thumb_func_end sub_8096E80
thumb_func_start sub_8096EB0
sub_8096EB0:
ldrb r1, [r0, 0x2]
ldrb r2, [r0, 0x1]
adds r1, r2
ldrb r3, [r0, 0x4]
adds r2, r1, r3
ldrb r1, [r0, 0x5]
adds r2, r1
ldr r1, [r0, 0x8]
lsls r1, 8
adds r2, r1
movs r3, 0xC
ldrsh r1, [r0, r3]
lsls r1, 12
adds r2, r1
movs r3, 0xE
ldrsh r1, [r0, r3]
lsls r1, 16
adds r2, r1
ldrb r1, [r0, 0x10]
lsls r1, 24
adds r1, r2, r1
ldrb r3, [r0, 0x11]
adds r2, r1, r3
ldrb r1, [r0, 0x12]
adds r1, r2, r1
ldrb r0, [r0, 0x13]
adds r2, r1, r0
adds r0, r2, 0
bx lr
thumb_func_end sub_8096EB0
thumb_func_start sub_8096EEC
sub_8096EEC:
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r12, r0
movs r3, 0xF
ldr r5, _08096F4C
mov r8, r5
movs r4, 0x8C
lsls r4, 2
_08096EFE:
mov r0, r8
ldr r2, [r0]
lsls r1, r3, 1
adds r1, r3
lsls r1, 2
adds r1, r2, r1
subs r3, 0x1
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r2, r0
adds r1, r4
adds r2, r4
ldm r2!, {r0,r6,r7}
stm r1!, {r0,r6,r7}
cmp r3, 0
bgt _08096EFE
ldr r2, [r5]
movs r3, 0x8C
lsls r3, 2
adds r2, r3
mov r6, r12
ldr r0, [r6, 0x4]
ldr r1, [r6, 0x8]
str r0, [r2]
str r1, [r2, 0x4]
mov r0, r12
bl sub_8096EB0
ldr r1, [r5]
movs r7, 0x8E
lsls r7, 2
adds r1, r7
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096F4C: .4byte gUnknown_203B490
thumb_func_end sub_8096EEC
.align 2,0

View File

@ -658,7 +658,7 @@ _08099604:
bne _080995AE
b _08099454
.align 2, 0
_08099620: .4byte gUnknown_203B46C
_08099620: .4byte gGameOptionsRef
_08099624:
movs r0, 0x10
bl FadeOutAllMusic
@ -738,7 +738,7 @@ sub_8099690:
.align 2, 0
_080996BC: .4byte gUnknown_8116028
_080996C0: .4byte gSystemFileArchive
_080996C4: .4byte gUnknown_203B46C
_080996C4: .4byte gGameOptionsRef
_080996C8: .4byte gUnknown_202D078
_080996CC:
ldr r4, _080996D0
@ -5733,7 +5733,7 @@ _0809BD84:
bl sub_8001658
cmp r0, 0
bne _0809BDB2
bl sub_80247B4
bl HasEvolutionCompleted
lsls r0, 24
cmp r0, 0
beq _0809BDB2
@ -6907,7 +6907,7 @@ sub_809C6EC:
bl sub_809C6CC
b _0809C71E
.align 2, 0
_0809C70C: .4byte gUnknown_203B46C
_0809C70C: .4byte gGameOptionsRef
_0809C710:
movs r0, 0x3
bl sub_809C6CC
@ -7962,7 +7962,7 @@ _0809CECC:
bl sub_809C6CC
b _0809CEF6
.align 2, 0
_0809CEEC: .4byte gUnknown_203B46C
_0809CEEC: .4byte gGameOptionsRef
_0809CEF0:
movs r0, 0x3
bl sub_809C6CC

View File

@ -155,11 +155,11 @@ _08032850:
.4byte _0803378C
_08032A48:
movs r0, 0x1
bl sub_8095324
bl CountMailType
cmp r0, 0
bne _08032A9C
movs r0, 0x5
bl sub_8095324
bl CountMailType
adds r4, r0, 0
cmp r4, 0
bne _08032A9C
@ -214,11 +214,11 @@ _08032AC8: .4byte gUnknown_80E25F4
_08032ACC: .4byte gUnknown_80E20E0
_08032AD0:
movs r0, 0x1
bl sub_8095324
bl CountMailType
cmp r0, 0
bne _08032B24
movs r0, 0x5
bl sub_8095324
bl CountMailType
adds r4, r0, 0
cmp r4, 0
bne _08032B24
@ -292,7 +292,7 @@ _08032B78: .4byte gUnknown_80E25F4
_08032B7C: .4byte gUnknown_80E2068
_08032B80:
movs r0, 0x4
bl sub_8095324
bl CountMailType
adds r2, r0, 0
cmp r2, 0
beq _08032B9C
@ -323,12 +323,12 @@ _08032BBC: .4byte gUnknown_80E25F4
_08032BC0: .4byte gUnknown_80E2190
_08032BC4:
movs r0, 0x1
bl sub_8095324
bl CountMailType
adds r4, r0, 0
cmp r4, 0
bne _08032C0C
movs r0, 0x5
bl sub_8095324
bl CountMailType
cmp r0, 0
bne _08032BF4
ldr r0, _08032BEC
@ -356,7 +356,7 @@ _08032C04: .4byte gUnknown_80E25F4
_08032C08: .4byte gUnknown_80E2218
_08032C0C:
movs r0, 0x5
bl sub_8095324
bl CountMailType
adds r2, r0, 0
cmp r2, 0
bne _08032C28

View File

@ -964,7 +964,7 @@ _080AD2A0:
beq _080AD2B6
adds r0, r4, 0
adds r0, 0x38
bl sub_809D92C
bl GroundScript_Cancel
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24

View File

@ -2590,7 +2590,7 @@ _080A8B84:
beq _080A8B9A
adds r0, r4, 0
adds r0, 0x38
bl sub_809D92C
bl GroundScript_Cancel
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24

View File

@ -1104,7 +1104,7 @@ _080AC388:
beq _080AC39E
adds r0, r4, 0
adds r0, 0x38
bl sub_809D92C
bl GroundScript_Cancel
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24

View File

@ -6868,7 +6868,7 @@ _080A167A:
bl sub_80961D8
b _080A1804
_080A1680:
bl sub_8096028
bl ResetMailbox
bl _080A236A
_080A1688:
bl sub_80963FC

View File

@ -467,7 +467,7 @@ _08019288: .4byte gUnknown_203B210
_0801928C: .4byte gUnknown_202DE30
_08019290: .4byte gKecleonShopDialogue
_08019294:
bl sub_8019D8C
bl CountKecleonItems
cmp r0, 0
bne _080192C0
ldr r0, _080192AC

View File

@ -146,7 +146,7 @@ CreateMailActionMenu:
ldr r4, _0802E3F0
ldr r0, [r4]
ldrb r0, [r0, 0x8]
bl sub_8095FE8
bl GetMailboxSlotInfo
adds r7, r0, 0
ldrb r0, [r7]
cmp r0, 0x1
@ -182,7 +182,7 @@ _0802E3FC:
movs r0, 0x5
str r0, [r1]
adds r0, r7, 0
bl sub_80968B0
bl IsMailinJobSlot
lsls r0, 24
cmp r0, 0
bne _0802E422

View File

@ -42,7 +42,7 @@ _0802FFAC:
.4byte _08030180
.4byte _080301A0
_0802FFE4:
bl sub_80301B0
bl DrawMakuhitaMainMenu
ldr r2, _0802FFF8
ldr r0, _0802FFFC
ldr r5, [r0]
@ -265,465 +265,4 @@ _080301A8: .4byte gMakuhitaDialogue
_080301AC: .4byte 0x0000010d
thumb_func_end UpdateMakuhitaDialogue
thumb_func_start sub_80301B0
sub_80301B0:
push {r4,lr}
ldr r4, _080301F8
ldr r1, [r4]
movs r2, 0x2
str r2, [r1, 0x14]
ldr r0, _080301FC
str r0, [r1, 0x18]
str r2, [r1, 0x1C]
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _080301D6
ldr r0, [r4]
movs r1, 0x1
negs r1, r1
str r1, [r0, 0x1C]
movs r1, 0x1
str r1, [r0, 0x14]
_080301D6:
ldr r1, [r4]
movs r2, 0x1
ldr r0, _08030200
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x3
str r0, [r1, 0x24]
ldr r0, _08030204
ldr r0, [r0]
str r0, [r1, 0x28]
str r2, [r1, 0x2C]
movs r0, 0
str r0, [r1, 0x30]
str r2, [r1, 0x34]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080301F8: .4byte gUnknown_203B318
_080301FC: .4byte gMakuhitaDojoGoTrain
_08030200: .4byte gUnknown_80D4970
_08030204: .4byte gUnknown_80D4934
thumb_func_end sub_80301B0
thumb_func_start sub_8030208
sub_8030208:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08030250
ldr r0, _08030230
ldr r1, [r0]
ldr r0, [sp]
str r0, [r1, 0x14]
ldr r0, [sp]
cmp r0, 0x2
beq _0803023A
cmp r0, 0x2
bgt _08030234
cmp r0, 0x1
beq _0803024A
b _08030250
.align 2, 0
_08030230: .4byte gUnknown_203B318
_08030234:
cmp r0, 0x3
beq _08030242
b _08030250
_0803023A:
movs r0, 0x3
bl UpdateMakuhitaState
b _08030250
_08030242:
movs r0, 0xC
bl UpdateMakuhitaState
b _08030250
_0803024A:
movs r0, 0x2
bl UpdateMakuhitaState
_08030250:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8030208
thumb_func_start sub_8030258
sub_8030258:
push {lr}
movs r0, 0x1
bl sub_80303AC
cmp r0, 0x2
beq _08030288
cmp r0, 0x2
bcc _0803029A
cmp r0, 0x3
bne _0803029A
bl sub_8030418
ldr r1, _08030284
ldr r1, [r1]
strh r0, [r1, 0x10]
bl sub_8030480
movs r0, 0x5
bl UpdateMakuhitaState
b _0803029A
.align 2, 0
_08030284: .4byte gUnknown_203B318
_08030288:
bl sub_8030480
ldr r0, _080302A0
ldr r1, [r0]
ldr r0, _080302A4
strh r0, [r1, 0x10]
movs r0, 0x1
bl UpdateMakuhitaState
_0803029A:
pop {r0}
bx r0
.align 2, 0
_080302A0: .4byte gUnknown_203B318
_080302A4: .4byte 0x0000ffff
thumb_func_end sub_8030258
thumb_func_start sub_80302A8
sub_80302A8:
push {lr}
bl sub_801B6AC
cmp r0, 0x1
bls _080302C0
cmp r0, 0x3
bhi _080302C0
bl sub_801B72C
movs r0, 0xA
bl UpdateMakuhitaState
_080302C0:
pop {r0}
bx r0
thumb_func_end sub_80302A8
thumb_func_start sub_80302C4
sub_80302C4:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _080302DC
ldr r0, _080302E4
ldr r0, [r0]
ldr r0, [r0, 0xC]
bl UpdateMakuhitaState
_080302DC:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080302E4: .4byte gUnknown_203B318
thumb_func_end sub_80302C4
thumb_func_start sub_80302E8
sub_80302E8:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _08030302
movs r0, 0
b _0803039A
_08030302:
ldr r4, _080303A4
ldr r0, [r4]
cmp r0, 0
bne _08030314
movs r0, 0xD0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_08030314:
ldr r0, [r4]
str r5, [r0, 0x64]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x6C
adds r1, r0, r1
str r1, [r0, 0x68]
adds r0, 0x6C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x64]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x6C
ldr r0, _080303A8
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r2, [r4]
ldr r1, [r2, 0x68]
adds r0, r2, 0
adds r0, 0xCC
str r0, [r1, 0x14]
cmp r6, 0
beq _08030362
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldr r0, [r6]
str r0, [r1]
_08030362:
ldr r0, [r4]
ldr r0, [r0, 0x68]
mov r1, r8
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r4]
adds r4, 0x30
bl sub_8030668
adds r1, r0, 0
adds r0, r4, 0
mov r2, r8
adds r3, r5, 0
bl sub_8013818
bl sub_80304C8
bl DrawDojoCourseList
movs r0, 0x1
_0803039A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080303A4: .4byte gUnknown_203B31C
_080303A8: .4byte gUnknown_80E0804
thumb_func_end sub_80302E8
thumb_func_start sub_80303AC
sub_80303AC:
push {r4,lr}
lsls r0, 24
cmp r0, 0
bne _080303C8
ldr r0, _080303C4
ldr r0, [r0]
adds r0, 0x30
bl sub_8013660
movs r0, 0
b _08030410
.align 2, 0
_080303C4: .4byte gUnknown_203B31C
_080303C8:
ldr r4, _080303E4
ldr r0, [r4]
adds r0, 0x30
bl GetKeyPress
cmp r0, 0x1
beq _080303E8
cmp r0, 0x2
bne _080303F2
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08030410
.align 2, 0
_080303E4: .4byte gUnknown_203B31C
_080303E8:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08030410
_080303F2:
ldr r0, [r4]
adds r0, 0x30
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _08030406
movs r0, 0
b _08030410
_08030406:
bl sub_80304C8
bl DrawDojoCourseList
movs r0, 0x1
_08030410:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80303AC
thumb_func_start sub_8030418
sub_8030418:
ldr r0, _08030440
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x4E
movs r3, 0
ldrsh r1, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r1
adds r1, r2, 0
adds r1, 0x48
movs r3, 0
ldrsh r1, [r1, r3]
adds r0, r1
lsls r0, 1
adds r0, r2, r0
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_08030440: .4byte gUnknown_203B31C
thumb_func_end sub_8030418
thumb_func_start sub_8030444
sub_8030444:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl sub_8030668
adds r1, r0, 0
ldr r5, _0803047C
ldr r0, [r5]
adds r2, r0, 0
adds r2, 0x52
strh r1, [r2]
adds r0, 0x30
bl sub_8013984
bl sub_80304C8
bl DrawDojoCourseList
cmp r4, 0
beq _08030476
ldr r0, [r5]
adds r0, 0x30
bl AddMenuCursorSprite
_08030476:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803047C: .4byte gUnknown_203B31C
thumb_func_end sub_8030444
thumb_func_start sub_8030480
sub_8030480:
push {r4,r5,lr}
ldr r4, _080304C0
ldr r2, [r4]
cmp r2, 0
beq _080304BA
ldr r0, [r2, 0x64]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x6C
ldr r0, _080304C4
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, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_080304BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080304C0: .4byte gUnknown_203B31C
_080304C4: .4byte gUnknown_80E07EC
thumb_func_end sub_8030480
thumb_func_start sub_80304C8
sub_80304C8:
push {r4,lr}
ldr r4, _08030538
ldr r0, [r4]
adds r0, 0xCC
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCD
strb r2, [r0]
ldr r0, [r4]
adds r0, 0xCE
movs r1, 0x8
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCF
strb r2, [r0]
ldr r0, [r4]
adds r0, 0x4A
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x64]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x7A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x7C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08030538: .4byte gUnknown_203B31C
thumb_func_end sub_80304C8
.align 2,0

View File

@ -1653,7 +1653,7 @@ _08038110:
movs r0, 0x7
b _08038126
_08038114:
bl sub_8095190
bl FindOpenMailSlot
movs r1, 0x1
negs r1, r1
cmp r0, r1

View File

@ -135,8 +135,8 @@ sub_802EC10:
movs r0, 0x4
str r0, [r1]
ldrb r0, [r2, 0x8]
bl sub_8096574
bl sub_80968B0
bl GetPelipperBoardSlotInfo
bl IsMailinJobSlot
lsls r0, 24
cmp r0, 0
bne _0802EC40

View File

@ -1,388 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8030A74
sub_8030A74:
push {r4,r5,lr}
movs r2, 0
ldr r0, _08030A90
ldr r0, [r0]
ldr r0, [r0, 0x20]
cmp r0, 0x7
bls _08030A84
b _08030C0E
_08030A84:
lsls r0, 2
ldr r1, _08030A94
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08030A90: .4byte gUnknown_203B320
_08030A94: .4byte _08030A98
.align 2, 0
_08030A98:
.4byte _08030AB8
.4byte _08030B10
.4byte _08030B3C
.4byte _08030B94
.4byte _08030B68
.4byte _08030BC0
.4byte _08030AE4
.4byte _08030BEC
_08030AB8:
movs r1, 0
ldr r5, _08030ADC
ldr r4, _08030AE0
movs r3, 0
_08030AC0:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0
beq _08030AD2
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030AD2:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030AC0
b _08030C0E
.align 2, 0
_08030ADC: .4byte gUnknown_203B480
_08030AE0: .4byte gUnknown_203B320
_08030AE4:
movs r1, 0
ldr r5, _08030B08
ldr r4, _08030B0C
movs r3, 0
_08030AEC:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x6
bne _08030AFE
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030AFE:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030AEC
b _08030C0E
.align 2, 0
_08030B08: .4byte gUnknown_203B480
_08030B0C: .4byte gUnknown_203B320
_08030B10:
movs r1, 0
ldr r5, _08030B34
ldr r4, _08030B38
movs r3, 0
_08030B18:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x1
bne _08030B2A
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B2A:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B18
b _08030C0E
.align 2, 0
_08030B34: .4byte gUnknown_203B480
_08030B38: .4byte gUnknown_203B320
_08030B3C:
movs r1, 0
ldr r5, _08030B60
ldr r4, _08030B64
movs r3, 0
_08030B44:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x2
bne _08030B56
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B56:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B44
b _08030C0E
.align 2, 0
_08030B60: .4byte gUnknown_203B480
_08030B64: .4byte gUnknown_203B320
_08030B68:
movs r1, 0
ldr r5, _08030B8C
ldr r4, _08030B90
movs r3, 0
_08030B70:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x4
bne _08030B82
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030B82:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B70
b _08030C0E
.align 2, 0
_08030B8C: .4byte gUnknown_203B480
_08030B90: .4byte gUnknown_203B320
_08030B94:
movs r1, 0
ldr r5, _08030BB8
ldr r4, _08030BBC
movs r3, 0
_08030B9C:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x3
bne _08030BAE
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030BAE:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030B9C
b _08030C0E
.align 2, 0
_08030BB8: .4byte gUnknown_203B480
_08030BBC: .4byte gUnknown_203B320
_08030BC0:
movs r1, 0
ldr r5, _08030BE4
ldr r4, _08030BE8
movs r3, 0
_08030BC8:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x5
bne _08030BDA
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030BDA:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030BC8
b _08030C0E
.align 2, 0
_08030BE4: .4byte gUnknown_203B480
_08030BE8: .4byte gUnknown_203B320
_08030BEC:
movs r1, 0
ldr r5, _08030C18
ldr r4, _08030C1C
movs r3, 0
_08030BF4:
ldr r0, [r5]
adds r0, r3
ldrb r0, [r0]
cmp r0, 0x7
bne _08030C06
ldr r0, [r4]
adds r0, r2
strb r1, [r0]
adds r2, 0x1
_08030C06:
adds r3, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030BF4
_08030C0E:
adds r0, r2, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08030C18: .4byte gUnknown_203B480
_08030C1C: .4byte gUnknown_203B320
thumb_func_end sub_8030A74
thumb_func_start sub_8030C20
sub_8030C20:
push {lr}
cmp r0, 0x7
bls _08030C28
b _08030D34
_08030C28:
lsls r0, 2
ldr r1, _08030C34
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08030C34: .4byte _08030C38
.align 2, 0
_08030C38:
.4byte _08030C58
.4byte _08030C90
.4byte _08030CAC
.4byte _08030CE4
.4byte _08030CC8
.4byte _08030D00
.4byte _08030C74
.4byte _08030D20
_08030C58:
movs r1, 0
ldr r0, _08030C70
ldr r2, [r0]
_08030C5E:
ldrb r0, [r2]
cmp r0, 0
bne _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C5E
b _08030D34
.align 2, 0
_08030C70: .4byte gUnknown_203B480
_08030C74:
movs r1, 0
ldr r0, _08030C8C
ldr r2, [r0]
_08030C7A:
ldrb r0, [r2]
cmp r0, 0x6
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C7A
b _08030D34
.align 2, 0
_08030C8C: .4byte gUnknown_203B480
_08030C90:
movs r1, 0
ldr r0, _08030CA8
ldr r2, [r0]
_08030C96:
ldrb r0, [r2]
cmp r0, 0x1
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030C96
b _08030D34
.align 2, 0
_08030CA8: .4byte gUnknown_203B480
_08030CAC:
movs r1, 0
ldr r0, _08030CC4
ldr r2, [r0]
_08030CB2:
ldrb r0, [r2]
cmp r0, 0x2
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CB2
b _08030D34
.align 2, 0
_08030CC4: .4byte gUnknown_203B480
_08030CC8:
movs r1, 0
ldr r0, _08030CE0
ldr r2, [r0]
_08030CCE:
ldrb r0, [r2]
cmp r0, 0x4
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CCE
b _08030D34
.align 2, 0
_08030CE0: .4byte gUnknown_203B480
_08030CE4:
movs r1, 0
ldr r0, _08030CFC
ldr r2, [r0]
_08030CEA:
ldrb r0, [r2]
cmp r0, 0x3
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030CEA
b _08030D34
.align 2, 0
_08030CFC: .4byte gUnknown_203B480
_08030D00:
movs r1, 0
ldr r0, _08030D18
ldr r2, [r0]
_08030D06:
ldrb r0, [r2]
cmp r0, 0x5
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030D06
b _08030D34
.align 2, 0
_08030D18: .4byte gUnknown_203B480
_08030D1C:
movs r0, 0
b _08030D36
_08030D20:
movs r1, 0
ldr r0, _08030D3C
ldr r2, [r0]
_08030D26:
ldrb r0, [r2]
cmp r0, 0x7
beq _08030D1C
adds r2, 0x30
adds r1, 0x1
cmp r1, 0x1F
ble _08030D26
_08030D34:
movs r0, 0x1
_08030D36:
pop {r1}
bx r1
.align 2, 0
_08030D3C: .4byte gUnknown_203B480
thumb_func_end sub_8030C20
.align 2,0

View File

@ -371,7 +371,7 @@ _0802CD80:
_0802CD88:
ldr r0, [r4]
ldrb r0, [r0, 0xC]
bl sub_8096C3C
bl ResetJobSlot
bl sub_8096C80
bl HasNoAcceptedJobs
lsls r0, 24

View File

@ -4672,80 +4672,3 @@ gUnknown_80DD74C: @ 80DD74C
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD764
gUnknown_80DD764: @ 80DD764
.string "You have chosen to say farewell\n"
.string "to this Pokémon.{EXTRA_MSG}"
.string "The Pokémon will leave its Friend Area.\n"
.string "It will no longer be available for\n"
.string "adventures. Is that OK?\0"
.align 2,0
.global gUnknown_80DD7FC
gUnknown_80DD7FC: @ 80DD7FC
.string "If you say farewell to this\n"
.string "Pokémon{COMMA} it will be gone forever.{EXTRA_MSG}"
.string "You will never be able to get another one\n"
.string "like it to join your team.\n"
.string "Will you release it anyway?\0"
.align 2,0
.global gUnknown_80DD8A0
gUnknown_80DD8A0: @ 80DD8A0
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}returned to the Toolbox.\0"
.align 2,0
.global gUnknown_80DD8D0
gUnknown_80DD8D0: @ 80DD8D0
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n{CENTER_ALIGN}sent to storage.\0"
.align 2,0
.global gFriendActionStandby
gFriendActionStandby: @ 80DD8F8
.string "Stand By\0"
.align 2,0
.global gFriendActionMakeLeader
gFriendActionMakeLeader: @ 80DD904
.string "Make Leader\0"
.global gFriendActionJoinTeam
gFriendActionJoinTeam: @ 80DD910
.string "Join Team\0"
.align 2,0
.global gFriendActionSayFarewell
gFriendActionSayFarewell: @ 80DD91C
.string "Say Farewell\0"
.align 2,0
.global gFriendActionGive
gFriendActionGive: @ 80DD92C
.string "Give\0"
.align 2,0
.global gFriendActionTake
gFriendActionTake: @ 80DD934
.string "Take\0"
.align 2,0
.global gFriendActionSummary
gFriendActionSummary: @ 80DD93C
.string "Summary\0"
.align 2,0
.global gFriendActionMoves
gFriendActionMoves: @ 80DD944
.string "Moves\0"
.align 2,0
.global gFriendActionCheckIQ
gFriendActionCheckIQ: @ 80DD94C
.string "Check IQ\0"
.align 2,0
.global gUnknown_80DD958
gUnknown_80DD958: @ 80DD958
.string "Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} \0"
.string "pksdir0\0"

View File

@ -1,206 +1,5 @@
.section .rodata
@ Start of Trade Items Data
.global gUnknown_80E60A0
gUnknown_80E60A0: @ 80E60A0
.4byte SendItem_80E60C8
.4byte 1
.4byte ReceiveItem_80E60B8
.4byte 2
.4byte 0
.4byte 0
.global ReceiveItem_80E60B8
ReceiveItem_80E60B8:
.asciz "Receive item"
.align 2,0
.global SendItem_80E60C8
SendItem_80E60C8:
.asciz "Send item"
.align 2,0
.global gUnknown_80E60D4
gUnknown_80E60D4: @ 80E60D4
.4byte SendItem_80E60C8
.4byte -1
.4byte ReceiveItem_80E60B8
.4byte 2
.4byte 0
.4byte 0
.global gUnknown_80E60EC
gUnknown_80E60EC: @ 80E60EC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x15, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6104
gUnknown_80E6104: @ 80E6104
.4byte Confirm_80E6134
.4byte 3
.4byte Info_80E612C
.4byte 4
.4byte Cancel_80E6124
.4byte 7
.4byte 0
.4byte 0
.global Cancel_80E6124
Cancel_80E6124:
.asciz "Cancel"
.align 2,0
.global Info_80E612C
Info_80E612C:
.asciz "Info"
.align 2,0
.global Confirm_80E6134
Confirm_80E6134:
.asciz "Confirm"
.align 2,0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x16, 0x00, 0x09, 0x00
.byte 0x05, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6154
gUnknown_80E6154: @ 80E6154
.4byte Yes_80E6170
.4byte 5
.4byte No_80E616C
.4byte 6
.4byte 0
.4byte 0
.global No_80E616C
No_80E616C:
.asciz "No"
.align 2,0
.global Yes_80E6170
Yes_80E6170:
.asciz "Yes"
.align 2,0
.global gUnknown_80E6174
gUnknown_80E6174: @ 80E6174
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x15, 0x00, 0x0D, 0x00
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E618C
gUnknown_80E618C: @ 80E618C
.4byte Yes_80E6170
.4byte 5
.4byte Cancel_80E6124
.4byte 0
.4byte 0
.4byte 0
.global gUnknown_80E61A4
gUnknown_80E61A4: @ 80E61A4
.asciz "What would you like to do? "
.align 2,0
.global gUnknown_80E61C0
gUnknown_80E61C0: @ 80E61C0
.asciz "Please choose the item to be sent."
.align 2,0
.global gUnknown_80E61E4
gUnknown_80E61E4: @ 80E61E4
.string "{COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}\n"
.string "will be sent.\n"
.string "Is that OK?\0"
.align 2,0
.global gUnknown_80E6214
gUnknown_80E6214: @ 80E6214
.string "Your friend will send you an item.\n"
.string "When you are both ready{COMMA} you\n"
.string "may communicate.\0"
.align 2,0
.global gUnknown_80E6268
gUnknown_80E6268: @ 80E6268
.string "Preparing to send an item to your\n"
.string "friend. When you are both ready{COMMA}\n"
.string "you may communicate.\0"
.align 2,0
.global gUnknown_80E62C4
gUnknown_80E62C4: @ 80E62C4
.string "{CENTER_ALIGN}In communication...\n"
.string "{CENTER_ALIGN}Please wait with the power on.\n"
.string "{CENTER_ALIGN}To cancel{COMMA} press {B_BUTTON}.\0"
.align 2,0
.global gUnknown_80E6314
gUnknown_80E6314: @ 80E6314
.string "You received\n"
.string "{COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.\n"
.string "Your adventure will be saved.\0"
.align 2,0
.global gUnknown_80E6358
gUnknown_80E6358: @ 80E6358
.string "You sent {COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.\0"
.align 2,0
@ Trade Items Link Errors
.global gTradeItemsCommunicationError
gTradeItemsCommunicationError: @ 80E6378
.asciz "There was a communication error."
.align 2,0
.global gUnknown_80E639C
gUnknown_80E639C: @ 80E639C
.string "An incorrect number of GBA systems are\n"
.string "connected.\n"
.string "Please redo this process from the start.\0"
.align 2,0
.global gUnknown_80E63F8
gUnknown_80E63F8: @ 80E63F8
.string "There is no response from your friend.\n"
.string "Please redo this process from the start.\0"
.align 2,0
.global gUnknown_80E6448
gUnknown_80E6448: @ 80E6448
.string "The sender and receiver appear to be\n"
.string "in different modes.\n"
.string "Please redo the process from the start.\0"
.align 2,0
.global gUnknown_80E64AC
gUnknown_80E64AC: @ 80E64AC
.string "There is no response from your friend.\n"
.string "Please make sure the sender and receiver\n"
.string "are ready{COMMA} then redo this from the start.\0"
.align 2,0
.global gTradeItemsHowManyText
gTradeItemsHowManyText: @ 80E6528
.asciz "How many?"
.align 2,0
.asciz "pksdir0"
@ End of Trade Menu Data
.global gUnknown_80E653C
gUnknown_80E653C: @ 80E653C
.byte 0x00, 0x00, 0x00, 0x00

View File

@ -15,8 +15,9 @@ gWarpScarfActivationChances: @ 80F5594
.global gUnknown_80F55BC
gUnknown_80F55BC: @ 80F55BC
.incbin "baserom.gba", 0xF55BC, 0x30
.2byte 50, 5, 100, 10, 200, 15, 300, 20, 400, 25, 500, 30, 600, 35, 700, 40, 800, 45, 1000, 45, 10000, 9999, -1, 1
.global gUnknown_80F55EC
gUnknown_80F55EC: @ 80F55EC
.incbin "baserom.gba", 0xF55EC, 0x30
.2byte 0, 9999, 50, 45, 100, 40, 200, 35, 300, 30, 400, 25, 500, 20, 600, 15, 700, 10, 1000, 5, 10000, 1, -1, 1

View File

@ -491,8 +491,8 @@ gUnknown_8109930: @ 8109930
.string "pksdir0\0"
.align 2,0
.global gUnknown_8109954
gUnknown_8109954: @ 8109954
.global gWindowBGColors
gWindowBGColors: @ 8109954
.byte 0x20, 0x48, 0x68, 0x00
.byte 0x80, 0x38, 0x20, 0x00
.byte 0x28, 0x80, 0x48, 0x00

File diff suppressed because it is too large Load Diff

3403
data/data_8115F5C.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -86,7 +86,7 @@ gUnknown_8270000: @ 8270000
.4byte MemoryCard_Text
.4byte Performance_Text
.byte 0x00, 0x00, 0x00, 0x00
.4byte PokeDungeon_Text
.4byte sGameInternalVersion
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00

View File

@ -16,7 +16,7 @@ void sub_8079490(struct Entity * pokemon,struct Entity * target, s32 param_3);
void sub_8079500(struct Entity * pokemon,struct Entity * target, s32 param_3);
void LongTossStatusTarget(struct Entity * pokemon,struct Entity * target);
void PierceStatusTarget(struct Entity * pokemon,struct Entity * target);
void sub_8079618(struct Entity *pokemon, struct Entity *target, u8 newStatus, struct Move *move, u8 *message);
void SetChargeStatusTarget(struct Entity *pokemon, struct Entity *target, u8 newStatus, struct Move *move, u8 *message);
void sub_8079764(struct Entity * pokemon);
void sub_80797A0(struct Entity * pokemon, struct Entity * target, u8 newStatus);
void SafeguardStatusTarget(struct Entity * pokemon, struct Entity * target);
@ -31,7 +31,6 @@ void EndureStatusTarget(struct Entity * pokemon, struct Entity * target);
void MirrorMoveStatusTarget(struct Entity * pokemon, struct Entity * target);
void Conversion2StatusTarget(struct Entity * pokemon, struct Entity * target);
void VitalThrowStatusTarget(struct Entity * pokemon, struct Entity * target);
void sub_8079618(struct Entity * pokemon, struct Entity *target, u8 newStatus, struct Move *move, u8 *message);
void sub_8079F20(struct Entity * pokemon, struct Entity * target, u8 param_3, u8 param_4);
void sub_807A0CC(struct Entity * pokemon, struct Entity * target);
void SendSleepEndMessage(struct Entity * pokemon, struct Entity * target, bool8 param_3, bool8 param_4);
@ -46,7 +45,7 @@ void SendTransformEndMessage(struct Entity * pokemon, struct Entity *target);
void SendEyesightEndMessage(struct Entity * pokemon,struct Entity * target);
void SendMuzzledEndMessage(struct Entity * pokemon, struct Entity * target);
void sub_807A96C(struct Entity *pokemon, struct Entity *target);
void sub_807A9B0(struct Entity * pokemon);
void WakeUpPokemon(struct Entity * pokemon);
void SendThawedMessage(struct Entity *pokemon, struct Entity *target);
void sub_807AA30(void);

View File

@ -1,23 +1,24 @@
#ifndef GUARD_CODE_8094F88_H
#define GUARD_CODE_8094F88_H
#define GUARD_CODE_8094F88_H
#include "item.h"
struct unkStruct_203B480
{
u8 unk0;
struct DungeonLocation unk4;
u32 unk8;
u32 unkC;
u32 unk10;
u32 unk14;
u32 unk18;
u32 unk1C;
u8 unk20;
u8 unk21;
u8 unk22;
/* 0x0 */ u8 mailType;
/* 0x1 */ u8 missionType;
/* 0x4 */ struct DungeonLocation dungeon;
/* 0x8 */ u32 unk8;
/* 0xC */ s16 clientSpecies;
/* 0xE */ s16 targetSpecies;
/* 0x10 */ u32 unk10;
/* 0x14 */ u8 playerName[0x20 - 0x14];;
struct Item unk20;
u32 unk24;
u32 unk28;
u8 unk2C;
s8 unk2C;
u8 unk2D;
u8 padding4[0x30 - 0x2E];
};
struct unkStruct_203B484
@ -32,4 +33,18 @@ struct unkStruct_203B48C
s32 unk4[0x20];
};
bool8 sub_80951FC(struct unkStruct_203B480 *param_1);
struct unkStruct_203B480 * sub_8095228(u8 index);
void sub_8095240(u8 index);
void sub_8095274(u32 param_1);
bool8 sub_8095298(s32 param_1);
void sub_80952C4(void);
bool8 sub_80952F0(u8 mailType, u32 param_2);
s32 CountMailType(u8 mailType);
u32 sub_8095350(void);
s32 sub_8095374(void);
s32 sub_809539C(u8 mailType, u32 param_2);
s32 sub_80953D4(u8 mailType);
#endif

View File

@ -1,8 +1,9 @@
#include "wonder_mail.h"
struct subStruct_203B490
{
// size: 0xC
u8 dungeon;
u8 unk1;
struct DungeonLocation dungeon;
u32 unk4;
u32 unk8;
};
@ -11,14 +12,14 @@ struct subStruct_203B490
struct unkStruct_203B490
{
// size: 0x330?
struct WonderMail unk0[4];
struct WonderMail unk50[8];
struct WonderMail unkF0[8];
/* 0x0 */ struct WonderMail mailboxSlots[4];
/* 0x50 */ struct WonderMail pelipperBoardJobs[8];
/* 0xF0 */ struct WonderMail jobSlots[8];
u8 unk190[0x28];
u8 unk1B8[0x78];
struct subStruct_203B490 unk230[16];
u8 unk2F0[0x38];
u8 unk328;
u8 PKMNNewsReceived[56];
bool8 unk328;
};
extern struct unkStruct_203B490 *gUnknown_203B490;

View File

@ -0,0 +1,16 @@
// NOTE: all communications use the same error codes so we define them here
#define COMMS_GOOD 0
#define COMMS_NO_RESPONSE 2
#define COMMS_INCORRECT_NUM_SYSTEMS 3
#define COMMS_DIFFERENT_MODES 4
#define COMMS_NO_ROOM_STORAGE 6
#define COMMS_DUPLICATE_MAIL 7
#define COMMS_MAIL_SENT_ALREADY 8
#define COMMS_NOT_ELIGIBLE_1 9
#define COMMS_FRIEND_NOT_ELIGIBLE 10
#define COMMS_NOT_ELIGIBLE_2 11
#define COMMS_FRIEND_NOT_ELIGIBLE_2 12
#define COMMS_NO_ROOM_MAIL 13
#define COMMS_NOT_READY 15

View File

@ -16,6 +16,38 @@ enum RewardType
END_REWARDS
};
enum WonderMailMode {
WONDER_MAIL_MODE_SEND = 1,
WONDER_MAIL_MODE_RECEIVE = 2,
};
enum WonderMailMethod {
WONDER_MAIL_GAME_LINK = 3,
WONDER_MAIL_PASSWORD = 5,
};
enum WonderMailTypes {
WONDER_MAIL_TYPE_NONE = 0,
WONDER_MAIL_TYPE_SOS = 1,
//WONDER_MAIL_TYPE_SOS = 2, // SOS MAIL is 1 and 2?
WONDER_MAIL_TYPE_AOK = 4,
WONDER_MAIL_TYPE_THANK_YOU = 5,
WONDER_MAIL_TYPE_WONDER = 5,
WONDER_MAIL_TYPE_COMPLETED = 6,
WONDER_MAIL_TYPE_OKD = 7,
};
enum WonderMailMissionTypes
{
WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0,
WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1,
WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2,
WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3,
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
WONDER_MAIL_MISSION_TYPE_UNK6 = 6,
};
#define NUM_POKEMON_NEWS 56 // 50 normal + 6 special issues
#define PASSWORD_BUFFER_SIZE 54
#define MAX_ITEM_REWARDS 3

View File

@ -33,6 +33,7 @@ const u8 *GetDungeonName1(u8 dungeon);
u32 sub_80908D8(struct DungeonLocation *dungeon);
u8 sub_8090910(struct DungeonLocation *dungeon, u32 param_2);
bool8 sub_809095C(u8 dungeon);
s8 GetUnk3(u8 dungeon);
u8 GetUnk9(u8 dungeon);
#endif //GUARD_DUNGEON_H

View File

@ -70,7 +70,7 @@ struct EntityInfo
// Index 0 is Defense. Index 1 is Special Defense.
/* 0x20 */ s16 defensiveStages[2];
// Index 0 is accuracy. Index 1 is evasion.
/* 0x24 */ s16 hitChancesStages[2];
/* 0x24 */ s16 hitChanceStages[2];
// // When a Fire-type move is used on a Pokémon with Flash Fire, this value increases the power of the Pokémon's Fire-type moves.
/* 0x28 */ s16 flashFireBoost;
// These start at 0x1000, and are halved by certain moves like Screech to lower the corresponding stat.
@ -199,7 +199,9 @@ struct EntityInfo
/* 0x148 */ bool8 attacking;
/* 0x149 */ u8 unk149;
/* 0x14A */ u8 unk14A;
u8 fill14B[0x14E - 0x14B];
/* 0x14B */ u8 unk14B;
/* 0x14C */ u8 unk14C;
/* 0x14D */ u8 unk14D;
/* 0x14E */ u16 visualFlags;
/* 0x150 */ u16 previousVisualFlags;
/* 0x152 */ u8 unk152;

View File

@ -4,5 +4,6 @@
#include "dungeon_entity.h"
bool8 CanCrossWalls(struct Entity *pokemon);
s32 CalcSpeedStage(struct Entity *pokemon);
#endif

View File

@ -15,6 +15,6 @@ bool8 CanSeeTeammate(struct Entity * pokemon);
u8 GetMoveTypeForMonster(struct Entity *pokemon, struct Move *pokeMove);
s32 GetMovePower(struct Entity *pokemon, struct Move *pokeMove);
bool8 ToolboxEnabled(struct EntityInfo *pokemon);
bool8 SetVisualFlags(struct EntityInfo *entityData, u16 newFlag, bool8 param_3);
bool8 SetVisualFlags(struct EntityInfo *entityInfo, u16 newFlag, bool8 param_3);
#endif

View File

@ -1,21 +1,25 @@
#ifndef GUARD_FRIEND_RESCUE_H
#define GUARD_FRIEND_RESCUE_H
#include "code_8094F88.h"
#include "item.h"
#include "pokemon.h"
#include "wonder_mail.h"
struct WonderMailStruct_203B33C
{
// size: 0x568
u32 state;
u32 unk4;
u32 fallbackState;
u8 passwordBuffer[0x36];
u32 unk40;
u32 status;
u16 unk48[(0xE0 - 0x48) / 2];
s16 unkE0;
u8 unkE2[0x168 - 0xE2];
s16 unk168;
u8 unk16A[0x218 - 0x16A];
struct unkStruct_203B480 unk48;
struct unkStruct_203B480 unk78;
struct WonderMailStruct_203B2C0_sub unkA8;
struct WonderMailStruct_203B2C0_sub unk130;
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
u8 unk218;
u8 padding7[3];
u32 unk21C;
@ -24,12 +28,11 @@ struct WonderMailStruct_203B33C
u8 padding6[0x6C];
u32 unk30C;
u8 padding8[0x4C];
u32 unk35C;
u8 padding5[0x5C];
struct UnkTextStruct2 unk35C[4];
struct UnkTextStruct2 unk3BC[4];
struct Item unk41C;
u32 unk420; // Is this supposed to be a File like 203B2C4?
u8 fill424[0x524 - 0x424];
u8 unk424[0x100];
s32 unk524;
u32 unk528;
u8 unk52C;
@ -37,11 +40,8 @@ struct WonderMailStruct_203B33C
u8 fill52E;
u32 unk530;
u32 unk534;
s16 unk538; // A7 << 3
u32 unk53C;
u32 unk540; // A8 << 4
s16 unk544;
u8 filler546[0x564 - 0x546];
s16 speciesNum; // A7 << 3
struct unkStruct_802F204 unk53C;
s32 unk564;
};

View File

@ -1,21 +0,0 @@
#ifndef GUARD_GUNKNOWN_203B46C_H
#define GUARD_GUNKNOWN_203B46C_H
struct UnkSaveStruct1
{
/* 0x0 */ u8 unk0;
/* 0x1 */ u8 unk1;
/* 0x2 */ u8 unk2;
/* 0x3 */ u8 unk3;
/* 0x4 */ u8 unk4;
/* 0x5 */ u8 unk5;
/* 0x6 */ u8 unk6;
/* 0x7 */ u8 unk7;
/* 0x8 */ u8 unk8;
/* 0x9 */ u8 unk9;
/* 0xA */ u8 unkA;
/* 0xB */ u8 playerGender;
/* 0xC */ u8 unkC;
};
#endif

69
include/game_options.h Normal file
View File

@ -0,0 +1,69 @@
#ifndef GUARD_GAME_OPTIONS_H
#define GUARD_GAME_OPTIONS_H
struct GameOptions
{
// TODO: find where Controls/Touch Screen are in this structure in PMD Blue
/* 0x0 */ u8 dungeonSpeed;
/* 0x1 */ u8 FarOffPals;
/* 0x2 */ bool8 damageTurn;
/* 0x3 */ bool8 gridEnable;
/* 0x4 */ u8 mapOption;
/* 0x5 */ u8 fill5[3];
/* 0x8 */ u8 windowColor;
/* 0x9 */ u8 unk9; // maybe Controls?
/* 0xA */ u8 unkA; // maybe Touch Screen?
/* 0xB */ u8 playerGender;
/* 0xC */ u8 unkC;
};
enum DungeonSpeed
{
DUNGEON_SPEED_SLOW,
DUNGEON_SPEED_FAST,
};
enum FarOffPals
{
FAROFFPALS_SELF,
FAROFFPALS_LOCK,
};
// GBA has 3 options while DS has 7
enum MapOption
{
MAP_OPTION_OFF = 0,
MAP_OPTION_CLEAR,
MAP_OPTION_SHADE,
NUM_GBA_MAP_OPTIONS,
};
enum DSMapOption
{
TOP_TEAM_DATA_NO_BOTTOM = 0,
TOP_TEAM_DATA_CLEAR_MAP_BOTTOM,
TOP_TEAM_DATA_SHADED_MAP_BOTTOM,
TOP_MESSAGE_LOG_NO_BOTTOM,
TOP_MESSAGE_LOG_CLEAR_MAP_BOTTOM,
TOP_MESSAGE_LOG_SHADED_MAP_BOTTOM,
TOP_MAP_AND_TEAM_NO_BOTTOM,
NUM_DS_MAP_OPTIONS,
};
enum windowColor
{
WINDOW_COLOR_BLUE = 0,
WINDOW_COLOR_RED,
WINDOW_COLOR_GREEN,
NUM_WINDOW_COLORS,
};
void LoadGameOptions(void);
struct GameOptions * GetGameOptions(void);
void InitializeGameOptions(bool8 initializeGender);
bool8 GameOptionsNotChange(struct GameOptions *r0);
#endif

View File

@ -38,7 +38,7 @@ struct BulkItem {
struct unkStruct_80915F4
{
u16 unk0;
s16 unk0;
u16 unk2;
};
@ -101,18 +101,24 @@ u32 GetMoneyValue(struct Item* slot);
u16 GetItemMoveID(u8 index);
bool8 CanSellItem(u32 id);
bool8 IsGummiItem(u8);
void xxx_init_unk230_substruct(u8);
bool8 AddGreenKecleonShopItem(u8);
struct BulkItem *xxx_get_inv_unk230_at_809185C(u8);
void xxx_fill_unk230_gaps();
struct BulkItem* xxx_get_unk250_at_8091A90(u8);
s32 xxx_count_inv_unk230();
u32 xxx_count_non_empty_inv_unk250_8091A48();
void ChoosePurpleKecleonShopInventory(u8);
void sub_8090F58(void*, u8 *, struct Item *, struct unkStruct_8090F58*);
void ShiftItemsDownFrom(s32 start);
void ClearItemSlotAt(u32 index);
void MoveToStorage(struct Item* slot);
s32 CountKecleonShopItems(void);
void InitKecleonShopItem(u8 index);
struct BulkItem *GetKecleonShopItem(u8 index);
void FillKecleonShopGaps(void);
void SortKecleonShopInventory(void);
void ChooseKecleonShopInventory(u8 index);
bool8 AddKecleonShopItem(u8 itemIndex);
u32 CountKecleonWareItems(void);
void InitKecleonWareItem(u8 index);
struct BulkItem* GetKecleonWareItem(u8 index);
void FillKecleonWareGaps(void);
void SortKecleonWareInventory(void);
void ChooseKecleonWareInventory(u8 index);
bool8 AddKecleonWareItem(u8 itemIndex);
void FillInventoryGaps();
bool8 AddHeldItemToInventory(struct BulkItem* slot);
bool8 IsNotMoneyOrUsedTMItem(u8 id);

View File

@ -9,18 +9,16 @@ struct unkStruct_203B210
{
// size: 0x148
u32 unk0;
bool8 unk4;
bool8 isKecleonItemShop; // FALSE indicates it is Kecleon TM Shop
u8 fill5[3];
u32 currState;
u32 unkC;
u32 fallbackState;
s32 itemSellPrice;
u32 unk14;
s32 unk18;
u32 numInventoryItemToSell;
s32 inventoryItemSellPrice;
struct Item unk1C;
u8 unk20;
u8 unk21;
u8 unk22;
u8 unk23;
u8 itemShopItemIndex;
u8 wareShopItemIndex;
u32 unk24;
u32 unk28;
u32 unk2C;

View File

@ -10,7 +10,7 @@ struct unkStruct_203B304
// size: 0xB6 << 1
u32 state;
u32 fallbackState;
u8 unk8;
u8 mailboxIndex;
u8 mailIndex;
u8 fillA[0xC - 0xA];
u32 unkC;

View File

@ -33,6 +33,16 @@ enum MainMenuScreens
MENU_NO_SCREEN_CHANGE = 0xffdc
};
struct unkStruct_8035D94
{
union {
u8 itemIndex_u8;
u32 itemIndex_u32;
} itemIndex;
u32 numItems;
};
struct MainMenuSub
{
u8 unk2C;
@ -47,8 +57,7 @@ struct MainMenu
/* 0x8 */ s32 lastMenu;
u8 padding[0x20];
/* 0x2C */ struct MainMenuSub sub;
u8 unk30;
u32 unk34;
/* 0x30 */ struct unkStruct_8035D94 unk30;
s16 unk38;
u8 unk3A;
u8 unk3B;
@ -63,5 +72,7 @@ void SetUpMenu(void);
s32 UpdateMenu(void);
void CleanUpMenu(void);
bool8 sub_80363E0(void);
struct unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
#endif // GUARD_MAIN_MENU_H

23
include/makuhita_dojo.h Normal file
View File

@ -0,0 +1,23 @@
struct unkStruct_203B318
{
// size: 0xcc
u32 unk0;
u32 unk4;
s32 state;
s32 fallbackState;
s16 unk10;
s32 unk14;
struct MenuItem unk18[4];
u8 fill[0x58 - 0x38];
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk60;
u16 unk62;
u8 unk64;
u8 unk65;
u8 unk66;
u8 unk67;
struct OpenedFile** unk68;
struct UnkTextStruct2 unk6C[4];
};

View File

@ -29,11 +29,14 @@ struct RescuePasswordMenu
#define PASSWORD_ENTRY_DUPLICATE_AOK_MAIL 0x9
#define PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL 0xB
#define PASSWORD_ENTRY_NO_SPACE 0xD
#define PASSWORD_ENTRY_INCORRECT_PASSWORD 0x11
#define PASSWORD_ENTRY_NOT_SOS_MAIL 0x12
#define PASSWORD_ENTRY_NOT_AOK_MAIL 0x13
#define PASSWORD_ENTRY_NOT_THANK_YOU_MAIL 0x14
#define PASSWORD_ENTRY_NOT_WONDER_MAIL 0x15
#define PASSWORD_ENTRY_SOS_MAIL_SUCCESS 0x16
#define PASSWORD_ENTRY_AOK_MAIL_SUCCESS 0x17

View File

@ -1,11 +1,13 @@
#ifndef GUARD_SAVE_H
#define GUARD_SAVE_H
#include "game_options.h"
#include "play_time.h"
#include "exclusive_pokemon.h"
#include "rescue_team_info.h"
#include "pokemon.h"
#include "item.h"
#include "code_80958E8.h"
enum
{
@ -26,20 +28,20 @@ struct UnkStruct_sub_8011DAC {
// size: 0x57D4
u8 fill000[0x4];
u8 unk004[0x400];
u8 unk404[0x10]; // has "POKE_DUNGEON__05"
u32 unk414;
u8 gameInternalName[0x10]; // has "POKE_DUNGEON__05"
u32 checksum;
u32 unk418;
u32 unk41C;
u32 RngState;
u32 savedRecruitedPokemon;
u32 unk428;
u8 fill42C[0x4];
u32 unk430;
u32 savedTeamInventory;
u32 savedRescueTeamInfo;
u32 savedFriendAreas;
u32 unk43C;
u32 unk440;
u32 unk444;
u32 savedMailInfo;
u8 unk448[0x538C];
};
@ -51,12 +53,12 @@ struct UnkStruct_203B184 {
/* 0xC */ u8 *unkC;
/* 0x10 */ u32 *unk10;
/* 0x14 */ u32 *unk14;
/* 0x18 */ u32 unk18;
/* 0x18 */ struct unkStruct_203B490 *mailInfo;
/* 0x1C */ struct RescueTeamData *RescueTeamInfo;
/* 0x20 */ u32 unk20;
/* 0x24 */ struct ExclusivePokemonData *ExclusivePokemon;
/* 0x28 */ bool8 *BoughtFriendAreas;
/* 0x2C */ u32 gameOptions;
/* 0x2C */ struct GameOptions *gameOptions;
/* 0x30 */ struct PlayTimeStruct *playTime;
u32 unk34;
u32 unk38;
@ -74,7 +76,7 @@ u32 sub_8011C1C(void);
void sub_8011C28(u32 in);
s32 sub_8011C34(void);
void sub_8011C40(s32 in);
char *sub_8011C4C(void);
char *GetGameInternalName(void);
void sub_8011CA8(u32 *out, s32 size);
u32 ReadSaveFromPak(u32 *a);
u32 WriteSavetoPak(s32 *param_1, u32 param_2);

View File

@ -3,7 +3,6 @@
#include "dungeon_entity.h"
s32 GetSpeedStatus(struct Entity *pokemon);
bool8 HasNegativeStatus(struct Entity *pokemon);
bool8 IsSleeping(struct Entity *pokemon);
bool8 HasLowHealth(struct Entity *pokemon);

View File

@ -1,13 +1,15 @@
#ifndef GUARD_TEAM_INVENTORY_H
#define GUARD_TEAM_INVENTORY_H
#define MAX_KECLEON_ITEM_SHOP_ITEMS 8
#define MAX_KECLEON_WARE_SHOP_ITEMS 4
struct TeamInventory
{
struct Item teamItems[INVENTORY_SIZE];
u16 teamStorage[NUMBER_OF_ITEM_IDS];
// same type (initialized by same function):
struct BulkItem unk230[8];
struct BulkItem unk250[4];
struct BulkItem kecleonShopItems[MAX_KECLEON_ITEM_SHOP_ITEMS];
struct BulkItem kecleonWareItems[MAX_KECLEON_WARE_SHOP_ITEMS];
/* 0x260 */ s32 teamMoney;
/* 0x264 */ u32 teamSavings;
};

View File

@ -18,7 +18,7 @@ struct TradeItemsMenu
{
// size: 0x3A0
u32 currMenu;
u32 unk4;
u32 fallbackState;
u32 itemMode;
u32 linkStatus;
u32 unk10;
@ -51,7 +51,6 @@ struct TradeItemsMenu
u8 fill25F[0x3A0 - 0x260];
};
s32 UpdateTradeItemsMenu(void);
s32 CreateTradeItemsMenu(void);
void CleanTradeItemsMenu(void);

View File

@ -5,7 +5,7 @@
#include "text.h"
#include "item.h"
#include "pokemon.h"
#include "sub_8095228.h"
#include "code_8094F88.h"
#include "constants/wonder_mail.h"
@ -40,6 +40,12 @@ struct WonderMail
};
struct WonderMailStruct_203B2C0_sub
{
struct unkStruct_203B480 mail;
struct PokemonStruct pokemon;
};
struct WonderMailStruct_203B2C0
{
// size: 0x548
@ -49,15 +55,12 @@ struct WonderMailStruct_203B2C0
u8 unk3E;
u32 unk40;
u32 linkError;
u8 unk48[0x30];
u8 unk78[0x30];
struct unkStruct_8095228 unkA8;
struct PokemonStruct unkD8;
u8 unk130;
u8 fill131[0x168 - 0x131];
u16 unk168;
u8 fill16A[0x218 - 0x16A];
u8 unk218;
struct unkStruct_203B480 unk48;
struct unkStruct_203B480 unk78;
struct WonderMailStruct_203B2C0_sub unkA8;
struct WonderMailStruct_203B2C0_sub unk130;
u8 fill16A[0x218 - 0x1B8];
u8 mailIndex;
u32 unk21C;
u8 padding[0x7C];
u32 unk29C;
@ -79,7 +82,7 @@ struct WonderMailStruct_203B2C0
s32 unk538; // A7 << 3
u32 unk53C;
u32 unk540; // A8 << 4
s16 unk544;
s16 speciesNum;
};
@ -93,9 +96,9 @@ struct WonderMailStruct_203B2C4
u32 unk40;
/* 0x44 */ u32 linkError; // another link status
u8 filler48[0x1B8 - 0x48];
struct unkStruct_8095228 unk1B8;
struct unkStruct_8095228 unk1E8;
s8 unk218;
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
s8 mailIndex;
u32 unk21C;
u8 filler220[0x30C - 0x220];
u32 unk30C;
@ -119,47 +122,4 @@ struct WonderMailStruct_203B2C4
void sub_8028B04(u32 r0);
enum WonderMailMode {
WONDER_MAIL_MODE_SEND = 1,
WONDER_MAIL_MODE_RECEIVE = 2,
};
enum WonderMailMethod {
WONDER_MAIL_GAME_LINK = 3,
WONDER_MAIL_PASSWORD = 5,
};
enum WonderMailTypes {
WONDER_MAIL_TYPE_SOS = 1,
WONDER_MAIL_TYPE_AOK = 4,
WONDER_MAIL_TYPE_THANK_YOU = 5,
WONDER_MAIL_TYPE_WONDER = 5,
// TODO: document 7
};
enum WonderMailMissionTypes
{
WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0,
WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1,
WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2,
WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3,
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
};
enum WonderMailErrorMode {
WONDER_MAIL_GOOD = 0,
// TODO: document 1
WONDER_MAIL_NO_RESPONSE = 2,
WONDER_MAIL_INCORRECT_NUM_SYSTEMS = 3,
WONDER_MAIL_DIFFERENT_MODES = 4,
// TODO: document 5
WONDER_MAIL_NO_ROOM_STORAGE = 6,
WONDER_MAIL_DUPLICATE_MAIL = 7,
WONDER_MAIL_NOT_ELIGIBLE_1 = 9,
WONDER_MAIL_NOT_ELIGIBLE_2 = 11,
WONDER_MAIL_NO_ROOM_MAIL = 13,
// TODO: document 14
WONDER_MAIL_NOT_READY = 15,
};
#endif

View File

@ -16,7 +16,7 @@ struct unkStruct_802C39C
{
/* 0x0 */ u32 unk0[2];
/* 0x8 */ struct DungeonLocation *unk8;
/* 0xC */ u8 *unkC;
/* 0xC */ u8 *playerName;
/* 0x10 */ s16 unk10;
/* 0x12 */ s16 unk12;
/* 0x14 */ u8 unk14;
@ -32,7 +32,7 @@ struct unkStruct_802C39C
struct unkStruct_803B344
{
// size: 0xB4
struct WonderMail unk0;
struct WonderMail mail;
u8* unk14;
u8* unk18;
u8 fill1C[0x3C - 0x1C];
@ -51,12 +51,12 @@ struct unkStruct_203B2F8
// size: 0x208
s32 state; // state
s32 fallbackState;
u8 unk8;
u8 unk9;
u8 unkA;
u8 wonderMailAccepted;
bool8 unk9;
u8 dungeonID;
u8 unkB;
struct unkSubStruct_203B2F8 *unkC;
u8 unk10;
u8 jobSlotIndex;
u8 fill11[0x14 - 0x11];
u32 unk14;
u8 fill18[0x58 - 0x18];

View File

@ -82,6 +82,8 @@ SECTIONS {
src/flash.o(.text);
src/code_800D090.o(.text);
asm/code_800D090.o(.text);
src/code_800DAC0.o(.text);
asm/code_800DAC0.o(.text);
src/code_80118A4.o(.text);
src/debug.o(.text);
src/save.o(.text);
@ -116,6 +118,8 @@ SECTIONS {
asm/gulpin_shop.o(.text);
src/gulpin_shop_1.o(.text);
asm/code_801EE10.o(.text);
src/code_8023144.o(.text);
asm/code_801EE10_1.o(.text);
src/code_801EE10.o(.text);
src/luminous_cave.o(.text);
src/friend_list_menu_1.o(.text);
@ -146,7 +150,6 @@ SECTIONS {
asm/makuhita_dojo.o(.text);
src/makuhita_dojo_1.o(.text);
src/wonder_mail_4.o(.text);
asm/wonder_mail_4.o(.text);
src/wonder_mail_5.o(.text);
asm/wonder_mail_5.o(.text);
src/wonder_mail_6.o(.text);
@ -229,13 +232,12 @@ SECTIONS {
src/code_806CD90.o(.text);
asm/code_806CD90.o(.text);
src/type_effectiveness.o(.text);
src/code_806E8B0.o(.text);
asm/code_806E8B0.o(.text);
src/status_checks.o(.text);
asm/code_80701A4.o(.text);
src/dungeon_movement.o(.text);
asm/code_807034C.o(.text);
src/dungeon_movement_1.o(.text);
asm/code_807049C.o(.text);
src/status_checks_1.o(.text);
src/dungeon_capabilities.o(.text);
asm/code_8070BC0.o(.text);
@ -316,6 +318,10 @@ SECTIONS {
src/code_8095824.o(.text);
src/code_80958E8.o(.text);
asm/code_80958E8.o(.text);
src/mailbox_8095F8C.o(.text);
asm/code_80958E8_1.o(.text);
src/code_80958E8_1.o(.text);
asm/code_8096AF8.o(.text);
src/code_80972F4.o(.text);
asm/code_8097318.o(.text);
src/code_809747C.o(.text);
@ -422,6 +428,8 @@ SECTIONS {
src/debug.o(.rodata);
src/save.o(.rodata);
data/data_80D47B8.o(.rodata);
src/friend_area_action_menu.o(.rodata);
src/friend_area_action_menu_1.o(.rodata);
src/wonder_mail.o(.rodata);
src/thank_you_wonder_mail.o(.rodata);
src/wonder_mail_2.o(.rodata);
@ -439,6 +447,7 @@ SECTIONS {
src/adventure_log.o(.rodata);
data/data_80E2068.o(.rodata);
src/main_menu.o(.rodata);
src/trade_items_menu.o(.rodata);
data/data_80E59A8.o(.rodata);
src/load_screen.o(.rodata);
src/wonder_mail_main_menu.o(.rodata);
@ -478,6 +487,8 @@ SECTIONS {
data/data_810AE24.o(.rodata);
src/position_util.o(.rodata);
data/data_8115EB8.o(.rodata);
src/ground_main.o(.rodata);
data/data_8115F5C.o(.rodata);
data/friend_area_dialogue.o(.rodata);
data/cutscenes.o(.rodata);
data/cutscenes_1.o(.rodata);

View File

@ -40,7 +40,7 @@ const struct UnkTextStruct2 gUnknown_80E2008 = {
// Adventure Log Text
const u8 gAdventureLogHeaderText[] = "Adventure Log";
const u8 gUnknown_80E2030[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 gAdventureLogTextPlaceholder[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 fill_adven[] = "pksdir0";
void sub_8032084();
@ -267,7 +267,7 @@ void DisplayAdventureLog(void)
else
{
// Draw the ?????????? across the row
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gAdventureLogTextPlaceholder, gAdventureLog->unk34, 0);
}
}
sub_80073E0(gAdventureLog->unk34);

View File

@ -11,7 +11,7 @@
#include "music.h"
#include "play_time.h"
#include "save.h"
#include "gUnknown_203B46C.h"
#include "game_options.h"
#include "text.h"
#include "exclusive_pokemon.h"
#include "pokemon.h"
@ -22,12 +22,11 @@ extern void NDS_LoadOverlay_GroundMain(void);
extern void sub_8014144(void);
extern void sub_8097670(void);
extern void LoadGameOptions(void);
extern void sub_8094C14(void);
extern void SetWindowBGColor(void);
extern void LoadItemParameters(void);
extern void sub_80950BC(void);
extern void sub_80958E8(void);
extern void LoadMailInfo(void);
extern void sub_800CD64(u32, u32);
extern void InitializeGameOptions(u32);
extern void SetWindowTitle(char *);
extern void sub_800DAAC(void);
extern void SetSavingIconCoords(u32);
@ -42,7 +41,7 @@ extern void sub_800CDA8(u32);
extern void LoadTitleScreen(void);
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
extern void sub_80095CC(u32, u32);
extern s32 sub_80953D4(u32);
extern s32 sub_80953D4(u8);
extern void sub_8095240(u8);
extern void nullsub_33(void);
extern u32 sub_80009D0(u32);
@ -65,7 +64,7 @@ extern u32 gUnknown_203B03C;
extern u16 gUnknown_2026E4E;
extern s32 gUnknown_2000A80;
extern struct OpenedFile *gTitlePaletteFile;
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct GameOptions *gGameOptionsRef;
extern char gPMDBuildVersion[];
@ -87,17 +86,17 @@ void GameLoop(void)
sub_8097670();
InitializePlayTime();
LoadGameOptions();
sub_8094C14();
SetWindowBGColor();
LoadExclusivePokemon();
LoadFriendAreas();
LoadItemParameters();
LoadRescueTeamInfo();
LoadWazaParameters();
sub_80950BC();
sub_80958E8();
LoadMailInfo();
sub_800CD64(0x8000, 0);
sub_8012284();
InitializeGameOptions(1);
InitializeGameOptions(TRUE);
SetWindowTitle(gPMDBuildVersion);
sub_800DAAC();
SetSavingIconCoords(0);
@ -201,7 +200,7 @@ void xxx_update_stuff(u32 r0)
{
xxx_draw_string_80144C4();
sub_8005838(0, 0);
nullsub_8(gUnknown_203B46C->unkA);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
sub_8011860();

218
src/code_800DAC0.c Normal file
View File

@ -0,0 +1,218 @@
#include "global.h"
#include "file_system.h"
#include "memory.h"
struct unkStruct_203B0CC_sub
{
// size: 0xD0
u32 unk0;
s32 unk4;
u8 fill8[0x34 - 8];
u32 unk34;
u32 unk38;
u8 fill3C[0x4C - 0x3C];
u32 unk4C;
s32 unk50;
u8 unk54;
u8 fill55[0xB8 - 0x55];
u32 unkB8;
u8 fillBC[0xD0 - 0xBC];
};
struct unkStruct_203B0CC
{
// size: 0x1A18
struct unkStruct_203B0CC_sub unk0[0x20];
u32 unk1A00;
/* 0x1A04 */ u32 fileSelection;
u32 unk1A08;
u32 unk1A0C;
u32 unk1A10;
u8 fill1A14[0x1A18 - 0x1A14];
};
struct unkStruct_203B0CC *gUnknown_203B0CC;
struct unkStruct_800F18C
{
u32 unk0;
u32 unk4;
};
extern s32 sub_800E2C0(void);
extern s32 sub_8000728(void);
extern u32 sub_800E900(void);
extern void sub_8009BE4(void);
extern void sub_8040238(void);
extern void sub_800F204(void);
extern void sub_803EAF0(u32, u32);
extern void sub_800CD64(u32, u32);
extern struct unkStruct_800F18C *sub_800F18C(s32);
extern void sub_800DCA8(struct unkStruct_203B0CC_sub *);
extern void PlaySound(u16);
extern u8 gefob000_string[];
extern u8 gefob001_string[];
extern struct FileArchive gEffectFileArchive;
extern void sub_8005610(struct OpenedFile *, u32, u32,u32);
extern void sub_800DB7C(void);
extern void sub_800F034(void);
extern void sub_800ED38(u32);
extern void sub_800DC14(void);
extern void sub_800F078();
extern void sub_800ED64();
extern void sub_800ED80();
extern void sub_800F094();
void sub_800DAC0(u32 fileSelection)
{
s32 index;
struct OpenedFile *filePtr;
struct unkStruct_203B0CC_sub *preload;
if (gUnknown_203B0CC != NULL) {
sub_800DB7C();
}
gUnknown_203B0CC = MemoryAlloc(sizeof(struct unkStruct_203B0CC), 0xb);
MemoryClear8((u8 *)gUnknown_203B0CC, sizeof(struct unkStruct_203B0CC));
gUnknown_203B0CC->fileSelection = fileSelection;
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
{
preload->unk4 = -1;
}
sub_800ED38(fileSelection);
sub_800F034();
switch(gUnknown_203B0CC->fileSelection)
{
case 1:
filePtr = Call_OpenFileAndGetFileDataPtr(gefob001_string, &gEffectFileArchive);
if (filePtr != NULL) {
sub_8005610(filePtr,0x248,0x1f,0);
CloseFile(filePtr);
}
break;
case 0:
filePtr = Call_OpenFileAndGetFileDataPtr(gefob000_string, &gEffectFileArchive);
if (filePtr != NULL) {
sub_8005610(filePtr,0x248,0x1f,0);
CloseFile(filePtr);
}
break;
}
}
void sub_800DB7C(void)
{
s32 index;
struct unkStruct_203B0CC_sub *preload;
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
{
if(preload->unk4 != -1)
sub_800DC14();
}
sub_800F078();
sub_800ED64();
if(gUnknown_203B0CC != NULL)
{
MemoryFree(gUnknown_203B0CC);
gUnknown_203B0CC = NULL;
}
}
void sub_800DBBC(void)
{
s32 index1;
s32 index2;
struct unkStruct_203B0CC_sub *preload;
struct unkStruct_203B0CC_sub *preload2;
for(index1 = 0, preload = &gUnknown_203B0CC->unk0[index1]; index1 < 0x20; index1++, preload++)
{
if(preload->unk4 != -1)
sub_800DC14();
}
for(index2 = 0, preload2 = &gUnknown_203B0CC->unk0[index2]; index2 < 0x20; index2++, preload2++)
{
preload2->unk4 = -1;
}
sub_800ED80();
sub_800F094();
}
bool8 sub_800DCC0(void)
{
return gUnknown_203B0CC != NULL;
}
void sub_800DC14(void)
{
s32 index1;
s32 index2;
struct unkStruct_800F18C *piVar3;
struct unkStruct_800F18C *puVar4;
struct unkStruct_203B0CC_sub *preload;
index1 = sub_800E2C0();
if (index1 != -1) {
preload = &gUnknown_203B0CC->unk0[index1];
if (preload->unk34 == 4) {
sub_8009BE4();
if (sub_8000728() == 1) {
sub_8040238();
sub_803EAF0(0,0);
sub_800CD64(0x8000,0);
}
}
if (preload->unk34 == 3) {
for (index2 = 0; index2 < 2; index2 = index2 + 1) {
piVar3 = sub_800F18C(index2);
if (piVar3->unk0 == preload->unk38) {
piVar3->unk4--;
break;
}
}
}
else {
puVar4 = sub_800F18C(1);
puVar4->unk4 = 0;
puVar4->unk0 = 0xffffffff;
}
sub_800DCA8(preload);
}
}
u32 sub_800DC9C(void) {
return sub_800E900();
}
void sub_800DCA8(struct unkStruct_203B0CC_sub *param_1)
{
param_1->unk4 = -1;
param_1->unk54 = 0;
if(param_1->unkB8 != 0)
{
sub_800F204();
param_1->unkB8 = 0;
}
}
void sub_800DCD0(struct unkStruct_203B0CC_sub *param_1)
{
if ((param_1->unk4C != -1) && (param_1->unk50 == 0)) {
if (sub_8000728() != 2) {
PlaySound(param_1->unk4C);
}
param_1->unk4C = -1;
param_1->unk50 = -1;
}
if (param_1->unk50 > 0) {
param_1->unk50--;
}
}

View File

@ -7,21 +7,14 @@
#include "bg.h"
#include "input.h"
#include "config.h"
#include "game_options.h"
void xxx_call_stop_bgm(void);
extern bool8 sub_80023E4(u8);
extern void xxx_call_stop_fanfare_se(u16 r0);
struct UnkSaveStruct1
{
/* 0x0 */ u32 unk0;
/* 0x4 */ u32 unk4;
/* 0x8 */ u16 unk8;
/* 0xA */ u8 unkA;
};
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct GameOptions *gGameOptionsRef;
struct UnkBgStruct
{
@ -69,7 +62,7 @@ void sub_801169C(void)
return_var = sub_80111C4();
sub_8004AF0(return_var, &(gUnknown_203B0E4->unk4c4c), 0xB0, 0x10, (gUnknown_203B0E4->unk4dcc), 0);
sub_8005838(0, 0);
nullsub_8(gUnknown_203B46C->unkA);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
IncrementPlayTime(gPlayTimeRef);

View File

@ -1,7 +1,7 @@
#include "global.h"
#include "code_800558C.h"
#include "input.h"
#include "gUnknown_203B46C.h"
#include "game_options.h"
extern void sub_8011860();
extern void xxx_draw_string_80144C4();
@ -16,14 +16,14 @@ extern void sub_8009908();
extern void xxx_call_update_bg_sound_input();
extern void ResetSprites(u8 r0);
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct GameOptions *gGameOptionsRef;
void sub_8012A18()
{
sub_8011860();
xxx_draw_string_80144C4();
nullsub_8(gUnknown_203B46C->unkA);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
sub_800CB20();

View File

@ -19,7 +19,7 @@ struct unkStruct_203B230
{
// size: 0x94
s32 state;
struct Item unk4;
struct Item item;
s32 unk8;
s32 unkC;
struct subStruct_203B240 *unk10[2];
@ -121,11 +121,11 @@ void sub_801B590();
void sub_801B480();
u32 sub_801B3C0(struct Item *param_1)
u32 sub_801B3C0(struct Item *item)
{
ResetSprites(1);
gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8);
gUnknown_203B230->unk4 = *param_1;
gUnknown_203B230->item = *item;
sub_801317C(&gUnknown_203B230->unk88);
gUnknown_203B230->unk24 = 0;
sub_80140B4(gUnknown_203B230->unk28);
@ -176,7 +176,7 @@ void sub_801B480(void)
{
case 0:
sub_8008C54(gUnknown_203B230->unk24);
gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->unk4, gUnknown_203B230->unk24, gUnknown_203B230->unk10);
gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->item, gUnknown_203B230->unk24, gUnknown_203B230->unk10);
gUnknown_203B230->unk20 = 0;
break;
case 1:
@ -253,7 +253,7 @@ void sub_801B590(void)
u32 sub_801B60C(u32 r0, u8 id, u8 quantity)
{
gUnknown_203B234 = MemoryAlloc(0x154, 8);
gUnknown_203B234 = MemoryAlloc(sizeof(struct unkStruct_203B234), 8);
gUnknown_203B234->unkC8 = 0;
gUnknown_203B234->unk0 = r0;
gUnknown_203B234->unk10.id = id;

View File

@ -417,16 +417,13 @@ s16 sub_801DAC0(void)
return (gUnknown_203B258->unk1E * gUnknown_203B258->unk1C) + gUnknown_203B258->unk18;
}
void sub_801DADC(u32 r0)
void sub_801DADC(u8 r0)
{
u8 r0_u8;
r0_u8 = r0;
gUnknown_203B258->unk22 = 0xE5;
sub_8013984(gUnknown_203B258);
sub_801DB54();
sub_801DBD4();
if(r0_u8)
if(r0)
AddMenuCursorSprite(gUnknown_203B258);
}

View File

@ -1,7 +1,7 @@
#include "global.h"
#include "memory.h"
#include "menu.h"
#include "gUnknown_203B46C.h"
#include "game_options.h"
#include "text.h"
struct unkStruct_203B25C
@ -9,7 +9,7 @@ struct unkStruct_203B25C
// size: 0x11C
u32 state;
u32 chosenHintIndex;
struct UnkSaveStruct1 unk8;
struct GameOptions newOptions;
u32 unk18;
const char *unk1C;
u8 fill20[0x6C - 0x20];
@ -29,7 +29,7 @@ extern void HandleChangeSettingsMenu();
extern void sub_801DD84();
extern void sub_801DED0();
extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
extern u32 sub_801E198(struct UnkSaveStruct1 *);
extern u32 sub_801E198(struct GameOptions *);
extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void CreateHintDisplayScreen(u32);
extern void sub_801E3F0(u32);
@ -43,14 +43,13 @@ extern void sub_801E54C(void);
extern u32 HandleHintDisplayScreenInput(void);
extern void DestroyHintDisplayScreen(void);
extern u32 sub_801E218(void);
extern bool8 GameOptionsNotChange(struct UnkSaveStruct1 *);
extern void sub_801E2C4(void);
extern s32 sub_80144A4(s32 *);
extern void sub_8094C14(void);
extern void SetWindowBGColor(void);
extern void sub_8099690(u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct GameOptions *gGameOptionsRef;
extern struct unkStruct_203B25C *gUnknown_203B25C;
extern const struct UnkTextStruct2 gUnknown_80DBFCC;
extern const struct UnkTextStruct2 gUnknown_80DBFB0;
@ -365,8 +364,8 @@ void sub_801DED0(void)
break;
case 6:
// Load our current options?
gUnknown_203B25C->unk8 = *gUnknown_203B46C;
sub_801E198(&gUnknown_203B25C->unk8);
gUnknown_203B25C->newOptions = *gGameOptionsRef;
sub_801E198(&gUnknown_203B25C->newOptions);
break;
case 7:
CreateChangeSettingsConfirmMenu();
@ -485,7 +484,7 @@ void sub_801E0FC(void)
case 3:
sub_801E2C4();
// Check to see if the options changed?
if (GameOptionsNotChange(&gUnknown_203B25C->unk8)) {
if (GameOptionsNotChange(&gUnknown_203B25C->newOptions)) {
sub_801DD6C(1);
}
else {
@ -508,8 +507,8 @@ void HandleChangeSettingsMenu(void)
{
case MENU_OPTION_YES:
// Save our option changes??
*gUnknown_203B46C = gUnknown_203B25C->unk8;
sub_8094C14();
*gGameOptionsRef = gUnknown_203B25C->newOptions;
SetWindowBGColor();
sub_8099690(0);
sub_801DD6C(1);
break;

View File

@ -13,7 +13,7 @@ struct unkStruct_203B2AC
u8 unk22[0x34 - 0x22];
u32 unk34[3];
u8 unk40[0x48 - 0x40];
s16 unk48;
s16 speciesNum;
u32 unk4C;
u8 unk50[0xB0 - 0x50];
u32 unkB0;
@ -27,7 +27,13 @@ extern struct unkStruct_203B2AC *gUnknown_203B2AC;
struct unkStruct_3001B60
{
u8 fill0[0x1A];
u32 unk0;
u32 sortMethod;
u32 unk8;
u32 unkC;
u32 unk10;
u8 fill14[0x18 - 0x14];
s16 unk18;
s16 unk1A[2];
u8 fill1C[0x370 - 0x1E];
s16 unk370;
@ -51,6 +57,7 @@ extern void sub_802452C(void);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(void *);
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
bool8 ComparePokemonNames(s16 a1, s16 a2);
void sub_8024588(void);
void sub_80245D0(void);
@ -58,6 +65,153 @@ void sub_8024604(void);
extern u8 gUnknown_80DC9A4[];
void SortbyInternalNo(s32 param_1, s32 param_2);
void SortbyAlphabetNo(s32 param_1,s32 param_2);
void SortbyName(s32 param_1,s32 param_2);
bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area)
{
if(area == GetFriendArea(pokemon->speciesNum))
return TRUE;
else
return FALSE;
}
void sub_80241A8(void)
{
switch(gUnknown_3001B60->sortMethod)
{
case 2:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 3:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyName(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyName(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 1:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
}
}
void SortbyInternalNo(s32 param_1, s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyAlphabetNo(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyName(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
r5 = r4 - 1;
if (ComparePokemonNames(*r5, *r4)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
struct PokemonStruct *sub_80243E8(void)
{
u8 buffer [40];
@ -69,11 +223,11 @@ struct PokemonStruct *sub_80243E8(void)
return pokeStruct;
}
bool8 sub_8024458(s16 param_1, s32 param_2)
bool8 sub_8024458(s16 speciesNum, s32 param_2)
{
s32 param_1_s32 = param_1;
s32 speciesNum_s32 = speciesNum;
gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8);
gUnknown_203B2AC->unk48 = param_1_s32;
gUnknown_203B2AC->speciesNum = speciesNum_s32;
gUnknown_203B2AC->unkE0 = param_2;
gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2];
sub_8006518(gUnknown_203B2AC->unkE8);
@ -152,6 +306,6 @@ void sub_8024604(void)
gUnknown_203B2AC->unk34[2] = 5;
sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0);
iVar3 = &gUnknown_203B2AC->unk4C;
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->unk48];
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum];
sub_808FF20(iVar3,pokeStruct, sub_80023E4(7));
}

357
src/code_8023144.c Normal file
View File

@ -0,0 +1,357 @@
#include "global.h"
#include "constants/iq_skill.h"
#include "memory.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "text.h"
#include "input.h"
#include "item.h"
struct unkStruct_3001B5C
{
// size: 0x3fC
u8 unk0;
u32 unk4;
u32 unk8;
s16 unkC[2];
u32 unk10;
u8 fill14[0x354 - 0x14];
u8 unk354;
u8 fill355[0x35C - 0x355];
u8 unk35C;
u8 fill35D[0x374 - 0x35D];
s16 unk374;
s16 unk376;
s16 unk378;
s16 unk37A;
u8 fill37C[0x390 - 0x37C];
u32 unk390;
struct UnkTextStruct2 *unk394;
struct UnkTextStruct2 unk398[4];
u8 unk3F8[4];
};
extern struct unkStruct_3001B5C *gUnknown_3001B5C;
extern u32 gUnknown_203B298;
extern u16 gUnknown_203B29C;
extern u16 gUnknown_203B29E;
extern struct UnkTextStruct2 gUnknown_80DC91C;
extern struct UnkTextStruct2 gUnknown_80DC904;
extern u8 sub_8023704();
extern void sub_8012D08(void *, u32);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_8013984(u8 *);
extern void sub_8023420(void);
extern void sub_80234BC(void);
extern u32 sub_80236A4(void);
extern u8 sub_80138B8(void *, u32);
extern void PlayMenuSoundEffect(u32);
extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern void AddMenuCursorSprite(void *);
struct unkStruct_203B294
{
// size: 0x1A8
/* 0x0 */ u32 state;
/* 0x4 */ u32 fallbackState;
u8 unk8[NUM_IQ_SKILLS];
u8 unk20[NUM_IQ_SKILLS];
u32 unk38;
u32 unk3C;
u32 unk40;
struct unkStruct_80915F4 unk44;
/* 0x48 */ struct PokemonStruct *pokeStruct;
u32 unk4C;
struct Item unk50;
u32 unk54;
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u8 fillA8[0xF4 - 0xA8];
u32 unkF4;
u32 unkF8;
u16 unkFC;
};
struct unkStruct_203B294 *gUnknown_203B294;
extern u8 gUnknown_80DC5EC[];
extern u8 gUnknown_202DE58[];
extern void sub_8022924(s32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B00C(void);
extern void sub_801B048(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801A6E8(u32);
extern void sub_8099690(u32);
extern void sub_801A928(void);
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ);
void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 itemIndex, u8 a3, struct unkStruct_80915F4* a4);
extern u32 sub_801A8AC(void);
void sub_8022E78(void)
{
switch(sub_801A6E8(1))
{
case 3:
gUnknown_203B294->unk4C = sub_801A8AC();
gUnknown_203B294->unk50 = gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C];
sub_8022924(2);
break;
case 4:
gUnknown_203B294->unk4C = sub_801A8AC();
gUnknown_203B294->unk50 = gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C];
sub_8099690(0);
sub_8022924(4);
break;
case 2:
sub_8022924(0x16);
break;
}
}
void sub_8022EF4(void)
{
s32 menuAction;
s32 r5;
menuAction = 0;
sub_801A6E8(0);
if (sub_8012FD8(&gUnknown_203B294->unk54) == 0) {
sub_8013114(&gUnknown_203B294->unk54,&menuAction);
if(menuAction != 1) gUnknown_203B294->unkF4 = menuAction;
}
switch(menuAction)
{
case 1:
sub_8022924(1);
break;
case 2:
case 3:
break;
case 5:
gUnknown_203B294->unk38 = GetNumAvailableIQSkills(gUnknown_203B294->unk8, gUnknown_203B294->pokeStruct->IQ);
GetGummiItemStatBoost(gUnknown_203B294->pokeStruct, gUnknown_203B294->unk50.id, 0, &gUnknown_203B294->unk44);
gUnknown_203B294->unk3C = GetNumAvailableIQSkills(gUnknown_203B294->unk20, gUnknown_203B294->pokeStruct->IQ);
gUnknown_203B294->unk40 = 1;
r5 = gUnknown_203B294->unk44.unk0;
sub_8090E14(gUnknown_202DE58, &gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C], NULL);
if(r5 != -1)
ShiftItemsDownFrom(gUnknown_203B294->unk4C);
sub_8099690(0);
gUnknown_203B294->fallbackState = 0xA;
switch(r5 + 1)
{
case 1:
sub_8022924(6);
break;
case 2:
sub_8022924(7);
break;
case 3:
sub_8022924(8);
break;
case 4:
sub_8022924(9);
break;
default:
case 0:
gUnknown_203B294->fallbackState = 0x16;
sub_8022924(5);
break;
}
break;
case 6:
sub_8022924(0x15);
break;
case 4:
sub_8022924(3);
break;
case 7:
sub_8099690(0);
sub_8022924(4);
break;
}
}
void sub_8023068(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_8012FD8(&gUnknown_203B294->unk54);
if (sub_8012FD8(&gUnknown_203B294->unkA4) == 0) {
sub_8013114(&gUnknown_203B294->unkA4,&menuAction);
}
switch(menuAction)
{
case 1:
case 3:
sub_8022924(1);
break;
case 2:
ShiftItemsDownFrom(gUnknown_203B294->unk4C);
if (GetNumberOfFilledInventorySlots() == 0) {
sub_8099690(0);
sub_801A928();
sub_8022924(0x14);
}
else {
sub_8022924(1);
}
break;
}
}
void sub_80230E8(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_8022924(1);
case 1:
case 0:
break;
}
}
void sub_8023104(void)
{
switch(sub_801B00C())
{
case 2:
case 3:
sub_801B048();
sub_8022924(1);
case 1:
case 0:
break;
}
}
void sub_8023120(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_8022924(gUnknown_203B294->fallbackState);
}
}
bool8 sub_8023144(s32 param_1, s32 index, struct UnkTextStruct2_sub *sub, u32 param_4)
{
u8 param_1_u8 = param_1;
if (sub_8023704(param_1_u8)) {
return 0;
}
if (gUnknown_3001B5C == NULL) {
gUnknown_3001B5C = MemoryAlloc(sizeof(struct unkStruct_3001B5C), 8);
}
gUnknown_3001B5C->unk0 = param_1_u8;
gUnknown_3001B5C->unk4 = gUnknown_203B298;
gUnknown_3001B5C->unk390 = index;
gUnknown_3001B5C->unk394 = &gUnknown_3001B5C->unk398[index];
sub_8006518(gUnknown_3001B5C->unk398);
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390] = gUnknown_80DC91C;
gUnknown_3001B5C->unk394->unk14 = gUnknown_3001B5C->unk3F8;
if (sub != NULL) {
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390].unk08 = *sub;
}
sub_8012D08(gUnknown_3001B5C->unk394,param_4);
ResetUnusedInputStruct();
sub_800641C(gUnknown_3001B5C->unk398,1,1);
sub_8013818(&gUnknown_3001B5C->unk35C,sub_80236A4(),param_4,index);
gUnknown_3001B5C->unk374 = gUnknown_203B29C;
gUnknown_3001B5C->unk37A = gUnknown_203B29E;
sub_8013984(&gUnknown_3001B5C->unk35C);
sub_8023420();
sub_80234BC();
return 1;
}
u8 sub_8023278(u8 param_1)
{
s32 iVar3;
u32 temp;
if (param_1 == 0) {
sub_8013660(&gUnknown_3001B5C->unk35C);
return 0;
}
switch(GetKeyPress(&gUnknown_3001B5C->unk35C))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 3:
PlayMenuSoundEffect(5);
if (temp = gUnknown_3001B5C->unk4, iVar3 = 1, temp < 2) {
iVar3 = temp + 1;
}
gUnknown_3001B5C->unk4 = iVar3;
sub_80236A4();
break;
default:
if (sub_80138B8(&gUnknown_3001B5C->unk35C, 1) == 0) {
return 0;
}
break;
}
sub_8023420();
sub_80234BC();
return 1;
}
s16 sub_802331C(void)
{
return gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk37A * gUnknown_3001B5C->unk378 + gUnknown_3001B5C->unk374];
}
void sub_8023354(u8 param_1)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_3001B5C->unk398,0,0);
sub_8013984(&gUnknown_3001B5C->unk35C);
sub_8023420();
sub_80234BC();
if (param_1 != 0) {
AddMenuCursorSprite(&gUnknown_3001B5C->unk35C);
}
}
void sub_80233A0(void)
{
if (gUnknown_3001B5C != NULL) {
gUnknown_203B298 = gUnknown_3001B5C->unk4;
gUnknown_203B29C = gUnknown_3001B5C->unk374;
gUnknown_203B29E = gUnknown_3001B5C->unk37A;
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390] = gUnknown_80DC904;
ResetUnusedInputStruct();
sub_800641C(gUnknown_3001B5C->unk398,1,1);
MemoryFree(gUnknown_3001B5C);
gUnknown_3001B5C = NULL;
}
}

View File

@ -1,9 +1,12 @@
#include "global.h"
#include "constants/direction.h"
#include "constants/status.h"
#include "constants/type.h"
#include "dungeon_entity.h"
#include "dungeon_global_data.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "item.h"
struct unkStruct_80420E8
{
@ -12,6 +15,20 @@ struct unkStruct_80420E8
u32 unk8;
};
extern u32 gStatusSpriteMasks_SleepStatus[];
extern u32 gStatusSpriteMasks_NonVolatileStatus[];
extern u32 gStatusSpriteMasks_ImmobilizeStatus[];
extern u32 gStatusSpriteMasks_VolatileStatus[];
extern u32 gStatusSpriteMasks_ChargingStatus[];
extern u32 gStatusSpriteMasks_ProtectionStatus[];
extern u32 gStatusSpriteMasks_WaitingStatus[];
extern u32 gStatusSpriteMasks_LinkedStatus[];
extern u32 gStatusSpriteMasks_MoveStatus[];
extern u32 gStatusSpriteMasks_ItemStatus[];
extern u32 gStatusSpriteMasks_TransformStatus[];
extern u32 gStatusSpriteMasks_EyesightStatus[];
extern u32 gStatusSpriteMasks_MuzzledStatus[];
extern void sub_803ED30(u8, struct Entity *pokemon, u8, u8);
extern void sub_804151C(struct Entity *pokemon, u32 r1, u8 r2);
@ -25,8 +42,170 @@ extern void sub_8041550(struct Entity *pokemon, u32, u32, u32, u32, u32);
void sub_80421C0(struct Entity *pokemon, u16 r1);
void EntityUpdateStatusSprites(struct Entity *entity);
extern s32 gUnknown_202EDC8;
extern u8 gUnknown_203B40D;
extern s16 gUnknown_2026E4E;
extern u8 sub_800E9FC(u8);
extern void sub_800DBBC(void);
extern void sub_803EA10(void);
extern void sub_8042E98(void);
extern void sub_803E46C(u32);
extern void sub_800EE5C(u32);
extern u32 sub_800E890(u32 *);
extern void sub_800EF64(void);
u32 sub_8041764(u32 *param_1, u8 param_2)
{
sub_800EE5C(*param_1);
sub_800EF64();
if(param_2)
sub_803E46C(0x42);
return sub_800E890(param_1);
}
void sub_804178C(u8 param_1)
{
u32 temp;
s32 counter;
counter = 0;
gDungeon->unk18204 = 0;
if (sub_800E9FC(param_1) != 0) {
while ((counter < 1000 && (sub_800E9FC(param_1) != 0))) {
sub_803E46C(0x4a);
counter++;
}
sub_803E46C(0x4a);
sub_803E46C(0x4a);
}
if ((counter == 1000) || (param_1 != 0)) {
sub_800DBBC();
}
if (gUnknown_202EDC8 < 0x1f) {
temp = gUnknown_203B40D;
gUnknown_203B40D = 1;
for(counter = 0; counter < 1000; counter++)
{
if (gUnknown_202EDC8 < 0x1f) {
gUnknown_202EDC8 += 4;
if (gUnknown_2026E4E != 0x808) {
gUnknown_2026E4E -= 0x101;
}
}
else {
gUnknown_202EDC8 = 0x1f;
}
sub_803EA10();
sub_803E46C(0x4a);
if(gUnknown_202EDC8 == 0x1f) break;
};
gUnknown_2026E4E = 0x808;
gUnknown_203B40D = temp;
}
sub_8042E98();
}
u32 EntityGetStatusSprites(struct Entity *entity)
{
return entity->info->statusIcons;
}
void sub_8041888(u8 param_1)
{
s32 index;
struct Entity *entity;
struct EntityInfo *entityInfo;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if(EntityExists(entity))
{
entityInfo = entity->info;
if(param_1)
{
entityInfo->unk14C = 1;
}
EntityUpdateStatusSprites(entity);
}
}
}
void EntityUpdateStatusSprites(struct Entity *entity)
{
bool32 flag;
s32 HP;
struct EntityInfo *entityInfo;
u32 spriteStatus;
u8 temp;
if (EntityExists(entity)) {
entityInfo = entity->info;
spriteStatus = 0;
flag = TRUE;
if (entityInfo->id == 0xb9) {
// NOTE: clean this up sometime
temp = entityInfo->sleepTurns;
flag = 0x7f;
temp ^= flag;
flag = (temp) != 0;
}
if (flag) {
spriteStatus = gStatusSpriteMasks_SleepStatus[entityInfo->sleep];
}
spriteStatus = spriteStatus |
gStatusSpriteMasks_NonVolatileStatus[entityInfo->nonVolatileStatus] |
gStatusSpriteMasks_ImmobilizeStatus[entityInfo->immobilizeStatus] |
gStatusSpriteMasks_VolatileStatus[entityInfo->volatileStatus] |
gStatusSpriteMasks_ChargingStatus[entityInfo->chargingStatus] |
gStatusSpriteMasks_ProtectionStatus[entityInfo->protectionStatus] |
gStatusSpriteMasks_WaitingStatus[entityInfo->waitingStatus] |
gStatusSpriteMasks_LinkedStatus[entityInfo->linkedStatus] |
gStatusSpriteMasks_MoveStatus[entityInfo->moveStatus] |
gStatusSpriteMasks_ItemStatus[entityInfo->itemStatus] |
gStatusSpriteMasks_TransformStatus[entityInfo->transformStatus] |
gStatusSpriteMasks_EyesightStatus[entityInfo->eyesightStatus] |
gStatusSpriteMasks_MuzzledStatus[entityInfo->muzzled];
if (entityInfo->grudge) {
spriteStatus = spriteStatus | STATUS_SPRITE_GRUDGE;
}
if (entityInfo->exposed) {
spriteStatus = spriteStatus | STATUS_SPRITE_EXPOSED;
}
if (!entityInfo->isNotTeamMember) {
HP = entityInfo->maxHPStat;
if (HP < 0) {
HP += 3;
}
HP >>= 2;
if (HP > entityInfo->HP) {
spriteStatus = spriteStatus | STATUS_SPRITE_LOWHP;
}
}
if ((gDungeon->itemHoldersIdentified) && (entityInfo->heldItem.flags & ITEM_FLAG_EXISTS)) {
spriteStatus = spriteStatus | STATUS_SPRITE_LOWHP;
}
if ( (entityInfo->offensiveStages[0] < DEFAULT_STAT_MULTIPLIER) ||
(entityInfo->offensiveStages[1] < DEFAULT_STAT_MULTIPLIER) ||
(entityInfo->defensiveStages[0] < DEFAULT_STAT_MULTIPLIER) ||
(entityInfo->defensiveStages[1] < DEFAULT_STAT_MULTIPLIER) ||
(entityInfo->offensiveStages[0] < DEFAULT_STAT_STAGE) ||
(entityInfo->offensiveStages[1] < DEFAULT_STAT_STAGE) ||
(entityInfo->defensiveStages[0] < DEFAULT_STAT_STAGE) ||
(entityInfo->defensiveStages[1] < DEFAULT_STAT_STAGE) ||
(entityInfo->hitChanceStages[0]) < DEFAULT_STAT_STAGE ||
(entityInfo->hitChanceStages[1] < DEFAULT_STAT_STAGE)) {
spriteStatus = spriteStatus | STATUS_SPRITE_STAT_DOWN;
}
entityInfo->statusIcons = spriteStatus;
}
}
void sub_8041AD0(struct Entity *pokemon)
{
sub_804151C(pokemon, 0xA2 << 1, 1);

View File

@ -167,14 +167,14 @@ void sub_80484E8(struct Entity *pokemon, struct Entity *target)
void sub_8048524(struct Entity *pokemon, struct Entity * target)
{
struct EntityInfo *entityData;
struct EntityInfo *entityData_1;
struct EntityInfo *entityInfo;
struct EntityInfo *entityInfo_1;
u32 *belly;
u32 newBelly;
entityData = target->info;
entityData_1 = entityData;
if (entityData->isTeamLeader)
entityInfo = target->info;
entityInfo_1 = entityInfo;
if (entityInfo->isTeamLeader)
sub_8078A58(pokemon, target, 0, 5);
else
{
@ -183,7 +183,7 @@ void sub_8048524(struct Entity *pokemon, struct Entity * target)
sub_80522F4(pokemon, target, *gPtrSelfHealPreventedHungerMessage);
else
{
belly = &entityData_1->belly;
belly = &entityInfo_1->belly;
if (RoundUpFixedPoint(*belly) != 0) {
sub_80943A0(&newBelly, 0);
*belly = newBelly;
@ -199,7 +199,7 @@ void sub_80485B0(struct Entity *pokemon, struct Entity * target)
{
bool8 isMoveBoosted;
s32 moveIndex;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
register struct Move *movePtr1 asm("r4"); // r4
register struct Move *movePtr2 asm("r5"); // r5
u8 moveBoost;
@ -208,11 +208,11 @@ void sub_80485B0(struct Entity *pokemon, struct Entity * target)
isMoveBoosted = FALSE;
moveBoost = 1;
entityData = target->info;
entityInfo = target->info;
if (DungeonRandInt(100) < gUnknown_80F4F46)
moveBoost = 3;
if (entityData->isTeamLeader) {
for(moveIndex = 0, movePtr1 = &entityData->moves[0], movePtr2 = movePtr1; moveIndex < MAX_MON_MOVES; movePtr1++, movePtr2++, moveIndex++)
if (entityInfo->isTeamLeader) {
for(moveIndex = 0, movePtr1 = &entityInfo->moves[0], movePtr2 = movePtr1; moveIndex < MAX_MON_MOVES; movePtr1++, movePtr2++, moveIndex++)
{
if((movePtr1->moveFlags & MOVE_FLAG_EXISTS) && (movePtr1->moveFlags & MOVE_FLAG_SET))
{
@ -244,14 +244,14 @@ void sub_80485B0(struct Entity *pokemon, struct Entity * target)
void sub_804869C(struct Entity *pokemon, struct Entity * target, u8 param_3)
{
s32 uVar1;
struct EntityInfo *entityData;
struct EntityInfo *entityData_1;
struct EntityInfo *entityInfo;
struct EntityInfo *entityInfo_1;
struct Entity *entity;
u8 auStack28 [4];
if (param_3 != 0) {
entityData = target->info;
entityData_1 = entityData;
entityInfo = target->info;
entityInfo_1 = entityInfo;
if (gDungeon->unk675 != 0) {
uVar1 = gUnknown_80F4FA8;
sub_80522F4(pokemon, target, *gUnknown_80FEAE8);
@ -259,7 +259,7 @@ void sub_804869C(struct Entity *pokemon, struct Entity * target, u8 param_3)
else {
uVar1 = gUnknown_80F4FA4;
}
if (entityData_1->immobilizeStatus == STATUS_FROZEN) {
if (entityInfo_1->immobilizeStatus == STATUS_FROZEN) {
SendImmobilizeEndMessage(pokemon, target);
}
sub_806F370(pokemon, target, uVar1, 1, auStack28, 0, 0x216, 0, 0, 0);
@ -274,7 +274,7 @@ void sub_804869C(struct Entity *pokemon, struct Entity * target, u8 param_3)
}
else
{
entityData = entity->info;
entityInfo = entity->info;
if (gDungeon->unk675 != 0) {
uVar1 = gUnknown_80F4FAA;
sub_80522F4(pokemon, target, *gUnknown_80FEAE8);
@ -282,7 +282,7 @@ void sub_804869C(struct Entity *pokemon, struct Entity * target, u8 param_3)
else {
uVar1 = gUnknown_80F4FA6;
}
if (entityData->immobilizeStatus == STATUS_FROZEN) {
if (entityInfo->immobilizeStatus == STATUS_FROZEN) {
SendImmobilizeEndMessage(pokemon, entity);
}
sub_806F370(pokemon, entity, uVar1, 1, auStack28, 0, 0x216, 0, 0, 0);

View File

@ -31,9 +31,9 @@ extern u8 *gUnknown_80FE3E8[];
bool8 sub_8048D50(struct Entity * pokemon, struct Item *item)
{
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
entityData = pokemon->info;
entityInfo = pokemon->info;
if ((item->flags & ITEM_FLAG_STICKY) != 0) {
sub_8045BF8(gUnknown_202DE58, item);
@ -42,7 +42,7 @@ bool8 sub_8048D50(struct Entity * pokemon, struct Item *item)
}
else
{
if ((entityData->muzzled == TRUE) && (IsEdibleItem(item->id))) {
if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) {
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
SendMessage(pokemon,*gUnknown_80FDCA4);
return FALSE;

View File

@ -153,13 +153,13 @@ void sub_8057588(struct Entity * pokemon, u8 param_2)
s32 index;
s32 PPtoRemove;
s32 PPCounter;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
if (EntityExists(pokemon)) {
entityData = pokemon->info;
entityInfo = pokemon->info;
for(index = 0; index < MAX_MON_MOVES; index++)
{
move = &entityData->moves[index];
move = &entityInfo->moves[index];
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
PPtoRemove = 1;
if ((move->moveFlags2 & MOVE_FLAG_LAST_USED)) {
@ -270,7 +270,7 @@ bool8 DigMoveAction(struct Entity * pokemon, struct Entity * target, struct Move
sub_8079764(pokemon);
}
else {
sub_8079618(pokemon,pokemon,10,move,*gUnknown_80FAD4C); // $m0 burrowed underground!
SetChargeStatusTarget(pokemon,pokemon,STATUS_DIGGING,move,*gUnknown_80FAD4C); // $m0 burrowed underground!
}
flag = TRUE;
}
@ -335,10 +335,10 @@ bool32 sub_8057948(struct Entity *pokemon, struct Entity *target)
return TRUE;
}
bool32 sub_8057954(struct Entity *pokemon, struct Entity *target, struct Move *move)
bool32 RageMoveAction(struct Entity *pokemon, struct Entity *target, struct Move *move)
{
// {ARG_POKEMON_0} is enraged
sub_8079618(pokemon,target,0xc,move,gUnknown_80FAC88);
SetChargeStatusTarget(pokemon,target,STATUS_ENRAGED,move,gUnknown_80FAC88);
return TRUE;
}
@ -399,15 +399,15 @@ bool8 TormentMoveAction(struct Entity *pokemon, struct Entity *target)
struct Move *movePtr;
s32 iVar4;
struct Move struggleMove;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
bool8 isTormented;
entityData = target->info;
entityInfo = target->info;
isTormented = FALSE;
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
{
movePtr = &entityData->moves[iVar4];
movePtr = &entityInfo->moves[iVar4];
if ((movePtr->moveFlags & MOVE_FLAG_EXISTS) != 0) {
if ((movePtr->moveFlags & MOVE_FLAG_DISABLED) == 0) {
if ((movePtr->moveFlags & MOVE_FLAG_LAST_USED) != 0) {
@ -424,23 +424,23 @@ bool8 TormentMoveAction(struct Entity *pokemon, struct Entity *target)
}
};
if ((entityData->struggleMoveFlags & MOVE_FLAG_DISABLED) == 0) {
if ((entityData->struggleMoveFlags & MOVE_FLAG_LAST_USED) != 0) {
if ((entityInfo->struggleMoveFlags & MOVE_FLAG_DISABLED) == 0) {
if ((entityInfo->struggleMoveFlags & MOVE_FLAG_LAST_USED) != 0) {
InitPokemonMove(&struggleMove, MOVE_STRUGGLE);
entityData->struggleMoveFlags |= MOVE_FLAG_DISABLED;
entityInfo->struggleMoveFlags |= MOVE_FLAG_DISABLED;
isTormented = TRUE;
sub_80928C0(gUnknown_202DE58,&struggleMove,0);
// $i0 was tormented
sub_80522F4(pokemon,target,*gUnknown_80FCFBC);
}
}
else if ((entityData->struggleMoveFlags & MOVE_FLAG_LAST_USED) == 0) {
entityData->struggleMoveFlags &= ~(MOVE_FLAG_DISABLED);
else if ((entityInfo->struggleMoveFlags & MOVE_FLAG_LAST_USED) == 0) {
entityInfo->struggleMoveFlags &= ~(MOVE_FLAG_DISABLED);
}
if (isTormented)
{
if(entityData->chargingStatus == STATUS_BIDE) {
entityData->chargingStatus = STATUS_NONE;
if(entityInfo->chargingStatus == STATUS_BIDE) {
entityInfo->chargingStatus = STATUS_NONE;
}
}
else
@ -634,16 +634,16 @@ bool8 sub_8057E50(struct Entity *pokemon, struct Entity *target)
bool8 sub_8057E6C(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
bool8 flag;
flag = FALSE;
entityData = pokemon->info;
entityInfo = pokemon->info;
SendThawedMessage(pokemon,target);
if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) {
flag = TRUE;
if (sub_8057308(pokemon, 0)) {
entityData->unk155 = 1;
entityInfo->unk155 = 1;
}
}
return flag;
@ -666,13 +666,13 @@ bool8 sub_8057ED0(struct Entity *pokemon, struct Entity *target, struct Move *mo
bool8 sub_8057F24(struct Entity *pokemon, struct Entity *target)
{
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
entityData = pokemon->info;
entityData->HP = 1;
entityInfo = pokemon->info;
entityInfo->HP = 1;
ChangeAttackMultiplierTarget(pokemon,target,gUnknown_8106A4C,0x40,TRUE);
ChangeAttackMultiplierTarget(pokemon,target,gUnknown_8106A50,0x40,TRUE);
entityData->unk154 = 1;
entityInfo->unk154 = 1;
return TRUE;
}
@ -727,16 +727,16 @@ bool8 sub_805805C(struct Entity * pokemon,struct Entity * target,struct Move * m
s32 index;
s32 r6;
bool8 local_24;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
s32 IQ;
entityData = pokemon->info;
entityInfo = pokemon->info;
r6 = 1;
index = 0;
if (0 <= gUnknown_80F55BC[0]) {
IQ = entityData->IQ;
IQ = entityInfo->IQ;
for(psVar3 = &gUnknown_80F55BC[index]; (999 > index) && (*psVar3 >= 0); psVar3 = psVar3 + 2, index++)
{
if ((IQ < *psVar3)){
@ -753,17 +753,17 @@ _080580B0:
bool8 GrudgeMoveAction(struct Entity *pokemon, struct Entity * target)
{
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
bool8 hasGrudge;
hasGrudge = FALSE;
entityData = target->info;
entityInfo = target->info;
SetMessageArgument(gUnknown_202DFE8,target,0);
if (entityData->grudge) {
if (entityInfo->grudge) {
sub_80522F4(pokemon,target,*gUnknown_80FD2B4);
}
else {
entityData->grudge = TRUE;
entityInfo->grudge = TRUE;
hasGrudge = TRUE;
sub_80522F4(pokemon,target,*gUnknown_80FD294);
}
@ -861,7 +861,7 @@ bool8 RazorWindMoveAction(struct Entity * pokemon, struct Entity * target, struc
sub_8079764(pokemon);
}
else {
sub_8079618(pokemon,pokemon,STATUS_RAZOR_WIND,move,*gUnknown_80FAC54);
SetChargeStatusTarget(pokemon,pokemon,STATUS_RAZOR_WIND,move,*gUnknown_80FAC54);
flag = TRUE;
}
return flag;
@ -869,7 +869,7 @@ bool8 RazorWindMoveAction(struct Entity * pokemon, struct Entity * target, struc
bool8 BideMoveAction(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
sub_8079618(pokemon, target, STATUS_BIDE, move, *gUnknown_80FAC74);
SetChargeStatusTarget(pokemon, target, STATUS_BIDE, move, *gUnknown_80FAC74);
return TRUE;
}
@ -938,14 +938,14 @@ bool8 sub_80584C0(struct Entity *pokemon, struct Entity *target, struct Move *mo
{
s32 diffHP;
bool8 local_24;
struct EntityInfo *entityData;
struct EntityInfo *entityData1;
struct EntityInfo *entityInfo;
struct EntityInfo *entityInfo1;
local_24 = 0;
entityData = pokemon->info;
entityData1 = target->info;
diffHP = entityData1->HP - entityData->HP;
entityInfo = pokemon->info;
entityInfo1 = target->info;
diffHP = entityInfo1->HP - entityInfo->HP;
if (diffHP < 0) {
diffHP = 0;
}
@ -1012,7 +1012,7 @@ bool8 sub_8058638(struct Entity *pokemon, struct Entity *target, struct Move *mo
return flag;
}
bool8 sub_805867C(struct Entity * pokemon, struct Entity * target, struct Move * move, u32 param_4)
bool8 FocusPunchMoveAction(struct Entity * pokemon, struct Entity * target, struct Move * move, u32 param_4)
{
bool8 flag;
@ -1021,7 +1021,7 @@ bool8 sub_805867C(struct Entity * pokemon, struct Entity * target, struct Move *
sub_8079764(pokemon);
}
else {
sub_8079618(pokemon,pokemon,STATUS_FOCUS_PUNCH,move,*gUnknown_80FACA4);
SetChargeStatusTarget(pokemon,pokemon,STATUS_FOCUS_PUNCH,move,*gUnknown_80FACA4);
flag = TRUE;
}
return flag;
@ -1033,20 +1033,20 @@ bool8 sub_80586DC(struct Entity * pokemon, struct Entity * target, struct Move *
s32 uVar3;
s32 newHP;
bool8 flag;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE);
uVar3 = sub_8055640(pokemon,target,move,0x100,param_4);
flag = uVar3 != 0 ? TRUE : FALSE;
if (flag && sub_8057308(pokemon, 0)) {
newHP = uVar3 / 2;
entityData = pokemon->info;
entityInfo = pokemon->info;
flag = TRUE;
if (newHP < 1) {
newHP = 1;
}
if (!entityData->unkFB) {
entityData->unkFB = TRUE;
if (!entityInfo->unkFB) {
entityInfo->unkFB = TRUE;
}
if (hasLiquidOoze) {
sub_806F324(pokemon, newHP, 0xd, 0x1fa);
@ -1059,7 +1059,7 @@ bool8 sub_80586DC(struct Entity * pokemon, struct Entity * target, struct Move *
}
// NOTE: copy of sub_805AFA4 in status_checker.c except for different reg for entityData
// NOTE: copy of sub_805AFA4 in status_checker.c except for different reg for entityInfo
bool8 sub_8058770(struct Entity * pokemon, struct Entity * target, struct Move * move, u32 param_4)
{
s32 r0;
@ -1068,21 +1068,21 @@ bool8 sub_8058770(struct Entity * pokemon, struct Entity * target, struct Move *
bool8 flag;
#ifndef NONMATCHING
register struct EntityInfo *entityData asm("r2");
register struct EntityInfo *entityInfo asm("r2");
#else
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
#endif
entityData = pokemon->info;
r2 = entityData->maxHPStat;
entityInfo = pokemon->info;
r2 = entityInfo->maxHPStat;
r0 = r2;
if (r2 < 0) {
r0 = r2 + 3;
}
if (entityData->HP <= r0 >> 2) {
if (entityInfo->HP <= r0 >> 2) {
r2 = 0;
}
else if (r1 = entityData->HP, r1 <= r2 / 2) {
else if (r1 = entityInfo->HP, r1 <= r2 / 2) {
r2 = 1;
}
else
@ -1156,9 +1156,9 @@ bool8 sub_80588B8(struct Entity *pokemon, struct Entity *target, struct Move *mo
bool8 sub_80588F4(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
bool8 flag;
struct EntityInfo *entityData = target->info;
struct EntityInfo *entityInfo = target->info;
flag = sub_8055640(pokemon, target, move, GetWeight(entityData->apparentID), param_4) != 0 ? TRUE: FALSE;
flag = sub_8055640(pokemon, target, move, GetWeight(entityInfo->apparentID), param_4) != 0 ? TRUE: FALSE;
return flag;
}
@ -1166,7 +1166,7 @@ bool8 sub_80588F4(struct Entity *pokemon, struct Entity *target, struct Move *mo
bool8 sub_8058930(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
bool8 flag = FALSE;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
s32 index1;
s32 index2;
if(sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0)
@ -1174,7 +1174,7 @@ bool8 sub_8058930(struct Entity *pokemon, struct Entity *target, struct Move *mo
flag = TRUE;
if(sub_8057308(pokemon, gUnknown_80F4DD6))
{
entityData = pokemon->info;
entityInfo = pokemon->info;
RaiseMovementSpeedTarget(pokemon, pokemon, 0, TRUE);
index1 = gUnknown_8106A4C;
RaiseAttackStageTarget(pokemon, pokemon, index1, 1);
@ -1182,9 +1182,9 @@ bool8 sub_8058930(struct Entity *pokemon, struct Entity *target, struct Move *mo
RaiseAttackStageTarget(pokemon, pokemon, index2, 1);
RaiseDefenseStageTarget(pokemon, pokemon, index1, 1);
RaiseDefenseStageTarget(pokemon, pokemon, index2, 1);
if(entityData->unkFB == 0)
if(entityInfo->unkFB == 0)
{
entityData->unkFB = 1;
entityInfo->unkFB = 1;
}
}
}
@ -1244,7 +1244,7 @@ bool8 SkyAttackMoveAction(struct Entity *pokemon, struct Entity *target, struct
sub_8079764(pokemon);
}
else {
sub_8079618(pokemon, pokemon, STATUS_SKY_ATTACK, move, *gUnknown_80FACC4);
SetChargeStatusTarget(pokemon, pokemon, STATUS_SKY_ATTACK, move, *gUnknown_80FACC4);
flag = TRUE;
}
return flag;
@ -1268,17 +1268,17 @@ bool8 sub_8058B3C(struct Entity *pokemon, struct Entity *target, struct Move *mo
bool8 sub_8058B84(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
bool8 flag;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
flag = FALSE;
if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) {
flag = TRUE;
if(sub_805727C(pokemon, pokemon, gUnknown_80F4DD0))
{
entityData = pokemon->info;
entityInfo = pokemon->info;
RaiseAttackStageTarget(pokemon, pokemon, gUnknown_8106A4C, 1);
if(entityData->unkFB == 0)
entityData->unkFB = 1;
if(entityInfo->unkFB == 0)
entityInfo->unkFB = 1;
}
}
return flag;
@ -1379,21 +1379,21 @@ bool8 sub_8058D44(struct Entity * pokemon, struct Entity * target, struct Move *
bool8 flag;
#ifndef NONMATCHING
register struct EntityInfo *entityData asm("r2");
register struct EntityInfo *entityInfo asm("r2");
#else
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
#endif
entityData = pokemon->info;
r2 = entityData->maxHPStat;
entityInfo = pokemon->info;
r2 = entityInfo->maxHPStat;
r0 = r2;
if (r2 < 0) {
r0 = r2 + 3;
}
if (entityData->HP <= r0 >> 2) {
if (entityInfo->HP <= r0 >> 2) {
r2 = 0;
}
else if (r1 = entityData->HP, r1 <= r2 / 2) {
else if (r1 = entityInfo->HP, r1 <= r2 / 2) {
r2 = 1;
}
else
@ -1425,7 +1425,7 @@ bool8 PsychUpMoveAction(struct Entity * pokemon, struct Entity * target, struct
{
iVar4->offensiveStages[index] = iVar3->offensiveStages[index];
iVar4->defensiveStages[index] = iVar3->defensiveStages[index];
iVar4->hitChancesStages[index] = iVar3->hitChancesStages[index];
iVar4->hitChanceStages[index] = iVar3->hitChanceStages[index];
iVar4->offensiveMultipliers[index] = iVar3->offensiveMultipliers[index];
iVar4->defensiveMultipliers[index] = iVar3->defensiveMultipliers[index];
}
@ -1470,14 +1470,14 @@ bool8 sub_8058EE0(struct Entity *pokemon, struct Entity *target, struct Move *mo
bool32 sub_8058F04(struct Entity *pokemon, struct Entity *target, struct Move *move, s32 param_4)
{
bool32 flag;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
s32 iVar3;
entityData = target->info;
entityInfo = target->info;
iVar3 = 1;
gDungeon->unk18200 = 0xc;
gDungeon->unk18204 = 0;
if (entityData->chargingStatus == STATUS_DIGGING) {
if (entityInfo->chargingStatus == STATUS_DIGGING) {
iVar3 = 2;
}
flag = sub_8055640(pokemon,target,move,iVar3 << 8,param_4);
@ -1532,9 +1532,9 @@ bool8 sub_8059050(struct Entity *pokemon, struct Entity *target, struct Move *mo
return TRUE;
}
bool8 sub_8059060(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
bool8 ChargeMoveAction(struct Entity *pokemon, struct Entity *target, struct Move *move, u32 param_4)
{
sub_8079618(pokemon, target, STATUS_CHARGING, move, *gUnknown_80FAD6C);
SetChargeStatusTarget(pokemon, target, STATUS_CHARGING, move, *gUnknown_80FAD6C);
return TRUE;
}
@ -1610,7 +1610,7 @@ bool8 sub_80591E4(struct Entity *pokemon, struct Entity *target, struct Move *mo
s32 iVar3;
s32 iVar4;
bool8 flag;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
flag = FALSE;
hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE);
@ -1621,10 +1621,10 @@ bool8 sub_80591E4(struct Entity *pokemon, struct Entity *target, struct Move *mo
iVar4 = 1;
}
if (EntityExists(pokemon)) {
entityData = pokemon->info;
entityInfo = pokemon->info;
flag = TRUE;
if (entityData->unkFB == 0) {
entityData->unkFB = 1;
if (entityInfo->unkFB == 0) {
entityInfo->unkFB = 1;
}
if (sub_8057308(pokemon,0)) {
if (hasLiquidOoze) {
@ -1646,20 +1646,20 @@ bool8 SkillSwapMoveAction(struct Entity *pokemon, struct Entity *target, struct
bool8 flag;
u8 *puVar5;
u8 *puVar6;
struct EntityInfo * targetEntityData;
struct EntityInfo * targetEntityInfo;
struct EntityInfo * pokeEntityData;
pokeEntityData = pokemon->info;
targetEntityData = target->info;
targetEntityInfo = target->info;
if ((HasAbility(target, ABILITY_WONDER_GUARD)) || (HasAbility(pokemon, ABILITY_WONDER_GUARD))) {
sub_80522F4(pokemon,target,*gUnknown_80FC8C0);
flag = FALSE;
}
else
{
puVar5 = &targetEntityData->abilities[0];
puVar5 = &targetEntityInfo->abilities[0];
ability_1 = *puVar5;
puVar6 = &targetEntityData->abilities[1];
puVar6 = &targetEntityInfo->abilities[1];
ability_2 = *puVar6;
*puVar5 = pokeEntityData->abilities[0];
*puVar6 = pokeEntityData ->abilities[1];

View File

@ -10,10 +10,10 @@
#include "dungeon_util.h"
#include "pokemon.h"
#include "weather.h"
#include "gUnknown_203B46C.h"
#include "game_options.h"
#include "text_util.h"
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct GameOptions *gGameOptionsRef;
struct unkStruct_80F520C
{
@ -50,19 +50,19 @@ extern void sub_803E708(u32 r0, u32 r1);
void sub_8069E0C(struct Entity *pokemon)
{
s32 index;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
entityData = pokemon->info;
entityInfo = pokemon->info;
if (HasAbility(pokemon, ABILITY_FORECAST)) {
entityData->types[0] = gUnknown_80F520C[GetApparentWeather(pokemon)].unk0;
entityData->types[1] = TYPE_NONE;
entityInfo->types[0] = gUnknown_80F520C[GetApparentWeather(pokemon)].unk0;
entityInfo->types[1] = TYPE_NONE;
}
else {
for(index = 0; index < 2; index++)
entityData->types[index] = GetPokemonType(entityData->id, index);
entityInfo->types[index] = GetPokemonType(entityInfo->id, index);
}
for(index = 0; index < 2; index++)
entityData->abilities[index] = GetPokemonAbility(entityData->id, index);
entityInfo->abilities[index] = GetPokemonAbility(entityInfo->id, index);
gDungeon->unkC = 1;
}
@ -121,7 +121,11 @@ void sub_8069F9C(struct Entity *pokemon,struct Entity * target,struct Move *move
u8 type;
u8 ability;
const char *__src;
#ifndef NONMATCHING
register s32 abilityCounter asm("r1"); // r1
#else
s32 abilityCounter;
#endif
int randomIndex;
int abilityIndex;
struct EntityInfo *iVar6; // r7
@ -204,15 +208,15 @@ void sub_806A120(struct Entity * pokemon, struct Entity * target, struct Move* m
u32 uVar2_u32;
u8 moveType;
const char *typeString;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
if ((((EntityExists(pokemon)) && (EntityExists(target))) && (pokemon != target))
&& (entityData = target->info, entityData->protectionStatus == 0xC)) {
&& (entityInfo = target->info, entityInfo->protectionStatus == 0xC)) {
moveType = GetMoveTypeForMonster(pokemon, move);
uVar2_u32 = sub_8092364(moveType);
if (uVar2_u32 != TYPE_NONE) {
entityData->types[0] = uVar2_u32;
entityData->types[1] = 0;
entityInfo->types[0] = uVar2_u32;
entityInfo->types[1] = 0;
sub_8041BBC(target);
SetMessageArgument(gAvailablePokemonNames,target,0);
typeString = GetUnformattedTypeString(uVar2_u32);
@ -232,15 +236,15 @@ void sub_806A1B0(struct Entity *pokemon)
void sub_806A1E8(struct Entity *pokemon)
{
bool8 bVar3;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
bVar3 = FALSE;
if (EntityExists(pokemon)) {
if (GetEntityType(pokemon) == ENTITY_MONSTER) {
entityData = pokemon->info;
bVar3 = (!entityData->isNotTeamMember);
entityInfo = pokemon->info;
bVar3 = (!entityInfo->isNotTeamMember);
}
if (gUnknown_203B46C->unk1 == '\0') {
if (gGameOptionsRef->FarOffPals == '\0') {
bVar3 = FALSE;
}
if (bVar3 && (sub_8045888(pokemon) == '\0')) {
@ -252,21 +256,21 @@ void sub_806A1E8(struct Entity *pokemon)
void sub_806A240(struct Entity *pokemon, struct Entity *target)
{
bool8 isNotTeamMember;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
isNotTeamMember = FALSE;
if (EntityExists(pokemon)){
if (GetEntityType(pokemon) == ENTITY_MONSTER) {
entityData = pokemon->info;
isNotTeamMember = (!entityData->isNotTeamMember);
entityInfo = pokemon->info;
isNotTeamMember = (!entityInfo->isNotTeamMember);
}
if (isNotTeamMember && (sub_8045888(pokemon) == '\0')) {
sub_806A2BC(pokemon,1);
return;
}
else if (GetEntityType(target) == ENTITY_MONSTER) {
entityData = target->info;
isNotTeamMember = (!entityData->isNotTeamMember);
entityInfo = target->info;
isNotTeamMember = (!entityInfo->isNotTeamMember);
}
if (isNotTeamMember && (sub_8045888(target) == '\0')) {
sub_806A2BC(target,1);

View File

@ -126,13 +126,13 @@ void sub_806CEFC(struct Entity *param_1, u32 newDir)
void sub_806CF18(struct Entity *param_1)
{
s32 iVar2;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
if (EntityExists(param_1)) {
entityData = param_1->info;
entityInfo = param_1->info;
for (iVar2 = 0; iVar2 < 100; iVar2++) {
sub_803E46C(0x21);
if (!sub_808DA44(entityData->apparentID, param_1->unk6B)) {
if (!sub_808DA44(entityInfo->apparentID, param_1->unk6B)) {
break;
}
}
@ -163,12 +163,12 @@ u32 sub_806CF98(struct Entity *param_1)
struct Tile *mapTile;
u32 uVar3;
u16 terrainType;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
mapTile = GetTileAtEntitySafe(param_1);
terrainType = mapTile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
entityData = param_1->info;
uVar3 = GetShadowSize(entityData->apparentID);
entityInfo = param_1->info;
uVar3 = GetShadowSize(entityInfo->apparentID);
if (terrainType == (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) {
return 6;
}
@ -179,6 +179,6 @@ u32 sub_806CF98(struct Entity *param_1)
}
else if ((terrainType == TERRAIN_TYPE_SECONDARY) && (gDungeonWaterType[gDungeon->tileset] != DUNGEON_WATER_TYPE_LAVA))
uVar3 = gUnknown_8106EEF[uVar3];
entityData->unk204 = uVar3;
entityInfo->unk204 = uVar3;
return uVar3;
}

123
src/code_806E8B0.c Normal file
View File

@ -0,0 +1,123 @@
#include "global.h"
#include "constants/ability.h"
#include "dungeon_global_data.h"
#include "dungeon_pokemon_attributes.h"
#include "status_checks_1.h"
#include "text_util.h"
extern u8 *gUnknown_80FEE04[];
extern u8 *gUnknown_80FEE2C[];
extern u8 *gUnknown_80FEE54[];
void sub_8042940(struct Entity *r0);
void sub_80428B0(struct Entity *r0);
void sub_80428C4(struct Entity *r0);
void sub_80522F4(struct Entity *r0, struct Entity *r1, const char r2[]);
void sub_806E8B0(struct Entity * pokemon, struct Entity * target, u8 param_3, s32 *param_4, s32 *param_5, s32 param_6)
{
bool8 hasNegStatus_pokemon;
bool8 visFlags_pokemon_1;
bool8 visFlags_pokemon_2;
bool8 hasNegStatus_target;
bool8 visFlags_target;
s32 iVar3;
bool32 isNotEnemy;
struct EntityInfo * entityInfo;
struct EntityInfo * entityInfo_1;
s32 r7;
s32 r8;
s32 r10;
s32 sp_0x4;
s32 sp_0x8;
r7 = 1;
r8 = 1;
sp_0x4 = 1;
sp_0x8 = 1;
r10 = sub_8092354(param_3) == 0;
if (HasAbility(pokemon, ABILITY_GUTS)) {
entityInfo = pokemon->info;
hasNegStatus_pokemon = HasNegativeStatus(pokemon);
visFlags_pokemon_1 = SetVisualFlags(entityInfo,1,hasNegStatus_pokemon);
if (hasNegStatus_pokemon) {
r7 = 2;
}
if (visFlags_pokemon_1) {
sub_80428B0(pokemon);
sub_80522F4(pokemon,target,*gUnknown_80FEE04); // Guts boosted its power
}
}
if ((HasAbility(pokemon, ABILITY_HUGE_POWER)) || (HasAbility(pokemon, ABILITY_PURE_POWER))) {
entityInfo_1 = pokemon->info;
iVar3 = 0;
if ((param_6 < 0x21) && (!r10)) {
iVar3 = 1;
}
visFlags_pokemon_2 = SetVisualFlags(entityInfo_1,0x100,iVar3);
if (iVar3 != 0) {
r7 *= 3;
r8 <<= 1;
}
if (visFlags_pokemon_2) {
sub_80428C4(pokemon);
sub_80522F4(pokemon,target,*gUnknown_80FEE2C); // It's special ability boosted Attack
}
}
if ((HasAbility(pokemon, ABILITY_HUSTLE)) && (!r10)) {
r7 *= 3;
r8 <<= 1;
}
if(pokemon->info->isNotTeamMember)
{
isNotEnemy = FALSE;
}
else
{
isNotEnemy = TRUE;
}
if ((HasAbility(pokemon, ABILITY_PLUS)) && (r10 == 1) && gDungeon->minusIsActive[isNotEnemy]) {
r7 *= 15;
r8 *= 10;
}
// ABILITY_MINUS
if ((HasAbility(pokemon, ABILITY_MINUS)) && (r10 == 1) && gDungeon->plusIsActive[isNotEnemy]) {
r7 *= 15;
r8 *= 10;
}
if (HasAbility(target, ABILITY_INTIMIDATE) && (!r10)) {
r7 <<= 2;
r8 *= 5;
}
if ((HasAbility(target, ABILITY_MARVEL_SCALE)) && (!r10)) {
entityInfo = target->info;
hasNegStatus_target = HasNegativeStatus(target);
visFlags_target = SetVisualFlags(entityInfo, 8, hasNegStatus_target);
if (hasNegStatus_target) {
sp_0x4 *= 3;
sp_0x8 <<= 1;
}
if (visFlags_target) {
sub_8042940(target);
sub_80522F4(pokemon,target,*gUnknown_80FEE54); // Its special ability quickened attacks!
}
}
*param_4 *= r7;
*param_5 *= sp_0x4;
if (r8 != 1) {
*param_4 = *param_4 / r8;
}
if (sp_0x8 != 1) {
*param_5 = *param_5 / sp_0x8;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -61,22 +61,22 @@ void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 param_3)
{
// NOTE: needed two of these to match.. very dumb
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
struct EntityInfo *enityData_1;
entityData = pokemon->info;
entityInfo = pokemon->info;
enityData_1 = pokemon->info;
entityData->bossFlag = TRUE;
entityInfo->bossFlag = TRUE;
// BUG: Source of the Reviver Seed Boss Glitch
//
// Video to demonstration:
// https://www.youtube.com/watch?v=rHu7EehrZ68
entityData->originalHP = entityData->maxHPStat;
entityInfo->originalHP = entityInfo->maxHPStat;
if (newHP != 0) {
entityData->maxHPStat = newHP;
entityData->HP = newHP;
entityInfo->maxHPStat = newHP;
entityInfo->HP = newHP;
}
gDungeon->unk66A = param_3;

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/wonder_mail.h"
#include "pokemon.h"
#include "code_8094F88.h"
#include "memory.h"
@ -44,19 +45,21 @@ struct unkStruct_203B48C *sub_8095110(void)
}
#ifdef NONMATCHING
void sub_8095118(void)
{
int iVar1;
s32 iVar1;
struct unkStruct_203B480 *unused;
MemoryFill8((u8*)gUnknown_203B480,0,0x600);
MemoryFill8(gUnknown_203B484,0,0x5c);
MemoryFill8((u8*)gUnknown_203B484,0,0x5c);
for(iVar1 = 0; iVar1 < 0x20; iVar1++){
// NOTE: when it adds the index regs flip
// Instead of add r0, r0, r1 -> add r0, r1, r0
// Everything else matches...
gUnknown_203B480[iVar1].unk0 = 0;
gUnknown_203B480[iVar1].unk22 = 0;
// NOTE: we use a temp variable here to force the match
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].mailType = WONDER_MAIL_TYPE_NONE;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk20.id = ITEM_NOTHING;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk2D = 0;
}
gUnknown_203B48C->unk0 = 0;
@ -64,66 +67,6 @@ void sub_8095118(void)
gUnknown_203B48C->unk4[iVar1] = -1;
}
}
#else
NAKED
void sub_8095118(void)
{
asm_unified("\tpush {r4,lr}\n"
"\tldr r4, _0809517C\n"
"\tldr r0, [r4]\n"
"\tmovs r2, 0xC0\n"
"\tlsls r2, 3\n"
"\tmovs r1, 0\n"
"\tbl MemoryFill8\n"
"\tldr r0, _08095180\n"
"\tldr r0, [r0]\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x5C\n"
"\tbl MemoryFill8\n"
"\tmovs r2, 0\n"
"\tmovs r1, 0\n"
"\tmovs r3, 0x1F\n"
"_0809513A:\n"
"\tldr r0, [r4]\n"
"\tadds r0, r1\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, r1\n"
"\tadds r0, 0x22\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, r1\n"
"\tadds r0, 0x2D\n"
"\tstrb r2, [r0]\n"
"\tadds r1, 0x30\n"
"\tsubs r3, 0x1\n"
"\tcmp r3, 0\n"
"\tbge _0809513A\n"
"\tldr r2, _08095184\n"
"\tldr r1, [r2]\n"
"\tmovs r0, 0\n"
"\tstr r0, [r1]\n"
"\tmovs r3, 0\n"
"\tmovs r4, 0x1\n"
"\tnegs r4, r4\n"
"_08095166:\n"
"\tldr r0, [r2]\n"
"\tlsls r1, r3, 2\n"
"\tadds r0, 0x4\n"
"\tadds r0, r1\n"
"\tstr r4, [r0]\n"
"\tadds r3, 0x1\n"
"\tcmp r3, 0x1F\n"
"\tble _08095166\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0809517C: .4byte gUnknown_203B480\n"
"_08095180: .4byte gUnknown_203B484\n"
"_08095184: .4byte gUnknown_203B48C");
}
#endif
void nullsub_206(void)
{
@ -133,12 +76,12 @@ void nullsub_207(void)
{
}
s32 sub_8095190(void)
s32 FindOpenMailSlot(void)
{
int index;
s32 index;
for(index = 2; index < 0x20; index++){
if(gUnknown_203B480[index].unk0 == 0)
if(gUnknown_203B480[index].mailType == WONDER_MAIL_TYPE_NONE)
return index;
}
return -1;

View File

@ -1,5 +1,10 @@
#include "global.h"
#include "dungeon.h"
#include "memory.h"
#include "pokemon.h"
#include "random.h"
#include "save.h"
#include "text_util.h"
#include "code_8094F88.h"
extern struct unkStruct_203B484 *gUnknown_203B484;
@ -15,11 +20,212 @@ extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveS
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
extern u32 sub_8095324(u32);
s32 CountMailType(u8);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern s32 sub_8094E4C(void);
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern void sub_8094D28(s32);
struct unkStruct_809542C
{
struct DungeonLocation unk0;
u32 unk4;
};
bool8 sub_80951FC(struct unkStruct_203B480 *param_1)
{
bool8 bVar1 = gUnknown_203B480[1].mailType != 0;
gUnknown_203B480[1] = *param_1;
return bVar1;
}
struct unkStruct_203B480 * sub_8095228(u8 index)
{
struct unkStruct_203B480 *ptr;
ptr = &gUnknown_203B480[index];
return ptr;
}
void sub_8095240(u8 index)
{
struct unkStruct_203B480 *unused;
MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480));
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].mailType = 0;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].unk20.id = 0;
}
void sub_8095274(u32 param_1)
{
s32 iVar2;
s32 iVar3;
gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1;
iVar2 = gUnknown_203B48C->unk0;
iVar3 = 0;
if (iVar2 < 0x1f) {
iVar3 = iVar2 + 1;
}
gUnknown_203B48C->unk0 = iVar3;
}
bool8 sub_8095298(s32 param_1)
{
s32 index;
for(index = 0; index < 0x20; index++)
{
if(gUnknown_203B48C->unk4[index] == param_1) return TRUE;
}
return FALSE;
}
void sub_80952C4(void)
{
s32 index;
gUnknown_203B48C->unk0 = 0;
for(index = 0; index < 0x20; index++)
{
gUnknown_203B48C->unk4[index] = -1;
}
}
bool8 sub_80952F0(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10 == param_2)) return TRUE;
}
return FALSE;
}
s32 CountMailType(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) total++;
}
return total;
}
u32 sub_8095350(void)
{
struct unkStruct_203B480 *ptr;
u32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType != 0) total++;
}
return total;
}
s32 sub_8095374(void)
{
struct unkStruct_203B480 *ptr;
s32 retvar = -1;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == 1) retvar = index;
}
return retvar;
}
s32 sub_809539C(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10 == param_2)) return index;
}
return -1;
}
s32 sub_80953D4(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) return index;
}
return -1;
}
s32 sub_8095400(u32 param_1)
{
u32 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0].unk10; index < 0x20; ptr += 0xC, index++)
{
if (*ptr == param_1) return index;
}
return -1;
}
void sub_809542C(struct unkStruct_809542C *param_1)
{
u32 uVar4;
#ifndef NONMATCHING
register struct unkStruct_203B480 *preload asm("r2");
#else
struct unkStruct_203B480 *preload;
#endif
u8 buffer [20];
gUnknown_203B480->mailType = 1;
preload = gUnknown_203B480;
uVar4 = param_1->unk4;
preload->dungeon = param_1->unk0;
preload->unk8 = uVar4;
sub_8094D28(Rand32Bit());
gUnknown_203B480->unk10 = sub_8094E4C();
gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum;
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
gUnknown_203B480->unk24 = sub_8011C34();
gUnknown_203B480->unk2C = GetUnk3(gUnknown_203B480->dungeon.id);
}
void sub_8095494(struct unkStruct_809542C *param_1, u8 index)
{
u32 uVar1;
struct DungeonLocation temp;
struct unkStruct_203B480 *mail;
mail = gUnknown_203B480;
mail += index;
temp = mail->dungeon;
uVar1 = mail->unk8;
param_1->unk0 = temp;
param_1->unk4 = uVar1;
}
u32 sub_80954B4(void)
{
if(sub_8095324(3) != 0)
if(CountMailType(3) != 0)
return 1;
else
return 0;
@ -114,15 +320,15 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
{
u8 temp;
RestoreIntegerBits(a, &b->unk0, 4);
RestoreDungeonLocation(a, &b->unk4);
RestoreIntegerBits(a, &b->mailType, 4);
RestoreDungeonLocation(a, &b->dungeon);
RestoreIntegerBits(a, &b->unk8, 0x18);
RestoreIntegerBits(a, &b->unkC, 0x9);
RestoreIntegerBits(a, &b->clientSpecies, 0x9);
RestoreIntegerBits(a, &b->unk10, 0x20);
RestoreIntegerBits(a, &b->unk14, 0x50);
RestoreIntegerBits(a, &b->unk20, 0x8);
RestoreIntegerBits(a, &b->unk21, 0x8);
RestoreIntegerBits(a, &b->unk22, 0x8);
RestoreIntegerBits(a, &b->playerName, 0x50);
RestoreIntegerBits(a, &b->unk20.flags, 0x8);
RestoreIntegerBits(a, &b->unk20.quantity, 0x8);
RestoreIntegerBits(a, &b->unk20.id, 0x8);
RestoreIntegerBits(a, &b->unk24, 0x20);
RestoreIntegerBits(a, &b->unk28, 0x20);
RestoreIntegerBits(a, &b->unk2C, 0x8);
@ -139,15 +345,15 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
neg1 = -1;
zero = 0;
SaveIntegerBits(a, &b->unk0, 4);
SaveDungeonLocation(a, &b->unk4);
SaveIntegerBits(a, &b->mailType, 4);
SaveDungeonLocation(a, &b->dungeon);
SaveIntegerBits(a, &b->unk8, 0x18);
SaveIntegerBits(a, &b->unkC, 0x9);
SaveIntegerBits(a, &b->clientSpecies, 0x9);
SaveIntegerBits(a, &b->unk10, 0x20);
SaveIntegerBits(a, &b->unk14, 0x50);
SaveIntegerBits(a, &b->unk20, 0x8);
SaveIntegerBits(a, &b->unk21, 0x8);
SaveIntegerBits(a, &b->unk22, 0x8);
SaveIntegerBits(a, &b->playerName, 0x50);
SaveIntegerBits(a, &b->unk20.flags, 0x8);
SaveIntegerBits(a, &b->unk20.quantity, 0x8);
SaveIntegerBits(a, &b->unk20.id, 0x8);
SaveIntegerBits(a, &b->unk24, 0x20);
SaveIntegerBits(a, &b->unk28, 0x20);
SaveIntegerBits(a, &b->unk2C, 0x8);

View File

@ -3,12 +3,12 @@
#include "item.h"
#include "friend_area.h"
#include "constants/friend_area.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "constants/wonder_mail.h"
#include "dungeon.h"
#include "code_80958E8.h"
#include "pokemon.h"
#include "code_8094F88.h"
extern s32 GetDungeonFloorCount(u8);
extern bool8 sub_809017C(struct DungeonLocation *);
@ -19,52 +19,52 @@ extern bool8 IsNotMoneyOrUsedTMItem(u8);
extern u8 xxx_bit_lut_lookup_8091E50(u8 ,u8 );
extern u32 GetMaxItemCount(u8);
extern bool8 sub_803C0DC(s16);
extern void sub_8096040(u8);
extern void sub_80965B8(u8);
extern void sub_8096C3C(u8);
extern void ResetMailboxSlot(u8);
extern void ResetPelipperBoardSlot(u8);
extern void ResetJobSlot(u8);
extern bool8 ValidateWonderMail(struct WonderMail *);
extern struct unkStruct_203B490 *gUnknown_203B490;
extern struct unkStruct_203B490 gUnknown_2039448;
void sub_80958E8()
void LoadMailInfo(void)
{
gUnknown_203B490 = &gUnknown_2039448;
}
struct unkStruct_203B490 *sub_80958F8(void)
struct unkStruct_203B490 *GetMailInfo(void)
{
return &gUnknown_2039448;
}
void sub_8095900(void)
void InitializeMailJobsNews(void)
{
s32 iVar2;
for(iVar2 = 0; iVar2 < 4; iVar2++)
s32 index;
for(index = 0; index < 4; index++)
{
sub_8096040(iVar2);
ResetMailboxSlot(index);
}
for(iVar2 = 0; iVar2 < 8; iVar2++)
for(index = 0; index < 8; index++)
{
sub_80965B8(iVar2);
ResetPelipperBoardSlot(index);
}
for(iVar2 = 0; iVar2 < 8; iVar2++)
for(index = 0; index < 8; index++)
{
sub_8096C3C(iVar2);
ResetJobSlot(index);
}
for(iVar2 = 0; iVar2 < 0x38; iVar2++)
for(index = 0; index < 56; index++)
{
gUnknown_203B490->unk2F0[iVar2] = 0;
gUnknown_203B490->PKMNNewsReceived[index] = FALSE;
}
gUnknown_203B490->unk328 = 0;
gUnknown_203B490->unk328 = FALSE;
MemoryClear8(gUnknown_203B490->unk190, sizeof(gUnknown_203B490->unk190));
MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8));
for(iVar2 = 0; iVar2 < 16; iVar2++)
for(index = 0; index < 16; index++)
{
gUnknown_203B490->unk230[iVar2].dungeon = 99;
gUnknown_203B490->unk230[iVar2].unk1 = 1;
gUnknown_203B490->unk230[iVar2].unk4 = 0;
gUnknown_203B490->unk230[iVar2].unk8 = 0;
gUnknown_203B490->unk230[index].dungeon.id = 99;
gUnknown_203B490->unk230[index].dungeon.floor = 1;
gUnknown_203B490->unk230[index].unk4 = 0;
gUnknown_203B490->unk230[index].unk8 = 0;
}
}

373
src/code_80958E8_1.c Normal file
View File

@ -0,0 +1,373 @@
#include "global.h"
#include "constants/dungeon.h"
#include "constants/monster.h"
#include "constants/wonder_mail.h"
#include "item.h"
#include "code_80958E8.h"
#include "team_inventory.h"
#include "random.h"
struct unkStruct_8096AF8
{
bool8 unk0;
u16 clientSpecies;
u16 targetSpecies;
};
extern u8 IsJobSlotEmpty(u8);
extern struct WonderMail * GetJobSlotInfo(u8);
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
extern u8 sub_8095E38(struct WonderMail *, u8, u8, bool8);
extern void sub_808CFD0(s32, s16, u8, u8, u32 *, u32);
extern void ResetJobSlot(u8);
extern void sub_8096C80(void);
extern void sub_8096D24(void);
extern void sub_80965F4();
extern void SortPelipperJobs();
extern struct WonderMail *GetPelipperBoardSlotInfo(u8);
u8 sub_8097318(s16 param_1);
extern u8 sub_8095B28(struct WonderMail *);
void SortPelipperJobs(void)
{
s32 index1;
s32 index2;
struct WonderMail mail;
for(index1 = 0; index1 < 7; index1++)
{
for(index2 = index1 + 1; index2 < 8; index2++)
{
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != WONDER_MAIL_TYPE_NONE)
{
if((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) ||
((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.floor)))
{
mail = gUnknown_203B490->pelipperBoardJobs[index1];
gUnknown_203B490->pelipperBoardJobs[index1] = gUnknown_203B490->pelipperBoardJobs[index2];
gUnknown_203B490->pelipperBoardJobs[index2] = mail;
}
}
}
}
}
void GeneratePelipperJobs(void)
{
s32 range;
struct WonderMail *mail;
s32 index;
range = RandRange(4,8);
for(index = 0; index < 8; index++)
{
gUnknown_203B490->pelipperBoardJobs[index].mailType = WONDER_MAIL_TYPE_NONE;
}
index = 0;
if (sub_8097318(0xe) != 0) {
mail = GetPelipperBoardSlotInfo(0);
mail->mailType = 2;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 1;
mail->dungeon.id = DUNGEON_UPROAR_FOREST;
mail->dungeon.floor = 10;
mail->unk8 = Rand32Bit() & 0xffffff;
mail->clientSpecies = MONSTER_WYNAUT;
mail->targetSpecies = MONSTER_MANKEY;
mail->targetItem = 0;
mail->rewardType = ITEM;
mail->itemReward = ITEM_REVIVER_SEED;
mail->friendAreaReward = 0;
index = 1;
}
if (sub_8097318(0xf) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 3;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 2;
mail->dungeon.id = DUNGEON_HOWLING_FOREST;
mail->dungeon.floor = 15;
mail->unk8 = Rand32Bit() & 0xffffff;
mail->clientSpecies = MONSTER_SMEARGLE;
mail->targetSpecies = MONSTER_SMEARGLE;
mail->targetItem = 0;
mail->rewardType = ITEM;
mail->itemReward = ITEM_REVIVER_SEED;
mail->friendAreaReward = 0;
index++;
}
if (sub_8097318(0x1c) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 4;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 3;
mail->dungeon.id = DUNGEON_WISH_CAVE;
mail->dungeon.floor = 20;
mail->unk8 = Rand32Bit() & 0xffffff;
mail->clientSpecies = MONSTER_MEDICHAM;
mail->targetSpecies = MONSTER_MEDICHAM;
mail->targetItem = 0;
mail->rewardType = ITEM;
mail->itemReward = ITEM_REVIVER_SEED;
mail->friendAreaReward = 0;
index++;
}
for (; index <= range; index++) {
if (sub_8095B28(&gUnknown_203B490->pelipperBoardJobs[index]) == 0) break;
gUnknown_203B490->pelipperBoardJobs[index].rewardType = RandRange(MONEY, BLANK_4);
}
sub_80965F4();
SortPelipperJobs();
}
bool8 IsMailinJobSlot(struct WonderMail *mail)
{
struct WonderMail *jobSlot;
s32 index;
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < 8; jobSlot++, index++)
{
if(jobSlot->mailType != WONDER_MAIL_TYPE_NONE)
if(mail->missionType == jobSlot->missionType)
if(mail->unk2 == jobSlot->unk2)
if(mail->dungeon.id == jobSlot->dungeon.id)
if(mail->dungeon.floor == jobSlot->dungeon.floor)
if(mail->unk8 == jobSlot->unk8)
if(mail->clientSpecies == jobSlot->clientSpecies)
if(mail->targetSpecies == jobSlot->targetSpecies)
if(mail->targetItem == jobSlot->targetItem)
if(mail->rewardType == jobSlot->rewardType)
if(mail->itemReward == jobSlot->itemReward)
if(mail->friendAreaReward == jobSlot->friendAreaReward)
return TRUE;
}
return FALSE;
}
bool8 sub_809693C(struct WonderMail *mail)
{
u8 dungeonIndex;
u8 floor;
bool8 escortMission;
s32 index;
dungeonIndex = mail->dungeon.id;
floor = mail->dungeon.floor;
escortMission = FALSE;
if (!IsValidWonderMail(mail)) {
return FALSE;
}
else
{
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
escortMission = TRUE;
for(index = 0; index < 8; index++)
{
if ((gUnknown_203B490->jobSlots[index].mailType == 6) &&
(sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeonIndex,floor,escortMission) != 0))
{
return TRUE;
}
}
}
return FALSE;
}
s32 GetNumAcceptedJobs(void)
{
s32 index;
s32 count;
count = 0;
for(index = 0; index < 8; index++)
{
if (!IsJobSlotEmpty(index)) {
count++;
}
}
return count;
}
s32 CountJobsinDungeon(u8 dungeon)
{
struct WonderMail *mail;
s32 index;
s32 count;
count = 0;
for(index = 0; index < 8; index++)
{
mail = GetJobSlotInfo(index);
if ((mail->dungeon.id == dungeon) &&
(((mail->mailType == 6 || (mail->mailType == 8)) || (mail->mailType == 9)))) {
count++;
}
}
return count;
}
bool8 sub_8096A08(u8 dungeon, s32 param_2)
{
struct WonderMail *mail;
s32 index;
u32 local_14;
s32 temp;
for(index = 0; index < 8; index++)
{
mail = GetJobSlotInfo(index);
if(mail->dungeon.id == dungeon)
if(mail->mailType == 6)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
{
temp = 0xffffff00;
local_14 &= temp;
temp = 0x4A;
local_14 |= temp;
temp = 0xffff00ff;
local_14 &= temp;
temp = 0x100;
local_14 |= temp;
sub_808CFD0(param_2,mail->clientSpecies,0,0,&local_14,0);
return TRUE;
}
}
return FALSE;
}
bool8 sub_8096A78(struct WonderMail *mail)
{
s32 index;
for(index = 0; index < 8; index++)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
{
gUnknown_203B490->jobSlots[index] = *mail;
return FALSE;
}
}
return TRUE;
}
struct WonderMail *GetJobSlotInfo(u8 index)
{
return &gUnknown_203B490->jobSlots[index];
}
bool8 IsJobSlotEmpty(u8 index)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
return TRUE;
else
return FALSE;
}
void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
{
struct WonderMail *jobSlot;
struct Item *item;
s32 index;
jobSlot = GetJobSlotInfo(slotIndex);
param_1->unk0 = FALSE;
param_1->clientSpecies = jobSlot->clientSpecies;
param_1->targetSpecies = MONSTER_NONE;
if (jobSlot->dungeon.id == dungeon) {
switch(jobSlot->missionType) {
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
if (jobSlot->mailType == 6) {
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
if (((item->flags & ITEM_FLAG_EXISTS)) && (item->id == jobSlot->targetItem)) {
param_1->unk0 = TRUE;
}
}
}
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
if (jobSlot->mailType == 9) {
param_1->unk0 = TRUE;
}
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
if (jobSlot->mailType == 9) {
param_1->unk0 = TRUE;
param_1->targetSpecies = jobSlot->targetSpecies;
}
break;
}
}
}
// Unused
s16 sub_8096B98(u8 dungeon)
{
struct WonderMail *mail;
s32 index;
for(index = 0; index < 8; index++)
{
mail = GetJobSlotInfo(index);
if(mail->mailType == 6)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
if(mail->dungeon.id == dungeon)
return mail->targetSpecies;
}
return 0;
}
void sub_8096BD0(void)
{
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
{
switch(mail->mailType)
{
case 7:
case 8:
case 9:
ResetJobSlot(index);
break;
}
}
sub_8096C80();
sub_8096D24();
}
bool8 sub_8096C08(u8 *param_1)
{
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
{
if(mail->mailType > 4 && mail->unk2 == 4)
{
param_1[0] = index;
return TRUE;
}
}
return FALSE;
}
void ResetJobSlot(u8 index)
{
gUnknown_203B490->jobSlots[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->jobSlots[index].dungeon.id = 99;
gUnknown_203B490->jobSlots[index].dungeon.floor = 0;
gUnknown_203B490->jobSlots[index].rewardType = MONEY1;
}

View File

@ -1,62 +1,40 @@
#include "global.h"
#include "pokemon.h"
#include "wonder_mail.h"
struct subStruct_203B490
{
// size: 0xC
struct DungeonLocation dungeon;
u32 unk4;
u32 unk8;
};
struct unkStruct_203B490
{
// size: 0x330?
struct WonderMail unk0[4];
struct WonderMail unk50[8];
struct WonderMail unkF0[8];
u8 unk190[0x28];
u8 unk1B8[0x78];
struct subStruct_203B490 unk230[16];
u8 unk2F0[0x38];
u8 unk328;
};
extern struct unkStruct_203B490 *gUnknown_203B490;
#include "code_80958E8.h"
void SaveWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
void RestoreWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
extern s32 sub_8096EB0(void);
extern s32 sub_8096EB0(struct WonderMail *);
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void sub_80015C0(u32, u32);
extern u32 sub_8001784(u32, u32, u16);
extern void sub_809674C();
extern void GeneratePelipperJobs(void);
extern void sub_800199C(u32, s32, u32, s32);
bool8 sub_8096F50(struct WonderMail *r0)
bool8 sub_8096F50(struct WonderMail *mail)
{
s32 index;
s32 temp2;
struct subStruct_203B490 *temp;
temp2 = sub_8096EB0();
temp2 = sub_8096EB0(mail);
for(index = 0; index < 0x10; index++)
{
temp = &gUnknown_203B490->unk230[index];
if(temp->dungeon.id == r0->dungeon.id)
if(temp->dungeon.floor == r0->dungeon.floor)
if(temp->unk4 == r0->unk8)
if(temp->dungeon.id == mail->dungeon.id)
if(temp->dungeon.floor == mail->dungeon.floor)
if(temp->unk4 == mail->unk8)
if(temp->unk8 == temp2)
return TRUE;
}
return FALSE;
}
u32 sub_8096FA0(u8 *r0, u32 size)
u32 RestoreMailInfo(u8 *r0, u32 size)
{
s32 index;
struct unkStruct_8094924 backup;
@ -65,29 +43,29 @@ u32 sub_8096FA0(u8 *r0, u32 size)
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
for(index = 0; index < 4; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->unk0[index]);
RestoreWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
}
for(index = 0; index < 8; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->unk50[index]);
RestoreWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
}
for(index = 0; index < 8; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->unkF0[index]);
RestoreWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
}
for(index = 0; index < 0x38; index++)
{
RestoreIntegerBits(&backup, &temp, 1);
if(temp & 1)
gUnknown_203B490->unk2F0[index] = 1;
gUnknown_203B490->PKMNNewsReceived[index] = TRUE;
else
gUnknown_203B490->unk2F0[index] = 0;
gUnknown_203B490->PKMNNewsReceived[index] = FALSE;
}
RestoreIntegerBits(&backup, &temp, 1);
if(temp & 1)
gUnknown_203B490->unk328 = 1;
gUnknown_203B490->unk328 = TRUE;
else
gUnknown_203B490->unk328 = 0;
gUnknown_203B490->unk328 = FALSE;
RestoreIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
RestoreIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
@ -101,7 +79,7 @@ u32 sub_8096FA0(u8 *r0, u32 size)
return backup.unk8;
}
u32 sub_80970D8(u8 *r0, u32 size)
u32 SaveMailInfo(u8 *r0, u32 size)
{
s32 index;
struct unkStruct_8094924 backup;
@ -110,25 +88,25 @@ u32 sub_80970D8(u8 *r0, u32 size)
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
for(index = 0; index < 4; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->unk0[index]);
SaveWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
}
for(index = 0; index < 8; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->unk50[index]);
SaveWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
}
for(index = 0; index < 8; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->unkF0[index]);
SaveWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
}
for(index = 0; index < 0x38; index++)
{
if(gUnknown_203B490->unk2F0[index] != 0)
if(gUnknown_203B490->PKMNNewsReceived[index] != 0)
temp = -1;
else
temp = 0;
SaveIntegerBits(&backup, &temp, 1);
}
if(gUnknown_203B490->unk328 != 0)
if(gUnknown_203B490->unk328)
temp = -1;
else
temp = 0;
@ -221,7 +199,7 @@ void sub_809733C(short param_1,u32 param_2)
case 0xE:
case 0xF:
case 0x1C:
sub_809674C();
GeneratePelipperJobs();
break;
}
}

View File

@ -46,7 +46,7 @@ struct DungeonLocation *GetDungeonLocationInfo(void)
void sub_80976A8(void)
{
s32 iVar2;
s32 index;
gUnknown_203B494->unk0 = 0;
gUnknown_203B494->unk14 = 0;
@ -56,14 +56,14 @@ void sub_80976A8(void)
gUnknown_203B494->unk8 = 0;
gUnknown_203B494->unkC = 0;
for(iVar2 = 0; iVar2 < 0xE; iVar2++)
for(index = 0; index < 0xE; index++)
{
gUnknown_203B494->unk1C[iVar2] = 0;
gUnknown_203B494->unk1C[index] = 0;
}
for(iVar2 = 0; iVar2 < 0xD; iVar2++)
for(index = 0; index < 0xD; index++)
{
gUnknown_203B494->unk8C[iVar2] = 0;
gUnknown_203B494->unk8C[index] = 0;
}
}

43
src/data/trade_items.h Normal file
View File

@ -0,0 +1,43 @@
const u8 gUnknown_80E61A4[] = "What would you like to do? ";
const u8 gUnknown_80E61C0[] = "Please choose the item to be sent.";
ALIGNED(4) const u8 gUnknown_80E61E4[] = _("{COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}\n"
"will be sent.\n"
"Is that OK?");
ALIGNED(4) const u8 gUnknown_80E6214[] = _("Your friend will send you an item.\n"
"When you are both ready{COMMA} you\n"
"may communicate.");
ALIGNED(4) const u8 gUnknown_80E6268[] = _("Preparing to send an item to your\n"
"friend. When you are both ready{COMMA}\n"
"you may communicate.");
ALIGNED(4) const u8 gUnknown_80E62C4[] = _("{CENTER_ALIGN}In communication...\n"
"{CENTER_ALIGN}Please wait with the power on.\n"
"{CENTER_ALIGN}To cancel{COMMA} press {B_BUTTON}.");
ALIGNED(4) const u8 gUnknown_80E6314[] = _("You received\n"
"{COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.\n"
"Your adventure will be saved.");
ALIGNED(4) const u8 gUnknown_80E6358[] = _("You sent {COLOR_1 LIGHT_BLUE_2}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.");
// Trade Items Menu Link Error Messages
const u8 gTradeItemsCommunicationError[] = "There was a communication error.";
const u8 gUnknown_80E639C[] = "An incorrect number of GBA systems are\n"
"connected.\n"
"Please redo this process from the start.";
const u8 gUnknown_80E63F8[] = "There is no response from your friend.\n"
"Please redo this process from the start.";
const u8 gUnknown_80E6448[] = "The sender and receiver appear to be\n"
"in different modes.\n"
"Please redo the process from the start.";
ALIGNED(4) const u8 gUnknown_80E64AC[] = _("There is no response from your friend.\n"
"Please make sure the sender and receiver\n"
"are ready{COMMA} then redo this from the start.");
const u8 gTradeItemsHowManyText[] = "How many?";
static const u8 aligner[] = "pksdir0";

View File

@ -7,11 +7,11 @@
#include "dungeon_entity.h"
#include "dungeon_global_data.h"
#include "dungeon_leader.h"
#include "dungeon_movement_1.h"
#include "dungeon_util.h"
#include "dungeon_pokemon_attributes.h"
#include "pokemon.h"
#include "item.h"
#include "status_checks_1.h"
extern u8 *gUnknown_80F91EC[];
extern u8 *gUnknown_80F7C50[];
@ -44,8 +44,8 @@ extern void TickStatusHeal(struct Entity *);
void sub_8044820(void)
{
s32 movSpeed;
struct EntityInfo *entityData;
struct EntityInfo *entityData2;
struct EntityInfo *entityInfo;
struct EntityInfo *entityInfo2;
struct Entity * entity;
struct Entity * entity2;
s32 index;
@ -54,21 +54,21 @@ void sub_8044820(void)
entity = gDungeon->wildPokemon[index];
if (EntityExists(entity)) {
if (sub_8044B28()) break;
entityData = entity->info;
entityInfo = entity->info;
gDungeon->unkB8 = entity;
TriggerWeatherAbilities();
if ((entityData->flags & MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY) == 0) {
if ((u16)(entityData->flags & MOVEMENT_FLAG_UNK_14) != 0) {
entityData->flags &= ~(MOVEMENT_FLAG_UNK_14);
if ((entityInfo->flags & MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY) == 0) {
if ((u16)(entityInfo->flags & MOVEMENT_FLAG_UNK_14) != 0) {
entityInfo->flags &= ~(MOVEMENT_FLAG_UNK_14);
}
else
{
entityData->aiNextToTarget = FALSE;
movSpeed = GetSpeedStatus(entity);
entityInfo->aiNextToTarget = FALSE;
movSpeed = CalcSpeedStage(entity);
if (gSpeedTurns[movSpeed][gDungeon->fractionalTurn] != 0) {
if (!entityData->attacking) {
entityData->flags &= ~(MOVEMENT_FLAG_UNK_14 | MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY);
entityData->recalculateFollow = FALSE;
if (!entityInfo->attacking) {
entityInfo->flags &= ~(MOVEMENT_FLAG_UNK_14 | MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY);
entityInfo->recalculateFollow = FALSE;
TickStatusHeal(entity);
if (EntityExists(entity)) {
sub_8071DA4(entity);
@ -89,12 +89,12 @@ void sub_8044820(void)
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
{
entity2 = gDungeon->wildPokemon[index];
if ((EntityExists(entity2)) && (entityData2 = entity2->info, entityData2->aiNextToTarget))
if ((EntityExists(entity2)) && (entityInfo2 = entity2->info, entityInfo2->aiNextToTarget))
{
sub_8074094(entity2);
if (EntityExists(entity2)) {
sub_8071DA4(entity2);
entityData2->aiNextToTarget = FALSE;
entityInfo2->aiNextToTarget = FALSE;
}
}
}
@ -103,8 +103,8 @@ void sub_8044820(void)
void TrySpawnMonsterAndActivatePlusMinus(void)
{
struct EntityInfo * entityData;
struct EntityInfo * entityData2;
struct EntityInfo * entityInfo;
struct EntityInfo * entityInfo2;
struct Entity *entity;
u32 isNotEnemy;
s32 index;
@ -122,11 +122,11 @@ void TrySpawnMonsterAndActivatePlusMinus(void)
{
entity = gDungeon->allPokemon[index];
if (EntityExists(entity)) {
entityData = entity->info;
entityData2 = entityData;
entityData->attacking = FALSE;
entityInfo = entity->info;
entityInfo2 = entityInfo;
entityInfo->attacking = FALSE;
if(entityData->isNotTeamMember)
if(entityInfo->isNotTeamMember)
{
isNotEnemy = FALSE;
}
@ -136,7 +136,7 @@ void TrySpawnMonsterAndActivatePlusMinus(void)
if (HasAbility(entity, ABILITY_LIGHTNINGROD)) {
gDungeon->lightningRodPokemon = entity;
gDungeon->unk17B38 = entityData2->unk98;
gDungeon->unk17B38 = entityInfo2->unk98;
}
if (HasAbility(entity, ABILITY_MINUS)) {
gDungeon->minusIsActive[isNotEnemy] = TRUE;
@ -222,28 +222,28 @@ u8 *sub_8044BA8(u16 param_1, u8 id)
void sub_8044C10(u8 param_1)
{
struct EntityInfo * entityData = GetLeaderInfo();
struct EntityInfo * entityInfo = GetLeaderInfo();
entityData->action.action = ACTION_NOTHING;
entityInfo->action.action = ACTION_NOTHING;
if(param_1)
{
entityData->action.actionUseIndex = 0;
entityData->action.unkC = 0;
entityData->action.itemTargetPosition.x = -1;
entityData->action.itemTargetPosition.y = -1;
entityInfo->action.actionUseIndex = 0;
entityInfo->action.unkC = 0;
entityInfo->action.itemTargetPosition.x = -1;
entityInfo->action.itemTargetPosition.y = -1;
}
}
void sub_8044C50(u16 action)
{
struct EntityInfo * entityData = GetLeaderInfo();
struct EntityInfo * entityInfo = GetLeaderInfo();
entityData->action.action = action;
entityData->action.actionUseIndex = 0;
entityData->action.unkC = 0;
entityData->action.itemTargetPosition.x = -1;
entityData->action.itemTargetPosition.y = -1;
entityInfo->action.action = action;
entityInfo->action.actionUseIndex = 0;
entityInfo->action.unkC = 0;
entityInfo->action.itemTargetPosition.x = -1;
entityInfo->action.itemTargetPosition.y = -1;
}
void ClearMonsterActionFields(struct ActionContainer *actionPointer)

View File

@ -47,13 +47,13 @@ extern void sub_803E708(u32, u32);
u32 sub_8075818(struct Entity *entity)
{
struct Tile *tile;
struct EntityInfo *entityData;
struct EntityInfo *entityInfo;
struct Entity *subEntity;
struct Item *item;
u8 *trapData; // TODO: turn into struct when more research is done..
u8 r1;
entityData = entity->info;
entityInfo = entity->info;
if(EntityExists(entity))
{
tile = GetTileAtEntitySafe(entity);
@ -75,21 +75,21 @@ u32 sub_8075818(struct Entity *entity)
r1 = 0;
if(trapData[1] == 0)
{
if(!subEntity->isVisible || entityData->isNotTeamMember)
if(!subEntity->isVisible || entityInfo->isNotTeamMember)
goto flag_check;
else
goto error;
}
else if(trapData[1] == 1)
{
if(!entityData->isNotTeamMember)
if(!entityInfo->isNotTeamMember)
goto flag_check;
else
goto error;
}
else if(trapData[1] == 2)
{
if(!entityData->isNotTeamMember)
if(!entityInfo->isNotTeamMember)
r1 = 1;
}
flag_check:
@ -98,13 +98,13 @@ flag_check:
else
goto error;
case ENTITY_ITEM:
if(!entityData->isTeamLeader)
if(!entityInfo->isTeamLeader)
{
if(!(entityData->heldItem.flags & ITEM_FLAG_EXISTS))
if(!(entityInfo->heldItem.flags & ITEM_FLAG_EXISTS))
{
if(!(tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)))
{
if(entityData->isNotTeamMember)
if(entityInfo->isNotTeamMember)
break;
else
{

Some files were not shown because too many files have changed in this diff Show More