diff options
29 files changed, 225 insertions, 174 deletions
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index c06e7a65..cb167da6 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -121,6 +121,18 @@ BOX_DATA EQU 2 DAYCARE_DATA EQU 3 BATTLE_MON_DATA EQU 4 +; player direction constants + +PLAYER_DIR_BIT_RIGHT EQU 0 +PLAYER_DIR_BIT_LEFT EQU 1 +PLAYER_DIR_BIT_DOWN EQU 2 +PLAYER_DIR_BIT_UP EQU 3 + +PLAYER_DIR_RIGHT EQU (1 << PLAYER_DIR_BIT_RIGHT) +PLAYER_DIR_LEFT EQU (1 << PLAYER_DIR_BIT_LEFT) +PLAYER_DIR_DOWN EQU (1 << PLAYER_DIR_BIT_DOWN) +PLAYER_DIR_UP EQU (1 << PLAYER_DIR_BIT_UP) + ; serial ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01 diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 93ccdef5..42d7f5e6 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -6296,7 +6296,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) predef WriteMonMoves ; get moves based on current level .loadMovePPs ld hl, wEnemyMonMoves - ld de, wEnemyMonSpecial + 1 + ld de, wEnemyMonPP - 1 predef LoadMovePPs ld hl, W_MONHBASESTATS ld de, wEnemyMonBaseStats @@ -6957,7 +6957,7 @@ InitBattle_Common: ; 3efeb (f:6feb) ld [wLetterPrintingDelayFlags], a pop af ld [wMapPalOffset], a - ld a, [wd0d4] + ld a, [wSavedTilesetType] ld [hTilesetType], a scf ret diff --git a/engine/battle/init_battle_variables.asm b/engine/battle/init_battle_variables.asm index d5ee7816..3c926858 100644 --- a/engine/battle/init_battle_variables.asm +++ b/engine/battle/init_battle_variables.asm @@ -1,6 +1,6 @@ InitBattleVariables: ; 525af (14:65af) ld a, [hTilesetType] - ld [wd0d4], a + ld [wSavedTilesetType], a xor a ld [wActionResultOrTookBattleTurn], a ld [wBattleResult], a diff --git a/engine/hidden_object_functions7.asm b/engine/hidden_object_functions7.asm index f7deae66..397d2a02 100755 --- a/engine/hidden_object_functions7.asm +++ b/engine/hidden_object_functions7.asm @@ -78,7 +78,7 @@ SafariZoneGameOver: ; 1e9b0 (7:69b0) ld [H_DOWNARROWBLINKCNT2], a call DisplayTextID xor a - ld [wd528], a + ld [wPlayerMovingDirection], a ld a, SAFARI_ZONE_ENTRANCE ld [H_DOWNARROWBLINKCNT1], a ld a, $3 diff --git a/engine/items/items.asm b/engine/items/items.asm index f9f76278..000940d2 100755 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -591,14 +591,14 @@ ItemUseSurfboard: ; d9b4 (3:59b4) jp LoadWalkingPlayerSpriteGraphics ; uses a simulated button press to make the player move forward .makePlayerMoveForward - ld a,[wd52a] ; direction the player is going - bit 3,a + ld a,[wPlayerDirection] ; direction the player is going + bit PLAYER_DIR_BIT_UP,a ld b,D_UP jr nz,.storeSimulatedButtonPress - bit 2,a + bit PLAYER_DIR_BIT_DOWN,a ld b,D_DOWN jr nz,.storeSimulatedButtonPress - bit 1,a + bit PLAYER_DIR_BIT_LEFT,a ld b,D_LEFT jr nz,.storeSimulatedButtonPress ld b,D_RIGHT diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index eeaa4594..3ed2f443 100755 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -107,8 +107,8 @@ MainMenu: ; 5af2 (1:5af2) .pressedA call GBPalWhiteOutWithDelay3 call ClearScreen - ld a,4 - ld [wd52a],a + ld a,PLAYER_DIR_DOWN + ld [wPlayerDirection],a ld c,10 call DelayFrames ld a,[wNumHoFTeams] diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index f618261e..be10fd69 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -25,24 +25,24 @@ UpdatePlayerSprite: ; 4e31 (1:4e31) ld a, [wWalkCounter] and a jr nz, .moving - ld a, [wd528] + ld a, [wPlayerMovingDirection] ; check if down - bit 2, a + bit PLAYER_DIR_BIT_DOWN, a jr z, .checkIfUp xor a ; ld a, SPRITE_FACING_DOWN jr .next .checkIfUp - bit 3, a + bit PLAYER_DIR_BIT_UP, a jr z, .checkIfLeft ld a, SPRITE_FACING_UP jr .next .checkIfLeft - bit 1, a + bit PLAYER_DIR_BIT_LEFT, a jr z, .checkIfRight ld a, SPRITE_FACING_LEFT jr .next .checkIfRight - bit 0, a + bit PLAYER_DIR_BIT_RIGHT, a jr z, .notMoving ld a, SPRITE_FACING_RIGHT jr .next @@ -405,23 +405,23 @@ InitializeSpriteFacingDirection: ; 507f (1:507f) bit 5, a jr nz, notYetMoving res 7, [hl] - ld a, [wd52a] - bit 3, a + ld a, [wPlayerDirection] + bit PLAYER_DIR_BIT_UP, a jr z, .notFacingDown - ld c, $0 ; make sprite face down + ld c, SPRITE_FACING_DOWN jr .facingDirectionDetermined .notFacingDown - bit 2, a + bit PLAYER_DIR_BIT_DOWN, a jr z, .notFacingUp - ld c, $4 ; make sprite face up + ld c, SPRITE_FACING_UP jr .facingDirectionDetermined .notFacingUp - bit 1, a + bit PLAYER_DIR_BIT_LEFT, a jr z, .notFacingRight - ld c, $c ; make sprite face right + ld c, SPRITE_FACING_RIGHT jr .facingDirectionDetermined .notFacingRight - ld c, $8 ; make sprite face left + ld c, SPRITE_FACING_LEFT .facingDirectionDetermined ld a, [H_CURRENTSPRITEOFFSET] add $9 diff --git a/home/overworld.asm b/home/overworld.asm index 5b8759dd..cc5e9f5e 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -134,52 +134,52 @@ OverworldLoopLessDelay:: call UpdateSprites ld a,$01 ld [wcc4b],a - ld a,[wd528] ; the direction that was pressed last time + ld a,[wPlayerMovingDirection] ; the direction that was pressed last time and a jp z,OverworldLoop ; if a direction was pressed last time - ld [wd529],a ; save the last direction + ld [wPlayerLastStopDirection],a ; save the last direction xor a - ld [wd528],a ; zero the direction + ld [wPlayerMovingDirection],a ; zero the direction jp OverworldLoop .checkIfDownButtonIsPressed ld a,[hJoyHeld] ; current joypad state bit 7,a ; down button jr z,.checkIfUpButtonIsPressed - ld a,$01 - ld [wSpriteStateData1 + 3],a - ld a,$04 + ld a,1 + ld [wSpriteStateData1 + 3],a ; delta Y + ld a,PLAYER_DIR_DOWN jr .handleDirectionButtonPress .checkIfUpButtonIsPressed bit 6,a ; up button jr z,.checkIfLeftButtonIsPressed - ld a,$ff - ld [wSpriteStateData1 + 3],a - ld a,$08 + ld a,-1 + ld [wSpriteStateData1 + 3],a ; delta Y + ld a,PLAYER_DIR_UP jr .handleDirectionButtonPress .checkIfLeftButtonIsPressed bit 5,a ; left button jr z,.checkIfRightButtonIsPressed - ld a,$ff - ld [wSpriteStateData1 + 5],a - ld a,$02 + ld a,-1 + ld [wSpriteStateData1 + 5],a ; delta X + ld a,PLAYER_DIR_LEFT jr .handleDirectionButtonPress .checkIfRightButtonIsPressed bit 4,a ; right button jr z,.noDirectionButtonsPressed - ld a,$01 - ld [wSpriteStateData1 + 5],a + ld a,1 ; PLAYER_DIR_RIGHT + ld [wSpriteStateData1 + 5],a ; delta X .handleDirectionButtonPress - ld [wd52a],a ; new direction + ld [wPlayerDirection],a ; new direction ld a,[wd730] bit 7,a ; are we simulating button presses? jr nz,.noDirectionChange ; ignore direction changes if we are ld a,[wcc4b] and a jr z,.noDirectionChange - ld a,[wd52a] ; new direction + ld a,[wPlayerDirection] ; new direction ld b,a - ld a,[wd529] ; old direction + ld a,[wPlayerLastStopDirection] ; old direction cp b jr z,.noDirectionChange ; the code below is strange @@ -187,42 +187,42 @@ OverworldLoopLessDelay:: ; also, it does a seemingly pointless loop afterwards swap a ; put old direction in upper half or b ; put new direction in lower half - cp a,$48 ; change dir from down to up + cp a,(PLAYER_DIR_DOWN << 4) | PLAYER_DIR_UP ; change dir from down to up jr nz,.notDownToUp - ld a,$02 - ld [wd528],a + ld a,PLAYER_DIR_LEFT + ld [wPlayerMovingDirection],a jr .oddLoop .notDownToUp - cp a,$84 ; change dir from up to down + cp a,(PLAYER_DIR_UP << 4) | PLAYER_DIR_DOWN ; change dir from up to down jr nz,.notUpToDown - ld a,$01 - ld [wd528],a + ld a,PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection],a jr .oddLoop .notUpToDown - cp a,$12 ; change dir from right to left + cp a,(PLAYER_DIR_RIGHT << 4) | PLAYER_DIR_LEFT ; change dir from right to left jr nz,.notRightToLeft - ld a,$04 - ld [wd528],a + ld a,PLAYER_DIR_DOWN + ld [wPlayerMovingDirection],a jr .oddLoop .notRightToLeft - cp a,$21 ; change dir from left to right + cp a,(PLAYER_DIR_LEFT << 4) | PLAYER_DIR_RIGHT ; change dir from left to right jr nz,.oddLoop - ld a,$08 - ld [wd528],a + ld a,PLAYER_DIR_UP + ld [wPlayerMovingDirection],a .oddLoop ld hl,wFlags_0xcd60 set 2,[hl] ld hl,wcc4b dec [hl] jr nz,.oddLoop - ld a,[wd52a] - ld [wd528],a + ld a,[wPlayerDirection] + ld [wPlayerMovingDirection],a call NewBattle jp c,.battleOccurred jp OverworldLoop .noDirectionChange - ld a,[wd52a] ; current direction - ld [wd528],a ; save direction + ld a,[wPlayerDirection] ; current direction + ld [wPlayerMovingDirection],a ; save direction call UpdateSprites ld a,[wWalkBikeSurfState] cp a,$02 ; surfing @@ -566,7 +566,7 @@ CheckMapConnections:: ; 07ba (0:07ba) jp .loadNewMap .checkEastMap ld b,a - ld a,[wd525] ; map width + ld a,[wCurrentMapWidth2] ; map width cp b jr nz,.checkNorthMap ld a,[W_MAPCONN4PTR] @@ -628,7 +628,7 @@ CheckMapConnections:: ; 07ba (0:07ba) jp .loadNewMap .checkSouthMap ld b,a - ld a,[wd524] + ld a,[wCurrentMapHeight2] cp b jr nz,.didNotEnterConnectedMap ld a,[W_MAPCONN2PTR] @@ -864,7 +864,7 @@ LoadTilesetTilePatternData:: ; 09e8 (0:09e8) LoadTileBlockMap:: ; 09fc (0:09fc) ; fill C6E8-CBFB with the background tile ld hl,wOverworldMap - ld a,[wd3ad] ; background tile number + ld a,[wMapBackgroundTile] ld d,a ld bc,$0514 .backgroundTileLoop @@ -1057,15 +1057,15 @@ LoadEastWestConnectionsTileMap:: ; 0b02 (0:0b02) IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23) xor a ld [hSpriteIndexOrTextID],a - ld a,[wd4b0] ; number of signs in the map + ld a,[wNumSigns] and a jr z,.extendRangeOverCounter ; if there are signs predef GetTileAndCoordsInFrontOfPlayer ; get the coordinates in front of the player in de - ld hl,wd4b1 ; start of sign coordinates - ld a,[wd4b0] ; number of signs in the map + ld hl,wSignCoords + ld a,[wNumSigns] ld b,a - ld c,$00 + ld c,0 .signLoop inc c ld a,[hli] ; sign Y @@ -1081,8 +1081,8 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23) ; found sign push hl push bc - ld hl,wd4d1 ; start of sign text ID's - ld b,$00 + ld hl,wSignTextIDs + ld b,0 dec c add hl,bc ld a,[hl] @@ -1097,7 +1097,7 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23) .extendRangeOverCounter predef GetTileAndCoordsInFrontOfPlayer ; get the tile in front of the player in c ld hl,W_TILESETTALKINGOVERTILES ; list of tiles that extend talking range (counter tiles) - ld b,$03 + ld b,3 ld d,$20 ; talking range in pixels (long range) .counterTilesLoop ld a,[hli] @@ -1111,7 +1111,7 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23) IsSpriteInFrontOfPlayer:: ; 0b6b (0:0b6b) ld d,$10 ; talking range in pixels (normal range) IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d) - ld bc,$3c40 ; Y and X position of player sprite + lb bc, $3c, $40 ; Y and X position of player sprite ld a,[wSpriteStateData1 + 9] ; direction the player is facing .checkIfPlayerFacingUp cp SPRITE_FACING_UP @@ -1120,7 +1120,7 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d) ld a,b sub d ld b,a - ld a,$08 + ld a,PLAYER_DIR_UP jr .doneCheckingDirection .checkIfPlayerFacingDown cp SPRITE_FACING_DOWN @@ -1129,7 +1129,7 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d) ld a,b add d ld b,a - ld a,$04 + ld a,PLAYER_DIR_DOWN jr .doneCheckingDirection .checkIfPlayerFacingRight cp SPRITE_FACING_RIGHT @@ -1138,16 +1138,16 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d) ld a,c add d ld c,a - ld a,$01 + ld a,PLAYER_DIR_RIGHT jr .doneCheckingDirection .playerFacingLeft ; facing left ld a,c sub d ld c,a - ld a,$02 + ld a,PLAYER_DIR_LEFT .doneCheckingDirection - ld [wd52a],a + ld [wPlayerDirection],a ld a,[W_NUMSPRITES] ; number of sprites and a ret z @@ -1202,7 +1202,7 @@ CollisionCheckOnLand:: ; 0bd1 (0:0bd1) ld a,[wSimulatedJoypadStatesIndex] and a jr nz,.noCollision ; no collisions when the player's movements are being controlled by the game - ld a,[wd52a] ; the direction that the player is trying to go in + ld a,[wPlayerDirection] ; the direction that the player is trying to go in ld d,a ld a,[wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code) and d ; check if a sprite is in the direction the player is trying to go @@ -1893,7 +1893,7 @@ CollisionCheckOnWater:: ; 0fb7 (0:0fb7) ld a,[wd730] bit 7,a jp nz,.noCollision ; return and clear carry if button presses are being simulated - ld a,[wd52a] ; the direction that the player is trying to go in + ld a,[wPlayerDirection] ; the direction that the player is trying to go in ld d,a ld a,[wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code) and d ; check if a sprite is in the direction the player is trying to go @@ -2073,17 +2073,17 @@ LoadMapHeader:: ; 107c (0:107c) call CopyMapConnectionHeader .getObjectDataPointer ld a,[hli] - ld [wd3a9],a + ld [wObjectDataPointerTemp],a ld a,[hli] - ld [wd3aa],a + ld [wObjectDataPointerTemp + 1],a push hl - ld a,[wd3a9] + ld a,[wObjectDataPointerTemp] ld l,a - ld a,[wd3aa] + ld a,[wObjectDataPointerTemp + 1] ld h,a ; hl = base of object data - ld de,wd3ad ; background tile ID + ld de,wMapBackgroundTile ld a,[hli] - ld [de],a ; save background tile ID + ld [de],a .loadWarpData ld a,[hli] ld [wNumberOfWarps],a @@ -2103,16 +2103,16 @@ LoadMapHeader:: ; 107c (0:107c) jr nz,.warpLoop .loadSignData ld a,[hli] ; number of signs - ld [wd4b0],a ; save the number of signs + ld [wNumSigns],a and a ; are there any signs? jr z,.loadSpriteData ; if not, skip this ld c,a - ld de,wd4d1 ; base address of sign text IDs + ld de,wSignTextIDs ld a,d - ld [$ff95],a + ld [hSignCoordPointer],a ld a,e - ld [$ff96],a - ld de,wd4b1 ; base address of sign coordinates + ld [hSignCoordPointer + 1],a + ld de,wSignCoords .signLoop ld a,[hli] ld [de],a @@ -2121,17 +2121,17 @@ LoadMapHeader:: ; 107c (0:107c) ld [de],a inc de push de - ld a,[$ff95] + ld a,[hSignCoordPointer] ld d,a - ld a,[$ff96] + ld a,[hSignCoordPointer + 1] ld e,a ld a,[hli] ld [de],a inc de ld a,d - ld [$ff95],a + ld [hSignCoordPointer],a ld a,e - ld [$ff96],a + ld [hSignCoordPointer + 1],a pop de dec c jr nz,.signLoop @@ -2259,10 +2259,10 @@ LoadMapHeader:: ; 107c (0:107c) pop hl ; restore hl from before going to the warp/sign/sprite data (this value was saved for seemingly no purpose) ld a,[W_CURMAPHEIGHT] ; map height in 4x4 tile blocks add a ; double it - ld [wd524],a ; store map height in 2x2 tile blocks + ld [wCurrentMapHeight2],a ; store map height in 2x2 tile blocks ld a,[W_CURMAPWIDTH] ; map width in 4x4 tile blocks add a ; double it - ld [wd525],a ; map width in 2x2 tile blocks + ld [wCurrentMapWidth2],a ; map width in 2x2 tile blocks ld a,[W_CURMAP] ld c,a ld b,$00 @@ -82,6 +82,9 @@ hTilePlayerStandingOn EQU $FF93 hSpritePriority EQU $FF94 +; 2 bytes +hSignCoordPointer EQU $FF95 + hNPCMovementDirections2Index EQU $FF95 ; CalcPositionOfPlayerRelativeToNPC diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm index 2c7bd449..48480167 100755 --- a/scripts/ceruleancity.asm +++ b/scripts/ceruleancity.asm @@ -44,15 +44,15 @@ CeruleanCityScript0: ; 194c8 (6:54c8) jr nc, .asm_194f7 ld a, [wCoordIndex] cp $1 - ld a, $8 + ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN jr nz, .asm_194e6 - ld a, $4 + ld a, PLAYER_DIR_DOWN ld b, SPRITE_FACING_UP .asm_194e6 - ld [wd528], a + ld [wPlayerMovingDirection], a ld a, b - ld [wSpriteStateData1 + $29], a + ld [wSpriteStateData1 + 2 * $10 + $9], a call Delay3 ld a, $2 ld [hSpriteIndexOrTextID], a diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm index 9b308bd3..fcafa83a 100755 --- a/scripts/cinnabargym.asm +++ b/scripts/cinnabargym.asm @@ -54,14 +54,14 @@ CinnabarGymScript0: ; 757ae (1d:57ae) ld [H_SPRITEINDEX], a cp $4 jr nz, .asm_757c3 - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld de, MovementData_757d7 jr .asm_757cb .asm_757c3 ld de, MovementData_757da - ld a, $1 - ld [wd528], a + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a .asm_757cb call MoveSprite ld a, $1 diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm index 70ea25a5..92c0fc6b 100755 --- a/scripts/cinnabarisland.asm +++ b/scripts/cinnabarisland.asm @@ -24,8 +24,8 @@ CinnabarIslandScript0: ; 1ca38 (7:4a38) ld a, [W_XCOORD] cp $12 ret nz - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $8 ld [hSpriteIndexOrTextID], a call DisplayTextID diff --git a/scripts/fightingdojo.asm b/scripts/fightingdojo.asm index 8a4a0464..c21dde00 100755 --- a/scripts/fightingdojo.asm +++ b/scripts/fightingdojo.asm @@ -42,8 +42,8 @@ FightingDojoScript1: ; 5cd83 (17:4d83) ret nz ld a, $1 ld [wcf0d], a - ld a, $1 - ld [wd528], a + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a ld a, $1 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_LEFT @@ -61,8 +61,8 @@ FightingDojoScript3: ; 5cdc6 (17:4dc6) ld a, [wcf0d] and a jr z, .asm_5cde4 - ld a, $1 - ld [wd528], a + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a ld a, $1 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_LEFT diff --git a/scripts/gary.asm b/scripts/gary.asm index 476a59b0..d01161da 100755 --- a/scripts/gary.asm +++ b/scripts/gary.asm @@ -139,8 +139,8 @@ GaryScript5: ; 7601a (1d:601a) ld a, [wd730] bit 0, a ret nz - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a ld a, $1 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_LEFT diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm index 680ebdd9..bc0d19e1 100755 --- a/scripts/halloffameroom.asm +++ b/scripts/halloffameroom.asm @@ -80,19 +80,19 @@ HallofFameRoomScript1: ; 5a52b (16:652b) ld a, [wSimulatedJoypadStatesIndex] and a ret nz - ld a, $1 - ld [wd528], a + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a ld a, $1 ld [H_SPRITEINDEX], a call SetSpriteMovementBytesToFF - ld a, $8 + ld a, SPRITE_FACING_LEFT ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call Delay3 xor a ld [wJoyIgnore], a - inc a - ld [wd528], a + inc a ; PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a ld a, $1 ld [hSpriteIndexOrTextID], a call DisplayTextID diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm index 226c2d2d..ae6da40d 100755 --- a/scripts/oakslab.asm +++ b/scripts/oakslab.asm @@ -178,8 +178,8 @@ OaksLabScript6: ; 1cc36 (7:4c36) ld a, D_UP ld [wSimulatedJoypadStatesEnd], a call StartSimulatingJoypadStates - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $7 ld [W_OAKSLABCURSCRIPT], a @@ -354,8 +354,8 @@ OaksLabScript10: ; 1cd6d (7:4d6d) xor a ; SPRITE_FACING_DOWN ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -414,8 +414,8 @@ OaksLabScript11: ; 1cdb9 (7:4db9) set 7, [hl] xor a ld [wJoyIgnore], a - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $c ld [W_OAKSLABCURSCRIPT], a ret @@ -423,8 +423,8 @@ OaksLabScript11: ; 1cdb9 (7:4db9) OaksLabScript12: ; 1ce03 (7:4e03) ld a, $f0 ld [wJoyIgnore], a - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a call UpdateSprites ld a, $1 ld [wSpriteIndex], a diff --git a/scripts/pallettown.asm b/scripts/pallettown.asm index 327a32ff..b463c4d6 100755 --- a/scripts/pallettown.asm +++ b/scripts/pallettown.asm @@ -28,8 +28,8 @@ PalletTownScript0: ; 18e81 (6:4e81) ret nz xor a ld [hJoyHeld],a - ld a,4 - ld [wd528],a + ld a,PLAYER_DIR_DOWN + ld [wPlayerMovingDirection],a ld a,$FF call PlaySound ; stop music ld a, BANK(Music_MeetProfOak) @@ -190,8 +190,8 @@ OakAppearsText: ; 18fb0 (6:4fb0) ld [wEmotionBubbleSpriteIndex],a ; player's sprite ld [wWhichEmotionBubble],a ; EXCLAMATION_BUBBLE predef EmotionBubble - ld a,4 - ld [wd528],a + ld a,PLAYER_DIR_DOWN + ld [wPlayerMovingDirection],a jp TextScriptEnd OakWalksUpText: ; 18fce (6:4fce) diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm index 8520b10b..6a54d549 100755 --- a/scripts/pokemontower2.asm +++ b/scripts/pokemontower2.asm @@ -33,15 +33,15 @@ PokemonTower2Script0: ; 6050f (18:450f) res 6, [hl] ld a, [wCoordIndex] cp $1 - ld a, $8 + ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN jr nz, .asm_60544 ld hl, wd764 set 6, [hl] - ld a, $2 + ld a, PLAYER_DIR_LEFT ld b, SPRITE_FACING_RIGHT .asm_60544 - ld [wd528], a + ld [wPlayerMovingDirection], a ld a, $1 ld [H_SPRITEINDEX], a ld a, b diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm index 8fcdc66e..2335e6d1 100755 --- a/scripts/redshouse2f.asm +++ b/scripts/redshouse2f.asm @@ -11,8 +11,8 @@ RedsHouse2FScriptPointers: ; 5c0bc (17:40bc) RedsHouse2FScript0: ; 5c0c0 (17:40c0) xor a ld [hJoyHeld],a - ld a,8 - ld [wd528],a + ld a,PLAYER_DIR_UP + ld [wPlayerMovingDirection],a ld a,1 ld [W_REDSHOUSE2CURSCRIPT],a ret diff --git a/scripts/route22.asm b/scripts/route22.asm index f125030e..01f8bee8 100755 --- a/scripts/route22.asm +++ b/scripts/route22.asm @@ -67,8 +67,8 @@ Route22Script0: ; 50f00 (14:4f00) ld [hJoyHeld], a ld a, $f0 ld [wJoyIgnore], a - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a ld a, [wd7eb] bit 0, a ; is this the rival battle at the beginning of the game? jr nz, .firstRivalBattle @@ -111,8 +111,8 @@ Route22Script1: ; 50f62 (14:4f62) ld a, [wcf0d] cp $1 jr nz, .asm_50f78 - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_UP jr .asm_50f7a .asm_50f78 @@ -270,13 +270,13 @@ Route22Script4: ; 51087 (14:5087) ld a, [wcf0d] cp $1 jr nz, .asm_510a1 - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_UP jr .asm_510a8 .asm_510a1 - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_RIGHT .asm_510a8 ld [hSpriteFacingDirection], a @@ -314,13 +314,13 @@ Route22Script5: ; 510df (14:50df) ld a, [wcf0d] cp $1 jr nz, .asm_510fb - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_UP jr .asm_51102 .asm_510fb - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_RIGHT .asm_51102 ld [hSpriteFacingDirection], a diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm index 1ccf27af..35f3a020 100755 --- a/scripts/route5gate.asm +++ b/scripts/route5gate.asm @@ -22,8 +22,8 @@ Route5GateScript0: ; 1df50 (7:5f50) ld hl, CoordsData_1df8f call ArePlayerCoordsInArray ret nc - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a callba RemoveGuardDrink diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm index d1aed2df..a4b6149c 100755 --- a/scripts/route6gate.asm +++ b/scripts/route6gate.asm @@ -16,8 +16,8 @@ Route6GateScript0: ; 1e04e (7:604e) ld hl, CoordsData_1e08c call ArePlayerCoordsInArray ret nc - ld a, $1 - ld [wd528], a + ld a, PLAYER_DIR_RIGHT + ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a callba RemoveGuardDrink diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm index d73dc566..b55f813c 100755 --- a/scripts/route7gate.asm +++ b/scripts/route7gate.asm @@ -28,8 +28,8 @@ Route7GateScript0: ; 1e128 (7:6128) ld hl, CoordsData_1e167 call ArePlayerCoordsInArray ret nc - ld a, $8 - ld [wd528], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a callba RemoveGuardDrink diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm index 261a7a1e..96bfa875 100755 --- a/scripts/route8gate.asm +++ b/scripts/route8gate.asm @@ -27,8 +27,8 @@ Route8GateScript0: ; 1e1ee (7:61ee) ld hl, CoordsData_1e22c call ArePlayerCoordsInArray ret nc - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a callba RemoveGuardDrink diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm index 2e5b55f7..ab54dd8a 100755 --- a/scripts/safarizoneentrance.asm +++ b/scripts/safarizoneentrance.asm @@ -72,8 +72,8 @@ SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9) ret .SafariZoneEntranceScript5 - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld hl, wd790 bit 6, [hl] res 6, [hl] diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm index b4f94b13..62591476 100755 --- a/scripts/silphco11.asm +++ b/scripts/silphco11.asm @@ -199,7 +199,7 @@ MovementData_62216: ; 62216 (18:6216) db $FF SilphCo11Script_6221a: ; 6221a (18:621a) - ld [wd528], a + ld [wPlayerMovingDirection], a ld a, $3 ld [H_SPRITEINDEX], a ld a, b @@ -213,11 +213,11 @@ SilphCo11Script5: ; 62227 (18:6227) ld a, [wcf0d] cp $1 jr z, .asm_6223c - ld a, $2 + ld a, PLAYER_DIR_LEFT ld b, SPRITE_FACING_RIGHT jr .asm_62240 .asm_6223c - ld a, $8 + ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62240 call SilphCo11Script_6221a @@ -247,11 +247,11 @@ SilphCo11Script3: ; 6226a (18:626a) ld a, [wcf0d] cp $1 jr z, .asm_62284 - ld a, $2 + ld a, PLAYER_DIR_LEFT ld b, SPRITE_FACING_RIGHT jr .asm_62288 .asm_62284 - ld a, $8 + ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62288 call SilphCo11Script_6221a diff --git a/scripts/silphco7.asm b/scripts/silphco7.asm index 5043b947..78d6e0d7 100755 --- a/scripts/silphco7.asm +++ b/scripts/silphco7.asm @@ -127,8 +127,8 @@ SilphCo7Script0: ; 51c23 (14:5c23) ld [hJoyHeld], a ld a, $f0 ld [wJoyIgnore], a - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld a, $ff ld [wc0ee], a call PlaySound @@ -209,8 +209,8 @@ SilphCo7Script4: ; 51cc8 (14:5cc8) ld [wJoyIgnore], a ld hl, wd82f set 0, [hl] - ld a, $4 - ld [wd528], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a ld a, $9 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_UP diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm index d4651a22..bc13d4b6 100755 --- a/scripts/ssanne2.asm +++ b/scripts/ssanne2.asm @@ -74,8 +74,8 @@ SSAnne2Script_61416: ; 61416 (18:5416) ld a, [W_XCOORD] cp $25 jr nz, .asm_61426 - ld a, $2 - ld [wd528], a + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a ld a, SPRITE_FACING_RIGHT jr .asm_61427 .asm_61426 @@ -1701,7 +1701,11 @@ W_MONHLEARNSET:: ; d0cc flag_array 50 + 5 ds 1 -wd0d4:: ds 3 ; temp storage for hTilesetType +wSavedTilesetType:: ; d0d4 +; saved at the start of a battle and then written back at the end of the battle + ds 1 + + ds 2 W_MONHPADDING:: ; d0d7 @@ -2066,9 +2070,14 @@ W_SPRITESETID:: ; d3a8 ; sprite set ID for the current map ds 1 -wd3a9:: ds 1 ; used when getting the object data pointer -wd3aa:: ds 3 ; second part of the pointer -wd3ad:: ds 1 ; used as the beginning value for copying warp data +wObjectDataPointerTemp:: ; d3a9 + ds 2 + + ds 2 + +wMapBackgroundTile:: ; d3ad +; the tile shown outside the boundaries of the map + ds 1 wNumberOfWarps:: ; d3ae ; number of warps in current map @@ -2084,9 +2093,17 @@ wDestinationWarpID:: ; d42f ds 128 -wd4b0:: ds 1 ; number of signs on the map -wd4b1:: ds 32 ; starting address for sign coords -wd4d1:: ds 16 ; starting address for sign text IDs +wNumSigns:: ; d4b0 +; number of signs in the current map (up to 16) + ds 1 + +wSignCoords:: ; d4b1 +; 2 bytes each +; Y, X + ds 32 + +wSignTextIDs:: ; d4d1 + ds 16 W_NUMSPRITES:: ; d4e1 ; number of sprites on the current map @@ -2107,16 +2124,35 @@ W_MAPSPRITEEXTRADATA:: ; d504 ; two bytes per sprite (trainer class/item ID, trainer set ID) ds 32 -wd524:: ds 1 ; map height in 2x2 metatiles, also used with checking connections -wd525:: ds 1 ; map width in 2x2 metatiles, also used with checking connections +wCurrentMapHeight2:: ; d524 +; map height in 2x2 meta-tiles + ds 1 + +wCurrentMapWidth2:: ; d525 +; map width in 2x2 meta-tiles + ds 1 wMapViewVRAMPointer:: ; d526 ; the address of the upper left corner of the visible portion of the BG tile map in VRAM ds 2 -wd528:: ds 1 ; additional storage for directions -wd529:: ds 1 ; same case as above, but used differently -wd52a:: ds 1 ; same case as above +; In the comments for the player direction variables below, "moving" refers to +; both walking and changing facing direction without taking a step. + +wPlayerMovingDirection:: ; d528 +; if the player is moving, the current direction +; if the player is not moving, zero +; map scripts write to this in order to change the player's facing direction + ds 1 + +wPlayerLastStopDirection:: ; d529 +; the direction in which the player was moving before the player last stopped + ds 1 + +wPlayerDirection:: ; d52a +; if the player is moving, the current direction +; if the player is not moving, the last the direction in which the player moved + ds 1 W_TILESETBANK:: ; d52b ds 1 |