mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
Implementation of basic navigation and movement across linear spaces (#24)
This commit is contained in:
parent
806b048a9f
commit
3291b82069
@ -15,12 +15,13 @@ BoardMenuScript::
|
|||||||
; save after opentext to reanchor map first
|
; save after opentext to reanchor map first
|
||||||
; save before processing variables like wCurTurn due to BoardMenuScript reentry after game reset
|
; save before processing variables like wCurTurn due to BoardMenuScript reentry after game reset
|
||||||
farcall AutoSaveGameInOverworld
|
farcall AutoSaveGameInOverworld
|
||||||
ld hl, wCurTurn
|
|
||||||
inc [hl]
|
|
||||||
ld hl, wTurnData
|
ld hl, wTurnData
|
||||||
ld bc, wTurnDataEnd - wTurnData
|
ld bc, wTurnDataEnd - wTurnData
|
||||||
xor a
|
xor a
|
||||||
jp ByteFill
|
call ByteFill
|
||||||
|
ld hl, wCurTurn
|
||||||
|
inc [hl]
|
||||||
|
jp LoadCurSpaceData
|
||||||
|
|
||||||
.Die:
|
.Die:
|
||||||
callasm BoardMenu_Die
|
callasm BoardMenu_Die
|
||||||
|
29
engine/board/movement.asm
Executable file
29
engine/board/movement.asm
Executable 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
|
@ -27,12 +27,18 @@ ArriveToRegularSpaceScript:
|
|||||||
end
|
end
|
||||||
|
|
||||||
ArriveToRegularSpace:
|
ArriveToRegularSpace:
|
||||||
|
; load new space
|
||||||
|
ld a, [wCurSpaceNextSpace]
|
||||||
|
ld [wCurSpace], a
|
||||||
|
call LoadCurSpaceData
|
||||||
|
; decrease wSpacesLeft and copy to hScriptVar
|
||||||
ld hl, wSpacesLeft
|
ld hl, wSpacesLeft
|
||||||
dec [hl]
|
dec [hl]
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [hScriptVar], a
|
ld [hScriptVar], a
|
||||||
|
; if landed, clear spaces left sprites
|
||||||
and a
|
and a
|
||||||
jp nz, UpdateSecondarySprites
|
ret nz
|
||||||
ld hl, wDisplaySecondarySprites
|
ld hl, wDisplaySecondarySprites
|
||||||
res SECONDARYSPRITES_SPACES_LEFT_F, [hl]
|
res SECONDARYSPRITES_SPACES_LEFT_F, [hl]
|
||||||
ret
|
ret
|
||||||
|
@ -71,10 +71,6 @@ AskTeachTMHM:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
ChooseMonToLearnTMHM:
|
ChooseMonToLearnTMHM:
|
||||||
ld hl, wStringBuffer2
|
|
||||||
ld de, wTMHMMoveNameBackup
|
|
||||||
ld bc, MOVE_NAME_LENGTH - 1
|
|
||||||
call CopyBytes
|
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
ChooseMonToLearnTMHM_NoRefresh:
|
ChooseMonToLearnTMHM_NoRefresh:
|
||||||
farcall LoadPartyMenuGFX
|
farcall LoadPartyMenuGFX
|
||||||
@ -95,10 +91,6 @@ ChooseMonToLearnTMHM_NoRefresh:
|
|||||||
pop bc ; now contains the former contents of af
|
pop bc ; now contains the former contents of af
|
||||||
jr z, .egg
|
jr z, .egg
|
||||||
push bc
|
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
|
pop af ; now contains the original contents of af
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -11,19 +11,25 @@ DoPlayerMovement::
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.GetDPad:
|
.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]
|
ldh a, [hJoyDown]
|
||||||
ld [wCurInput], a
|
ld [wCurInput], a
|
||||||
|
|
||||||
; Standing downhill instead moves down.
|
; Standing downhill instead moves down.
|
||||||
|
|
||||||
ld hl, wBikeFlags
|
ld hl, wBikeFlags
|
||||||
bit BIKEFLAGS_DOWNHILL_F, [hl]
|
bit BIKEFLAGS_DOWNHILL_F, [hl]
|
||||||
ret z
|
ret z
|
||||||
|
|
||||||
ld c, a
|
ld c, a
|
||||||
and D_PAD
|
and D_PAD
|
||||||
ret nz
|
ret nz
|
||||||
|
|
||||||
ld a, c
|
ld a, c
|
||||||
or D_DOWN
|
or D_DOWN
|
||||||
ld [wCurInput], a
|
ld [wCurInput], a
|
||||||
|
26
home/map.asm
26
home/map.asm
@ -2298,3 +2298,29 @@ LoadMapTileset::
|
|||||||
pop bc
|
pop bc
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
; a: which space to load
|
||||||
|
LoadTempSpaceData::
|
||||||
|
ld de, wTempSpaceData
|
||||||
|
jr LoadSpaceData
|
||||||
|
|
||||||
|
LoadCurSpaceData::
|
||||||
|
ld de, wCurSpaceData
|
||||||
|
ld a, [wCurSpace]
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
; de: location where to load
|
||||||
|
; a: which space to load
|
||||||
|
LoadSpaceData::
|
||||||
|
push de
|
||||||
|
push af
|
||||||
|
ld hl, wMapSpacesPointer
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
ld bc, wCurSpaceDataEnd - wCurSpaceData ; wTempSpaceDataEnd - wTempSpaceData
|
||||||
|
pop af
|
||||||
|
call AddNTimes
|
||||||
|
pop de
|
||||||
|
ld a, [wMapScriptsBank]
|
||||||
|
jp FarCopyBytes
|
||||||
|
1
main.asm
1
main.asm
@ -244,6 +244,7 @@ SECTION "Board 1", ROMX
|
|||||||
|
|
||||||
INCLUDE "engine/board/menu.asm"
|
INCLUDE "engine/board/menu.asm"
|
||||||
INCLUDE "engine/board/spaces.asm"
|
INCLUDE "engine/board/spaces.asm"
|
||||||
|
INCLUDE "engine/board/movement.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "bank20", ROMX
|
SECTION "bank20", ROMX
|
||||||
|
30
ram/wram.asm
30
ram/wram.asm
@ -1669,14 +1669,23 @@ ENDU
|
|||||||
|
|
||||||
SECTION "More WRAM 1", WRAMX
|
SECTION "More WRAM 1", WRAMX
|
||||||
|
|
||||||
wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH
|
|
||||||
|
|
||||||
wStringBuffer1:: ds STRING_BUFFER_LENGTH
|
wStringBuffer1:: ds STRING_BUFFER_LENGTH
|
||||||
wStringBuffer2:: ds STRING_BUFFER_LENGTH
|
wStringBuffer2:: ds STRING_BUFFER_LENGTH
|
||||||
|
|
||||||
|
UNION
|
||||||
wStringBuffer3:: ds STRING_BUFFER_LENGTH
|
wStringBuffer3:: ds STRING_BUFFER_LENGTH
|
||||||
wStringBuffer4:: ds STRING_BUFFER_LENGTH
|
wStringBuffer4:: ds STRING_BUFFER_LENGTH
|
||||||
wStringBuffer5:: ds STRING_BUFFER_LENGTH
|
wStringBuffer5:: ds STRING_BUFFER_LENGTH
|
||||||
|
|
||||||
|
NEXTU
|
||||||
|
wTempSpaceData::
|
||||||
|
wTempSpaceXCoord:: db
|
||||||
|
wTempSpaceYCoord:: db
|
||||||
|
wTempSpaceEffect:: db
|
||||||
|
wTempSpaceNextSpace:: db
|
||||||
|
wTempSpaceDataEnd::
|
||||||
|
ENDU
|
||||||
|
|
||||||
wBattleMenuCursorPosition::
|
wBattleMenuCursorPosition::
|
||||||
wStartMenuLastCursorPosition::
|
wStartMenuLastCursorPosition::
|
||||||
wBoardMenuLastCursorPosition::
|
wBoardMenuLastCursorPosition::
|
||||||
@ -2180,7 +2189,10 @@ ENDU
|
|||||||
wBattleAction:: db
|
wBattleAction:: db
|
||||||
|
|
||||||
wLinkBattleSentAction:: db
|
wLinkBattleSentAction:: db
|
||||||
|
|
||||||
|
; wMapStatus ~ wMapStatusEnd is cleared in StartMap
|
||||||
wMapStatus:: db
|
wMapStatus:: db
|
||||||
|
|
||||||
wMapEventStatus:: db
|
wMapEventStatus:: db
|
||||||
|
|
||||||
wScriptFlags::
|
wScriptFlags::
|
||||||
@ -2236,13 +2248,14 @@ wReceiveCallDelay_StartTime:: ds 2 ; hour, min
|
|||||||
wBugContestMinsRemaining:: db
|
wBugContestMinsRemaining:: db
|
||||||
wBugContestSecsRemaining:: db
|
wBugContestSecsRemaining:: db
|
||||||
|
|
||||||
wMapStatusEnd::
|
; TurnData ~ wTurnDataEnd is cleared at the beginning of BoardMenuScript (i.e. on turn begin)
|
||||||
|
|
||||||
wTurnData::
|
wTurnData::
|
||||||
wDieRoll:: db
|
wDieRoll:: db
|
||||||
wSpacesLeft:: db
|
wSpacesLeft:: db
|
||||||
wTurnDataEnd::
|
wTurnDataEnd::
|
||||||
|
|
||||||
|
wMapStatusEnd::
|
||||||
|
|
||||||
wGameData::
|
wGameData::
|
||||||
wPlayerData::
|
wPlayerData::
|
||||||
wPlayerID:: dw
|
wPlayerID:: dw
|
||||||
@ -2497,8 +2510,15 @@ wYCoord:: db
|
|||||||
wXCoord:: db
|
wXCoord:: db
|
||||||
wScreenSave:: ds SCREEN_META_WIDTH * SCREEN_META_HEIGHT
|
wScreenSave:: ds SCREEN_META_WIDTH * SCREEN_META_HEIGHT
|
||||||
|
|
||||||
wCurSpace:: db
|
|
||||||
wCurTurn:: db
|
wCurTurn:: db
|
||||||
|
wCurSpace:: db
|
||||||
|
|
||||||
|
wCurSpaceData::
|
||||||
|
wCurSpaceXCoord:: db
|
||||||
|
wCurSpaceYCoord:: db
|
||||||
|
wCurSpaceEffect:: db
|
||||||
|
wCurSpaceNextSpace:: db
|
||||||
|
wCurSpaceDataEnd::
|
||||||
|
|
||||||
wCurMapDataEnd::
|
wCurMapDataEnd::
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user