mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
More movement stuff
This commit is contained in:
parent
a2a2668233
commit
9bbb65166e
@ -5508,7 +5508,7 @@ EnemyMonEntrance: ; 3e3ff
|
|||||||
; 3e40b
|
; 3e40b
|
||||||
|
|
||||||
BattleMonEntrance: ; 3e40b
|
BattleMonEntrance: ; 3e40b
|
||||||
call BattleMonNickComma_TextBox
|
call WithdrawPkmnText
|
||||||
|
|
||||||
ld c, 50
|
ld c, 50
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
@ -8103,8 +8103,6 @@ JumpText_GoForItPkmn: ; 3f2df
|
|||||||
JumpText_YourFoesWeakGetmPkmn: ; 3f2e6
|
JumpText_YourFoesWeakGetmPkmn: ; 3f2e6
|
||||||
text_jump Text_YourFoesWeakGetmPkmn
|
text_jump Text_YourFoesWeakGetmPkmn
|
||||||
start_asm
|
start_asm
|
||||||
; 3f2eb
|
|
||||||
|
|
||||||
Function_TextJump_BattleMonNick01: ; 3f2eb
|
Function_TextJump_BattleMonNick01: ; 3f2eb
|
||||||
ld hl, TextJump_BattleMonNick01
|
ld hl, TextJump_BattleMonNick01
|
||||||
ret
|
ret
|
||||||
@ -8115,18 +8113,13 @@ TextJump_BattleMonNick01: ; 3f2ef
|
|||||||
db "@"
|
db "@"
|
||||||
; 3f2f4
|
; 3f2f4
|
||||||
|
|
||||||
|
WithdrawPkmnText: ; 3f2f4
|
||||||
BattleMonNickComma_TextBox: ; 3f2f4
|
ld hl, .WithdrawPkmnText
|
||||||
ld hl, TextJump_BattleMonNickComma
|
|
||||||
jp BattleTextBox
|
jp BattleTextBox
|
||||||
; 3f2fa
|
|
||||||
|
|
||||||
TextJump_BattleMonNickComma: ; 3f2fa
|
.WithdrawPkmnText
|
||||||
text_jump Text_BattleMonNickComma
|
text_jump Text_BattleMonNickComma
|
||||||
start_asm
|
start_asm
|
||||||
; 3f2ff
|
|
||||||
|
|
||||||
WithdrawPkmnText: ; 3f2ff
|
|
||||||
; Print text to withdraw Pkmn
|
; Print text to withdraw Pkmn
|
||||||
; depending on HP the message is different
|
; depending on HP the message is different
|
||||||
push de
|
push de
|
||||||
|
@ -5949,7 +5949,6 @@ BattleCommand_StatUpMessage: ; 363b8
|
|||||||
.stat
|
.stat
|
||||||
text_jump UnknownText_0x1c0cc6
|
text_jump UnknownText_0x1c0cc6
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
ld hl, .up
|
ld hl, .up
|
||||||
ld a, [LoweredStat]
|
ld a, [LoweredStat]
|
||||||
and $f0
|
and $f0
|
||||||
@ -5983,7 +5982,6 @@ BattleCommand_StatDownMessage: ; 363e9
|
|||||||
.stat
|
.stat
|
||||||
text_jump UnknownText_0x1c0ceb
|
text_jump UnknownText_0x1c0ceb
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
ld hl, .fell
|
ld hl, .fell
|
||||||
ld a, [LoweredStat]
|
ld a, [LoweredStat]
|
||||||
and $f0
|
and $f0
|
||||||
@ -7345,7 +7343,6 @@ BattleCommand_Charge: ; 36b4d
|
|||||||
.UsedText
|
.UsedText
|
||||||
text_jump UnknownText_0x1c0d0e ; "[USER]"
|
text_jump UnknownText_0x1c0d0e ; "[USER]"
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
ld a, BATTLE_VARS_MOVE_ANIM
|
ld a, BATTLE_VARS_MOVE_ANIM
|
||||||
call GetBattleVar
|
call GetBattleVar
|
||||||
cp RAZOR_WIND
|
cp RAZOR_WIND
|
||||||
|
@ -11,7 +11,6 @@ UsedMoveText: ; 105db9
|
|||||||
|
|
||||||
text_jump _ActorNameText
|
text_jump _ActorNameText
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
ld a, [hBattleTurn]
|
ld a, [hBattleTurn]
|
||||||
and a
|
and a
|
||||||
jr nz, .start
|
jr nz, .start
|
||||||
@ -67,30 +66,26 @@ UsedMoveText: ; 105db9
|
|||||||
UsedMove1Text: ; 105e04
|
UsedMove1Text: ; 105e04
|
||||||
text_jump _UsedMove1Text
|
text_jump _UsedMove1Text
|
||||||
start_asm
|
start_asm
|
||||||
jr Function105e10
|
jr UsedMoveText_CheckObedience
|
||||||
; 105e0b
|
; 105e0b
|
||||||
|
|
||||||
UsedMove2Text: ; 105e0b
|
UsedMove2Text: ; 105e0b
|
||||||
text_jump _UsedMove2Text
|
text_jump _UsedMove2Text
|
||||||
start_asm
|
start_asm
|
||||||
; 105e10
|
UsedMoveText_CheckObedience: ; 105e10
|
||||||
|
|
||||||
Function105e10: ; 105e10
|
|
||||||
; check obedience
|
; check obedience
|
||||||
ld a, [AlreadyDisobeyed]
|
ld a, [AlreadyDisobeyed]
|
||||||
and a
|
and a
|
||||||
jr z, GetMoveNameText
|
jr z, .GetMoveNameText
|
||||||
; print "instead,"
|
; print "instead,"
|
||||||
ld hl, UsedInsteadText
|
ld hl, .UsedInsteadText
|
||||||
ret
|
ret
|
||||||
; 105e1a
|
; 105e1a
|
||||||
|
|
||||||
UsedInsteadText: ; 105e1a
|
.UsedInsteadText
|
||||||
text_jump _UsedInsteadText
|
text_jump _UsedInsteadText
|
||||||
start_asm
|
start_asm
|
||||||
; 105e1f
|
.GetMoveNameText
|
||||||
|
|
||||||
GetMoveNameText: ; 105e1f
|
|
||||||
ld hl, MoveNameText
|
ld hl, MoveNameText
|
||||||
ret
|
ret
|
||||||
; 105e23
|
; 105e23
|
||||||
@ -98,9 +93,6 @@ GetMoveNameText: ; 105e1f
|
|||||||
MoveNameText: ; 105e23
|
MoveNameText: ; 105e23
|
||||||
text_jump _MoveNameText
|
text_jump _MoveNameText
|
||||||
start_asm
|
start_asm
|
||||||
; 105e28
|
|
||||||
|
|
||||||
GetUsedMoveTextEnder: ; 105e28
|
|
||||||
; get start address
|
; get start address
|
||||||
ld hl, .endusedmovetexts
|
ld hl, .endusedmovetexts
|
||||||
|
|
||||||
|
44
data/map_objects.asm
Executable file
44
data/map_objects.asm
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
sprite_movement_data: macro
|
||||||
|
db \1, \2, \3, \4, \5
|
||||||
|
dn \6, 0
|
||||||
|
endm
|
||||||
|
|
||||||
|
; function, facing, action, flags1, flags2, palette flags
|
||||||
|
sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 00
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 01
|
||||||
|
sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 02
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 03
|
||||||
|
sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 04
|
||||||
|
sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 05
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 06
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_STAND, $00, $00, %0000 ; 07
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 08
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 09
|
||||||
|
sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0a
|
||||||
|
sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 0b
|
||||||
|
sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0c
|
||||||
|
sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0d
|
||||||
|
sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0e
|
||||||
|
sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0f
|
||||||
|
sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 10
|
||||||
|
sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 11
|
||||||
|
sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 12
|
||||||
|
sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 13
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 14
|
||||||
|
sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, PERSON_ACTION_09, $2e, $01, %1100 ; 15
|
||||||
|
sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, PERSON_ACTION_0A, $2e, $00, %0000 ; 16
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 17
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $2e, $10, %0000 ; 18
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_STAND, $2e, $00, %0100 ; 19
|
||||||
|
sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 1a
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, PERSON_ACTION_00, $8e, $01, %0000 ; 1b
|
||||||
|
sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_EMOTE, $8e, $02, %0000 ; 1c
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, PERSON_ACTION_00, $82, $00, %0000 ; 1d
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1e
|
||||||
|
sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1f
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0C, $2e, $01, %1100 ; 20
|
||||||
|
sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0D, $2e, $01, %1100 ; 21
|
||||||
|
sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, PERSON_ACTION_0E, $8e, $01, %0000 ; 22
|
||||||
|
sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, PERSON_ACTION_0F, $8e, $02, %0000 ; 23
|
||||||
|
sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0010 ; 24
|
||||||
|
sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 25
|
@ -8,7 +8,7 @@ CheckBreedmonCompatibility: ; 16e1d
|
|||||||
ld [TempMonDVs], a
|
ld [TempMonDVs], a
|
||||||
ld a, [wBreedMon1DVs + 1]
|
ld a, [wBreedMon1DVs + 1]
|
||||||
ld [TempMonDVs + 1], a
|
ld [TempMonDVs + 1], a
|
||||||
ld a, $3
|
ld a, BREEDMON
|
||||||
ld [MonType], a
|
ld [MonType], a
|
||||||
predef GetGender
|
predef GetGender
|
||||||
jr c, .genderless
|
jr c, .genderless
|
||||||
|
@ -51,7 +51,7 @@ LearnMove: ; 6508
|
|||||||
.not_disabled
|
.not_disabled
|
||||||
|
|
||||||
call GetMoveName
|
call GetMoveName
|
||||||
ld hl, UnknownText_0x6684 ; 1, 2 and…
|
ld hl, Text_1_2_and_Poof ; 1, 2 and…
|
||||||
call PrintText
|
call PrintText
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
@ -102,18 +102,18 @@ LearnMove: ; 6508
|
|||||||
jp .learned
|
jp .learned
|
||||||
|
|
||||||
.cancel
|
.cancel
|
||||||
ld hl, UnknownText_0x6675 ; Stop learning <MOVE>?
|
ld hl, Text_StopLearning ; Stop learning <MOVE>?
|
||||||
call PrintText
|
call PrintText
|
||||||
call YesNoBox
|
call YesNoBox
|
||||||
jp c, .loop
|
jp c, .loop
|
||||||
|
|
||||||
ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>.
|
ld hl, Text_DidNotLearn ; <MON> did not learn <MOVE>.
|
||||||
call PrintText
|
call PrintText
|
||||||
ld b, 0
|
ld b, 0
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.learned
|
.learned
|
||||||
ld hl, UnknownText_0x666b ; <MON> learned <MOVE>!
|
ld hl, Text_LearnedMove ; <MON> learned <MOVE>!
|
||||||
call PrintText
|
call PrintText
|
||||||
ld b, 1
|
ld b, 1
|
||||||
ret
|
ret
|
||||||
@ -121,7 +121,7 @@ LearnMove: ; 6508
|
|||||||
|
|
||||||
ForgetMove: ; 65d3
|
ForgetMove: ; 65d3
|
||||||
push hl
|
push hl
|
||||||
ld hl, UnknownText_0x667f
|
ld hl, Text_TryingToLearn
|
||||||
call PrintText
|
call PrintText
|
||||||
call YesNoBox
|
call YesNoBox
|
||||||
pop hl
|
pop hl
|
||||||
@ -135,7 +135,7 @@ ForgetMove: ; 65d3
|
|||||||
pop hl
|
pop hl
|
||||||
.loop
|
.loop
|
||||||
push hl
|
push hl
|
||||||
ld hl, UnknownText_0x6670
|
ld hl, Text_ForgetWhich
|
||||||
call PrintText
|
call PrintText
|
||||||
hlcoord 5, 2
|
hlcoord 5, 2
|
||||||
ld b, NUM_MOVES * 2
|
ld b, NUM_MOVES * 2
|
||||||
@ -192,7 +192,7 @@ ForgetMove: ; 65d3
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.hmmove
|
.hmmove
|
||||||
ld hl, UnknownText_0x669a
|
ld hl, Text_CantForgetHM
|
||||||
call PrintText
|
call PrintText
|
||||||
pop hl
|
pop hl
|
||||||
jr .loop
|
jr .loop
|
||||||
@ -202,55 +202,54 @@ ForgetMove: ; 65d3
|
|||||||
ret
|
ret
|
||||||
; 666b
|
; 666b
|
||||||
|
|
||||||
UnknownText_0x666b: ; 666b
|
Text_LearnedMove: ; 666b
|
||||||
; <MON> learned <MOVE>!
|
; <MON> learned <MOVE>!
|
||||||
text_jump UnknownText_0x1c5660
|
text_jump UnknownText_0x1c5660
|
||||||
db "@"
|
db "@"
|
||||||
; 6670
|
; 6670
|
||||||
|
|
||||||
UnknownText_0x6670: ; 6670
|
Text_ForgetWhich: ; 6670
|
||||||
; Which move should be forgotten?
|
; Which move should be forgotten?
|
||||||
text_jump UnknownText_0x1c5678
|
text_jump UnknownText_0x1c5678
|
||||||
db "@"
|
db "@"
|
||||||
; 6675
|
; 6675
|
||||||
|
|
||||||
UnknownText_0x6675: ; 6675
|
Text_StopLearning: ; 6675
|
||||||
; Stop learning <MOVE>?
|
; Stop learning <MOVE>?
|
||||||
text_jump UnknownText_0x1c5699
|
text_jump UnknownText_0x1c5699
|
||||||
db "@"
|
db "@"
|
||||||
; 667a
|
; 667a
|
||||||
|
|
||||||
UnknownText_0x667a: ; 667a
|
Text_DidNotLearn: ; 667a
|
||||||
; <MON> did not learn <MOVE>.
|
; <MON> did not learn <MOVE>.
|
||||||
text_jump UnknownText_0x1c56af
|
text_jump UnknownText_0x1c56af
|
||||||
db "@"
|
db "@"
|
||||||
; 667f
|
; 667f
|
||||||
|
|
||||||
UnknownText_0x667f: ; 667f
|
Text_TryingToLearn: ; 667f
|
||||||
; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
|
; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
|
||||||
; four moves. Delete an older move to make room for <MOVE>?
|
; four moves. Delete an older move to make room for <MOVE>?
|
||||||
text_jump UnknownText_0x1c56c9
|
text_jump UnknownText_0x1c56c9
|
||||||
db "@"
|
db "@"
|
||||||
; 6684
|
; 6684
|
||||||
|
|
||||||
UnknownText_0x6684: ; 6684
|
Text_1_2_and_Poof: ; 6684
|
||||||
text_jump UnknownText_0x1c5740 ; 1, 2 and…
|
text_jump UnknownText_0x1c5740 ; 1, 2 and…
|
||||||
start_asm
|
start_asm
|
||||||
push de
|
push de
|
||||||
ld de, SFX_SWITCH_POKEMON
|
ld de, SFX_SWITCH_POKEMON
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
pop de
|
pop de
|
||||||
ld hl, UnknownText_0x6695
|
ld hl, .PoofForgot
|
||||||
ret
|
ret
|
||||||
; 6695
|
|
||||||
|
|
||||||
UnknownText_0x6695: ; 6695
|
.PoofForgot
|
||||||
; Poof! <MON> forgot <MOVE>. And…
|
; Poof! <MON> forgot <MOVE>. And…
|
||||||
text_jump UnknownText_0x1c574e
|
text_jump UnknownText_0x1c574e
|
||||||
db "@"
|
db "@"
|
||||||
; 669a
|
; 669a
|
||||||
|
|
||||||
UnknownText_0x669a: ; 669a
|
Text_CantForgetHM: ; 669a
|
||||||
; HM moves can't be forgotten now.
|
; HM moves can't be forgotten now.
|
||||||
text_jump UnknownText_0x1c5772
|
text_jump UnknownText_0x1c5772
|
||||||
db "@"
|
db "@"
|
||||||
|
@ -208,12 +208,12 @@ GivePokeItem:: ; 446cc
|
|||||||
push bc
|
push bc
|
||||||
push af
|
push af
|
||||||
ld hl, sPartyMail
|
ld hl, sPartyMail
|
||||||
ld bc, $2f
|
ld bc, MAIL_STRUCT_LENGTH
|
||||||
call AddNTimes
|
call AddNTimes
|
||||||
ld d, h
|
ld d, h
|
||||||
ld e, l
|
ld e, l
|
||||||
ld hl, wd002
|
ld hl, wd002
|
||||||
ld bc, $21
|
ld bc, MAIL_MSG_LENGTH + 1
|
||||||
ld a, BANK(sPartyMail)
|
ld a, BANK(sPartyMail)
|
||||||
call GetSRAMBank
|
call GetSRAMBank
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
@ -222,7 +222,7 @@ GivePokeItem:: ; 446cc
|
|||||||
ld hl, PartyMonOT
|
ld hl, PartyMonOT
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
call AddNTimes
|
call AddNTimes
|
||||||
ld bc, $a
|
ld bc, NAME_LENGTH - 1
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
pop af
|
pop af
|
||||||
ld hl, PartyMon1ID
|
ld hl, PartyMon1ID
|
||||||
|
323
engine/map_object_action.asm
Executable file
323
engine/map_object_action.asm
Executable file
@ -0,0 +1,323 @@
|
|||||||
|
ld hl, OBJECT_ACTION
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
ld l, a
|
||||||
|
ld h, 0
|
||||||
|
add hl, hl
|
||||||
|
add hl, hl
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
call _hl_
|
||||||
|
ret
|
||||||
|
; 445f
|
||||||
|
|
||||||
|
Pointers445f: ; 445f
|
||||||
|
dw SetFacingStanding, SetFacingStanding ; 00
|
||||||
|
dw Function44b5, SetFacingCurrent ; 01 standing?
|
||||||
|
dw Function44c1, SetFacingCurrent ; 02 walking?
|
||||||
|
dw Function4508, SetFacingCurrent ; 03 bumping?
|
||||||
|
dw Function4529, SetFacingCurrent ; 04
|
||||||
|
dw Function4539, SetFacingStanding ; 05
|
||||||
|
dw Function456e, Function456e ; 06
|
||||||
|
dw Function457b, SetFacingStanding ; 07
|
||||||
|
dw Function4582, Function4582 ; 08
|
||||||
|
dw Function4589, Function4589 ; 09
|
||||||
|
dw Function4590, Function45a4 ; 0a
|
||||||
|
dw Function45ab, SetFacingCurrent ; 0c
|
||||||
|
dw Function45be, Function45be ; 0b
|
||||||
|
dw Function45c5, Function45c5 ; 0d
|
||||||
|
dw Function45da, SetFacingStanding ; 0e
|
||||||
|
dw Function45ed, SetFacingStanding ; 0f
|
||||||
|
dw Function44e4, SetFacingCurrent ; 10
|
||||||
|
; 44a3
|
||||||
|
|
||||||
|
SetFacingStanding: ; 44a3
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], STANDING
|
||||||
|
ret
|
||||||
|
; 44aa
|
||||||
|
|
||||||
|
SetFacingCurrent: ; 44aa
|
||||||
|
call GetSpriteDirection
|
||||||
|
or 0 ; useless
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 44b5
|
||||||
|
|
||||||
|
Function44b5: ; 44b5
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
and 1
|
||||||
|
jr nz, Function44c1
|
||||||
|
jp SetFacingCurrent
|
||||||
|
; 44c1
|
||||||
|
|
||||||
|
Function44c1: ; 44c1
|
||||||
|
ld hl, OBJECT_FLAGS1
|
||||||
|
add hl, bc
|
||||||
|
bit SLIDING, [hl]
|
||||||
|
jp nz, SetFacingCurrent
|
||||||
|
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
inc a
|
||||||
|
and %00001111
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
and %00000011
|
||||||
|
ld d, a
|
||||||
|
|
||||||
|
call GetSpriteDirection
|
||||||
|
or 0 ; useless
|
||||||
|
or d
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 44e4
|
||||||
|
|
||||||
|
Function44e4: ; 44e4
|
||||||
|
ld hl, OBJECT_FLAGS1
|
||||||
|
add hl, bc
|
||||||
|
bit SLIDING, [hl]
|
||||||
|
jp nz, SetFacingCurrent
|
||||||
|
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
add 2
|
||||||
|
and %00001111
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
and %00000011
|
||||||
|
ld d, a
|
||||||
|
|
||||||
|
call GetSpriteDirection
|
||||||
|
or 0 ; useless
|
||||||
|
or d
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 4508
|
||||||
|
|
||||||
|
Function4508: ; 4508
|
||||||
|
ld hl, OBJECT_FLAGS1
|
||||||
|
add hl, bc
|
||||||
|
bit SLIDING, [hl]
|
||||||
|
jp nz, SetFacingCurrent
|
||||||
|
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
inc [hl]
|
||||||
|
|
||||||
|
ld a, [hl]
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
and %00000011
|
||||||
|
ld d, a
|
||||||
|
|
||||||
|
call GetSpriteDirection
|
||||||
|
or 0 ; useless
|
||||||
|
or d
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 4529
|
||||||
|
|
||||||
|
Function4529: ; 4529
|
||||||
|
call Function453f
|
||||||
|
ld hl, OBJECT_FACING
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
or 0 ; useless
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 4539
|
||||||
|
|
||||||
|
Function4539: ; 4539
|
||||||
|
call Function453f
|
||||||
|
jp SetFacingStanding
|
||||||
|
; 453f
|
||||||
|
|
||||||
|
Function453f: ; 453f
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
and %11110000
|
||||||
|
ld e, a
|
||||||
|
|
||||||
|
ld a, [hl]
|
||||||
|
inc a
|
||||||
|
and %00001111
|
||||||
|
ld d, a
|
||||||
|
cp 4
|
||||||
|
jr c, .ok
|
||||||
|
|
||||||
|
ld d, 0
|
||||||
|
ld a, e
|
||||||
|
add $10
|
||||||
|
and %00110000
|
||||||
|
ld e, a
|
||||||
|
|
||||||
|
.ok
|
||||||
|
ld a, d
|
||||||
|
or e
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
swap e
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .Directions
|
||||||
|
add hl, de
|
||||||
|
ld a, [hl]
|
||||||
|
ld hl, OBJECT_FACING
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 456a
|
||||||
|
|
||||||
|
.Directions ; 456a
|
||||||
|
db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT
|
||||||
|
; 456e
|
||||||
|
|
||||||
|
Function456e: ; 456e
|
||||||
|
call GetSpriteDirection
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
add $10
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 457b
|
||||||
|
|
||||||
|
Function457b: ; 457b
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], FACING_15
|
||||||
|
ret
|
||||||
|
; 4582
|
||||||
|
|
||||||
|
Function4582: ; 4582 emote
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], FACING_EMOTE
|
||||||
|
ret
|
||||||
|
; 4589
|
||||||
|
|
||||||
|
Function4589: ; 4589
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], FACING_17
|
||||||
|
ret
|
||||||
|
; 4590
|
||||||
|
|
||||||
|
Function4590: ; 4590
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
inc a
|
||||||
|
and %00001111
|
||||||
|
ld [hl], a
|
||||||
|
and %00001000
|
||||||
|
jr z, Function45a4
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], FACING_04
|
||||||
|
ret
|
||||||
|
; 45a4
|
||||||
|
|
||||||
|
Function45a4: ; 45a4
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], 0
|
||||||
|
ret
|
||||||
|
; 45ab
|
||||||
|
|
||||||
|
Function45ab: ; 45ab
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
inc a
|
||||||
|
ld [hl], a
|
||||||
|
and %00001100
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
add $18
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 45be
|
||||||
|
|
||||||
|
Function45be: ; 45be
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], FACING_16
|
||||||
|
ret
|
||||||
|
; 45c5
|
||||||
|
|
||||||
|
Function45c5: ; 45c5
|
||||||
|
ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
|
||||||
|
ld d, FACING_17
|
||||||
|
cp SPRITE_BIG_SNORLAX
|
||||||
|
jr z, .ok
|
||||||
|
cp SPRITE_BIG_LAPRAS
|
||||||
|
jr z, .ok
|
||||||
|
ld d, FACING_16
|
||||||
|
|
||||||
|
.ok
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
ld [hl], d
|
||||||
|
ret
|
||||||
|
; 45da
|
||||||
|
|
||||||
|
Function45da: ; 45da
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
inc [hl]
|
||||||
|
ld a, [hl]
|
||||||
|
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
and 2
|
||||||
|
ld a, FACING_1C
|
||||||
|
jr z, .ok
|
||||||
|
inc a ; FACING_1D
|
||||||
|
.ok
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 45ed
|
||||||
|
|
||||||
|
Function45ed: ; 45ed
|
||||||
|
ld hl, OBJECT_STEP_FRAME
|
||||||
|
add hl, bc
|
||||||
|
inc [hl]
|
||||||
|
ld a, [hl]
|
||||||
|
ld hl, OBJECT_FACING_STEP
|
||||||
|
add hl, bc
|
||||||
|
and 4
|
||||||
|
ld a, FACING_1E
|
||||||
|
jr z, .ok
|
||||||
|
inc a ; FACING_1F
|
||||||
|
|
||||||
|
.ok
|
||||||
|
ld [hl], a
|
||||||
|
ret
|
||||||
|
; 4600
|
File diff suppressed because it is too large
Load Diff
@ -3,10 +3,10 @@ MovementPointers: ; 5075
|
|||||||
dw Movement_turn_head_up ; 01
|
dw Movement_turn_head_up ; 01
|
||||||
dw Movement_turn_head_left ; 02
|
dw Movement_turn_head_left ; 02
|
||||||
dw Movement_turn_head_right ; 03
|
dw Movement_turn_head_right ; 03
|
||||||
dw Movement_half_step_down ; 04
|
dw Movement_turn_step_down ; 04
|
||||||
dw Movement_half_step_up ; 05
|
dw Movement_turn_step_up ; 05
|
||||||
dw Movement_half_step_left ; 06
|
dw Movement_turn_step_left ; 06
|
||||||
dw Movement_half_step_right ; 07
|
dw Movement_turn_step_right ; 07
|
||||||
dw Movement_slow_step_down ; 08
|
dw Movement_slow_step_down ; 08
|
||||||
dw Movement_slow_step_up ; 09
|
dw Movement_slow_step_up ; 09
|
||||||
dw Movement_slow_step_left ; 0a
|
dw Movement_slow_step_left ; 0a
|
||||||
@ -130,7 +130,7 @@ Movement_step_dig: ; 5145
|
|||||||
ld hl, OBJECT_ACTION
|
ld hl, OBJECT_ACTION
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], PERSON_ACTION_SPIN
|
ld [hl], PERSON_ACTION_SPIN
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
ld hl, OBJECT_STEP_DURATION
|
ld hl, OBJECT_STEP_DURATION
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
@ -150,7 +150,7 @@ Movement_return_dig: ; 516a
|
|||||||
ld hl, OBJECT_STEP_FRAME
|
ld hl, OBJECT_STEP_FRAME
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
ld hl, OBJECT_STEP_DURATION
|
ld hl, OBJECT_STEP_DURATION
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
@ -174,7 +174,7 @@ Movement_fish_got_bite: ; 5189
|
|||||||
; 5196
|
; 5196
|
||||||
|
|
||||||
Movement_rock_smash: ; 5196
|
Movement_rock_smash: ; 5196
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
ld hl, OBJECT_STEP_DURATION
|
ld hl, OBJECT_STEP_DURATION
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
@ -233,7 +233,7 @@ Movement_48: ; 51db
|
|||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $0
|
ld [hl], $0
|
||||||
|
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
ld hl, OBJECT_STEP_DURATION
|
ld hl, OBJECT_STEP_DURATION
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
@ -311,7 +311,7 @@ Movement_step_sleep: ; 5242
|
|||||||
; parameters:
|
; parameters:
|
||||||
; duration (DecimalParam)
|
; duration (DecimalParam)
|
||||||
|
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
jr Movement_step_sleep_common
|
jr Movement_step_sleep_common
|
||||||
|
|
||||||
Movement_step_sleep_common: ; 5247
|
Movement_step_sleep_common: ; 5247
|
||||||
@ -429,7 +429,7 @@ Movement_step_shake: ; 52d5
|
|||||||
; parameters:
|
; parameters:
|
||||||
; displacement (DecimalParam)
|
; displacement (DecimalParam)
|
||||||
|
|
||||||
call GetMovementByte
|
call JumpMovementPointer
|
||||||
call ShakeScreen
|
call ShakeScreen
|
||||||
jp ContinueReadingMovement
|
jp ContinueReadingMovement
|
||||||
; 52de
|
; 52de
|
||||||
@ -709,23 +709,23 @@ Movement_fast_jump_step_right: ; 53eb
|
|||||||
; 53f0
|
; 53f0
|
||||||
|
|
||||||
|
|
||||||
Movement_half_step_down: ; 53f0
|
Movement_turn_step_down: ; 53f0
|
||||||
ld a, OW_DOWN
|
ld a, OW_DOWN
|
||||||
jr HalfStep
|
jr TurnStep
|
||||||
|
|
||||||
Movement_half_step_up: ; 53f4
|
Movement_turn_step_up: ; 53f4
|
||||||
ld a, OW_UP
|
ld a, OW_UP
|
||||||
jr HalfStep
|
jr TurnStep
|
||||||
|
|
||||||
Movement_half_step_left: ; 53f8
|
Movement_turn_step_left: ; 53f8
|
||||||
ld a, OW_LEFT
|
ld a, OW_LEFT
|
||||||
jr HalfStep
|
jr TurnStep
|
||||||
|
|
||||||
Movement_half_step_right: ; 53fc
|
Movement_turn_step_right: ; 53fc
|
||||||
ld a, OW_RIGHT
|
ld a, OW_RIGHT
|
||||||
jr HalfStep
|
jr TurnStep
|
||||||
|
|
||||||
HalfStep: ; 5400
|
TurnStep: ; 5400
|
||||||
ld hl, OBJECT_29 ; new facing
|
ld hl, OBJECT_29 ; new facing
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
|
@ -511,7 +511,6 @@ TradedForText: ; 0xfcf80
|
|||||||
; traded givemon for getmon
|
; traded givemon for getmon
|
||||||
text_jump UnknownText_0x1bd429
|
text_jump UnknownText_0x1bd429
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
ld de, MUSIC_NONE
|
ld de, MUSIC_NONE
|
||||||
call PlayMusic
|
call PlayMusic
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
|
846
engine/player_movement.asm
Executable file
846
engine/player_movement.asm
Executable file
@ -0,0 +1,846 @@
|
|||||||
|
DoPlayerMovement:: ; 80000
|
||||||
|
|
||||||
|
call .GetDPad
|
||||||
|
ld a, movement_step_sleep_1
|
||||||
|
ld [MovementAnimation], a
|
||||||
|
xor a
|
||||||
|
ld [wd041], a
|
||||||
|
call .TranslateIntoMovement
|
||||||
|
ld c, a
|
||||||
|
ld a, [MovementAnimation]
|
||||||
|
ld [wPlayerNextMovement], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.GetDPad
|
||||||
|
|
||||||
|
ld a, [hJoyDown]
|
||||||
|
ld [CurInput], a
|
||||||
|
|
||||||
|
; Standing downhill instead moves down.
|
||||||
|
|
||||||
|
ld hl, BikeFlags
|
||||||
|
bit 2, [hl] ; downhill
|
||||||
|
ret z
|
||||||
|
|
||||||
|
ld c, a
|
||||||
|
and D_PAD
|
||||||
|
ret nz
|
||||||
|
|
||||||
|
ld a, c
|
||||||
|
or D_DOWN
|
||||||
|
ld [CurInput], a
|
||||||
|
ret
|
||||||
|
; 8002d
|
||||||
|
|
||||||
|
.TranslateIntoMovement
|
||||||
|
ld a, [PlayerState]
|
||||||
|
cp PLAYER_NORMAL
|
||||||
|
jr z, .Normal
|
||||||
|
cp PLAYER_SURF
|
||||||
|
jr z, .Surf
|
||||||
|
cp PLAYER_SURF_PIKA
|
||||||
|
jr z, .Surf
|
||||||
|
cp PLAYER_BIKE
|
||||||
|
jr z, .Normal
|
||||||
|
cp PLAYER_SLIP
|
||||||
|
jr z, .Ice
|
||||||
|
|
||||||
|
.Normal
|
||||||
|
call .CheckForced
|
||||||
|
call .GetAction
|
||||||
|
call .CheckTile
|
||||||
|
ret c
|
||||||
|
call .CheckTurning
|
||||||
|
ret c
|
||||||
|
call .TryStep
|
||||||
|
ret c
|
||||||
|
call .TryJump
|
||||||
|
ret c
|
||||||
|
call .CheckWarp
|
||||||
|
ret c
|
||||||
|
jr .NotMoving
|
||||||
|
|
||||||
|
.Surf
|
||||||
|
call .CheckForced
|
||||||
|
call .GetAction
|
||||||
|
call .CheckTile
|
||||||
|
ret c
|
||||||
|
call .CheckTurning
|
||||||
|
ret c
|
||||||
|
call .TrySurf
|
||||||
|
ret c
|
||||||
|
jr .NotMoving
|
||||||
|
|
||||||
|
.Ice
|
||||||
|
call .CheckForced
|
||||||
|
call .GetAction
|
||||||
|
call .CheckTile
|
||||||
|
ret c
|
||||||
|
call .CheckTurning
|
||||||
|
ret c
|
||||||
|
call .TryStep
|
||||||
|
ret c
|
||||||
|
call .TryJump
|
||||||
|
ret c
|
||||||
|
call .CheckWarp
|
||||||
|
ret c
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .HitWall
|
||||||
|
call .BumpSound
|
||||||
|
.HitWall
|
||||||
|
call .StandInPlace
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.NotMoving
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .Standing
|
||||||
|
|
||||||
|
; Walking into an edge warp won't bump.
|
||||||
|
ld a, [EngineBuffer4]
|
||||||
|
and a
|
||||||
|
jr nz, .CantMove
|
||||||
|
call .BumpSound
|
||||||
|
.CantMove
|
||||||
|
call ._WalkInPlace
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Standing
|
||||||
|
call .StandInPlace
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 800b7
|
||||||
|
|
||||||
|
.CheckTile: ; 800b7
|
||||||
|
; Tiles such as waterfalls and warps move the player
|
||||||
|
; in a given direction, overriding input.
|
||||||
|
|
||||||
|
ld a, [PlayerNextTile]
|
||||||
|
ld c, a
|
||||||
|
call CheckWhirlpoolTile
|
||||||
|
jr c, .asm_800c4
|
||||||
|
ld a, 3
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.asm_800c4
|
||||||
|
and $f0
|
||||||
|
cp $30 ; moving water
|
||||||
|
jr z, .water
|
||||||
|
cp $40 ; moving land 1
|
||||||
|
jr z, .land1
|
||||||
|
cp $50 ; moving land 2
|
||||||
|
jr z, .land2
|
||||||
|
cp $70 ; warps
|
||||||
|
jr z, .warps
|
||||||
|
jr .asm_8013c
|
||||||
|
|
||||||
|
.water
|
||||||
|
ld a, c
|
||||||
|
and 3
|
||||||
|
ld c, a
|
||||||
|
ld b, 0
|
||||||
|
ld hl, .water_table
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
ld [WalkingDirection], a
|
||||||
|
jr .asm_8013e
|
||||||
|
|
||||||
|
.water_table
|
||||||
|
db RIGHT
|
||||||
|
db LEFT
|
||||||
|
db UP
|
||||||
|
db DOWN
|
||||||
|
|
||||||
|
.land1
|
||||||
|
ld a, c
|
||||||
|
and 7
|
||||||
|
ld c, a
|
||||||
|
ld b, 0
|
||||||
|
ld hl, .land1_table
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .asm_8013c
|
||||||
|
ld [WalkingDirection], a
|
||||||
|
jr .asm_8013e
|
||||||
|
|
||||||
|
.land1_table
|
||||||
|
db STANDING
|
||||||
|
db RIGHT
|
||||||
|
db LEFT
|
||||||
|
db UP
|
||||||
|
db DOWN
|
||||||
|
db STANDING
|
||||||
|
db STANDING
|
||||||
|
db STANDING
|
||||||
|
|
||||||
|
.land2
|
||||||
|
ld a, c
|
||||||
|
and 7
|
||||||
|
ld c, a
|
||||||
|
ld b, 0
|
||||||
|
ld hl, .land2_table
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .asm_8013c
|
||||||
|
ld [WalkingDirection], a
|
||||||
|
jr .asm_8013e
|
||||||
|
|
||||||
|
.land2_table
|
||||||
|
db RIGHT
|
||||||
|
db LEFT
|
||||||
|
db UP
|
||||||
|
db DOWN
|
||||||
|
db STANDING
|
||||||
|
db STANDING
|
||||||
|
db STANDING
|
||||||
|
db STANDING
|
||||||
|
|
||||||
|
.warps
|
||||||
|
ld a, c
|
||||||
|
cp $71 ; door
|
||||||
|
jr z, .down
|
||||||
|
cp $79
|
||||||
|
jr z, .down
|
||||||
|
cp $7a ; stairs
|
||||||
|
jr z, .down
|
||||||
|
cp $7b ; cave
|
||||||
|
jr nz, .asm_8013c
|
||||||
|
|
||||||
|
.down
|
||||||
|
ld a, DOWN
|
||||||
|
ld [WalkingDirection], a
|
||||||
|
jr .asm_8013e
|
||||||
|
|
||||||
|
.asm_8013c
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.asm_8013e
|
||||||
|
ld a, STEP_WALK
|
||||||
|
call .DoStep
|
||||||
|
ld a, 5
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
; 80147
|
||||||
|
|
||||||
|
.CheckTurning: ; 80147
|
||||||
|
; If the player is turning, change direction first. This also lets
|
||||||
|
; the player change facing without moving by tapping a direction.
|
||||||
|
|
||||||
|
ld a, [wd04e]
|
||||||
|
cp 0
|
||||||
|
jr nz, .asm_80169
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .asm_80169
|
||||||
|
|
||||||
|
ld e, a
|
||||||
|
ld a, [PlayerDirection]
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
and 3
|
||||||
|
cp e
|
||||||
|
jr z, .asm_80169
|
||||||
|
|
||||||
|
ld a, STEP_TURN
|
||||||
|
call .DoStep
|
||||||
|
ld a, 2
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.asm_80169
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 8016b
|
||||||
|
|
||||||
|
.TryStep: ; 8016b
|
||||||
|
|
||||||
|
; Surfing actually calls .TrySurf directly instead of passing through here.
|
||||||
|
ld a, [PlayerState]
|
||||||
|
cp PLAYER_SURF
|
||||||
|
jr z, .TrySurf
|
||||||
|
cp PLAYER_SURF_PIKA
|
||||||
|
jr z, .TrySurf
|
||||||
|
|
||||||
|
call .CheckLandPerms
|
||||||
|
jr c, .bump
|
||||||
|
|
||||||
|
call .CheckNPC
|
||||||
|
and a
|
||||||
|
jr z, .bump
|
||||||
|
cp 2
|
||||||
|
jr z, .bump
|
||||||
|
|
||||||
|
ld a, [PlayerNextTile]
|
||||||
|
call CheckIceTile
|
||||||
|
jr nc, .ice
|
||||||
|
|
||||||
|
; Downhill riding is slower when not moving down.
|
||||||
|
call .BikeCheck
|
||||||
|
jr nz, .walk
|
||||||
|
|
||||||
|
ld hl, BikeFlags
|
||||||
|
bit 2, [hl] ; downhill
|
||||||
|
jr z, .fast
|
||||||
|
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
cp DOWN
|
||||||
|
jr z, .fast
|
||||||
|
|
||||||
|
ld a, STEP_WALK
|
||||||
|
call .DoStep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.fast
|
||||||
|
ld a, STEP_BIKE
|
||||||
|
call .DoStep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.walk
|
||||||
|
ld a, STEP_WALK
|
||||||
|
call .DoStep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.ice
|
||||||
|
ld a, STEP_ICE
|
||||||
|
call .DoStep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
; unused?
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.bump
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 801c0
|
||||||
|
|
||||||
|
.TrySurf: ; 801c0
|
||||||
|
|
||||||
|
call .CheckSurfPerms
|
||||||
|
ld [wd040], a
|
||||||
|
jr c, .surf_bump
|
||||||
|
|
||||||
|
call .CheckNPC
|
||||||
|
ld [wd03f], a
|
||||||
|
and a
|
||||||
|
jr z, .surf_bump
|
||||||
|
cp 2
|
||||||
|
jr z, .surf_bump
|
||||||
|
|
||||||
|
ld a, [wd040]
|
||||||
|
and a
|
||||||
|
jr nz, .ExitWater
|
||||||
|
|
||||||
|
ld a, STEP_WALK
|
||||||
|
call .DoStep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.ExitWater
|
||||||
|
call .GetOutOfWater
|
||||||
|
call PlayMapMusic
|
||||||
|
ld a, STEP_WALK
|
||||||
|
call .DoStep
|
||||||
|
ld a, 6
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.surf_bump
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 801f3
|
||||||
|
|
||||||
|
.TryJump: ; 801f3
|
||||||
|
ld a, [PlayerNextTile]
|
||||||
|
ld e, a
|
||||||
|
and $f0
|
||||||
|
cp $a0 ; ledge
|
||||||
|
jr nz, .DontJump
|
||||||
|
|
||||||
|
ld a, e
|
||||||
|
and 7
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .data_8021e
|
||||||
|
add hl, de
|
||||||
|
ld a, [FacingDirection]
|
||||||
|
and [hl]
|
||||||
|
jr z, .DontJump
|
||||||
|
|
||||||
|
ld de, SFX_JUMP_OVER_LEDGE
|
||||||
|
call PlaySFX
|
||||||
|
ld a, STEP_LEDGE
|
||||||
|
call .DoStep
|
||||||
|
ld a, 7
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.DontJump
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.data_8021e
|
||||||
|
db FACE_RIGHT
|
||||||
|
db FACE_LEFT
|
||||||
|
db FACE_UP
|
||||||
|
db FACE_DOWN
|
||||||
|
db FACE_RIGHT | FACE_DOWN
|
||||||
|
db FACE_DOWN | FACE_LEFT
|
||||||
|
db FACE_UP | FACE_RIGHT
|
||||||
|
db FACE_UP | FACE_LEFT
|
||||||
|
; 80226
|
||||||
|
|
||||||
|
.CheckWarp: ; 80226
|
||||||
|
|
||||||
|
; Bug: Since no case is made for STANDING here, it will check
|
||||||
|
; [.edgewarps + $ff]. This resolves to $3e at $8035a.
|
||||||
|
; This causes wd041 to be nonzero when standing on tile $3e,
|
||||||
|
; making bumps silent.
|
||||||
|
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .EdgeWarps
|
||||||
|
add hl, de
|
||||||
|
ld a, [PlayerNextTile]
|
||||||
|
cp [hl]
|
||||||
|
jr nz, .not_warp
|
||||||
|
|
||||||
|
ld a, 1
|
||||||
|
ld [wd041], a
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
cp STANDING
|
||||||
|
jr z, .not_warp
|
||||||
|
|
||||||
|
ld e, a
|
||||||
|
ld a, [PlayerDirection]
|
||||||
|
rrca
|
||||||
|
rrca
|
||||||
|
and 3
|
||||||
|
cp e
|
||||||
|
jr nz, .not_warp
|
||||||
|
call WarpCheck
|
||||||
|
jr nc, .not_warp
|
||||||
|
|
||||||
|
call .StandInPlace
|
||||||
|
scf
|
||||||
|
ld a, 1
|
||||||
|
ret
|
||||||
|
|
||||||
|
.not_warp
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.EdgeWarps
|
||||||
|
db $70, $78, $76, $7e
|
||||||
|
; 8025f
|
||||||
|
|
||||||
|
.DoStep: ; 8025f
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .Steps
|
||||||
|
add hl, de
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
ld e, a
|
||||||
|
cp STANDING
|
||||||
|
jp z, .StandInPlace
|
||||||
|
|
||||||
|
add hl, de
|
||||||
|
ld a, [hl]
|
||||||
|
ld [MovementAnimation], a
|
||||||
|
|
||||||
|
ld hl, .InPlace
|
||||||
|
add hl, de
|
||||||
|
ld a, [hl]
|
||||||
|
ld [wd04e], a
|
||||||
|
|
||||||
|
ld a, 4
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Steps
|
||||||
|
dw .SlowStep
|
||||||
|
dw .NormalStep
|
||||||
|
dw .FastStep
|
||||||
|
dw .JumpStep
|
||||||
|
dw .SlideStep
|
||||||
|
dw .TurningStep
|
||||||
|
dw .BackJumpStep
|
||||||
|
dw .InPlace
|
||||||
|
|
||||||
|
.SlowStep
|
||||||
|
slow_step_down
|
||||||
|
slow_step_up
|
||||||
|
slow_step_left
|
||||||
|
slow_step_right
|
||||||
|
.NormalStep
|
||||||
|
step_down
|
||||||
|
step_up
|
||||||
|
step_left
|
||||||
|
step_right
|
||||||
|
.FastStep
|
||||||
|
big_step_down
|
||||||
|
big_step_up
|
||||||
|
big_step_left
|
||||||
|
big_step_right
|
||||||
|
.JumpStep
|
||||||
|
jump_step_down
|
||||||
|
jump_step_up
|
||||||
|
jump_step_left
|
||||||
|
jump_step_right
|
||||||
|
.SlideStep
|
||||||
|
fast_slide_step_down
|
||||||
|
fast_slide_step_up
|
||||||
|
fast_slide_step_left
|
||||||
|
fast_slide_step_right
|
||||||
|
.BackJumpStep
|
||||||
|
jump_step_up
|
||||||
|
jump_step_down
|
||||||
|
jump_step_right
|
||||||
|
jump_step_left
|
||||||
|
.TurningStep
|
||||||
|
turn_step_down
|
||||||
|
turn_step_up
|
||||||
|
turn_step_left
|
||||||
|
turn_step_right
|
||||||
|
.InPlace
|
||||||
|
db $80 + movement_turn_head_down
|
||||||
|
db $80 + movement_turn_head_up
|
||||||
|
db $80 + movement_turn_head_left
|
||||||
|
db $80 + movement_turn_head_right
|
||||||
|
; 802b3
|
||||||
|
|
||||||
|
.StandInPlace: ; 802b3
|
||||||
|
ld a, 0
|
||||||
|
ld [wd04e], a
|
||||||
|
ld a, movement_step_sleep_1
|
||||||
|
ld [MovementAnimation], a
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 802bf
|
||||||
|
|
||||||
|
._WalkInPlace: ; 802bf
|
||||||
|
ld a, 0
|
||||||
|
ld [wd04e], a
|
||||||
|
ld a, movement_step_bump
|
||||||
|
ld [MovementAnimation], a
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 802cb
|
||||||
|
|
||||||
|
.CheckForced: ; 802cb
|
||||||
|
; When sliding on ice, input is forced to remain in the same direction.
|
||||||
|
|
||||||
|
call CheckStandingOnIce
|
||||||
|
ret nc
|
||||||
|
|
||||||
|
ld a, [wd04e]
|
||||||
|
cp 0
|
||||||
|
ret z
|
||||||
|
|
||||||
|
and 3
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .forced_dpad
|
||||||
|
add hl, de
|
||||||
|
ld a, [CurInput]
|
||||||
|
and BUTTONS
|
||||||
|
or [hl]
|
||||||
|
ld [CurInput], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.forced_dpad
|
||||||
|
db D_DOWN, D_UP, D_LEFT, D_RIGHT
|
||||||
|
; 802ec
|
||||||
|
|
||||||
|
.GetAction: ; 802ec
|
||||||
|
; Poll player input and update movement info.
|
||||||
|
|
||||||
|
ld hl, .table
|
||||||
|
ld de, .table2 - .table1
|
||||||
|
ld a, [CurInput]
|
||||||
|
bit D_DOWN_F, a
|
||||||
|
jr nz, .d_down
|
||||||
|
bit D_UP_F, a
|
||||||
|
jr nz, .d_up
|
||||||
|
bit D_LEFT_F, a
|
||||||
|
jr nz, .d_left
|
||||||
|
bit D_RIGHT_F, a
|
||||||
|
jr nz, .d_right
|
||||||
|
; Standing
|
||||||
|
jr .update
|
||||||
|
|
||||||
|
.d_down add hl, de
|
||||||
|
.d_up add hl, de
|
||||||
|
.d_left add hl, de
|
||||||
|
.d_right add hl, de
|
||||||
|
|
||||||
|
.update
|
||||||
|
ld a, [hli]
|
||||||
|
ld [WalkingDirection], a
|
||||||
|
ld a, [hli]
|
||||||
|
ld [FacingDirection], a
|
||||||
|
ld a, [hli]
|
||||||
|
ld [WalkingX], a
|
||||||
|
ld a, [hli]
|
||||||
|
ld [WalkingY], a
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
ld a, [hl]
|
||||||
|
ld [WalkingTile], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.table
|
||||||
|
; struct:
|
||||||
|
; walk direction
|
||||||
|
; facing
|
||||||
|
; x movement
|
||||||
|
; y movement
|
||||||
|
; tile collision pointer
|
||||||
|
.table1
|
||||||
|
db STANDING, FACE_CURRENT, 0, 0
|
||||||
|
dw PlayerNextTile
|
||||||
|
.table2
|
||||||
|
db RIGHT, FACE_RIGHT, 1, 0
|
||||||
|
dw TileRight
|
||||||
|
db LEFT, FACE_LEFT, -1, 0
|
||||||
|
dw TileLeft
|
||||||
|
db UP, FACE_UP, 0, -1
|
||||||
|
dw TileUp
|
||||||
|
db DOWN, FACE_DOWN, 0, 1
|
||||||
|
dw TileDown
|
||||||
|
; 80341
|
||||||
|
|
||||||
|
.CheckNPC: ; 80341
|
||||||
|
; Returns 0 if there is an NPC in front that you can't move
|
||||||
|
; Returns 1 if there is no NPC in front
|
||||||
|
; Returns 2 if there is a movable NPC in front
|
||||||
|
ld a, 0
|
||||||
|
ld [hMapObjectIndexBuffer], a
|
||||||
|
; Load the next X coordinate into d
|
||||||
|
ld a, [PlayerNextMapX]
|
||||||
|
ld d, a
|
||||||
|
ld a, [WalkingX]
|
||||||
|
add d
|
||||||
|
ld d, a
|
||||||
|
; Load the next Y coordinate into e
|
||||||
|
ld a, [PlayerNextMapY]
|
||||||
|
ld e, a
|
||||||
|
ld a, [WalkingY]
|
||||||
|
add e
|
||||||
|
ld e, a
|
||||||
|
; Find an object struct with coordinates equal to d,e
|
||||||
|
ld bc, ObjectStructs ; redundant
|
||||||
|
callba IsNPCAtCoord
|
||||||
|
jr nc, .is_npc
|
||||||
|
call .CheckStrengthBoulder
|
||||||
|
jr c, .no_bump
|
||||||
|
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.is_npc
|
||||||
|
ld a, 1
|
||||||
|
ret
|
||||||
|
|
||||||
|
.no_bump
|
||||||
|
ld a, 2
|
||||||
|
ret
|
||||||
|
; 8036f
|
||||||
|
|
||||||
|
.CheckStrengthBoulder: ; 8036f
|
||||||
|
|
||||||
|
ld hl, BikeFlags
|
||||||
|
bit 0, [hl] ; using strength
|
||||||
|
jr z, .not_boulder
|
||||||
|
|
||||||
|
ld hl, OBJECT_DIRECTION_WALKING
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
cp STANDING
|
||||||
|
jr nz, .not_boulder
|
||||||
|
|
||||||
|
ld hl, OBJECT_PALETTE
|
||||||
|
add hl, bc
|
||||||
|
bit 6, [hl]
|
||||||
|
jr z, .not_boulder
|
||||||
|
|
||||||
|
ld hl, OBJECT_FLAGS2
|
||||||
|
add hl, bc
|
||||||
|
set 2, [hl]
|
||||||
|
|
||||||
|
ld a, [WalkingDirection]
|
||||||
|
ld d, a
|
||||||
|
ld hl, OBJECT_RANGE
|
||||||
|
add hl, bc
|
||||||
|
ld a, [hl]
|
||||||
|
and $fc
|
||||||
|
or d
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.not_boulder
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
; 8039e
|
||||||
|
|
||||||
|
.CheckLandPerms: ; 8039e
|
||||||
|
; Return 0 if walking onto land and tile permissions allow it.
|
||||||
|
; Otherwise, return carry.
|
||||||
|
|
||||||
|
ld a, [TilePermissions]
|
||||||
|
ld d, a
|
||||||
|
ld a, [FacingDirection]
|
||||||
|
and d
|
||||||
|
jr nz, .NotWalkable
|
||||||
|
|
||||||
|
ld a, [WalkingTile]
|
||||||
|
call .CheckWalkable
|
||||||
|
jr c, .NotWalkable
|
||||||
|
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.NotWalkable
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
; 803b4
|
||||||
|
|
||||||
|
.CheckSurfPerms: ; 803b4
|
||||||
|
; Return 0 if moving in water, or 1 if moving onto land.
|
||||||
|
; Otherwise, return carry.
|
||||||
|
|
||||||
|
ld a, [TilePermissions]
|
||||||
|
ld d, a
|
||||||
|
ld a, [FacingDirection]
|
||||||
|
and d
|
||||||
|
jr nz, .NotSurfable
|
||||||
|
|
||||||
|
ld a, [WalkingTile]
|
||||||
|
call .CheckSurfable
|
||||||
|
jr c, .NotSurfable
|
||||||
|
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.NotSurfable
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
; 803ca
|
||||||
|
|
||||||
|
.BikeCheck: ; 803ca
|
||||||
|
|
||||||
|
ld a, [PlayerState]
|
||||||
|
cp PLAYER_BIKE
|
||||||
|
ret z
|
||||||
|
cp PLAYER_SLIP
|
||||||
|
ret
|
||||||
|
; 803d3
|
||||||
|
|
||||||
|
.CheckWalkable: ; 803d3
|
||||||
|
; Return 0 if tile a is land. Otherwise, return carry.
|
||||||
|
|
||||||
|
call GetTileCollision
|
||||||
|
and a ; land
|
||||||
|
ret z
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
; 803da
|
||||||
|
|
||||||
|
.CheckSurfable: ; 803da
|
||||||
|
; Return 0 if tile a is water, or 1 if land.
|
||||||
|
; Otherwise, return carry.
|
||||||
|
|
||||||
|
call GetTileCollision
|
||||||
|
cp 1
|
||||||
|
jr z, .Water
|
||||||
|
|
||||||
|
; Can walk back onto land from water.
|
||||||
|
and a
|
||||||
|
jr z, .Land
|
||||||
|
|
||||||
|
jr .Neither
|
||||||
|
|
||||||
|
.Water
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Land
|
||||||
|
ld a, 1
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.Neither
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
; 803ee
|
||||||
|
|
||||||
|
.BumpSound: ; 803ee
|
||||||
|
|
||||||
|
call CheckSFX
|
||||||
|
ret c
|
||||||
|
ld de, SFX_BUMP
|
||||||
|
call PlaySFX
|
||||||
|
ret
|
||||||
|
; 803f9
|
||||||
|
|
||||||
|
.GetOutOfWater: ; 803f9
|
||||||
|
push bc
|
||||||
|
ld a, PLAYER_NORMAL
|
||||||
|
ld [PlayerState], a
|
||||||
|
call ReplaceKrisSprite ; UpdateSprites
|
||||||
|
pop bc
|
||||||
|
ret
|
||||||
|
; 80404
|
||||||
|
|
||||||
|
CheckStandingOnIce:: ; 80404
|
||||||
|
ld a, [wd04e]
|
||||||
|
cp 0
|
||||||
|
jr z, .not_ice
|
||||||
|
cp $f0
|
||||||
|
jr z, .not_ice
|
||||||
|
ld a, [PlayerNextTile]
|
||||||
|
call CheckIceTile
|
||||||
|
jr nc, .yep
|
||||||
|
ld a, [PlayerState]
|
||||||
|
cp PLAYER_SLIP
|
||||||
|
jr nz, .not_ice
|
||||||
|
|
||||||
|
.yep
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
.not_ice
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
; 80422
|
||||||
|
|
||||||
|
Function80422:: ; 80422
|
||||||
|
ld hl, wPlayerNextMovement
|
||||||
|
ld a, movement_step_sleep_1
|
||||||
|
cp [hl]
|
||||||
|
ret z
|
||||||
|
|
||||||
|
ld [hl], a
|
||||||
|
ld a, 0
|
||||||
|
ld [wd04e], a
|
||||||
|
ret
|
||||||
|
; 80430
|
@ -336,7 +336,6 @@ Text_WhoaMins: ; 0x908a4
|
|||||||
; Whoa!@ @
|
; Whoa!@ @
|
||||||
text_jump UnknownText_0x1bc31b
|
text_jump UnknownText_0x1bc31b
|
||||||
start_asm
|
start_asm
|
||||||
; 0x908a9
|
|
||||||
hlcoord 7, 14
|
hlcoord 7, 14
|
||||||
call DisplayMinutesWithMinString
|
call DisplayMinutesWithMinString
|
||||||
ld hl, .QuestionMark
|
ld hl, .QuestionMark
|
||||||
@ -645,7 +644,6 @@ DebugDisplayTime: ; 90abc
|
|||||||
|
|
||||||
.Text: ; 0x90acc
|
.Text: ; 0x90acc
|
||||||
start_asm
|
start_asm
|
||||||
|
|
||||||
call UpdateTime
|
call UpdateTime
|
||||||
|
|
||||||
hlcoord 1, 14
|
hlcoord 1, 14
|
||||||
|
@ -63,9 +63,6 @@ BugContest_ThirdPlaceText: ; 0x13719
|
|||||||
; Placing third was @ , who caught a @ !@ @
|
; Placing third was @ , who caught a @ !@ @
|
||||||
text_jump ContestJudging_ThirdPlaceText
|
text_jump ContestJudging_ThirdPlaceText
|
||||||
start_asm
|
start_asm
|
||||||
; 0x1371e
|
|
||||||
|
|
||||||
BugContest_ThirdPlace: ; 1371e
|
|
||||||
ld de, SFX_3RD_PLACE
|
ld de, SFX_3RD_PLACE
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
call WaitSFX
|
call WaitSFX
|
||||||
|
@ -460,7 +460,7 @@ LoadMovementDataPointer:: ; 19e9
|
|||||||
|
|
||||||
ld hl, OBJECT_STEP_TYPE
|
ld hl, OBJECT_STEP_TYPE
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], 0
|
ld [hl], STEP_TYPE_00
|
||||||
|
|
||||||
ld hl, VramState
|
ld hl, VramState
|
||||||
set 7, [hl]
|
set 7, [hl]
|
||||||
@ -611,7 +611,7 @@ endr
|
|||||||
ret
|
ret
|
||||||
; 1aae
|
; 1aae
|
||||||
|
|
||||||
Function1aae:: ; 1aae
|
_GetMovementByte:: ; 1aae
|
||||||
; Switch to the movement data bank
|
; Switch to the movement data bank
|
||||||
ld a, [hROMBank]
|
ld a, [hROMBank]
|
||||||
push af
|
push af
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
enum_start
|
enum_start
|
||||||
|
|
||||||
enum movement_turn_head_down
|
enum movement_turn_head_down
|
||||||
@ -20,24 +21,24 @@ turn_head_right: macro
|
|||||||
db movement_turn_head_right ; $03
|
db movement_turn_head_right ; $03
|
||||||
endm
|
endm
|
||||||
|
|
||||||
enum movement_half_step_down
|
enum movement_turn_step_down
|
||||||
half_step_down: macro
|
turn_step_down: macro
|
||||||
db movement_half_step_down ; $04
|
db movement_turn_step_down ; $04
|
||||||
endm
|
endm
|
||||||
|
|
||||||
enum movement_half_step_up
|
enum movement_turn_step_up
|
||||||
half_step_up: macro
|
turn_step_up: macro
|
||||||
db movement_half_step_up ; $05
|
db movement_turn_step_up ; $05
|
||||||
endm
|
endm
|
||||||
|
|
||||||
enum movement_half_step_left
|
enum movement_turn_step_left
|
||||||
half_step_left: macro
|
turn_step_left: macro
|
||||||
db movement_half_step_left ; $06
|
db movement_turn_step_left ; $06
|
||||||
endm
|
endm
|
||||||
|
|
||||||
enum movement_half_step_right
|
enum movement_turn_step_right
|
||||||
half_step_right: macro
|
turn_step_right: macro
|
||||||
db movement_half_step_right ; $07
|
db movement_turn_step_right ; $07
|
||||||
endm
|
endm
|
||||||
|
|
||||||
enum movement_slow_step_down
|
enum movement_slow_step_down
|
||||||
@ -367,7 +368,10 @@ step_loop: macro
|
|||||||
db movement_step_loop ; $4a
|
db movement_step_loop ; $4a
|
||||||
endm
|
endm
|
||||||
|
|
||||||
__enum__ = $4c
|
enum movement_step_4b
|
||||||
|
step_4b: macro
|
||||||
|
db movement_step_4b ; $4b
|
||||||
|
endm
|
||||||
|
|
||||||
enum movement_teleport_from
|
enum movement_teleport_from
|
||||||
teleport_from: macro
|
teleport_from: macro
|
||||||
|
870
main.asm
870
main.asm
@ -1568,21 +1568,21 @@ GetRelativeFacing:: ; 8417
|
|||||||
ret
|
ret
|
||||||
; 848a
|
; 848a
|
||||||
|
|
||||||
Function848a: ; 848a
|
QueueFollowerFirstStep: ; 848a
|
||||||
call Function849d
|
call .QueueFirstStep
|
||||||
jr c, .same
|
jr c, .same
|
||||||
ld [wd4d1], a
|
ld [wFollowMovementQueue], a
|
||||||
xor a
|
xor a
|
||||||
ld [wd4d0], a
|
ld [wFollowerMovementQueueLength], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.same
|
.same
|
||||||
ld a, -1
|
ld a, -1
|
||||||
ld [wd4d0], a
|
ld [wFollowerMovementQueueLength], a
|
||||||
ret
|
ret
|
||||||
; 849d
|
; 849d
|
||||||
|
|
||||||
Function849d: ; 849d
|
.QueueFirstStep
|
||||||
ld a, [wObjectFollow_Leader]
|
ld a, [wObjectFollow_Leader]
|
||||||
call GetObjectStruct
|
call GetObjectStruct
|
||||||
ld hl, OBJECT_NEXT_MAP_X
|
ld hl, OBJECT_NEXT_MAP_X
|
||||||
@ -1600,12 +1600,12 @@ Function849d: ; 849d
|
|||||||
jr z, .check_y
|
jr z, .check_y
|
||||||
jr c, .left
|
jr c, .left
|
||||||
and a
|
and a
|
||||||
ld a, $c + RIGHT
|
ld a, movement_step_right
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.left
|
.left
|
||||||
and a
|
and a
|
||||||
ld a, $c + LEFT
|
ld a, movement_step_left
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.check_y
|
.check_y
|
||||||
@ -1616,12 +1616,12 @@ Function849d: ; 849d
|
|||||||
jr z, .same_xy
|
jr z, .same_xy
|
||||||
jr c, .up
|
jr c, .up
|
||||||
and a
|
and a
|
||||||
ld a, $c + DOWN
|
ld a, movement_step_down
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.up
|
.up
|
||||||
and a
|
and a
|
||||||
ld a, $c + UP
|
ld a, movement_step_up
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.same_xy
|
.same_xy
|
||||||
@ -11520,855 +11520,7 @@ INCLUDE "text/phone/extra.asm"
|
|||||||
|
|
||||||
SECTION "bank20", ROMX, BANK[$20]
|
SECTION "bank20", ROMX, BANK[$20]
|
||||||
|
|
||||||
DoPlayerMovement:: ; 80000
|
INCLUDE "engine/player_movement.asm"
|
||||||
|
|
||||||
call GetMovementInput
|
|
||||||
ld a, movement_step_sleep_1
|
|
||||||
ld [MovementAnimation], a
|
|
||||||
xor a
|
|
||||||
ld [wd041], a
|
|
||||||
call GetPlayerMovement
|
|
||||||
ld c, a
|
|
||||||
ld a, [MovementAnimation]
|
|
||||||
ld [wc2de], a
|
|
||||||
ret
|
|
||||||
; 80017
|
|
||||||
|
|
||||||
GetMovementInput: ; 80017
|
|
||||||
|
|
||||||
ld a, [hJoyDown]
|
|
||||||
ld [CurInput], a
|
|
||||||
|
|
||||||
; Standing downhill instead moves down.
|
|
||||||
|
|
||||||
ld hl, BikeFlags
|
|
||||||
bit 2, [hl] ; downhill
|
|
||||||
ret z
|
|
||||||
|
|
||||||
ld c, a
|
|
||||||
and D_PAD
|
|
||||||
ret nz
|
|
||||||
|
|
||||||
ld a, c
|
|
||||||
or D_DOWN
|
|
||||||
ld [CurInput], a
|
|
||||||
ret
|
|
||||||
; 8002d
|
|
||||||
|
|
||||||
GetPlayerMovement: ; 8002d
|
|
||||||
|
|
||||||
ld a, [PlayerState]
|
|
||||||
cp PLAYER_NORMAL
|
|
||||||
jr z, .Normal
|
|
||||||
cp PLAYER_SURF
|
|
||||||
jr z, .Surf
|
|
||||||
cp PLAYER_SURF_PIKA
|
|
||||||
jr z, .Surf
|
|
||||||
cp PLAYER_BIKE
|
|
||||||
jr z, .Normal
|
|
||||||
cp PLAYER_SLIP
|
|
||||||
jr z, .Ice
|
|
||||||
|
|
||||||
.Normal
|
|
||||||
call CheckForcedMovementInput
|
|
||||||
call GetMovementAction
|
|
||||||
call CheckTileMovement
|
|
||||||
ret c
|
|
||||||
call CheckTurning
|
|
||||||
ret c
|
|
||||||
call TryStep
|
|
||||||
ret c
|
|
||||||
call TryJumpLedge
|
|
||||||
ret c
|
|
||||||
call CheckEdgeWarp
|
|
||||||
ret c
|
|
||||||
jr .NotMoving
|
|
||||||
|
|
||||||
.Surf
|
|
||||||
call CheckForcedMovementInput
|
|
||||||
call GetMovementAction
|
|
||||||
call CheckTileMovement
|
|
||||||
ret c
|
|
||||||
call CheckTurning
|
|
||||||
ret c
|
|
||||||
call TrySurfStep
|
|
||||||
ret c
|
|
||||||
jr .NotMoving
|
|
||||||
|
|
||||||
.Ice
|
|
||||||
call CheckForcedMovementInput
|
|
||||||
call GetMovementAction
|
|
||||||
call CheckTileMovement
|
|
||||||
ret c
|
|
||||||
call CheckTurning
|
|
||||||
ret c
|
|
||||||
call TryStep
|
|
||||||
ret c
|
|
||||||
call TryJumpLedge
|
|
||||||
ret c
|
|
||||||
call CheckEdgeWarp
|
|
||||||
ret c
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .HitWall
|
|
||||||
call PlayBump
|
|
||||||
.HitWall
|
|
||||||
call StandInPlace
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.NotMoving
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .Standing
|
|
||||||
|
|
||||||
; Walking into an edge warp won't bump.
|
|
||||||
ld a, [EngineBuffer4]
|
|
||||||
and a
|
|
||||||
jr nz, .CantMove
|
|
||||||
call PlayBump
|
|
||||||
.CantMove
|
|
||||||
call WalkInPlace
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.Standing
|
|
||||||
call StandInPlace
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 800b7
|
|
||||||
|
|
||||||
CheckTileMovement: ; 800b7
|
|
||||||
; Tiles such as waterfalls and warps move the player
|
|
||||||
; in a given direction, overriding input.
|
|
||||||
|
|
||||||
ld a, [PlayerNextTile]
|
|
||||||
ld c, a
|
|
||||||
call CheckWhirlpoolTile
|
|
||||||
jr c, .asm_800c4
|
|
||||||
ld a, 3
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.asm_800c4
|
|
||||||
and $f0
|
|
||||||
cp $30 ; moving water
|
|
||||||
jr z, .water
|
|
||||||
cp $40 ; moving land 1
|
|
||||||
jr z, .land1
|
|
||||||
cp $50 ; moving land 2
|
|
||||||
jr z, .land2
|
|
||||||
cp $70 ; warps
|
|
||||||
jr z, .warps
|
|
||||||
jr .asm_8013c
|
|
||||||
|
|
||||||
.water
|
|
||||||
ld a, c
|
|
||||||
and 3
|
|
||||||
ld c, a
|
|
||||||
ld b, 0
|
|
||||||
ld hl, .water_table
|
|
||||||
add hl, bc
|
|
||||||
ld a, [hl]
|
|
||||||
ld [WalkingDirection], a
|
|
||||||
jr .asm_8013e
|
|
||||||
|
|
||||||
.water_table
|
|
||||||
db RIGHT
|
|
||||||
db LEFT
|
|
||||||
db UP
|
|
||||||
db DOWN
|
|
||||||
|
|
||||||
.land1
|
|
||||||
ld a, c
|
|
||||||
and 7
|
|
||||||
ld c, a
|
|
||||||
ld b, 0
|
|
||||||
ld hl, .land1_table
|
|
||||||
add hl, bc
|
|
||||||
ld a, [hl]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .asm_8013c
|
|
||||||
ld [WalkingDirection], a
|
|
||||||
jr .asm_8013e
|
|
||||||
|
|
||||||
.land1_table
|
|
||||||
db STANDING
|
|
||||||
db RIGHT
|
|
||||||
db LEFT
|
|
||||||
db UP
|
|
||||||
db DOWN
|
|
||||||
db STANDING
|
|
||||||
db STANDING
|
|
||||||
db STANDING
|
|
||||||
|
|
||||||
.land2
|
|
||||||
ld a, c
|
|
||||||
and 7
|
|
||||||
ld c, a
|
|
||||||
ld b, 0
|
|
||||||
ld hl, .land2_table
|
|
||||||
add hl, bc
|
|
||||||
ld a, [hl]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .asm_8013c
|
|
||||||
ld [WalkingDirection], a
|
|
||||||
jr .asm_8013e
|
|
||||||
|
|
||||||
.land2_table
|
|
||||||
db RIGHT
|
|
||||||
db LEFT
|
|
||||||
db UP
|
|
||||||
db DOWN
|
|
||||||
db STANDING
|
|
||||||
db STANDING
|
|
||||||
db STANDING
|
|
||||||
db STANDING
|
|
||||||
|
|
||||||
.warps
|
|
||||||
ld a, c
|
|
||||||
cp $71 ; door
|
|
||||||
jr z, .down
|
|
||||||
cp $79
|
|
||||||
jr z, .down
|
|
||||||
cp $7a ; stairs
|
|
||||||
jr z, .down
|
|
||||||
cp $7b ; cave
|
|
||||||
jr nz, .asm_8013c
|
|
||||||
|
|
||||||
.down
|
|
||||||
ld a, DOWN
|
|
||||||
ld [WalkingDirection], a
|
|
||||||
jr .asm_8013e
|
|
||||||
|
|
||||||
.asm_8013c
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.asm_8013e
|
|
||||||
ld a, STEP_WALK
|
|
||||||
call DoStep
|
|
||||||
ld a, 5
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
; 80147
|
|
||||||
|
|
||||||
CheckTurning: ; 80147
|
|
||||||
; If the player is turning, change direction first. This also lets
|
|
||||||
; the player change facing without moving by tapping a direction.
|
|
||||||
|
|
||||||
ld a, [wd04e]
|
|
||||||
cp 0
|
|
||||||
jr nz, .asm_80169
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .asm_80169
|
|
||||||
|
|
||||||
ld e, a
|
|
||||||
ld a, [PlayerDirection]
|
|
||||||
rrca
|
|
||||||
rrca
|
|
||||||
and 3
|
|
||||||
cp e
|
|
||||||
jr z, .asm_80169
|
|
||||||
|
|
||||||
ld a, STEP_TURN
|
|
||||||
call DoStep
|
|
||||||
ld a, 2
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.asm_80169
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 8016b
|
|
||||||
|
|
||||||
TryStep: ; 8016b
|
|
||||||
|
|
||||||
; Surfing actually calls TrySurfStep directly instead of passing through here.
|
|
||||||
ld a, [PlayerState]
|
|
||||||
cp PLAYER_SURF
|
|
||||||
jr z, TrySurfStep
|
|
||||||
cp PLAYER_SURF_PIKA
|
|
||||||
jr z, TrySurfStep
|
|
||||||
|
|
||||||
call CheckLandPermissions
|
|
||||||
jr c, .bump
|
|
||||||
|
|
||||||
call IsNPCInFront
|
|
||||||
and a
|
|
||||||
jr z, .bump
|
|
||||||
cp 2
|
|
||||||
jr z, .bump
|
|
||||||
|
|
||||||
ld a, [PlayerNextTile]
|
|
||||||
call CheckIceTile
|
|
||||||
jr nc, .ice
|
|
||||||
|
|
||||||
; Downhill riding is slower when not moving down.
|
|
||||||
call CheckRiding
|
|
||||||
jr nz, .walk
|
|
||||||
|
|
||||||
ld hl, BikeFlags
|
|
||||||
bit 2, [hl] ; downhill
|
|
||||||
jr z, .fast
|
|
||||||
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
cp DOWN
|
|
||||||
jr z, .fast
|
|
||||||
|
|
||||||
ld a, STEP_WALK
|
|
||||||
call DoStep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.fast
|
|
||||||
ld a, STEP_BIKE
|
|
||||||
call DoStep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.walk
|
|
||||||
ld a, STEP_WALK
|
|
||||||
call DoStep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.ice
|
|
||||||
ld a, STEP_ICE
|
|
||||||
call DoStep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
; unused?
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.bump
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 801c0
|
|
||||||
|
|
||||||
TrySurfStep: ; 801c0
|
|
||||||
|
|
||||||
call CheckWaterPermissions
|
|
||||||
ld [wd040], a
|
|
||||||
jr c, .bump
|
|
||||||
|
|
||||||
call IsNPCInFront
|
|
||||||
ld [wd03f], a
|
|
||||||
and a
|
|
||||||
jr z, .bump
|
|
||||||
cp 2
|
|
||||||
jr z, .bump
|
|
||||||
|
|
||||||
ld a, [wd040]
|
|
||||||
and a
|
|
||||||
jr nz, .ExitWater
|
|
||||||
|
|
||||||
ld a, STEP_WALK
|
|
||||||
call DoStep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.ExitWater
|
|
||||||
call WaterToLandSprite
|
|
||||||
call PlayMapMusic
|
|
||||||
ld a, STEP_WALK
|
|
||||||
call DoStep
|
|
||||||
ld a, 6
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.bump
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 801f3
|
|
||||||
|
|
||||||
TryJumpLedge: ; 801f3
|
|
||||||
ld a, [PlayerNextTile]
|
|
||||||
ld e, a
|
|
||||||
and $f0
|
|
||||||
cp $a0 ; ledge
|
|
||||||
jr nz, .DontJump
|
|
||||||
|
|
||||||
ld a, e
|
|
||||||
and 7
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .data_8021e
|
|
||||||
add hl, de
|
|
||||||
ld a, [FacingDirection]
|
|
||||||
and [hl]
|
|
||||||
jr z, .DontJump
|
|
||||||
|
|
||||||
ld de, SFX_JUMP_OVER_LEDGE
|
|
||||||
call PlaySFX
|
|
||||||
ld a, STEP_LEDGE
|
|
||||||
call DoStep
|
|
||||||
ld a, 7
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.DontJump
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.data_8021e
|
|
||||||
db FACE_RIGHT
|
|
||||||
db FACE_LEFT
|
|
||||||
db FACE_UP
|
|
||||||
db FACE_DOWN
|
|
||||||
db FACE_RIGHT | FACE_DOWN
|
|
||||||
db FACE_DOWN | FACE_LEFT
|
|
||||||
db FACE_UP | FACE_RIGHT
|
|
||||||
db FACE_UP | FACE_LEFT
|
|
||||||
; 80226
|
|
||||||
|
|
||||||
CheckEdgeWarp: ; 80226
|
|
||||||
|
|
||||||
; Bug: Since no case is made for STANDING here, it will check
|
|
||||||
; [.edgewarps + $ff]. This resolves to $3e at $8035a.
|
|
||||||
; This causes wd041 to be nonzero when standing on tile $3e,
|
|
||||||
; making bumps silent.
|
|
||||||
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .EdgeWarps
|
|
||||||
add hl, de
|
|
||||||
ld a, [PlayerNextTile]
|
|
||||||
cp [hl]
|
|
||||||
jr nz, .nope
|
|
||||||
|
|
||||||
ld a, 1
|
|
||||||
ld [wd041], a
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
cp STANDING
|
|
||||||
jr z, .nope
|
|
||||||
|
|
||||||
ld e, a
|
|
||||||
ld a, [PlayerDirection]
|
|
||||||
rrca
|
|
||||||
rrca
|
|
||||||
and 3
|
|
||||||
cp e
|
|
||||||
jr nz, .nope
|
|
||||||
call WarpCheck
|
|
||||||
jr nc, .nope
|
|
||||||
|
|
||||||
call StandInPlace
|
|
||||||
scf
|
|
||||||
ld a, 1
|
|
||||||
ret
|
|
||||||
|
|
||||||
.nope
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.EdgeWarps
|
|
||||||
db $70, $78, $76, $7e
|
|
||||||
; 8025f
|
|
||||||
|
|
||||||
DoStep: ; 8025f
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .Steps
|
|
||||||
add hl, de
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
ld h, [hl]
|
|
||||||
ld l, a
|
|
||||||
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
ld e, a
|
|
||||||
cp STANDING
|
|
||||||
jp z, StandInPlace
|
|
||||||
|
|
||||||
add hl, de
|
|
||||||
ld a, [hl]
|
|
||||||
ld [MovementAnimation], a
|
|
||||||
|
|
||||||
ld hl, .WalkInPlace
|
|
||||||
add hl, de
|
|
||||||
ld a, [hl]
|
|
||||||
ld [wd04e], a
|
|
||||||
|
|
||||||
ld a, 4
|
|
||||||
ret
|
|
||||||
|
|
||||||
.Steps
|
|
||||||
dw .Slow
|
|
||||||
dw .Walk
|
|
||||||
dw .Bike
|
|
||||||
dw .Ledge
|
|
||||||
dw .Ice
|
|
||||||
dw .Turn
|
|
||||||
dw .BackwardsLedge
|
|
||||||
dw .WalkInPlace
|
|
||||||
|
|
||||||
.Slow
|
|
||||||
slow_step_down
|
|
||||||
slow_step_up
|
|
||||||
slow_step_left
|
|
||||||
slow_step_right
|
|
||||||
.Walk
|
|
||||||
step_down
|
|
||||||
step_up
|
|
||||||
step_left
|
|
||||||
step_right
|
|
||||||
.Bike
|
|
||||||
big_step_down
|
|
||||||
big_step_up
|
|
||||||
big_step_left
|
|
||||||
big_step_right
|
|
||||||
.Ledge
|
|
||||||
jump_step_down
|
|
||||||
jump_step_up
|
|
||||||
jump_step_left
|
|
||||||
jump_step_right
|
|
||||||
.Ice
|
|
||||||
fast_slide_step_down
|
|
||||||
fast_slide_step_up
|
|
||||||
fast_slide_step_left
|
|
||||||
fast_slide_step_right
|
|
||||||
.BackwardsLedge
|
|
||||||
jump_step_up
|
|
||||||
jump_step_down
|
|
||||||
jump_step_right
|
|
||||||
jump_step_left
|
|
||||||
.Turn
|
|
||||||
half_step_down
|
|
||||||
half_step_up
|
|
||||||
half_step_left
|
|
||||||
half_step_right
|
|
||||||
.WalkInPlace
|
|
||||||
db $80 + movement_turn_head_down
|
|
||||||
db $80 + movement_turn_head_up
|
|
||||||
db $80 + movement_turn_head_left
|
|
||||||
db $80 + movement_turn_head_right
|
|
||||||
; 802b3
|
|
||||||
|
|
||||||
StandInPlace: ; 802b3
|
|
||||||
ld a, 0
|
|
||||||
ld [wd04e], a
|
|
||||||
ld a, movement_step_sleep_1
|
|
||||||
ld [MovementAnimation], a
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 802bf
|
|
||||||
|
|
||||||
WalkInPlace: ; 802bf
|
|
||||||
ld a, 0
|
|
||||||
ld [wd04e], a
|
|
||||||
ld a, movement_step_bump
|
|
||||||
ld [MovementAnimation], a
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 802cb
|
|
||||||
|
|
||||||
CheckForcedMovementInput: ; 802cb
|
|
||||||
; When sliding on ice, input is forced to remain in the same direction.
|
|
||||||
|
|
||||||
call CheckStandingOnIce
|
|
||||||
ret nc
|
|
||||||
|
|
||||||
ld a, [wd04e]
|
|
||||||
cp 0
|
|
||||||
ret z
|
|
||||||
|
|
||||||
and 3
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .data_802e8
|
|
||||||
add hl, de
|
|
||||||
ld a, [CurInput]
|
|
||||||
and BUTTONS
|
|
||||||
or [hl]
|
|
||||||
ld [CurInput], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.data_802e8
|
|
||||||
db D_DOWN, D_UP, D_LEFT, D_RIGHT
|
|
||||||
; 802ec
|
|
||||||
|
|
||||||
GetMovementAction: ; 802ec
|
|
||||||
; Poll player input and update movement info.
|
|
||||||
|
|
||||||
ld hl, .table
|
|
||||||
ld de, .table2 - .table1
|
|
||||||
ld a, [CurInput]
|
|
||||||
bit 7, a
|
|
||||||
jr nz, .down
|
|
||||||
bit 6, a
|
|
||||||
jr nz, .up
|
|
||||||
bit 5, a
|
|
||||||
jr nz, .left
|
|
||||||
bit 4, a
|
|
||||||
jr nz, .right
|
|
||||||
; Standing
|
|
||||||
jr .update
|
|
||||||
|
|
||||||
.down add hl, de
|
|
||||||
.up add hl, de
|
|
||||||
.left add hl, de
|
|
||||||
.right add hl, de
|
|
||||||
|
|
||||||
.update
|
|
||||||
ld a, [hli]
|
|
||||||
ld [WalkingDirection], a
|
|
||||||
ld a, [hli]
|
|
||||||
ld [FacingDirection], a
|
|
||||||
ld a, [hli]
|
|
||||||
ld [WalkingX], a
|
|
||||||
ld a, [hli]
|
|
||||||
ld [WalkingY], a
|
|
||||||
ld a, [hli]
|
|
||||||
ld h, [hl]
|
|
||||||
ld l, a
|
|
||||||
ld a, [hl]
|
|
||||||
ld [WalkingTile], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.table
|
|
||||||
; struct:
|
|
||||||
; walk direction
|
|
||||||
; facing
|
|
||||||
; x movement
|
|
||||||
; y movement
|
|
||||||
; tile collision pointer
|
|
||||||
.table1
|
|
||||||
db STANDING, FACE_CURRENT, 0, 0
|
|
||||||
dw PlayerNextTile
|
|
||||||
.table2
|
|
||||||
db RIGHT, FACE_RIGHT, 1, 0
|
|
||||||
dw TileRight
|
|
||||||
db LEFT, FACE_LEFT, -1, 0
|
|
||||||
dw TileLeft
|
|
||||||
db UP, FACE_UP, 0, -1
|
|
||||||
dw TileUp
|
|
||||||
db DOWN, FACE_DOWN, 0, 1
|
|
||||||
dw TileDown
|
|
||||||
; 80341
|
|
||||||
|
|
||||||
IsNPCInFront: ; 80341
|
|
||||||
; Returns 0 if there is an NPC in front that you can't move
|
|
||||||
; Returns 1 if there is no NPC in front
|
|
||||||
; Returns 2 if there is a movable NPC in front
|
|
||||||
ld a, 0
|
|
||||||
ld [hMapObjectIndexBuffer], a
|
|
||||||
; Load the next X coordinate into d
|
|
||||||
ld a, [PlayerNextMapX]
|
|
||||||
ld d, a
|
|
||||||
ld a, [WalkingX]
|
|
||||||
add d
|
|
||||||
ld d, a
|
|
||||||
; Load the next Y coordinate into e
|
|
||||||
ld a, [PlayerNextMapY]
|
|
||||||
ld e, a
|
|
||||||
ld a, [WalkingY]
|
|
||||||
add e
|
|
||||||
ld e, a
|
|
||||||
; Find an object struct with coordinates equal to d,e
|
|
||||||
ld bc, ObjectStructs ; redundant
|
|
||||||
callba IsNPCAtCoord
|
|
||||||
jr nc, .nope
|
|
||||||
call Function8036f
|
|
||||||
jr c, .no_bump
|
|
||||||
|
|
||||||
; .bump
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.nope
|
|
||||||
ld a, 1
|
|
||||||
ret
|
|
||||||
|
|
||||||
.no_bump
|
|
||||||
ld a, 2
|
|
||||||
ret
|
|
||||||
; 8036f
|
|
||||||
|
|
||||||
Function8036f: ; 8036f
|
|
||||||
|
|
||||||
ld hl, BikeFlags
|
|
||||||
bit 0, [hl] ; using strength
|
|
||||||
jr z, .nope
|
|
||||||
|
|
||||||
ld hl, OBJECT_DIRECTION_WALKING
|
|
||||||
add hl, bc
|
|
||||||
ld a, [hl]
|
|
||||||
cp STANDING
|
|
||||||
jr nz, .nope
|
|
||||||
|
|
||||||
ld hl, OBJECT_PALETTE
|
|
||||||
add hl, bc
|
|
||||||
bit 6, [hl]
|
|
||||||
jr z, .nope
|
|
||||||
|
|
||||||
ld hl, OBJECT_FLAGS2
|
|
||||||
add hl, bc
|
|
||||||
set 2, [hl]
|
|
||||||
|
|
||||||
ld a, [WalkingDirection]
|
|
||||||
ld d, a
|
|
||||||
ld hl, OBJECT_RANGE
|
|
||||||
add hl, bc
|
|
||||||
ld a, [hl]
|
|
||||||
and $fc
|
|
||||||
or d
|
|
||||||
ld [hl], a
|
|
||||||
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.nope
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
; 8039e
|
|
||||||
|
|
||||||
CheckLandPermissions: ; 8039e
|
|
||||||
; Return 0 if walking onto land and tile permissions allow it.
|
|
||||||
; Otherwise, return carry.
|
|
||||||
|
|
||||||
ld a, [TilePermissions]
|
|
||||||
ld d, a
|
|
||||||
ld a, [FacingDirection]
|
|
||||||
and d
|
|
||||||
jr nz, .NotWalkable
|
|
||||||
|
|
||||||
ld a, [WalkingTile]
|
|
||||||
call CheckWalkable
|
|
||||||
jr c, .NotWalkable
|
|
||||||
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.NotWalkable
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
; 803b4
|
|
||||||
|
|
||||||
CheckWaterPermissions: ; 803b4
|
|
||||||
; Return 0 if moving in water, or 1 if moving onto land.
|
|
||||||
; Otherwise, return carry.
|
|
||||||
|
|
||||||
ld a, [TilePermissions]
|
|
||||||
ld d, a
|
|
||||||
ld a, [FacingDirection]
|
|
||||||
and d
|
|
||||||
jr nz, .NotSurfable
|
|
||||||
|
|
||||||
ld a, [WalkingTile]
|
|
||||||
call CheckSurfable
|
|
||||||
jr c, .NotSurfable
|
|
||||||
|
|
||||||
and a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.NotSurfable
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
; 803ca
|
|
||||||
|
|
||||||
CheckRiding: ; 803ca
|
|
||||||
|
|
||||||
ld a, [PlayerState]
|
|
||||||
cp PLAYER_BIKE
|
|
||||||
ret z
|
|
||||||
cp PLAYER_SLIP
|
|
||||||
ret
|
|
||||||
; 803d3
|
|
||||||
|
|
||||||
CheckWalkable: ; 803d3
|
|
||||||
; Return 0 if tile a is land. Otherwise, return carry.
|
|
||||||
|
|
||||||
call GetTileCollision
|
|
||||||
and a ; land
|
|
||||||
ret z
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
; 803da
|
|
||||||
|
|
||||||
CheckSurfable: ; 803da
|
|
||||||
; Return 0 if tile a is water, or 1 if land.
|
|
||||||
; Otherwise, return carry.
|
|
||||||
|
|
||||||
call GetTileCollision
|
|
||||||
cp 1
|
|
||||||
jr z, .Water
|
|
||||||
|
|
||||||
; Can walk back onto land from water.
|
|
||||||
and a
|
|
||||||
jr z, .Land
|
|
||||||
|
|
||||||
jr .Neither
|
|
||||||
|
|
||||||
.Water
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.Land
|
|
||||||
ld a, 1
|
|
||||||
and a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.Neither
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
; 803ee
|
|
||||||
|
|
||||||
PlayBump: ; 803ee
|
|
||||||
|
|
||||||
call CheckSFX
|
|
||||||
ret c
|
|
||||||
ld de, SFX_BUMP
|
|
||||||
call PlaySFX
|
|
||||||
ret
|
|
||||||
; 803f9
|
|
||||||
|
|
||||||
WaterToLandSprite: ; 803f9
|
|
||||||
push bc
|
|
||||||
ld a, PLAYER_NORMAL
|
|
||||||
ld [PlayerState], a
|
|
||||||
call ReplaceKrisSprite ; UpdateSprites
|
|
||||||
pop bc
|
|
||||||
ret
|
|
||||||
; 80404
|
|
||||||
|
|
||||||
CheckStandingOnIce:: ; 80404
|
|
||||||
ld a, [wd04e]
|
|
||||||
cp 0
|
|
||||||
jr z, .nope
|
|
||||||
cp $f0
|
|
||||||
jr z, .nope
|
|
||||||
ld a, [PlayerNextTile]
|
|
||||||
call CheckIceTile
|
|
||||||
jr nc, .yep
|
|
||||||
ld a, [PlayerState]
|
|
||||||
cp PLAYER_SLIP
|
|
||||||
jr nz, .nope
|
|
||||||
|
|
||||||
.yep
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.nope
|
|
||||||
and a
|
|
||||||
ret
|
|
||||||
; 80422
|
|
||||||
|
|
||||||
Function80422:: ; 80422
|
|
||||||
ld hl, wc2de
|
|
||||||
ld a, movement_step_sleep_1
|
|
||||||
cp [hl]
|
|
||||||
ret z
|
|
||||||
|
|
||||||
ld [hl], a
|
|
||||||
ld a, 0
|
|
||||||
ld [wd04e], a
|
|
||||||
ret
|
|
||||||
; 80430
|
|
||||||
|
|
||||||
INCLUDE "engine/engine_flags.asm"
|
INCLUDE "engine/engine_flags.asm"
|
||||||
; 80648
|
; 80648
|
||||||
|
@ -542,9 +542,6 @@ UnknownText_0x8b64c: ; 0x8b64c
|
|||||||
; CARD FOLDER open.@ @
|
; CARD FOLDER open.@ @
|
||||||
text_jump UnknownText_0x1bc288
|
text_jump UnknownText_0x1bc288
|
||||||
start_asm
|
start_asm
|
||||||
; 0x8b651
|
|
||||||
|
|
||||||
Function8b651: ; 8b651
|
|
||||||
ld de, SFX_TWINKLE
|
ld de, SFX_TWINKLE
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
call WaitSFX
|
call WaitSFX
|
||||||
|
13
wram.asm
13
wram.asm
@ -385,14 +385,14 @@ wLinkMode:: ; c2dc
|
|||||||
ScriptVar:: ; c2dd
|
ScriptVar:: ; c2dd
|
||||||
ds 1
|
ds 1
|
||||||
|
|
||||||
wc2de:: ds 1
|
wPlayerNextMovement:: ds 1
|
||||||
wc2df:: ds 1
|
wPlayerMovement:: ds 1
|
||||||
ds 2
|
ds 2
|
||||||
|
wc2e2::
|
||||||
wMovementPerson:: ds 1
|
wMovementPerson:: ds 1
|
||||||
wMovementDataPointer:: ds 3 ; dba
|
wMovementDataPointer:: ds 3 ; dba
|
||||||
wc2e6:: ds 4
|
wc2e6:: ds 4
|
||||||
wc2ea:: ds 1
|
wMovementByteWasControlSwitch:: ds 1
|
||||||
wc2eb::
|
|
||||||
wMovementPointer:: ds 2 ; c2eb
|
wMovementPointer:: ds 2 ; c2eb
|
||||||
ds 3
|
ds 3
|
||||||
|
|
||||||
@ -2601,9 +2601,8 @@ CurDay:: ; d4cb
|
|||||||
wObjectFollow_Leader:: ds 1
|
wObjectFollow_Leader:: ds 1
|
||||||
wObjectFollow_Follower:: ds 1
|
wObjectFollow_Follower:: ds 1
|
||||||
wCenteredObject:: ds 1
|
wCenteredObject:: ds 1
|
||||||
wd4d0:: ds 1
|
wFollowerMovementQueueLength:: ds 1
|
||||||
wd4d1:: ds 1
|
wFollowMovementQueue:: ds 5
|
||||||
ds 4
|
|
||||||
|
|
||||||
ObjectStructs:: ; d4d6
|
ObjectStructs:: ; d4d6
|
||||||
object_struct: MACRO
|
object_struct: MACRO
|
||||||
|
Loading…
Reference in New Issue
Block a user