@@ -332,7 +332,7 @@ sub_806CAC8: @ 806CAC8
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, 0xFF
|
||||
bl sub_8058F48
|
||||
bl MapGridGetMetatileAttributeAt
|
||||
mov r8, r0
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
|
||||
@@ -2921,7 +2921,7 @@ IsPlayerFacingSurfableFishableWater: @ 805C8B0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r5, r2]
|
||||
bl sub_805C938
|
||||
bl MetatileAtCoordsIsWaterTile
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
@@ -2940,24 +2940,24 @@ _0805C92E:
|
||||
bx r1
|
||||
thumb_func_end IsPlayerFacingSurfableFishableWater
|
||||
|
||||
thumb_func_start sub_805C938
|
||||
sub_805C938: @ 805C938
|
||||
thumb_func_start MetatileAtCoordsIsWaterTile
|
||||
MetatileAtCoordsIsWaterTile: @ 805C938
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
movs r2, 0x1
|
||||
bl sub_8058F48
|
||||
bl MapGridGetMetatileAttributeAt
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x2
|
||||
bl sub_805A2BC
|
||||
bl TestMetatileAttributeBit
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C938
|
||||
thumb_func_end MetatileAtCoordsIsWaterTile
|
||||
|
||||
thumb_func_start ClearPlayerAvatarInfo
|
||||
ClearPlayerAvatarInfo: @ 805C95C
|
||||
|
||||
@@ -1,535 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8097874
|
||||
sub_8097874: @ 8097874
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
movs r2, 0x1
|
||||
bl sub_8058F48
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x1
|
||||
bl sub_805A2BC
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097874
|
||||
|
||||
thumb_func_start SetUpFieldMove_Cut
|
||||
SetUpFieldMove_Cut: @ 8097898
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x4
|
||||
ldr r4, _080978CC @ =gUnknown_2039874
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
bl CutMoveRuinValleyCheck
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
beq _080978E0
|
||||
movs r0, 0x5F
|
||||
bl CheckObjectGraphicsInFrontOfPlayer
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _08097904
|
||||
ldr r1, _080978D0 @ =gFieldCallback2
|
||||
ldr r0, _080978D4 @ =FieldCallback_PrepareFadeInFromMenu
|
||||
str r0, [r1]
|
||||
ldr r1, _080978D8 @ =gPostMenuFieldCallback
|
||||
ldr r0, _080978DC @ =sub_80979D0
|
||||
b _080978EC
|
||||
.align 2, 0
|
||||
_080978CC: .4byte gUnknown_2039874
|
||||
_080978D0: .4byte gFieldCallback2
|
||||
_080978D4: .4byte FieldCallback_PrepareFadeInFromMenu
|
||||
_080978D8: .4byte gPostMenuFieldCallback
|
||||
_080978DC: .4byte sub_80979D0
|
||||
_080978E0:
|
||||
strb r0, [r4]
|
||||
_080978E2:
|
||||
ldr r1, _080978F4 @ =gFieldCallback2
|
||||
ldr r0, _080978F8 @ =FieldCallback_PrepareFadeInFromMenu
|
||||
str r0, [r1]
|
||||
ldr r1, _080978FC @ =gPostMenuFieldCallback
|
||||
ldr r0, _08097900 @ =sub_8097984
|
||||
_080978EC:
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
b _08097970
|
||||
.align 2, 0
|
||||
_080978F4: .4byte gFieldCallback2
|
||||
_080978F8: .4byte FieldCallback_PrepareFadeInFromMenu
|
||||
_080978FC: .4byte gPostMenuFieldCallback
|
||||
_08097900: .4byte sub_8097984
|
||||
_08097904:
|
||||
ldr r4, _0809797C @ =gPlayerFacingPosition
|
||||
adds r1, r4, 0x2
|
||||
adds r0, r4, 0
|
||||
bl PlayerGetDestCoords
|
||||
movs r7, 0
|
||||
adds r2, r4, 0
|
||||
ldr r0, _08097980 @ =0x0000ffff
|
||||
mov r8, r0
|
||||
_08097916:
|
||||
mov r1, r8
|
||||
adds r0, r1, r7
|
||||
ldrh r1, [r2, 0x2]
|
||||
adds r0, r1
|
||||
movs r6, 0
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
_08097924:
|
||||
mov r1, r8
|
||||
adds r0, r1, r6
|
||||
ldrh r1, [r2]
|
||||
adds r0, r1
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
str r2, [sp]
|
||||
bl MapGridGetZCoordAt
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, [sp]
|
||||
movs r1, 0x4
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r0, r1
|
||||
bne _0809795A
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8097874
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, [sp]
|
||||
cmp r0, 0x1
|
||||
beq _080978E2
|
||||
_0809795A:
|
||||
adds r0, r6, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
cmp r6, 0x2
|
||||
bls _08097924
|
||||
adds r0, r7, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0x2
|
||||
bls _08097916
|
||||
movs r0, 0
|
||||
_08097970:
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809797C: .4byte gPlayerFacingPosition
|
||||
_08097980: .4byte 0x0000ffff
|
||||
thumb_func_end SetUpFieldMove_Cut
|
||||
|
||||
thumb_func_start sub_8097984
|
||||
sub_8097984: @ 8097984
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl FieldEffectStart
|
||||
bl GetCursorSelectionMonId
|
||||
ldr r1, _0809799C @ =gFieldEffectArguments
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [r1]
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809799C: .4byte gFieldEffectArguments
|
||||
thumb_func_end sub_8097984
|
||||
|
||||
thumb_func_start sub_80979A0
|
||||
sub_80979A0: @ 80979A0
|
||||
push {lr}
|
||||
bl oei_task_add
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080979C8 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
ldr r2, _080979CC @ =sub_8097A20
|
||||
lsrs r0, r2, 16
|
||||
strh r0, [r1, 0x18]
|
||||
strh r2, [r1, 0x1A]
|
||||
movs r0, 0x12
|
||||
bl IncrementGameStat
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080979C8: .4byte gTasks
|
||||
_080979CC: .4byte sub_8097A20
|
||||
thumb_func_end sub_80979A0
|
||||
|
||||
thumb_func_start sub_80979D0
|
||||
sub_80979D0: @ 80979D0
|
||||
push {lr}
|
||||
bl GetCursorSelectionMonId
|
||||
ldr r1, _080979E8 @ =gFieldEffectArguments
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [r1]
|
||||
ldr r0, _080979EC @ =EventScript_FldEffCut
|
||||
bl ScriptContext1_SetupScript
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080979E8: .4byte gFieldEffectArguments
|
||||
_080979EC: .4byte EventScript_FldEffCut
|
||||
thumb_func_end sub_80979D0
|
||||
|
||||
thumb_func_start sub_80979F0
|
||||
sub_80979F0: @ 80979F0
|
||||
push {lr}
|
||||
bl oei_task_add
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _08097A18 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
ldr r2, _08097A1C @ =sub_8097C6C
|
||||
lsrs r0, r2, 16
|
||||
strh r0, [r1, 0x18]
|
||||
strh r2, [r1, 0x1A]
|
||||
movs r0, 0x12
|
||||
bl IncrementGameStat
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08097A18: .4byte gTasks
|
||||
_08097A1C: .4byte sub_8097C6C
|
||||
thumb_func_end sub_80979F0
|
||||
|
||||
thumb_func_start sub_8097A20
|
||||
sub_8097A20: @ 8097A20
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl FieldEffectActiveListRemove
|
||||
ldr r0, _08097A38 @ =gUnknown_2039874
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08097A3C
|
||||
bl CutMoveOpenDottedHoleDoor
|
||||
b _08097A42
|
||||
.align 2, 0
|
||||
_08097A38: .4byte gUnknown_2039874
|
||||
_08097A3C:
|
||||
movs r0, 0x3A
|
||||
bl FieldEffectStart
|
||||
_08097A42:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8097A20
|
||||
|
||||
thumb_func_start sub_8097A48
|
||||
sub_8097A48: @ 8097A48
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
movs r7, 0
|
||||
movs r0, 0x79
|
||||
bl PlaySE
|
||||
ldr r4, _08097B38 @ =gPlayerFacingPosition
|
||||
adds r1, r4, 0x2
|
||||
adds r0, r4, 0
|
||||
bl PlayerGetDestCoords
|
||||
mov r8, r4
|
||||
ldr r0, _08097B3C @ =0x0000ffff
|
||||
mov r9, r0
|
||||
_08097A68:
|
||||
mov r1, r9
|
||||
adds r0, r1, r7
|
||||
mov r2, r8
|
||||
ldrh r2, [r2, 0x2]
|
||||
adds r0, r2
|
||||
movs r6, 0
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
_08097A78:
|
||||
mov r1, r9
|
||||
adds r0, r1, r6
|
||||
mov r2, r8
|
||||
ldrh r2, [r2]
|
||||
adds r0, r2
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl MapGridGetZCoordAt
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r2, r8
|
||||
movs r1, 0x4
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r0, r1
|
||||
bne _08097ABC
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8097874
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _08097ABC
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8097B50
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_805F378
|
||||
_08097ABC:
|
||||
adds r0, r6, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
cmp r6, 0x2
|
||||
bls _08097A78
|
||||
adds r0, r7, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0x2
|
||||
bls _08097A68
|
||||
bl DrawWholeMapView
|
||||
ldr r4, _08097B40 @ =gUnknown_2039870
|
||||
movs r0, 0x8
|
||||
bl Alloc
|
||||
str r0, [r4]
|
||||
movs r7, 0
|
||||
ldr r5, _08097B44 @ =gSprites
|
||||
_08097AE2:
|
||||
ldr r0, _08097B48 @ =gPlayerAvatar
|
||||
ldrb r1, [r0, 0x4]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldrh r1, [r0, 0x2]
|
||||
lsls r1, 23
|
||||
lsrs r1, 7
|
||||
movs r2, 0x80
|
||||
lsls r2, 12
|
||||
adds r1, r2
|
||||
asrs r1, 16
|
||||
ldrb r2, [r0]
|
||||
adds r2, 0x14
|
||||
ldr r0, _08097B4C @ =gUnknown_83D414C
|
||||
movs r3, 0
|
||||
bl CreateSprite
|
||||
ldr r1, [r4]
|
||||
adds r1, r7
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, r7
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
lsls r1, r7, 5
|
||||
strh r1, [r0, 0x32]
|
||||
adds r0, r7, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0x7
|
||||
bls _08097AE2
|
||||
movs r0, 0
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08097B38: .4byte gPlayerFacingPosition
|
||||
_08097B3C: .4byte 0x0000ffff
|
||||
_08097B40: .4byte gUnknown_2039870
|
||||
_08097B44: .4byte gSprites
|
||||
_08097B48: .4byte gPlayerAvatar
|
||||
_08097B4C: .4byte gUnknown_83D414C
|
||||
thumb_func_end sub_8097A48
|
||||
|
||||
thumb_func_start sub_8097B50
|
||||
sub_8097B50: @ 8097B50
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
lsls r1, 16
|
||||
movs r4, 0
|
||||
lsrs r6, r0, 16
|
||||
asrs r0, 16
|
||||
lsrs r7, r1, 16
|
||||
asrs r1, 16
|
||||
bl MapGridGetMetatileIdAt
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 16
|
||||
ldr r1, _08097B84 @ =gUnknown_83D4100
|
||||
ldr r5, _08097B88 @ =0x0000ffff
|
||||
mov r12, r1
|
||||
_08097B6E:
|
||||
lsls r3, r4, 2
|
||||
adds r0, r3, r1
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r5
|
||||
beq _08097BA0
|
||||
cmp r0, r2
|
||||
beq _08097B8C
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
b _08097B6E
|
||||
.align 2, 0
|
||||
_08097B84: .4byte gUnknown_83D4100
|
||||
_08097B88: .4byte 0x0000ffff
|
||||
_08097B8C:
|
||||
lsls r0, r6, 16
|
||||
asrs r0, 16
|
||||
lsls r1, r7, 16
|
||||
asrs r1, 16
|
||||
mov r2, r12
|
||||
adds r2, 0x2
|
||||
adds r2, r3, r2
|
||||
ldrh r2, [r2]
|
||||
bl MapGridSetMetatileIdAt
|
||||
_08097BA0:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8097B50
|
||||
|
||||
thumb_func_start objc_8097BA8
|
||||
objc_8097BA8: @ 8097BA8
|
||||
movs r2, 0
|
||||
movs r1, 0x8
|
||||
strh r1, [r0, 0x2E]
|
||||
strh r2, [r0, 0x30]
|
||||
strh r2, [r0, 0x34]
|
||||
ldr r1, _08097BB8 @ =objc_8097BBC
|
||||
str r1, [r0, 0x1C]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08097BB8: .4byte objc_8097BBC
|
||||
thumb_func_end objc_8097BA8
|
||||
|
||||
thumb_func_start objc_8097BBC
|
||||
objc_8097BBC: @ 8097BBC
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
movs r1, 0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2E
|
||||
ldrsh r1, [r4, r2]
|
||||
bl Sin
|
||||
strh r0, [r4, 0x24]
|
||||
movs r1, 0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2E
|
||||
ldrsh r1, [r4, r2]
|
||||
bl Cos
|
||||
strh r0, [r4, 0x26]
|
||||
ldrh r0, [r4, 0x32]
|
||||
adds r0, 0x8
|
||||
movs r1, 0xFF
|
||||
ands r0, r1
|
||||
strh r0, [r4, 0x32]
|
||||
ldrh r1, [r4, 0x2E]
|
||||
adds r1, 0x1
|
||||
ldrh r2, [r4, 0x34]
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 18
|
||||
adds r1, r0
|
||||
strh r1, [r4, 0x2E]
|
||||
adds r2, 0x1
|
||||
strh r2, [r4, 0x34]
|
||||
ldrh r1, [r4, 0x30]
|
||||
movs r2, 0x30
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0x1C
|
||||
beq _08097C08
|
||||
adds r0, r1, 0x1
|
||||
strh r0, [r4, 0x30]
|
||||
b _08097C0C
|
||||
_08097C08:
|
||||
ldr r0, _08097C14 @ =sub_8097C18
|
||||
str r0, [r4, 0x1C]
|
||||
_08097C0C:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097C14: .4byte sub_8097C18
|
||||
thumb_func_end objc_8097BBC
|
||||
|
||||
thumb_func_start sub_8097C18
|
||||
sub_8097C18: @ 8097C18
|
||||
push {r4-r6,lr}
|
||||
movs r4, 0x1
|
||||
_08097C1C:
|
||||
ldr r6, _08097C64 @ =gUnknown_2039870
|
||||
ldr r0, [r6]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r5, _08097C68 @ =gSprites
|
||||
adds r0, r5
|
||||
bl DestroySprite
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0x7
|
||||
bls _08097C1C
|
||||
ldr r0, [r6]
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
movs r1, 0x3A
|
||||
bl FieldEffectStop
|
||||
ldr r0, [r6]
|
||||
bl Free
|
||||
bl sub_80696C0
|
||||
bl ScriptContext2_Disable
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097C64: .4byte gUnknown_2039870
|
||||
_08097C68: .4byte gSprites
|
||||
thumb_func_end sub_8097C18
|
||||
|
||||
thumb_func_start sub_8097C6C
|
||||
sub_8097C6C: @ 8097C6C
|
||||
push {lr}
|
||||
movs r0, 0x79
|
||||
bl PlaySE
|
||||
movs r0, 0x2
|
||||
bl FieldEffectActiveListRemove
|
||||
bl EnableBothScriptContexts
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8097C6C
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
+1
-1
@@ -42,7 +42,7 @@ _080C9B6E:
|
||||
thumb_func_start sub_80C9B74
|
||||
sub_80C9B74: @ 80C9B74
|
||||
push {r4,lr}
|
||||
bl oei_task_add
|
||||
bl CreateFieldEffectShowMon
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
|
||||
@@ -78,11 +78,11 @@ gFldEffScript_ExclamationMarkIcon:: @ 81D97C4
|
||||
end
|
||||
|
||||
gFldEffScript_UseCutOnGrass:: @ 81D97CA
|
||||
callnative sub_80979A0
|
||||
callnative FldEff_UseCutOnGrass
|
||||
end
|
||||
|
||||
gFldEffScript_UseCutOnTree:: @ 81D97D0
|
||||
callnative sub_80979F0
|
||||
callnative FldEff_UseCutOnTree
|
||||
end
|
||||
|
||||
gFldEffScript_Shadow:: @ 81D97D6
|
||||
@@ -299,7 +299,7 @@ gFldEffScript_SecretPowerShrub:: @ 81D9964
|
||||
end
|
||||
|
||||
gFldEffScript_CutGrass:: @ 81D9965
|
||||
loadfadedpal_callnative gUnknown_83D4144, sub_8097A48
|
||||
loadfadedpal_callnative gFldEffPalette_CutGrass, FldEff_CutGrass
|
||||
end
|
||||
|
||||
gFldEffScript_FieldMoveShowMonInit:: @ 81D996F
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/species.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_83D4100:: @ 83D4100
|
||||
.2byte 0x000d, 0x0001
|
||||
.2byte 0x000a, 0x0013
|
||||
.2byte 0x000b, 0x000e
|
||||
.2byte 0x000c, 0x000f
|
||||
.2byte 0x0352, 0x033e
|
||||
.2byte 0x0300, 0x0310
|
||||
.2byte 0x0301, 0x0311
|
||||
.2byte 0x0302, 0x0312
|
||||
.2byte 0x0284, 0x0281
|
||||
.2byte 0xffff, 0xffff
|
||||
|
||||
.align 2
|
||||
gOamData_83D4128::
|
||||
.4byte 0x00000000, 0x00001401
|
||||
|
||||
gAnimCmd_83D4130::
|
||||
obj_image_anim_frame 0, 30
|
||||
obj_image_anim_jump 0
|
||||
|
||||
gSpriteAnimTable_83D4138::
|
||||
.4byte gAnimCmd_83D4130
|
||||
|
||||
gUnknown_83D413C::
|
||||
obj_frame_tiles gUnknown_8398648, 0x20
|
||||
|
||||
gUnknown_83D4144::
|
||||
obj_pal gUnknown_8398688, 4096
|
||||
|
||||
gUnknown_83D414C:: @ 83D414C
|
||||
spr_template 0xFFFF, 4096, gOamData_83D4128, gSpriteAnimTable_83D4138, gUnknown_83D413C, gDummySpriteAffineAnimTable, objc_8097BA8
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
#define GUARD_METATILE_LABELS_H
|
||||
|
||||
// gTileset_General
|
||||
#define METATILE_General_Plain_Mowed 0x001
|
||||
#define METATILE_General_ThinTreeTop_Grass 0x00A
|
||||
#define METATILE_General_WideTreeTopLeft_Grass 0x00B
|
||||
#define METATILE_General_WideTreeTopRight_Grass 0x00C
|
||||
#define METATILE_General_Plain_Grass 0x00D
|
||||
#define METATILE_General_WideTreeTopLeft_Mowed 0x00E
|
||||
#define METATILE_General_WideTreeTopRight_Mowed 0x00F
|
||||
#define METATILE_General_ThinTreeTop_Mowed 0x013
|
||||
#define METATILE_General_CalmWater 0x12B
|
||||
|
||||
// gTileset_Mart
|
||||
@@ -127,4 +135,20 @@
|
||||
#define METATILE_TrainerTower_Floor_ShadeBottomLeft 0x287
|
||||
#define METATILE_TrainerTower_CounterBarrier 0x2B4
|
||||
|
||||
// gTileset_ViridianForest
|
||||
#define METATILE_ViridianForest_HugeTreeTopMiddle_Grass 0x284
|
||||
#define METATILE_ViridianForest_HugeTreeTopMiddle_Mowed 0x281
|
||||
|
||||
// gTileset_CeladonCity
|
||||
#define METATILE_CeladonCity_CyclingRoad_Grass 0x352
|
||||
#define METATILE_CeladonCity_CyclingRoad_Mowed 0x33E
|
||||
|
||||
// gTileset_FuchsiaCity
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopLeft_Grass 0x300
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopMiddle_Grass 0x301
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopRight_Grass 0x302
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopLeft_Mowed 0x310
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopMiddle_Mowed 0x311
|
||||
#define METATILE_FuchsiaCity_SafariZoneTreeTopRight_Mowed 0x312
|
||||
|
||||
#endif // GUARD_METATILE_LABELS_H
|
||||
|
||||
@@ -117,6 +117,8 @@ bool32 RfuUnionObjectIsInvisible(u8 objectEventId);
|
||||
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo);
|
||||
bool32 RfuUnionObjectIsWarping(u8 objectEventId);
|
||||
|
||||
void sub_805F378(s16 x, s16 y);
|
||||
|
||||
// Exported data declarations
|
||||
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
|
||||
@@ -124,5 +126,7 @@ extern const struct SpritePalette gUnknown_83A5348;
|
||||
extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[];
|
||||
extern const struct OamData gObjectEventBaseOam_32x32;
|
||||
extern const struct UCoords16 gUnknown_83A64C8[];
|
||||
extern const u16 gUnknown_8398648[];
|
||||
extern const u16 gUnknown_8398688[];
|
||||
|
||||
#endif // GUARD_EVENT_OBJECT_MOVEMENT_H
|
||||
|
||||
@@ -1201,4 +1201,7 @@ extern const u8 Text_MonSentToBoxBillsBoxFull[];
|
||||
|
||||
extern const u8 EventScript_BagItemCanBeRegistered[];
|
||||
|
||||
// fldeff_cut
|
||||
extern const u8 EventScript_FldEffCut[];
|
||||
|
||||
#endif //GUARD_EVENT_SCRIPTS_H
|
||||
|
||||
@@ -25,5 +25,7 @@ bool8 ShouldShowBoxWasFullMessage(void);
|
||||
u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
|
||||
u8 GetUnlockedSeviiAreas(void);
|
||||
u32 GetPlayerTrainerId(void);
|
||||
bool8 CutMoveRuinValleyCheck(void);
|
||||
void CutMoveOpenDottedHoleDoor(void);
|
||||
|
||||
#endif // GUARD_FIELD_SPECIALS_H
|
||||
|
||||
+3
-2
@@ -19,6 +19,7 @@ u32 MapGridGetMetatileBehaviorAt(int, int);
|
||||
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
|
||||
void MapGridSetMetatileIdAt(int, int, u16);
|
||||
void MapGridSetMetatileEntryAt(int, int, u16);
|
||||
u8 MapGridGetZCoordAt(s32 x, s32 y);
|
||||
void GetCameraCoords(u16*, u16*);
|
||||
bool8 MapGridIsImpassableAt(s32, s32);
|
||||
s32 GetMapBorderIdAt(s32, s32);
|
||||
@@ -29,8 +30,8 @@ struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
|
||||
void sub_8059948(u8 a0, u8 a1);
|
||||
|
||||
void save_serialize_map(void);
|
||||
u32 sub_8058F1C(u32 original, u8 bit);
|
||||
u32 sub_8058F48(s16 x, s16 y, u8 z);
|
||||
u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
|
||||
u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr);
|
||||
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2);
|
||||
|
||||
#endif //GUARD_FIELDMAP_H
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ gTasks[taskId].data[9] = (u32)func;
|
||||
extern struct MapPosition gPlayerFacingPosition;
|
||||
|
||||
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
|
||||
u8 oei_task_add(void);
|
||||
u8 CreateFieldEffectShowMon(void);
|
||||
|
||||
// flash
|
||||
u8 sub_80C9DCC(u8 lightLevel, u8 mapType);
|
||||
|
||||
@@ -15,6 +15,8 @@ enum
|
||||
|
||||
typedef void (*TilesetCB)(void);
|
||||
|
||||
#define METATILE_ID(tileset, name) (METATILE_##tileset##_##name)
|
||||
|
||||
struct Tileset
|
||||
{
|
||||
/*0x00*/ bool8 isCompressed;
|
||||
|
||||
@@ -114,7 +114,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_10(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior);
|
||||
bool8 sub_805A2BC(u8 metatileBehavior, u8 playerDirection);
|
||||
bool8 TestMetatileAttributeBit(u8 attr, u8 bitmask);
|
||||
bool8 MetatileBehavior_UnusedIsSpinRight(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior);
|
||||
|
||||
+2
-2
@@ -131,7 +131,7 @@ SECTIONS {
|
||||
asm/pokemon_storage_system.o(.text);
|
||||
src/pokemon_icon.o(.text);
|
||||
src/script_movement.o(.text);
|
||||
asm/fldeff_cut.o(.text);
|
||||
src/fldeff_cut.o(.text);
|
||||
src/mail_data.o(.text);
|
||||
src/map_name_popup.o(.text);
|
||||
src/item_menu_icons.o(.text);
|
||||
@@ -449,7 +449,7 @@ SECTIONS {
|
||||
src/trainer_card.o(.rodata);
|
||||
data/pokemon_storage_system.o(.rodata);
|
||||
src/pokemon_icon.o(.rodata);
|
||||
data/fldeff_cut.o(.rodata);
|
||||
src/fldeff_cut.o(.rodata);
|
||||
src/map_name_popup.o(.rodata);
|
||||
src/item_menu_icons.o(.rodata);
|
||||
src/battle_anim_mon_movement.o(.rodata);
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "event_object_lock.h"
|
||||
#include "start_menu.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
|
||||
static void sub_807DF4C(u8 a0);
|
||||
static void sub_807DFBC(u8 taskId);
|
||||
@@ -348,7 +349,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
{
|
||||
PlayerGetDestCoords(&task->data[12], &task->data[13]);
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
task->data[0] = 8;
|
||||
}
|
||||
break;
|
||||
@@ -372,7 +373,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
if (sub_807E418())
|
||||
{
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
@@ -752,7 +753,7 @@ static void sub_807E80C(u8 taskId)
|
||||
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 17);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
+50
-50
@@ -16,37 +16,37 @@ struct ConnectionFlags
|
||||
};
|
||||
|
||||
static void InitMapLayoutData(struct MapHeader *mapHeader);
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height);
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void LoadSavedMapView(void);
|
||||
struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y);
|
||||
bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection);
|
||||
bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
|
||||
static void map_copy_with_padding(u16 *map, u16 width, u16 height);
|
||||
static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
|
||||
static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void LoadSavedMapView(void);
|
||||
static struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y);
|
||||
static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection);
|
||||
static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
|
||||
|
||||
struct BackupMapLayout VMap;
|
||||
EWRAM_DATA u16 gBackupMapLayout[VIRTUAL_MAP_SIZE] = {};
|
||||
static EWRAM_DATA u16 gBackupMapLayout[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct Camera gCamera = {};
|
||||
EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
|
||||
const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||
|
||||
const u32 gUnknown_8352EF0[] = {
|
||||
0x1ff,
|
||||
0x3e00,
|
||||
0x3c000,
|
||||
0xfc0000,
|
||||
0x7000000,
|
||||
static const u32 sMetatileAttrMasks[] = {
|
||||
0x000001ff,
|
||||
0x00003e00,
|
||||
0x0003c000,
|
||||
0x00fc0000,
|
||||
0x07000000,
|
||||
0x18000000,
|
||||
0x60000000,
|
||||
0x80000000
|
||||
};
|
||||
|
||||
const u8 gUnknown_8352F10[] = {
|
||||
static const u8 sMetatileAttrShifts[] = {
|
||||
0,
|
||||
9,
|
||||
14,
|
||||
@@ -87,7 +87,7 @@ static void InitMapLayoutData(struct MapHeader * mapHeader)
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
}
|
||||
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
static void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
{
|
||||
s32 y;
|
||||
u16 *dest = VMap.map;
|
||||
@@ -101,7 +101,7 @@ void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
}
|
||||
}
|
||||
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
{
|
||||
s32 count;
|
||||
struct MapConnection *connection;
|
||||
@@ -147,7 +147,7 @@ void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
|
||||
static void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
|
||||
{
|
||||
s32 i;
|
||||
u16 *src;
|
||||
@@ -166,7 +166,7 @@ void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x
|
||||
}
|
||||
}
|
||||
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 x2;
|
||||
@@ -213,7 +213,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x;
|
||||
s32 x2, y2;
|
||||
@@ -262,7 +262,7 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 y;
|
||||
s32 x2, y2;
|
||||
@@ -308,7 +308,7 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
}
|
||||
}
|
||||
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 y2;
|
||||
@@ -443,28 +443,28 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y)
|
||||
return block & 0x3FF;
|
||||
}
|
||||
|
||||
u32 sub_8058F1C(u32 original, u8 bit)
|
||||
u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit)
|
||||
{
|
||||
if (bit >= 8)
|
||||
return original;
|
||||
|
||||
return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit];
|
||||
return (original & sMetatileAttrMasks[bit]) >> sMetatileAttrShifts[bit];
|
||||
}
|
||||
|
||||
u32 sub_8058F48(s16 x, s16 y, u8 z)
|
||||
u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, z);
|
||||
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr);
|
||||
}
|
||||
|
||||
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
|
||||
{
|
||||
return sub_8058F48(x, y, 0);
|
||||
return MapGridGetMetatileAttributeAt(x, y, 0);
|
||||
}
|
||||
|
||||
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y)
|
||||
{
|
||||
return sub_8058F48(x, y, 6);
|
||||
return MapGridGetMetatileAttributeAt(x, y, 6);
|
||||
}
|
||||
|
||||
void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
|
||||
@@ -512,12 +512,12 @@ u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatil
|
||||
if (metatile < NUM_METATILES_IN_PRIMARY)
|
||||
{
|
||||
attributes = mapLayout->primaryTileset->metatileAttributes;
|
||||
return sub_8058F1C(attributes[metatile], attr);
|
||||
return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile], attr);
|
||||
}
|
||||
else if (metatile < 0x400)
|
||||
{
|
||||
attributes = mapLayout->secondaryTileset->metatileAttributes;
|
||||
return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
|
||||
return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -544,7 +544,7 @@ void save_serialize_map(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool32 SavedMapViewIsEmpty(void)
|
||||
static bool32 SavedMapViewIsEmpty(void)
|
||||
{
|
||||
u16 i;
|
||||
u32 marker = 0;
|
||||
@@ -559,12 +559,12 @@ bool32 SavedMapViewIsEmpty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ClearSavedMapView(void)
|
||||
static void ClearSavedMapView(void)
|
||||
{
|
||||
CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView));
|
||||
}
|
||||
|
||||
void LoadSavedMapView(void)
|
||||
static void LoadSavedMapView(void)
|
||||
{
|
||||
s32 i, j;
|
||||
s32 x, y;
|
||||
@@ -588,7 +588,7 @@ void LoadSavedMapView(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8059250(u8 a1)
|
||||
static void sub_8059250(u8 a1)
|
||||
{
|
||||
s32 width;
|
||||
u16 *mapView;
|
||||
@@ -690,7 +690,7 @@ s32 GetMapBorderIdAt(s32 x, s32 y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 GetPostCameraMoveMapBorderId(s32 x, s32 y)
|
||||
static s32 GetPostCameraMoveMapBorderId(s32 x, s32 y)
|
||||
{
|
||||
return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y);
|
||||
}
|
||||
@@ -708,7 +708,7 @@ bool32 CanCameraMoveInDirection(s32 direction)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y)
|
||||
static void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -779,7 +779,7 @@ struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y)
|
||||
|
||||
}
|
||||
|
||||
bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -795,7 +795,7 @@ bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
{
|
||||
s32 offset2 = max(offset, 0);
|
||||
|
||||
@@ -808,7 +808,7 @@ bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_80596E8(s32 x, s32 width)
|
||||
static bool32 sub_80596E8(s32 x, s32 width)
|
||||
{
|
||||
if (x >= 0 && x < width)
|
||||
return TRUE;
|
||||
@@ -816,7 +816,7 @@ bool32 sub_80596E8(s32 x, s32 width)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y)
|
||||
static s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -878,7 +878,7 @@ void GetCameraFocusCoords(u16 *x, u16 *y)
|
||||
*y = gSaveBlock1Ptr->pos.y + 7;
|
||||
}
|
||||
|
||||
void SetCameraCoords(u16 x, u16 y)
|
||||
static void SetCameraCoords(u16 x, u16 y)
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = x;
|
||||
gSaveBlock1Ptr->pos.y = y;
|
||||
@@ -889,7 +889,7 @@ void GetCameraCoords(u16 *x, u16 *y)
|
||||
*x = gSaveBlock1Ptr->pos.x;
|
||||
*y = gSaveBlock1Ptr->pos.y;
|
||||
}
|
||||
void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
static void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
{
|
||||
if (tileset)
|
||||
{
|
||||
@@ -900,7 +900,7 @@ void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles,
|
||||
}
|
||||
}
|
||||
|
||||
void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
static void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
{
|
||||
if (tileset)
|
||||
{
|
||||
@@ -911,7 +911,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles,
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80598CC(u16 a0, u16 a1)
|
||||
static void sub_80598CC(u16 a0, u16 a1)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
{
|
||||
@@ -955,7 +955,7 @@ void sub_8059948(u8 a0, u8 a1)
|
||||
CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16));
|
||||
}
|
||||
|
||||
void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
{
|
||||
u16 black = RGB_BLACK;
|
||||
|
||||
|
||||
@@ -0,0 +1,299 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "event_object_lock.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "event_scripts.h"
|
||||
#include "fieldmap.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_specials.h"
|
||||
#include "fldeff.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "script.h"
|
||||
#include "trig.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
|
||||
#define CUT_GRASS_SPRITE_COUNT 8
|
||||
|
||||
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
||||
static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
|
||||
|
||||
static void FieldCallback_CutGrass(void);
|
||||
static void FieldCallback_CutTree(void);
|
||||
static void FieldMoveCallback_CutGrass(void);
|
||||
static void SetCutGrassMetatileAt(s16 x, s16 y);
|
||||
static void SpriteCallback_CutGrass_Init(struct Sprite * sprite);
|
||||
static void SpriteCallback_CutGrass_Run(struct Sprite * sprite);
|
||||
static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite);
|
||||
static void FieldMoveCallback_CutTree(void);
|
||||
|
||||
static const u16 sCutGrassMetatileMapping[][2] = {
|
||||
{
|
||||
METATILE_ID(General, Plain_Grass),
|
||||
METATILE_ID(General, Plain_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, ThinTreeTop_Grass),
|
||||
METATILE_ID(General, ThinTreeTop_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, WideTreeTopLeft_Grass),
|
||||
METATILE_ID(General, WideTreeTopLeft_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, WideTreeTopRight_Grass),
|
||||
METATILE_ID(General, WideTreeTopRight_Mowed)
|
||||
}, {
|
||||
METATILE_ID(CeladonCity, CyclingRoad_Grass),
|
||||
METATILE_ID(CeladonCity, CyclingRoad_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Mowed)
|
||||
}, {
|
||||
METATILE_ID(ViridianForest, HugeTreeTopMiddle_Grass),
|
||||
METATILE_ID(ViridianForest, HugeTreeTopMiddle_Mowed)
|
||||
}, {
|
||||
0xffff,
|
||||
0xffff
|
||||
}
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_FldEff_CutGrass = {
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(8x8),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(8x8),
|
||||
.tileNum = 0x001,
|
||||
.priority = 1,
|
||||
.paletteNum = 0x1,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_Fldeff_CutGrass_0[] = {
|
||||
ANIMCMD_FRAME(0, 30),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_FldEff_CutGrass[] = {
|
||||
sSpriteAnim_Fldeff_CutGrass_0
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sSpriteFrameImages_FldEff_CutGrass[] = {
|
||||
{gUnknown_8398648, 0x20}
|
||||
};
|
||||
|
||||
const struct SpritePalette gFldEffPalette_CutGrass[] = {
|
||||
gUnknown_8398688, 4096
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_FldEff_CutGrass = {
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4096,
|
||||
.oam = &sOamData_FldEff_CutGrass,
|
||||
.anims = sSpriteAnimTable_FldEff_CutGrass,
|
||||
.images = sSpriteFrameImages_FldEff_CutGrass,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallback_CutGrass_Init
|
||||
};
|
||||
|
||||
static u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y)
|
||||
{
|
||||
return TestMetatileAttributeBit(MapGridGetMetatileAttributeAt(x, y, 1), 1);
|
||||
}
|
||||
|
||||
bool8 SetUpFieldMove_Cut(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 i, j;
|
||||
sScheduleOpenDottedHole = FALSE;
|
||||
if (CutMoveRuinValleyCheck() == TRUE)
|
||||
{
|
||||
sScheduleOpenDottedHole = TRUE;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_CUT_TREE) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutTree;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: this fakematch
|
||||
register s32 neg1 asm("r8");
|
||||
struct MapPosition *pos;
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
|
||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
||||
{
|
||||
|
||||
y = i + neg1 + pos->y;
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
x = j + neg1 + pos->x;
|
||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
||||
{
|
||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void FieldCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnGrass(void)
|
||||
{
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutGrass);
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FieldCallback_CutTree(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(EventScript_FldEffCut);
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnTree(void)
|
||||
{
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutTree);
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FieldMoveCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
|
||||
if (sScheduleOpenDottedHole == TRUE)
|
||||
CutMoveOpenDottedHoleDoor();
|
||||
else
|
||||
FieldEffectStart(FLDEFF_CUT_GRASS);
|
||||
}
|
||||
|
||||
bool8 FldEff_CutGrass(void)
|
||||
{
|
||||
u8 i, j;
|
||||
s16 x, y;
|
||||
// FIXME: this fakematch
|
||||
register s32 neg1 asm("r9");
|
||||
struct MapPosition *pos;
|
||||
|
||||
i = 0;
|
||||
PlaySE(SE_W015);
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
|
||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
||||
{
|
||||
|
||||
y = i + neg1 + pos->y;
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
x = j + neg1 + pos->x;
|
||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
||||
{
|
||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||
{
|
||||
SetCutGrassMetatileAt(x, y);
|
||||
sub_805F378(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DrawWholeMapView();
|
||||
sCutGrassSpriteArrayPtr = Alloc(CUT_GRASS_SPRITE_COUNT);
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_FldEff_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
|
||||
gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * (0x100 / CUT_GRASS_SPRITE_COUNT);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void SetCutGrassMetatileAt(s16 x, s16 y)
|
||||
{
|
||||
u16 i = 0;
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
while (1)
|
||||
{
|
||||
if (sCutGrassMetatileMapping[i][0] == 0xFFFF)
|
||||
return;
|
||||
if (sCutGrassMetatileMapping[i][0] == metatileId)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x, y, sCutGrassMetatileMapping[i][1]);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Init(struct Sprite * sprite)
|
||||
{
|
||||
sprite->data[0] = 8;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = SpriteCallback_CutGrass_Run;
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Run(struct Sprite * sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
|
||||
sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
|
||||
sprite->data[2] += 8;
|
||||
sprite->data[2] &= 0xFF;
|
||||
sprite->data[0]++;
|
||||
sprite->data[0] += sprite->data[3] >> 2;
|
||||
sprite->data[3]++;
|
||||
if (sprite->data[1] != 28)
|
||||
sprite->data[1]++;
|
||||
else
|
||||
sprite->callback = SpriteCallback_CutGrass_Cleanup;
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 1; i < CUT_GRASS_SPRITE_COUNT; i++)
|
||||
{
|
||||
DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]);
|
||||
}
|
||||
FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS);
|
||||
Free(sCutGrassSpriteArrayPtr);
|
||||
sub_80696C0();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
static void FieldMoveCallback_CutTree(void)
|
||||
{
|
||||
PlaySE(SE_W015);
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@ static void FieldCallback_Dig(void)
|
||||
|
||||
bool8 FldEff_UseDig(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80C9AFC);
|
||||
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
|
||||
+23
-21
@@ -12,12 +12,13 @@
|
||||
#include "event_object_movement.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
static void task08_080C9820(u8 taskId);
|
||||
static void sub_80C98FC(u8 taskId);
|
||||
static void sub_80C98B0(u8 taskId);
|
||||
static void sub_80C99A0(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_Init(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_WaitPlayerAnim(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_Cleanup(u8 taskId);
|
||||
static void sub_80C9A10(void);
|
||||
static void sub_80C9A60(void);
|
||||
|
||||
@@ -36,13 +37,13 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 oei_task_add(void)
|
||||
u8 CreateFieldEffectShowMon(void)
|
||||
{
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
return CreateTask(task08_080C9820, 8);
|
||||
return CreateTask(Task_FieldEffectShowMon_Init, 8);
|
||||
}
|
||||
|
||||
static void task08_080C9820(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_Init(u8 taskId)
|
||||
{
|
||||
u8 mapObjId;
|
||||
|
||||
@@ -54,48 +55,49 @@ static void task08_080C9820(u8 taskId)
|
||||
{
|
||||
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
|
||||
{
|
||||
// Leftover from RS, inhibits the player anim while underwater.
|
||||
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
|
||||
gTasks[taskId].func = sub_80C98FC;
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitFldeff;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_805CB70();
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], 0x45);
|
||||
gTasks[taskId].func = sub_80C98B0;
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_UNKNOWN_STEP_45);
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitPlayerAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C98B0(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_WaitPlayerAnim(u8 taskId)
|
||||
{
|
||||
if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[gPlayerAvatar.objectEventId]) == TRUE)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
|
||||
gTasks[taskId].func = sub_80C98FC;
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitFldeff;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C98FC(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
|
||||
{
|
||||
gFieldEffectArguments[1] = GetPlayerFacingDirection();
|
||||
if (gFieldEffectArguments[1] == 1)
|
||||
if (gFieldEffectArguments[1] == DIR_SOUTH)
|
||||
gFieldEffectArguments[2] = 0;
|
||||
if (gFieldEffectArguments[1] == 2)
|
||||
if (gFieldEffectArguments[1] == DIR_NORTH)
|
||||
gFieldEffectArguments[2] = 1;
|
||||
if (gFieldEffectArguments[1] == 3)
|
||||
if (gFieldEffectArguments[1] == DIR_WEST)
|
||||
gFieldEffectArguments[2] = 2;
|
||||
if (gFieldEffectArguments[1] == 4)
|
||||
if (gFieldEffectArguments[1] == DIR_EAST)
|
||||
gFieldEffectArguments[2] = 3;
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByCurrentState());
|
||||
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
|
||||
FieldEffectActiveListRemove(6);
|
||||
gTasks[taskId].func = sub_80C99A0;
|
||||
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_Cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C99A0(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_Cleanup(u8 taskId)
|
||||
{
|
||||
FLDEFF_CALL_FUNC_IN_DATA();
|
||||
gPlayerAvatar.unk6 = FALSE;
|
||||
@@ -121,7 +123,7 @@ static void sub_80C9A10(void)
|
||||
|
||||
bool8 FldEff_UseRockSmash(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80C9A60);
|
||||
IncrementGameStat(GAME_STAT_USED_ROCK_SMASH);
|
||||
|
||||
@@ -33,7 +33,7 @@ static void FldEff_UseStrength(void)
|
||||
|
||||
bool8 sub_80D0860(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80D08A8);
|
||||
GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
|
||||
return FALSE;
|
||||
|
||||
@@ -43,7 +43,7 @@ bool8 FldEff_SweetScent(void)
|
||||
u8 taskId;
|
||||
|
||||
SetWeatherScreenFadeOut();
|
||||
taskId = oei_task_add();
|
||||
taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(StartSweetScentFieldEffect);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ static void FieldCallback_Teleport(void)
|
||||
|
||||
bool8 FldEff_UseTeleport(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(StartTeleportFieldEffect);
|
||||
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
return FALSE;
|
||||
|
||||
+7
-34
@@ -16,39 +16,12 @@ static const bool8 sTileSurfable[METATILE_COUNT] = {
|
||||
[MB_SOUTHWARD_CURRENT] = TRUE
|
||||
};
|
||||
|
||||
static const u8 sTileBitAttributes[] = {
|
||||
0x00,
|
||||
0x01,
|
||||
0x02,
|
||||
0x04,
|
||||
0x08,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00
|
||||
static const u8 sTileBitAttributes[32] = {
|
||||
[0] = 0x00,
|
||||
[1] = 0x01,
|
||||
[2] = 0x02,
|
||||
[3] = 0x04,
|
||||
[4] = 0x08,
|
||||
};
|
||||
|
||||
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior)
|
||||
@@ -769,7 +742,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior) { return FALSE;
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 sub_805A2BC(u8 arg1, u8 arg2)
|
||||
bool8 TestMetatileAttributeBit(u8 arg1, u8 arg2)
|
||||
{
|
||||
if(sTileBitAttributes[arg1] & arg2)
|
||||
return TRUE;
|
||||
|
||||
+15
-15
@@ -113,7 +113,7 @@ static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
|
||||
static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
|
||||
static EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0};
|
||||
static EWRAM_DATA u16 sQuestLogIdx = 0;
|
||||
static EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}};
|
||||
static EWRAM_DATA u8 sMovementScripts[64][2] = {{0}};
|
||||
static EWRAM_DATA u16 gUnknown_203B01A = 0;
|
||||
static EWRAM_DATA u16 gUnknown_203B01C = 0;
|
||||
static EWRAM_DATA u16 sFlagOrVarPlayhead = 0;
|
||||
@@ -1551,24 +1551,24 @@ void sub_811246C(struct Sprite *sprite)
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[sprite->data[0]];
|
||||
if (objectEvent->localId == OBJ_EVENT_ID_PLAYER)
|
||||
{
|
||||
if (gUnknown_203AF9A[0][0] != OBJ_EVENT_ID_PLAYER)
|
||||
if (sMovementScripts[0][0] != 0xFF)
|
||||
{
|
||||
ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[0][0]);
|
||||
gUnknown_203AF9A[0][0] = OBJ_EVENT_ID_PLAYER;
|
||||
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[0][0]);
|
||||
sMovementScripts[0][0] = 0xFF;
|
||||
}
|
||||
if (gUnknown_203AF9A[0][1] != OBJ_EVENT_ID_PLAYER)
|
||||
if (sMovementScripts[0][1] != OBJ_EVENT_ID_PLAYER)
|
||||
{
|
||||
sub_8150454();
|
||||
gUnknown_203AF9A[0][1] = OBJ_EVENT_ID_PLAYER;
|
||||
sMovementScripts[0][1] = OBJ_EVENT_ID_PLAYER;
|
||||
}
|
||||
sub_8063E28(objectEvent, sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_203AF9A[objectEvent->localId][0] != OBJ_EVENT_ID_PLAYER)
|
||||
if (sMovementScripts[objectEvent->localId][0] != 0xFF)
|
||||
{
|
||||
ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[objectEvent->localId][0]);
|
||||
gUnknown_203AF9A[objectEvent->localId][0] = OBJ_EVENT_ID_PLAYER;
|
||||
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[objectEvent->localId][0]);
|
||||
sMovementScripts[objectEvent->localId][0] = 0xFF;
|
||||
}
|
||||
sub_8063E28(objectEvent, sprite);
|
||||
}
|
||||
@@ -1736,15 +1736,15 @@ static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
|
||||
sNumQuestLogs = a2 / 8;
|
||||
for (i = 0; i < 0x40; i++)
|
||||
{
|
||||
gUnknown_203AF9A[i][0] |= 0xFF;
|
||||
gUnknown_203AF9A[i][1] |= 0xFF;
|
||||
sMovementScripts[i][0] |= 0xFF;
|
||||
sMovementScripts[i][1] |= 0xFF;
|
||||
}
|
||||
sQuestLogIdx = 0;
|
||||
gUnknown_203B01C = 0;
|
||||
gUnknown_3005E90 = (struct UnkStruct_3005E90){};
|
||||
gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
|
||||
gUnknown_203AF9A[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
gUnknown_203AF9A[0][1] = 0xFF;
|
||||
sMovementScripts[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
sMovementScripts[0][1] = 0xFF;
|
||||
gUnknown_3005E88 = 1;
|
||||
break;
|
||||
case 2:
|
||||
@@ -1807,10 +1807,10 @@ void sub_8112B3C(void)
|
||||
switch (gUnknown_3005E94[sQuestLogIdx].unk_6)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
|
||||
break;
|
||||
case 2:
|
||||
*(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[sQuestLogIdx].unk_3 << 24) | (gUnknown_3005E94[sQuestLogIdx].unk_2 << 16) | (gUnknown_3005E94[sQuestLogIdx].unk_1 << 8) | (gUnknown_3005E94[sQuestLogIdx].unk_0 << 0));
|
||||
|
||||
+11
-11
@@ -367,11 +367,11 @@ bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavi
|
||||
headerId = GetCurrentMapWildMonHeaderId();
|
||||
if (headerId != 0xFFFF)
|
||||
{
|
||||
if (sub_8058F1C(currMetatileBehavior, 4) == TRUE)
|
||||
if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == TRUE)
|
||||
{
|
||||
if (gWildMonHeaders[headerId].landMonsInfo == NULL)
|
||||
return FALSE;
|
||||
else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
|
||||
else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
|
||||
return FALSE;
|
||||
if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
|
||||
{
|
||||
@@ -405,12 +405,12 @@ bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavi
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sub_8058F1C(currMetatileBehavior, 4) == 2
|
||||
|| (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(sub_8058F1C(currMetatileBehavior, 0)) == TRUE))
|
||||
else if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == 2
|
||||
|| (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0)) == TRUE))
|
||||
{
|
||||
if (gWildMonHeaders[headerId].waterMonsInfo == NULL)
|
||||
return FALSE;
|
||||
else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
|
||||
else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
|
||||
return FALSE;
|
||||
else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE)
|
||||
{
|
||||
@@ -474,7 +474,7 @@ bool8 SweetScentWildEncounter(void)
|
||||
headerId = GetCurrentMapWildMonHeaderId();
|
||||
if (headerId != 0xFFFF)
|
||||
{
|
||||
if (sub_8058F48(x, y, 4) == 1)
|
||||
if (MapGridGetMetatileAttributeAt(x, y, 4) == 1)
|
||||
{
|
||||
if (TryStartRoamerEncounter() == TRUE)
|
||||
{
|
||||
@@ -490,7 +490,7 @@ bool8 SweetScentWildEncounter(void)
|
||||
BattleSetup_StartWildBattle();
|
||||
return TRUE;
|
||||
}
|
||||
else if (sub_8058F48(x, y, 4) == 2)
|
||||
else if (MapGridGetMetatileAttributeAt(x, y, 4) == 2)
|
||||
{
|
||||
if (TryStartRoamerEncounter() == TRUE)
|
||||
{
|
||||
@@ -711,7 +711,7 @@ void ResetEncounterRateModifiers(void)
|
||||
|
||||
static bool8 HandleWildEncounterCooldown(u32 currMetatileBehavior)
|
||||
{
|
||||
u8 unk = sub_8058F1C(currMetatileBehavior, 4);
|
||||
u8 unk = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4);
|
||||
u32 minSteps;
|
||||
u32 encRate;
|
||||
if (unk == 0)
|
||||
@@ -763,19 +763,19 @@ bool8 TryStandardWildEncounter(u32 currMetatileBehavior)
|
||||
{
|
||||
if (!HandleWildEncounterCooldown(currMetatileBehavior))
|
||||
{
|
||||
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
|
||||
sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
|
||||
return FALSE;
|
||||
}
|
||||
else if (StandardWildEncounter(currMetatileBehavior, sWildEncounterData.prevMetatileBehavior) == TRUE)
|
||||
{
|
||||
sWildEncounterData.encounterRateBuff = 0;
|
||||
sWildEncounterData.stepsSinceLastEncounter = 0;
|
||||
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
|
||||
sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
|
||||
sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-7
@@ -218,14 +218,8 @@ gUnknown_203982C: @ 203982C
|
||||
|
||||
.align 2
|
||||
.include "src/script_movement.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_2039870: @ 2039870
|
||||
.space 0x4
|
||||
|
||||
gUnknown_2039874: @ 2039874
|
||||
.space 0x4
|
||||
|
||||
.include "src/fldeff_cut.o"
|
||||
.align 2
|
||||
.include "src/item_menu_icons.o"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user