Implementation of basic navigation and movement across linear spaces (#24)

This commit is contained in:
xCrystal
2023-10-18 17:46:57 +02:00
parent 806b048a9f
commit 3291b82069
8 changed files with 101 additions and 20 deletions

View File

@@ -15,12 +15,13 @@ BoardMenuScript::
; save after opentext to reanchor map first
; save before processing variables like wCurTurn due to BoardMenuScript reentry after game reset
farcall AutoSaveGameInOverworld
ld hl, wCurTurn
inc [hl]
ld hl, wTurnData
ld bc, wTurnDataEnd - wTurnData
xor a
jp ByteFill
call ByteFill
ld hl, wCurTurn
inc [hl]
jp LoadCurSpaceData
.Die:
callasm BoardMenu_Die

29
engine/board/movement.asm Executable file
View File

@@ -0,0 +1,29 @@
StepTowardsNextSpace::
ld a, [wCurSpaceNextSpace]
call LoadTempSpaceData
ld a, [wTempSpaceXCoord]
ld c, a
ld a, [wXCoord]
cp c
jr z, .check_y
ld a, D_RIGHT
jr c, .done
ld a, D_LEFT
jr .done
.check_y
ld a, [wTempSpaceYCoord]
ld c, a
ld a, [wYCoord]
cp c
jr z, .arrived
ld a, D_DOWN
jr c, .done
ld a, D_UP
jr .done
.arrived
xor a
.done
ld [wCurInput], a
ret

View File

@@ -27,12 +27,18 @@ ArriveToRegularSpaceScript:
end
ArriveToRegularSpace:
; load new space
ld a, [wCurSpaceNextSpace]
ld [wCurSpace], a
call LoadCurSpaceData
; decrease wSpacesLeft and copy to hScriptVar
ld hl, wSpacesLeft
dec [hl]
ld a, [hl]
ld [hScriptVar], a
; if landed, clear spaces left sprites
and a
jp nz, UpdateSecondarySprites
ret nz
ld hl, wDisplaySecondarySprites
res SECONDARYSPRITES_SPACES_LEFT_F, [hl]
ret

View File

@@ -71,10 +71,6 @@ AskTeachTMHM:
ret
ChooseMonToLearnTMHM:
ld hl, wStringBuffer2
ld de, wTMHMMoveNameBackup
ld bc, MOVE_NAME_LENGTH - 1
call CopyBytes
call ClearBGPalettes
ChooseMonToLearnTMHM_NoRefresh:
farcall LoadPartyMenuGFX
@@ -95,10 +91,6 @@ ChooseMonToLearnTMHM_NoRefresh:
pop bc ; now contains the former contents of af
jr z, .egg
push bc
ld hl, wTMHMMoveNameBackup
ld de, wStringBuffer2
ld bc, MOVE_NAME_LENGTH - 1
call CopyBytes
pop af ; now contains the original contents of af
ret

View File

@@ -11,19 +11,25 @@ DoPlayerMovement::
ret
.GetDPad:
ldh a, [hCurBoardEvent]
cp BOARDEVENT_HANDLE_BOARD
jr nz, .not_auto_in_board
; compute direction according to space layout and save to wCurInput
farcall StepTowardsNextSpace
ret
.not_auto_in_board
ldh a, [hJoyDown]
ld [wCurInput], a
; Standing downhill instead moves down.
ld hl, wBikeFlags
bit BIKEFLAGS_DOWNHILL_F, [hl]
ret z
ld c, a
and D_PAD
ret nz
ld a, c
or D_DOWN
ld [wCurInput], a