mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-21 14:48:43 +13:00
Merge branch 'master' of https://github.com/pret/pokered
This commit is contained in:
commit
e8dd755e18
3702 changed files with 163333 additions and 159040 deletions
292
engine/overworld/auto_movement.asm
Normal file
292
engine/overworld/auto_movement.asm
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
PlayerStepOutFromDoor::
|
||||
ld hl, wd730
|
||||
res 1, [hl]
|
||||
call IsPlayerStandingOnDoorTile
|
||||
jr nc, .notStandingOnDoor
|
||||
ld a, $fc
|
||||
ld [wJoyIgnore], a
|
||||
ld hl, wd736
|
||||
set 1, [hl]
|
||||
ld a, $1
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ld a, D_DOWN
|
||||
ld [wSimulatedJoypadStatesEnd], a
|
||||
xor a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a
|
||||
call StartSimulatingJoypadStates
|
||||
ret
|
||||
.notStandingOnDoor
|
||||
xor a
|
||||
ld [wWastedByteCD3A], a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ld [wSimulatedJoypadStatesEnd], a
|
||||
ld hl, wd736
|
||||
res 0, [hl]
|
||||
res 1, [hl]
|
||||
ld hl, wd730
|
||||
res 7, [hl]
|
||||
ret
|
||||
|
||||
_EndNPCMovementScript::
|
||||
ld hl, wd730
|
||||
res 7, [hl]
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
ld hl, wd736
|
||||
res 0, [hl]
|
||||
res 1, [hl]
|
||||
xor a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
ld [wNPCMovementScriptPointerTableNum], a
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
ld [wWastedByteCD3A], a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ld [wSimulatedJoypadStatesEnd], a
|
||||
ret
|
||||
|
||||
PalletMovementScriptPointerTable::
|
||||
dw PalletMovementScript_OakMoveLeft
|
||||
dw PalletMovementScript_PlayerMoveLeft
|
||||
dw PalletMovementScript_WaitAndWalkToLab
|
||||
dw PalletMovementScript_WalkToLab
|
||||
dw PalletMovementScript_Done
|
||||
|
||||
PalletMovementScript_OakMoveLeft:
|
||||
ld a, [wXCoord]
|
||||
sub $a
|
||||
ld [wNumStepsToTake], a
|
||||
jr z, .playerOnLeftTile
|
||||
; The player is on the right tile of the northern path out of Pallet Town and
|
||||
; Prof. Oak is below.
|
||||
; Make Prof. Oak step to the left.
|
||||
ld b, 0
|
||||
ld c, a
|
||||
ld hl, wNPCMovementDirections2
|
||||
ld a, NPC_MOVEMENT_LEFT
|
||||
call FillMemory
|
||||
ld [hl], $ff
|
||||
ld a, [wSpriteIndex]
|
||||
ldh [hSpriteIndex], a
|
||||
ld de, wNPCMovementDirections2
|
||||
call MoveSprite
|
||||
ld a, $1
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
jr .done
|
||||
; The player is on the left tile of the northern path out of Pallet Town and
|
||||
; Prof. Oak is below.
|
||||
; Prof. Oak is already where he needs to be.
|
||||
.playerOnLeftTile
|
||||
ld a, $3
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
.done
|
||||
ld hl, wFlags_D733
|
||||
set 1, [hl]
|
||||
ld a, $fc
|
||||
ld [wJoyIgnore], a
|
||||
ret
|
||||
|
||||
PalletMovementScript_PlayerMoveLeft:
|
||||
ld a, [wd730]
|
||||
bit 0, a ; is an NPC being moved by a script?
|
||||
ret nz ; return if Oak is still moving
|
||||
ld a, [wNumStepsToTake]
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ldh [hNPCMovementDirections2Index], a
|
||||
predef ConvertNPCMovementDirectionsToJoypadMasks
|
||||
call StartSimulatingJoypadStates
|
||||
ld a, $2
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
ret
|
||||
|
||||
PalletMovementScript_WaitAndWalkToLab:
|
||||
ld a, [wSimulatedJoypadStatesIndex]
|
||||
and a ; is the player done moving left yet?
|
||||
ret nz
|
||||
|
||||
PalletMovementScript_WalkToLab:
|
||||
xor a
|
||||
ld [wOverrideSimulatedJoypadStatesMask], a
|
||||
ld a, [wSpriteIndex]
|
||||
swap a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
xor a
|
||||
ld [wSpritePlayerStateData2MovementByte1], a
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, RLEList_PlayerWalkToLab
|
||||
call DecodeRLEList
|
||||
dec a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ld hl, wNPCMovementDirections2
|
||||
ld de, RLEList_ProfOakWalkToLab
|
||||
call DecodeRLEList
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
ld hl, wd730
|
||||
set 7, [hl]
|
||||
ld a, $4
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
ret
|
||||
|
||||
RLEList_ProfOakWalkToLab:
|
||||
db NPC_MOVEMENT_DOWN, 5
|
||||
db NPC_MOVEMENT_LEFT, 1
|
||||
db NPC_MOVEMENT_DOWN, 5
|
||||
db NPC_MOVEMENT_RIGHT, 3
|
||||
db NPC_MOVEMENT_UP, 1
|
||||
db NPC_CHANGE_FACING, 1
|
||||
db -1 ; end
|
||||
|
||||
RLEList_PlayerWalkToLab:
|
||||
db D_UP, 2
|
||||
db D_RIGHT, 3
|
||||
db D_DOWN, 5
|
||||
db D_LEFT, 1
|
||||
db D_DOWN, 6
|
||||
db -1 ; end
|
||||
|
||||
PalletMovementScript_Done:
|
||||
ld a, [wSimulatedJoypadStatesIndex]
|
||||
and a
|
||||
ret nz
|
||||
ld a, HS_PALLET_TOWN_OAK
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld hl, wd730
|
||||
res 7, [hl]
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
jp EndNPCMovementScript
|
||||
|
||||
PewterMuseumGuyMovementScriptPointerTable::
|
||||
dw PewterMovementScript_WalkToMuseum
|
||||
dw PewterMovementScript_Done
|
||||
|
||||
PewterMovementScript_WalkToMuseum:
|
||||
ld a, 0 ; BANK(Music_MuseumGuy)
|
||||
ld [wAudioROMBank], a
|
||||
ld [wAudioSavedROMBank], a
|
||||
ld a, MUSIC_MUSEUM_GUY
|
||||
ld [wNewSoundID], a
|
||||
call PlayMusic
|
||||
ld a, [wSpriteIndex]
|
||||
swap a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
call StartSimulatingJoypadStates
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, RLEList_PewterMuseumPlayer
|
||||
call DecodeRLEList
|
||||
dec a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
xor a
|
||||
ld [wWhichPewterGuy], a
|
||||
predef PewterGuys
|
||||
ld hl, wNPCMovementDirections2
|
||||
ld de, RLEList_PewterMuseumGuy
|
||||
call DecodeRLEList
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
ld a, $1
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
ret
|
||||
|
||||
RLEList_PewterMuseumPlayer:
|
||||
db NO_INPUT, 1
|
||||
db D_UP, 3
|
||||
db D_LEFT, 13
|
||||
db D_UP, 6
|
||||
db -1 ; end
|
||||
|
||||
RLEList_PewterMuseumGuy:
|
||||
db NPC_MOVEMENT_UP, 6
|
||||
db NPC_MOVEMENT_LEFT, 13
|
||||
db NPC_MOVEMENT_UP, 3
|
||||
db NPC_MOVEMENT_LEFT, 1
|
||||
db -1 ; end
|
||||
|
||||
PewterMovementScript_Done:
|
||||
ld a, [wSimulatedJoypadStatesIndex]
|
||||
and a
|
||||
ret nz
|
||||
ld hl, wd730
|
||||
res 7, [hl]
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
jp EndNPCMovementScript
|
||||
|
||||
PewterGymGuyMovementScriptPointerTable::
|
||||
dw PewterMovementScript_WalkToGym
|
||||
dw PewterMovementScript_Done
|
||||
|
||||
PewterMovementScript_WalkToGym:
|
||||
ld a, 0 ; BANK(Music_MuseumGuy)
|
||||
ld [wAudioROMBank], a
|
||||
ld [wAudioSavedROMBank], a
|
||||
ld a, MUSIC_MUSEUM_GUY
|
||||
ld [wNewSoundID], a
|
||||
call PlayMusic
|
||||
ld a, [wSpriteIndex]
|
||||
swap a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
xor a
|
||||
ld [wSpritePlayerStateData2MovementByte1], a
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, RLEList_PewterGymPlayer
|
||||
call DecodeRLEList
|
||||
dec a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
ld a, 1
|
||||
ld [wWhichPewterGuy], a
|
||||
predef PewterGuys
|
||||
ld hl, wNPCMovementDirections2
|
||||
ld de, RLEList_PewterGymGuy
|
||||
call DecodeRLEList
|
||||
ld hl, wd72e
|
||||
res 7, [hl]
|
||||
ld hl, wd730
|
||||
set 7, [hl]
|
||||
ld a, $1
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
ret
|
||||
|
||||
RLEList_PewterGymPlayer:
|
||||
db NO_INPUT, 1
|
||||
db D_RIGHT, 2
|
||||
db D_DOWN, 5
|
||||
db D_LEFT, 11
|
||||
db D_UP, 5
|
||||
db D_LEFT, 15
|
||||
db -1 ; end
|
||||
|
||||
RLEList_PewterGymGuy:
|
||||
db NPC_MOVEMENT_DOWN, 2
|
||||
db NPC_MOVEMENT_LEFT, 15
|
||||
db NPC_MOVEMENT_UP, 5
|
||||
db NPC_MOVEMENT_LEFT, 11
|
||||
db NPC_MOVEMENT_DOWN, 5
|
||||
db NPC_MOVEMENT_RIGHT, 3
|
||||
db -1 ; end
|
||||
|
||||
FreezeEnemyTrainerSprite::
|
||||
ld a, [wCurMap]
|
||||
cp POKEMON_TOWER_7F
|
||||
ret z ; the Rockets on Pokemon Tower 7F leave after battling, so don't freeze them
|
||||
ld hl, RivalIDs
|
||||
ld a, [wEngagedTrainerClass]
|
||||
ld b, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
jr z, .notRival
|
||||
cp b
|
||||
ret z ; the rival leaves after battling, so don't freeze him
|
||||
jr .loop
|
||||
.notRival
|
||||
ld a, [wSpriteIndex]
|
||||
ldh [hSpriteIndex], a
|
||||
jp SetSpriteMovementBytesToFF
|
||||
|
||||
RivalIDs:
|
||||
db OPP_RIVAL1
|
||||
db OPP_RIVAL2
|
||||
db OPP_RIVAL3
|
||||
db -1 ; end
|
||||
Loading…
Add table
Add a link
Reference in a new issue