This commit is contained in:
mid-kid 2018-06-04 11:05:53 +02:00
commit 5e9c785b3f
45 changed files with 600 additions and 504 deletions

View File

@ -1775,7 +1775,7 @@ Music_Vibrato: ; e8882
swap a
srl a ; halve
ld e, a
adc a, 0; round up
adc 0 ; round up
swap a
or e
ld [hl], a

View File

@ -5,8 +5,8 @@ ENDM
map_const: MACRO
;\1: map id
;\2: height: in blocks
;\3: width: in blocks
;\2: width: in blocks
;\3: height: in blocks
GROUP_\1 EQU const_value
enum MAP_\1
\1_WIDTH EQU \2

View File

@ -44,16 +44,54 @@ OW_LEFT EQU LEFT << 2
OW_RIGHT EQU RIGHT << 2
; object_struct OBJECT_FLAGS1 bit flags
INVISIBLE EQU 0
FIXED_FACING EQU 2
SLIDING EQU 3
EMOTE_OBJECT EQU 7
const_def
const INVISIBLE_F ; 0
const WONT_DELETE_F ; 1
const FIXED_FACING_F ; 2
const SLIDING_F ; 3
const NOCLIP_TILES_F ; 4
const MOVE_ANYWHERE_F ; 5
const NOCLIP_OBJS_F ; 6
const EMOTE_OBJECT_F ; 7
INVISIBLE EQU 1 << INVISIBLE_F
WONT_DELETE EQU 1 << WONT_DELETE_F
FIXED_FACING EQU 1 << FIXED_FACING_F
SLIDING EQU 1 << SLIDING_F
NOCLIP_TILES EQU 1 << NOCLIP_TILES_F
MOVE_ANYWHERE EQU 1 << MOVE_ANYWHERE_F
NOCLIP_OBJS EQU 1 << NOCLIP_OBJS_F
EMOTE_OBJECT EQU 1 << EMOTE_OBJECT_F
; object_struct OBJECT_FLAGS2 bit flags
LOW_PRIORITY EQU 0
HIGH_PRIORITY EQU 1
OVERHEAD EQU 3
const_def
const LOW_PRIORITY_F ; 0
const HIGH_PRIORITY_F ; 1
const OBJ_FLAGS2_2 ; 2
const OVERHEAD_F ; 3
const USE_OBP1_F ; 4
LOW_PRIORITY EQU 1 << LOW_PRIORITY_F
HIGH_PRIORITY EQU 1 << HIGH_PRIORITY_F
OVERHEAD EQU 1 << OVERHEAD_F
USE_OBP1 EQU 1 << USE_OBP1_F
; object_struct OBJECT_PALETTE bit flags
const_def 5
const SWIMMING_F ; 5
const STRENGTH_BOULDER_F ; 6
const BIG_OBJECT_F ; 7
SWIMMING EQU 1 << SWIMMING_F
STRENGTH_BOULDER EQU 1 << STRENGTH_BOULDER_F
BIG_OBJECT EQU 1 << BIG_OBJECT_F
; facing attribute bit flags
RELATIVE_ATTRIBUTES_F EQU 1
ABSOLUTE_TILE_ID_F EQU 2
RELATIVE_ATTRIBUTES EQU 1 << RELATIVE_ATTRIBUTES_F
ABSOLUTE_TILE_ID EQU 1 << ABSOLUTE_TILE_ID_F
; map_object struct members (see macros/wram.asm)
const_def
@ -75,8 +113,18 @@ OVERHEAD EQU 3
const MAPOBJECT_F ; unused
OBJECT_LENGTH EQU const_value
MAPOBJECT_SCREEN_HEIGHT EQU 11
MAPOBJECT_SCREEN_WIDTH EQU 12
; SpriteMovementData struct members (see data/sprites/map_objects.asm)
const_def
const SPRITEMOVEATTR_MOVEMENT ; 0
const SPRITEMOVEATTR_FACING ; 1
const SPRITEMOVEATTR_ACTION ; 2
const SPRITEMOVEATTR_FLAGS1 ; 3
const SPRITEMOVEATTR_FLAGS2 ; 4
const SPRITEMOVEATTR_PALFLAGS ; 5
NUM_SPRITEMOVEDATA_FIELDS EQU const_value
MAPOBJECT_SCREEN_WIDTH EQU (SCREEN_WIDTH / 2) + 2
MAPOBJECT_SCREEN_HEIGHT EQU (SCREEN_HEIGHT / 2) + 2
; SpriteMovementData indexes (see data/sprites/map_objects.asm)
@ -119,7 +167,6 @@ MAPOBJECT_SCREEN_WIDTH EQU 12
const SPRITEMOVEDATA_GRASS ; 23
const SPRITEMOVEDATA_SWIM_WANDER ; 24
NUM_SPRITEMOVEDATA EQU const_value
SPRITEMOVEDATA_FIELDS EQU 6
; MapObjectMovementPattern.Pointers indexes (see engine/overworld/map_objects.asm)
const_def

View File

@ -15,9 +15,9 @@
const SCGB_GS_TITLE_SCREEN
const SCGB_0D
const SCGB_MOVE_LIST
const SCGB_0F
const SCGB_BETA_PIKACHU_MINIGAME
const SCGB_POKEDEX_SEARCH_OPTION
const SCGB_11
const SCGB_BETA_POKER
const SCGB_POKEPIC
const SCGB_13
const SCGB_PACKPALS
@ -75,40 +75,40 @@ SCGB_RAM EQU -1
const PREDEFPAL_RB_PINKMON
const PREDEFPAL_RB_YELLOWMON
const PREDEFPAL_CGB_BADGE ; RB_GREYMON
const PREDEFPAL_MEWMON_NITE
const PREDEFPAL_BLUEMON_NITE
const PREDEFPAL_REDMON_NITE
const PREDEFPAL_CYANMON_NITE
const PREDEFPAL_PURPLEMON_NITE
const PREDEFPAL_BROWNMON_NITE
const PREDEFPAL_GREENMON_NITE
const PREDEFPAL_PINKMON_NITE
const PREDEFPAL_YELLOWMON_NITE
const PREDEFPAL_PARTY_ICON ; GREYMON_NITE
const PREDEFPAL_BETA_SHINY_MEWMON
const PREDEFPAL_BETA_SHINY_BLUEMON
const PREDEFPAL_BETA_SHINY_REDMON
const PREDEFPAL_BETA_SHINY_CYANMON
const PREDEFPAL_BETA_SHINY_PURPLEMON
const PREDEFPAL_BETA_SHINY_BROWNMON
const PREDEFPAL_BETA_SHINY_GREENMON
const PREDEFPAL_BETA_SHINY_PINKMON
const PREDEFPAL_BETA_SHINY_YELLOWMON
const PREDEFPAL_PARTY_ICON ; BETA_SHINY_GREYMON
const PREDEFPAL_HP_GREEN
const PREDEFPAL_HP_YELLOW
const PREDEFPAL_HP_RED
const PREDEFPAL_POKEGEAR
const PREDEFPAL_33
const PREDEFPAL_34
const PREDEFPAL_BETA_LOGO_1
const PREDEFPAL_BETA_LOGO_2
const PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO
const PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS
const PREDEFPAL_37
const PREDEFPAL_BETA_INTRO_LAPRAS
const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
const PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
const PREDEFPAL_3B
const PREDEFPAL_BETA_INTRO_VENUSAUR
const PREDEFPAL_PACK ; GS_INTRO_CHARIZARD
const PREDEFPAL_SLOT_MACHINE_0
const PREDEFPAL_SLOT_MACHINE_1
const PREDEFPAL_SLOT_MACHINE_2
const PREDEFPAL_SLOT_MACHINE_3
const PREDEFPAL_SCGB_11_0
const PREDEFPAL_SCGB_11_1
const PREDEFPAL_SCGB_11_2
const PREDEFPAL_SCGB_11_3
const PREDEFPAL_45
const PREDEFPAL_46
const PREDEFPAL_BETA_POKER_0
const PREDEFPAL_BETA_POKER_1
const PREDEFPAL_BETA_POKER_2
const PREDEFPAL_BETA_POKER_3
const PREDEFPAL_BETA_RADIO
const PREDEFPAL_BETA_POKEGEAR
const PREDEFPAL_47
const PREDEFPAL_GS_TITLE_SCREEN_0
const PREDEFPAL_GS_TITLE_SCREEN_1

View File

@ -50,24 +50,24 @@ FacingWeirdTree2: ; standing down
db 4 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
db 8, 0, 2, $02
db 8, 8, 2, $03
db 8, 0, RELATIVE_ATTRIBUTES, $02
db 8, 8, RELATIVE_ATTRIBUTES, $03
; 409c
FacingStepDown1: ; walking down 1
db 4 ; #
db 0, 0, 0, $80
db 0, 8, 0, $81
db 8, 0, 2, $82
db 8, 8, 2, $83
db 8, 0, RELATIVE_ATTRIBUTES, $82
db 8, 8, RELATIVE_ATTRIBUTES, $83
; 40ad
FacingStepDown3: ; walking down 2
db 4 ; #
db 0, 8, X_FLIP, $80
db 0, 0, X_FLIP, $81
db 8, 8, 2 | X_FLIP, $82
db 8, 0, 2 | X_FLIP, $83
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $82
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $83
; 40be
FacingStepUp0:
@ -75,24 +75,24 @@ FacingStepUp2: ; standing up
db 4 ; #
db 0, 0, 0, $04
db 0, 8, 0, $05
db 8, 0, 2, $06
db 8, 8, 2, $07
db 8, 0, RELATIVE_ATTRIBUTES, $06
db 8, 8, RELATIVE_ATTRIBUTES, $07
; 40cf
FacingStepUp1: ; walking up 1
db 4 ; #
db 0, 0, 0, $84
db 0, 8, 0, $85
db 8, 0, 2, $86
db 8, 8, 2, $87
db 8, 0, RELATIVE_ATTRIBUTES, $86
db 8, 8, RELATIVE_ATTRIBUTES, $87
; 40e0
FacingStepUp3: ; walking up 2
db 4 ; #
db 0, 8, X_FLIP, $84
db 0, 0, X_FLIP, $85
db 8, 8, 2 | X_FLIP, $86
db 8, 0, 2 | X_FLIP, $87
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $86
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $87
; 40f1
FacingStepLeft0:
@ -100,8 +100,8 @@ FacingStepLeft2: ; standing left
db 4 ; #
db 0, 0, 0, $08
db 0, 8, 0, $09
db 8, 0, 2, $0a
db 8, 8, 2, $0b
db 8, 0, RELATIVE_ATTRIBUTES, $0a
db 8, 8, RELATIVE_ATTRIBUTES, $0b
; 4102
FacingStepRight0:
@ -109,8 +109,8 @@ FacingStepRight2: ; standing right
db 4 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
db 8, 8, 2 | X_FLIP, $0a
db 8, 0, 2 | X_FLIP, $0b
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
; 4113
FacingStepLeft1:
@ -118,8 +118,8 @@ FacingStepLeft3: ; walking left
db 4 ; #
db 0, 0, 0, $88
db 0, 8, 0, $89
db 8, 0, 2, $8a
db 8, 8, 2, $8b
db 8, 0, RELATIVE_ATTRIBUTES, $8a
db 8, 8, RELATIVE_ATTRIBUTES, $8b
; 4124
FacingStepRight1:
@ -127,58 +127,58 @@ FacingStepRight3: ; walking right
db 4 ; #
db 0, 8, X_FLIP, $88
db 0, 0, X_FLIP, $89
db 8, 8, 2 | X_FLIP, $8a
db 8, 0, 2 | X_FLIP, $8b
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $8a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $8b
; 4135
FacingFishDown: ; fishing down
db 5 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
db 8, 0, 2, $02
db 8, 8, 2, $03
db 16, 0, 4, $fc
db 8, 0, RELATIVE_ATTRIBUTES, $02
db 8, 8, RELATIVE_ATTRIBUTES, $03
db 16, 0, ABSOLUTE_TILE_ID, $fc
; 414a
FacingFishUp: ; fishing up
db 5 ; #
db 0, 0, 0, $04
db 0, 8, 0, $05
db 8, 0, 2, $06
db 8, 8, 2, $07
db -8, 0, 4, $fc
db 8, 0, RELATIVE_ATTRIBUTES, $06
db 8, 8, RELATIVE_ATTRIBUTES, $07
db -8, 0, ABSOLUTE_TILE_ID, $fc
; 415f
FacingFishLeft: ; fishing left
db 5 ; #
db 0, 0, 0, $08
db 0, 8, 0, $09
db 8, 0, 2, $0a
db 8, 8, 2, $0b
db 5, -8, 4 | X_FLIP, $fd
db 8, 0, RELATIVE_ATTRIBUTES, $0a
db 8, 8, RELATIVE_ATTRIBUTES, $0b
db 5, -8, ABSOLUTE_TILE_ID | X_FLIP, $fd
; 4174
FacingFishRight: ; fishing right
db 5 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
db 8, 8, 2 | X_FLIP, $0a
db 8, 0, 2 | X_FLIP, $0b
db 5, 16, 4, $fd
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
db 5, 16, ABSOLUTE_TILE_ID, $fd
; 4189
FacingEmote: ; emote
db 4 ; #
db 0, 0, 4, $f8
db 0, 8, 4, $f9
db 8, 0, 4, $fa
db 8, 8, 4, $fb
db 0, 0, ABSOLUTE_TILE_ID, $f8
db 0, 8, ABSOLUTE_TILE_ID, $f9
db 8, 0, ABSOLUTE_TILE_ID, $fa
db 8, 8, ABSOLUTE_TILE_ID, $fb
; 419a
FacingShadow: ; shadow
db 2 ; #
db 0, 0, 4, $fc
db 0, 8, 4 | X_FLIP, $fc
db 0, 0, ABSOLUTE_TILE_ID, $fc
db 0, 8, ABSOLUTE_TILE_ID | X_FLIP, $fc
; 41a3
FacingBigDollSymmetric: ; big snorlax or lapras doll
@ -237,28 +237,28 @@ FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
FacingBoulderDust1: ; boulder dust 1
db 4 ; #
db 0, 0, 4, $fe
db 0, 8, 4, $fe
db 8, 0, 4, $fe
db 8, 8, 4, $fe
db 0, 0, ABSOLUTE_TILE_ID, $fe
db 0, 8, ABSOLUTE_TILE_ID, $fe
db 8, 0, ABSOLUTE_TILE_ID, $fe
db 8, 8, ABSOLUTE_TILE_ID, $fe
; 4250
FacingBoulderDust2: ; boulder dust 2
db 4 ; #
db 0, 0, 4, $ff
db 0, 8, 4, $ff
db 8, 0, 4, $ff
db 8, 8, 4, $ff
db 0, 0, ABSOLUTE_TILE_ID, $ff
db 0, 8, ABSOLUTE_TILE_ID, $ff
db 8, 0, ABSOLUTE_TILE_ID, $ff
db 8, 8, ABSOLUTE_TILE_ID, $ff
; 4261
FacingGrass1: ; 4261
db 2 ; #
db 8, 0, 4, $fe
db 8, 8, 4 | X_FLIP, $fe
db 8, 0, ABSOLUTE_TILE_ID, $fe
db 8, 8, ABSOLUTE_TILE_ID | X_FLIP, $fe
; 426a
FacingGrass2: ; 426a
db 2 ; #
db 9, -1, 4, $fe
db 9, 9, 4 | X_FLIP, $fe
db 9, -1, ABSOLUTE_TILE_ID, $fe
db 9, 9, ABSOLUTE_TILE_ID | X_FLIP, $fe
; 4273

View File

@ -5,304 +5,304 @@ SpriteMovementData:: ; 4273
db SPRITEMOVEFN_00 ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STILL
db SPRITEMOVEFN_STANDING ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00001100 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db FIXED_FACING | SLIDING ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_WANDER
db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SPINRANDOM_SLOW
db SPRITEMOVEFN_SLOW_RANDOM_SPIN ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_WALK_UP_DOWN
db SPRITEMOVEFN_RANDOM_WALK_Y ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_WALK_LEFT_RIGHT
db SPRITEMOVEFN_RANDOM_WALK_X ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STANDING_DOWN
db SPRITEMOVEFN_STANDING ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STANDING_UP
db SPRITEMOVEFN_STANDING ; movement function
db UP ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STANDING_LEFT
db SPRITEMOVEFN_STANDING ; movement function
db LEFT ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STANDING_RIGHT
db SPRITEMOVEFN_STANDING ; movement function
db RIGHT ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SPINRANDOM_FAST
db SPRITEMOVEFN_FAST_RANDOM_SPIN ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_PLAYER
db SPRITEMOVEFN_OBEY_DPAD ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_0C
db SPRITEMOVEFN_08 ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_0D
db SPRITEMOVEFN_09 ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_0E
db SPRITEMOVEFN_0A ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_0F
db SPRITEMOVEFN_0B ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_10
db SPRITEMOVEFN_0C ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_11
db SPRITEMOVEFN_0D ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_12
db SPRITEMOVEFN_0E ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_FOLLOWING
db SPRITEMOVEFN_FOLLOW ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SCRIPTED
db SPRITEMOVEFN_SCRIPTED ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_BIGDOLLSYM
db SPRITEMOVEFN_BIG_SNORLAX ; movement function
db DOWN ; facing
db OBJECT_ACTION_BIG_DOLL_SYM ; action
db %00101110 ; flags1
db %00000001 ; flags2
db %11000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db LOW_PRIORITY ; flags2
db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
; SPRITEMOVEDATA_POKEMON
db SPRITEMOVEFN_BOUNCE ; movement function
db DOWN ; facing
db OBJECT_ACTION_BOUNCE ; action
db %00101110 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SUDOWOODO
db SPRITEMOVEFN_STANDING ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00001100 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db FIXED_FACING | SLIDING ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SMASHABLE_ROCK
db SPRITEMOVEFN_STANDING ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00101110 ; flags1
db %00010000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db USE_OBP1 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_STRENGTH_BOULDER
db SPRITEMOVEFN_STRENGTH ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00101110 ; flags1
db %00000000 ; flags2
db %01000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db 0 ; flags2
db STRENGTH_BOULDER ; palette flags
; SPRITEMOVEDATA_FOLLOWNOTEXACT
db SPRITEMOVEFN_FOLLOWNOTEXACT ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SHADOW
db SPRITEMOVEFN_SHADOW ; movement function
db DOWN ; facing
db OBJECT_ACTION_00 ; action
db %10001110 ; flags1
db %00000001 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
db LOW_PRIORITY ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_EMOTE
db SPRITEMOVEFN_EMOTE ; movement function
db DOWN ; facing
db OBJECT_ACTION_EMOTE ; action
db %10001110 ; flags1
db %00000010 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
db HIGH_PRIORITY ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SCREENSHAKE
db SPRITEMOVEFN_SCREENSHAKE ; movement function
db DOWN ; facing
db OBJECT_ACTION_00 ; action
db %10000010 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | EMOTE_OBJECT ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; movement function
db LEFT ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SPINCLOCKWISE
db SPRITEMOVEFN_SPIN_CLOCKWISE ; movement function
db RIGHT ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_BIGDOLLASYM
db SPRITEMOVEFN_STRENGTH ; movement function
db DOWN ; facing
db OBJECT_ACTION_BIG_DOLL_ASYM ; action
db %00101110 ; flags1
db %00000001 ; flags2
db %11000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db LOW_PRIORITY ; flags2
db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
; SPRITEMOVEDATA_BIGDOLL
db SPRITEMOVEFN_STRENGTH ; movement function
db DOWN ; facing
db OBJECT_ACTION_BIG_DOLL ; action
db %00101110 ; flags1
db %00000001 ; flags2
db %11000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
db LOW_PRIORITY ; flags2
db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
; SPRITEMOVEDATA_BOULDERDUST
db SPRITEMOVEFN_BOULDERDUST ; movement function
db DOWN ; facing
db OBJECT_ACTION_BOULDER_DUST ; action
db %10001110 ; flags1
db %00000001 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
db LOW_PRIORITY ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_GRASS
db SPRITEMOVEFN_GRASS ; movement function
db DOWN ; facing
db OBJECT_ACTION_GRASS_SHAKE ; action
db %10001110 ; flags1
db %00000010 ; flags2
db %00000000 ; palette flags
db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
db HIGH_PRIORITY ; flags2
db 0 ; palette flags
; SPRITEMOVEDATA_SWIM_WANDER
db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00100000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db SWIMMING ; palette flags
; 25
db SPRITEMOVEFN_00 ; movement function
db DOWN ; facing
db OBJECT_ACTION_STAND ; action
db %00000000 ; flags1
db %00000000 ; flags2
db %00000000 ; palette flags
db 0 ; flags1
db 0 ; flags2
db 0 ; palette flags
; 4357

View File

@ -109,11 +109,11 @@ TypeMatchups: ; 34bb1
db STEEL, ROCK, SUPER_EFFECTIVE
db STEEL, STEEL, NOT_VERY_EFFECTIVE
db -2 ; end
db -2 ; end (with Foresight)
; Foresight removes Ghost's immunities.
db NORMAL, GHOST, NO_EFFECT
db FIGHTING, GHOST, NO_EFFECT
db -1 ; end (with Foresight)
db -1 ; end
; 34cfd

View File

@ -44,7 +44,7 @@ These are known bugs and glitches in the original Pokémon Crystal game: code th
- [Two tiles in the `port` tileset are drawn incorrectly](#two-tiles-in-the-port-tileset-are-drawn-incorrectly)
- [`LoadMetatiles` wraps around past 128 blocks](#loadmetatiles-wraps-around-past-128-blocks)
- [Surfing directly across a map connection does not load the new map](#surfing-directly-across-a-map-connection-does-not-load-the-new-map)
- [`Function6ec1` does not correctly limit object movement](#function6ec1-does-not-correctly-limit-object-movement)
- [Swimming NPCs aren't limited by their movement radius](#swimming-npcs-arent-limited-by-their-movement-radius)
- [`CheckOwnMon` only checks the first five letters of OT names](#checkownmon-only-checks-the-first-five-letters-of-ot-names)
- [Catching a Transformed Pokémon always catches a Ditto](#catching-a-transformed-pokémon-always-catches-a-ditto)
- [Using a Park Ball in normal battles has a corrupt animation](#using-a-park-ball-in-normal-battles-has-a-corrupt-animation)
@ -1185,20 +1185,20 @@ In [home/map.asm](/home/map.asm):
*To do:* Identify specific code causing this bug and fix it.
## `Function6ec1` does not correctly limit object movement
## Swimming NPCs aren't limited by their movement radius
This bug is why the Lapras in [maps/UnionCaveB2F.asm](/maps/UnionCaveB2F.asm), which uses `SPRITEMOVEDATA_SWIM_WANDER`, is not restricted by its `1, 1` movement radius.
In [engine/overworld/npc_movement.asm](/engine/overworld/npc_movement.asm):
This is a bug with `CanObjectMoveInDirection` in [engine/overworld/npc_movement.asm](/engine/overworld/npc_movement.asm):
```asm
ld hl, OBJECT_FLAGS1
add hl, bc
bit 4, [hl] ; lost, uncomment next line to fix
; jr nz, .resume
bit NOCLIP_TILES_F, [hl] ; lost, uncomment next line to fix
; jr nz, .noclip_tiles
```
**Fix:** Uncomment `jr nz, .resume`.
**Fix:** Uncomment `jr nz, .noclip_tiles`.
## `CheckOwnMon` only checks the first five letters of OT names

View File

@ -36,7 +36,7 @@ GLOBAL PICS_FIX
push hl
push bc
sub BANK(Pics_1) - PICS_FIX
sub BANK("Pics 1") - PICS_FIX
ld c, a
ld b, 0
ld hl, .PicsBanks
@ -47,33 +47,33 @@ GLOBAL PICS_FIX
ret
.PicsBanks: ; 511d4
db BANK(Pics_1) + 0
db BANK(Pics_1) + 1
db BANK(Pics_1) + 2
db BANK(Pics_1) + 3
db BANK(Pics_1) + 4
db BANK(Pics_1) + 5
db BANK(Pics_1) + 6
db BANK(Pics_1) + 7
db BANK(Pics_1) + 8
db BANK(Pics_1) + 9
db BANK(Pics_1) + 10
db BANK(Pics_1) + 11
db BANK(Pics_1) + 12
db BANK(Pics_1) + 13
db BANK(Pics_1) + 14
db BANK(Pics_1) + 15
db BANK(Pics_1) + 16
db BANK(Pics_1) + 17
db BANK(Pics_1) + 18
db BANK(Pics_1) + 19
db BANK(Pics_1) + 20
db BANK(Pics_1) + 21
db BANK(Pics_1) + 22
db BANK(Pics_1) + 23
db BANK("Pics 1") ; BANK("Pics 1") + 0
db BANK("Pics 2") ; BANK("Pics 1") + 1
db BANK("Pics 3") ; BANK("Pics 1") + 2
db BANK("Pics 4") ; BANK("Pics 1") + 3
db BANK("Pics 5") ; BANK("Pics 1") + 4
db BANK("Pics 6") ; BANK("Pics 1") + 5
db BANK("Pics 7") ; BANK("Pics 1") + 6
db BANK("Pics 8") ; BANK("Pics 1") + 7
db BANK("Pics 9") ; BANK("Pics 1") + 8
db BANK("Pics 10") ; BANK("Pics 1") + 9
db BANK("Pics 11") ; BANK("Pics 1") + 10
db BANK("Pics 12") ; BANK("Pics 1") + 11
db BANK("Pics 13") ; BANK("Pics 1") + 12
db BANK("Pics 14") ; BANK("Pics 1") + 13
db BANK("Pics 15") ; BANK("Pics 1") + 14
db BANK("Pics 16") ; BANK("Pics 1") + 15
db BANK("Pics 17") ; BANK("Pics 1") + 16
db BANK("Pics 18") ; BANK("Pics 1") + 17
db BANK("Pics 19") ; BANK("Pics 1") + 18
db BANK("Pics 20") ; BANK("Pics 1") + 19
db BANK("Pics 21") ; BANK("Pics 1") + 20
db BANK("Pics 22") ; BANK("Pics 1") + 21
db BANK("Pics 23") ; BANK("Pics 1") + 22
db BANK("Pics 24") ; BANK("Pics 1") + 23
```
**Fix:** Use `dba` instead of `dba_pic`, and don't call `FixPicBank` to modify `a`.
**Fix:** Use `dba` instead of `dba_pic`, delete `FixPicBank`, and remove all four calls to `FixPicBank`.
## `PokemonPicPointers` and `UnownPicPointers` are assumed to start at the same address

View File

@ -1569,7 +1569,7 @@ AI_Smart_DefrostOpponent: ; 38ccb
; No move has EFFECT_DEFROST_OPPONENT, so this layer is unused.
ld a, [wEnemyMonStatus]
and $20
and 1 << FRZ
ret z
dec [hl]
dec [hl]

View File

@ -364,7 +364,7 @@ CantMove: ; 341f0
ld a, BATTLE_VARS_SUBSTATUS3
call GetBattleVarAddr
ld a, [hl]
and $ff ^ (1<<SUBSTATUS_BIDE + 1<<SUBSTATUS_RAMPAGE + 1<<SUBSTATUS_CHARGED)
and $ff ^ (1 << SUBSTATUS_BIDE | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_CHARGED)
ld [hl], a
call ResetFuryCutterCount

View File

@ -39,7 +39,14 @@ PokemonCenterPC: ; 1559a
dw PlaceNthMenuStrings
dw .JumpTable
PCPC_PLAYERS_PC EQU 0
PCPC_BILLS_PC EQU 1
PCPC_OAKS_PC EQU 2
PCPC_HALL_OF_FAME EQU 3
PCPC_TURN_OFF EQU 4
.JumpTable:
; entries correspond to PCPC_* constants
dw PlayersPC, .String_PlayersPC
dw BillsPC, .String_BillsPC
dw OaksPC, .String_OaksPC
@ -53,33 +60,42 @@ PokemonCenterPC: ; 1559a
.String_TurnOff: db "TURN OFF@"
.WhichPC:
; before pokedex
db 3 ; items
db 1, 0, 4 ; bill's, player's, turn off
db -1
; before Pokédex
db 3
db PCPC_BILLS_PC
db PCPC_PLAYERS_PC
db PCPC_TURN_OFF
db -1 ; end
; before Hall Of Fame
db 4 ; items
db 1, 0, 2, 4 ; bill's, player's, oak's, turn off
db -1
db 4
db PCPC_BILLS_PC
db PCPC_PLAYERS_PC
db PCPC_OAKS_PC
db PCPC_TURN_OFF
db -1 ; end
; postgame
db 5 ; items
db 1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off
db -1
db 5
db PCPC_BILLS_PC
db PCPC_PLAYERS_PC
db PCPC_OAKS_PC
db PCPC_HALL_OF_FAME
db PCPC_TURN_OFF
db -1 ; end
.ChooseWhichPCListToUse:
call CheckReceivedDex
jr nz, .got_dex
ld a, $0
ld a, 0 ; before Pokédex
ret
.got_dex
ld a, [wHallOfFameCount]
and a
ld a, $1
ld a, 1 ; before Hall Of Fame
ret z
ld a, $2
ld a, 2 ; postgame
ret
; 15650
@ -244,7 +260,16 @@ PlayersPCMenuData: ; 0x15736
dw PlaceNthMenuStrings
dw .PlayersPCMenuPointers
PLAYERSPC_WITHDRAW_ITEM EQU 0
PLAYERSPC_DEPOSIT_ITEM EQU 1
PLAYERSPC_TOSS_ITEM EQU 2
PLAYERSPC_MAIL_BOX EQU 3
PLAYERSPC_DECORATION EQU 4
PLAYERSPC_TURN_OFF EQU 5
PLAYERSPC_LOG_OFF EQU 6
.PlayersPCMenuPointers: ; 0x15746
; entries correspond to PLAYERSPC_* constants
dw PlayerWithdrawItemMenu, .WithdrawItem
dw PlayerDepositItemMenu, .DepositItem
dw PlayerTossItemMenu, .TossItem
@ -261,32 +286,24 @@ PlayersPCMenuData: ; 0x15736
.TurnOff: db "TURN OFF@"
.LogOff: db "LOG OFF@"
WITHDRAW_ITEM EQU 0
DEPOSIT_ITEM EQU 1
TOSS_ITEM EQU 2
MAIL_BOX EQU 3
DECORATION EQU 4
TURN_OFF EQU 5
LOG_OFF EQU 6
.PlayersPCMenuList1:
db 5
db WITHDRAW_ITEM
db DEPOSIT_ITEM
db TOSS_ITEM
db MAIL_BOX
db TURN_OFF
db -1
db PLAYERSPC_WITHDRAW_ITEM
db PLAYERSPC_DEPOSIT_ITEM
db PLAYERSPC_TOSS_ITEM
db PLAYERSPC_MAIL_BOX
db PLAYERSPC_TURN_OFF
db -1 ; end
.PlayersPCMenuList2:
db 6
db WITHDRAW_ITEM
db DEPOSIT_ITEM
db TOSS_ITEM
db MAIL_BOX
db DECORATION
db LOG_OFF
db -1
db PLAYERSPC_WITHDRAW_ITEM
db PLAYERSPC_DEPOSIT_ITEM
db PLAYERSPC_TOSS_ITEM
db PLAYERSPC_MAIL_BOX
db PLAYERSPC_DECORATION
db PLAYERSPC_LOG_OFF
db -1 ; end
PC_DisplayTextWaitMenu: ; 157bb
ld a, [wOptions]
@ -461,13 +478,14 @@ PlayerDepositItemMenu: ; 0x1588b
ret
.dw
dw .tossable
; entries correspond to ITEMMENU_* constants
dw .tossable ; ITEMMENU_NOUSE
dw .no_toss
dw .no_toss
dw .no_toss
dw .tossable
dw .tossable
dw .tossable
dw .tossable ; ITEMMENU_CURRENT
dw .tossable ; ITEMMENU_PARTY
dw .tossable ; ITEMMENU_CLOSE
.no_toss
ret

View File

@ -48,7 +48,7 @@ LoadSGBLayoutCGB: ; 8d59
dw _CGB_GSTitleScreen
dw _CGB0d
dw _CGB_MoveList
dw _CGB0f
dw _CGB_BetaPikachuMinigame
dw _CGB_PokedexSearchOption
dw _CGB11
dw _CGB_Pokepic
@ -532,7 +532,7 @@ _CGB_GSIntro: ; 9122
; 9195
_CGB11: ; 9195
ld hl, Palettes_SCGB_11
ld hl, BetaPokerPals
ld de, wBGPals1
ld bc, 5 palettes
ld a, BANK(wBGPals1)
@ -790,8 +790,8 @@ _CGB_MoveList: ; 9373
ret
; 93a6
_CGB0f: ; 93a6
ld hl, PalPacket_SCGB_0F + 1
_CGB_BetaPikachuMinigame: ; 93a6
ld hl, PalPacket_BetaPikachuMinigame + 1
call CopyFourPalettes
call WipeAttrMap
call ApplyAttrMap

View File

@ -182,12 +182,12 @@ Unreferenced_Function8b4d:
ld a, [hSGB]
and a
ret z
ld hl, PalPacket_Function8b4d
ld hl, PalPacket_BetaIntroVenusaur
jp PushSGBPals_
.cgb
ld de, wOBPals1
ld a, PREDEFPAL_3B
ld a, PREDEFPAL_BETA_INTRO_VENUSAUR
call GetPredefPal
jp LoadHLPaletteIntoDE
@ -1349,8 +1349,8 @@ INCLUDE "gfx/pokegear/pokegear.pal"
FemalePokegearPals:
INCLUDE "gfx/pokegear/pokegear_f.pal"
Palettes_SCGB_11:
INCLUDE "gfx/unknown/b789.pal"
BetaPokerPals:
INCLUDE "gfx/beta_poker/beta_poker.pal"
SlotMachinePals:
INCLUDE "gfx/slots/slots.pal"

View File

@ -252,7 +252,7 @@ GLOBAL PICS_FIX
push hl
push bc
sub BANK(Pics_1) - PICS_FIX
sub BANK("Pics 1") - PICS_FIX
ld c, a
ld b, 0
ld hl, .PicsBanks
@ -263,30 +263,30 @@ GLOBAL PICS_FIX
ret
.PicsBanks: ; 511d4
db BANK(Pics_1) + 0
db BANK(Pics_1) + 1
db BANK(Pics_1) + 2
db BANK(Pics_1) + 3
db BANK(Pics_1) + 4
db BANK(Pics_1) + 5
db BANK(Pics_1) + 6
db BANK(Pics_1) + 7
db BANK(Pics_1) + 8
db BANK(Pics_1) + 9
db BANK(Pics_1) + 10
db BANK(Pics_1) + 11
db BANK(Pics_1) + 12
db BANK(Pics_1) + 13
db BANK(Pics_1) + 14
db BANK(Pics_1) + 15
db BANK(Pics_1) + 16
db BANK(Pics_1) + 17
db BANK(Pics_1) + 18
db BANK(Pics_1) + 19
db BANK(Pics_1) + 20
db BANK(Pics_1) + 21
db BANK(Pics_1) + 22
db BANK(Pics_1) + 23
db BANK("Pics 1") ; BANK("Pics 1") + 0
db BANK("Pics 2") ; BANK("Pics 1") + 1
db BANK("Pics 3") ; BANK("Pics 1") + 2
db BANK("Pics 4") ; BANK("Pics 1") + 3
db BANK("Pics 5") ; BANK("Pics 1") + 4
db BANK("Pics 6") ; BANK("Pics 1") + 5
db BANK("Pics 7") ; BANK("Pics 1") + 6
db BANK("Pics 8") ; BANK("Pics 1") + 7
db BANK("Pics 9") ; BANK("Pics 1") + 8
db BANK("Pics 10") ; BANK("Pics 1") + 9
db BANK("Pics 11") ; BANK("Pics 1") + 10
db BANK("Pics 12") ; BANK("Pics 1") + 11
db BANK("Pics 13") ; BANK("Pics 1") + 12
db BANK("Pics 14") ; BANK("Pics 1") + 13
db BANK("Pics 15") ; BANK("Pics 1") + 14
db BANK("Pics 16") ; BANK("Pics 1") + 15
db BANK("Pics 17") ; BANK("Pics 1") + 16
db BANK("Pics 18") ; BANK("Pics 1") + 17
db BANK("Pics 19") ; BANK("Pics 1") + 18
db BANK("Pics 20") ; BANK("Pics 1") + 19
db BANK("Pics 21") ; BANK("Pics 1") + 20
db BANK("Pics 22") ; BANK("Pics 1") + 21
db BANK("Pics 23") ; BANK("Pics 1") + 22
db BANK("Pics 24") ; BANK("Pics 1") + 23
Function511ec: ; 511ec
ld a, c

View File

@ -38,9 +38,9 @@ LoadSGBLayout: ; 864c
dw .SGB_GSTitleScreen
dw .SGB0d
dw .SGB_MoveList
dw .SGB0f
dw .SGB_BetaPikachuMinigame
dw .SGB_PokedexSearchOption
dw .SGB11
dw .SGB_BetaPoker
dw .SGB12
dw .SGB13
dw .SGB_PackPals
@ -346,18 +346,18 @@ endr
ret
; 8897
.SGB0f: ; 8897
ld hl, PalPacket_SCGB_0F
.SGB_BetaPikachuMinigame: ; 8897
ld hl, PalPacket_BetaPikachuMinigame
ld de, BlkPacket_9a86
ret
; 889e
.SGB11: ; 889e
.SGB_BetaPoker: ; 889e
ld hl, BlkPacket_9a86
ld de, wPlayerLightScreenCount ; ???
ld bc, PALPACKET_LENGTH
call CopyBytes
ld hl, PalPacket_SCGB_11
ld hl, PalPacket_BetaPoker
ld de, BlkPacket_9a86
ret
; 88b1

View File

@ -571,11 +571,11 @@ RegisterItem: ; 103c2
ld a, [wCurrPocket]
rrca
rrca
and $c0
and REGISTERED_POCKET
ld b, a
ld a, [wCurItemQuantity]
inc a
and $3f
and REGISTERED_NUMBER
or b
ld [wWhichRegisteredItem], a
ld a, [wCurItem]
@ -1283,7 +1283,7 @@ DrawPackGFX: ; 1089d
ld a, [wCurrPocket]
maskbits NUM_POCKETS
ld e, a
ld d, $0
ld d, 0
ld a, [wBattleType]
cp BATTLETYPE_TUTORIAL
jr z, .male_dude

View File

@ -47,7 +47,7 @@ SetFacingStandAction: ; 44b5
SetFacingStepAction: ; 44c1
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
bit SLIDING_F, [hl]
jp nz, SetFacingCurrent
ld hl, OBJECT_STEP_FRAME
@ -59,7 +59,7 @@ SetFacingStepAction: ; 44c1
rrca
rrca
and %00000011
maskbits NUM_DIRECTIONS
ld d, a
call GetSpriteDirection
@ -74,7 +74,7 @@ SetFacingStepAction: ; 44c1
SetFacingSkyfall: ; 44e4
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
bit SLIDING_F, [hl]
jp nz, SetFacingCurrent
ld hl, OBJECT_STEP_FRAME
@ -86,7 +86,7 @@ SetFacingSkyfall: ; 44e4
rrca
rrca
and %00000011
maskbits NUM_DIRECTIONS
ld d, a
call GetSpriteDirection
@ -101,7 +101,7 @@ SetFacingSkyfall: ; 44e4
SetFacingBumpAction: ; 4508
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
bit SLIDING_F, [hl]
jp nz, SetFacingCurrent
ld hl, OBJECT_STEP_FRAME
@ -112,7 +112,7 @@ SetFacingBumpAction: ; 4508
rrca
rrca
rrca
and %00000011
maskbits NUM_DIRECTIONS
ld d, a
call GetSpriteDirection
@ -245,7 +245,7 @@ SetFacingWeirdTree: ; 45ab
ld a, [hl]
inc a
ld [hl], a
and %00001100
maskbits NUM_DIRECTIONS, 2
rrca
rrca
add FACING_WEIRD_TREE_0

View File

@ -93,7 +93,7 @@ Function437b: ; 437b
.ok2
ld hl, OBJECT_FLAGS1
add hl, bc
bit 1, [hl]
bit WONT_DELETE_F, [hl]
jr nz, .yes2
call DeleteMapObject
scf
@ -146,7 +146,7 @@ Function437b: ; 437b
.HandleObjectAction:
ld hl, OBJECT_FLAGS1
add hl, bc
bit INVISIBLE, [hl]
bit INVISIBLE_F, [hl]
jr nz, SetFacingStanding
ld hl, OBJECT_FLAGS2
add hl, bc
@ -161,7 +161,7 @@ Function437b: ; 437b
Function4440: ; 4440
ld hl, OBJECT_FLAGS1
add hl, bc
bit INVISIBLE, [hl]
bit INVISIBLE_F, [hl]
jr nz, SetFacingStanding
asm_4448:
ld de, ObjectActionPairPointers + 2 ; use second column
@ -233,7 +233,7 @@ Function462a: ; 462a
UpdateTallGrassFlags: ; 463f
ld hl, OBJECT_FLAGS2
add hl, bc
bit OVERHEAD, [hl]
bit OVERHEAD_F, [hl]
jr z, .ok
ld hl, OBJECT_NEXT_TILE
add hl, bc
@ -260,13 +260,13 @@ SetTallGrassFlags: ; 4661
.set
ld hl, OBJECT_FLAGS2
add hl, bc
set OVERHEAD, [hl]
set OVERHEAD_F, [hl]
ret
.reset
ld hl, OBJECT_FLAGS2
add hl, bc
res OVERHEAD, [hl]
res OVERHEAD_F, [hl]
ret
; 4679
@ -298,7 +298,7 @@ InitStep: ; 4690
ld [hl], a
ld hl, OBJECT_FLAGS1
add hl, bc
bit FIXED_FACING, [hl]
bit FIXED_FACING_F, [hl]
jr nz, GetNextTile
add a
add a
@ -696,7 +696,7 @@ MapObjectMovementPattern: ; 47dd
and %00000011
or 0
call InitStep
call Function6ec1
call CanObjectMoveInDirection
jr c, .ok2
ld de, SFX_STRENGTH
call PlaySFX
@ -1049,7 +1049,7 @@ MapObjectMovementPattern: ; 47dd
.RandomWalkContinue:
call InitStep
call Function6ec1 ; check whether the object can move in that direction
call CanObjectMoveInDirection ; check whether the object can move in that direction
jr c, .NewDuration
call UpdateTallGrassFlags
ld hl, OBJECT_ACTION
@ -2156,7 +2156,7 @@ DespawnEmote: ; 5579
push af
ld hl, OBJECT_FLAGS1
add hl, de
bit EMOTE_OBJECT, [hl]
bit EMOTE_OBJECT_F, [hl]
jr z, .next
ld hl, OBJECT_SPRITE
add hl, de
@ -2445,7 +2445,7 @@ Function56cd: ; 56cd
ld [hUsedSpriteTile], a
ld hl, OBJECT_PALETTE
add hl, bc
bit 7, [hl]
bit BIG_OBJECT_F, [hl]
jr z, .ok7
ld a, d
add 2
@ -2575,7 +2575,7 @@ ContinueSpawnFacing: ; 57db
_SetPlayerPalette: ; 57e2
ld a, d
and %10000000
and 1 << 7
ret z
ld bc, 0 ; debug?
ld hl, OBJECT_FACING
@ -2585,13 +2585,13 @@ _SetPlayerPalette: ; 57e2
ld [hl], a
ld a, d
swap a
and %00000111
and PALETTE_MASK
ld d, a
ld bc, wPlayerStruct
ld hl, OBJECT_PALETTE
add hl, bc
ld a, [hl]
and %11111000
and $ff ^ PALETTE_MASK
or d
ld [hl], a
ret
@ -2919,10 +2919,10 @@ InitSprites: ; 5991
ld e, PRIORITY_LOW
ld hl, OBJECT_FLAGS2
add hl, bc
bit LOW_PRIORITY, [hl]
bit LOW_PRIORITY_F, [hl]
jr nz, .add
ld e, PRIORITY_NORM
bit HIGH_PRIORITY, [hl]
bit HIGH_PRIORITY_F, [hl]
jr z, .add
ld e, PRIORITY_HIGH
jr .add
@ -2974,35 +2974,35 @@ InitSprites: ; 5991
ld hl, OBJECT_SPRITE_TILE
add hl, bc
ld a, [hl]
and %01111111
and $ff ^ (1 << 7)
ld [hFFC1], a
xor a
bit 7, [hl]
jr nz, .skip1
or %00001000
or VRAM_BANK_1
.skip1
ld hl, OBJECT_FLAGS2
add hl, bc
ld e, [hl]
bit 7, e
jr z, .skip2
or %10000000
or PRIORITY
.skip2
bit 4, e
bit USE_OBP1_F, e
jr z, .skip3
or %00010000
or OBP_NUM
.skip3
ld hl, OBJECT_PALETTE
add hl, bc
ld d, a
ld a, [hl]
and %00000111
and PALETTE_MASK
or d
ld d, a
xor a
bit 3, e
bit OVERHEAD_F, e
jr z, .skip4
or %10000000
or PRIORITY
.skip4
ld [hFFC2], a
ld hl, OBJECT_SPRITE_X
@ -3064,7 +3064,7 @@ InitSprites: ; 5991
ld e, [hl]
inc hl
ld a, [hFFC1]
bit 2, e
bit ABSOLUTE_TILE_ID_F, e
jr z, .nope1
xor a
.nope1
@ -3073,7 +3073,7 @@ InitSprites: ; 5991
ld [bc], a ; tile id
inc c
ld a, e
bit 1, a
bit RELATIVE_ATTRIBUTES_F, a
jr z, .nope2
ld a, [hFFC2]
or e

View File

@ -377,42 +377,42 @@ Movement_tree_shake: ; 5279
Movement_remove_sliding: ; 5293
ld hl, OBJECT_FLAGS1
add hl, bc
res SLIDING, [hl]
res SLIDING_F, [hl]
jp ContinueReadingMovement
; 529c
Movement_set_sliding: ; 529c
ld hl, OBJECT_FLAGS1
add hl, bc
set SLIDING, [hl]
set SLIDING_F, [hl]
jp ContinueReadingMovement
; 52a5
Movement_remove_fixed_facing: ; 52a5
ld hl, OBJECT_FLAGS1
add hl, bc
res FIXED_FACING, [hl]
res FIXED_FACING_F, [hl]
jp ContinueReadingMovement
; 52ae
Movement_fix_facing: ; 52ae
ld hl, OBJECT_FLAGS1
add hl, bc
set FIXED_FACING, [hl]
set FIXED_FACING_F, [hl]
jp ContinueReadingMovement
; 52b7
Movement_show_object: ; 52b7
ld hl, OBJECT_FLAGS1
add hl, bc
res INVISIBLE, [hl]
res INVISIBLE_F, [hl]
jp ContinueReadingMovement
; 52c0
Movement_hide_object: ; 52c0
ld hl, OBJECT_FLAGS1
add hl, bc
set INVISIBLE, [hl]
set INVISIBLE_F, [hl]
jp ContinueReadingMovement
; 52c9
@ -838,7 +838,7 @@ JumpStep: ; 548a
ld hl, OBJECT_FLAGS2
add hl, bc
res OVERHEAD, [hl]
res OVERHEAD_F, [hl]
ld hl, OBJECT_ACTION
add hl, bc

View File

@ -1,37 +1,38 @@
Function6ec1: ; 6ec1
CanObjectMoveInDirection: ; 6ec1
ld hl, OBJECT_PALETTE
add hl, bc
bit 5, [hl]
jr z, .not_bit_5
bit SWIMMING_F, [hl]
jr z, .not_swimming
ld hl, OBJECT_FLAGS1
add hl, bc
bit 4, [hl] ; lost, uncomment next line to fix
; jr nz, .resume
bit NOCLIP_TILES_F, [hl] ; lost, uncomment next line to fix
; jr nz, .noclip_tiles
push hl
push bc
call Function6f2c
call WillObjectBumpIntoLand
pop bc
pop hl
ret c
jr .resume
jr .continue
.not_bit_5
.not_swimming
ld hl, OBJECT_FLAGS1
add hl, bc
bit 4, [hl]
jr nz, .resume
bit NOCLIP_TILES_F, [hl]
jr nz, .noclip_tiles
push hl
push bc
call Function6f07
call WillObjectBumpIntoWater
pop bc
pop hl
ret c
.resume
bit 6, [hl]
jr nz, .bit_6
.noclip_tiles
.continue
bit NOCLIP_OBJS_F, [hl]
jr nz, .noclip_objs
push hl
push bc
@ -40,9 +41,9 @@ Function6ec1: ; 6ec1
pop hl
ret c
.bit_6
bit 5, [hl]
jr nz, .bit_5
.noclip_objs
bit MOVE_ANYWHERE_F, [hl]
jr nz, .move_anywhere
push hl
call HasObjectReachedMovementLimit
pop hl
@ -53,13 +54,13 @@ Function6ec1: ; 6ec1
pop hl
ret c
.bit_5
.move_anywhere
and a
ret
; 6f07
Function6f07: ; 6f07
WillObjectBumpIntoWater: ; 6f07
call Function6f5f
ret c
ld hl, OBJECT_NEXT_MAP_X
@ -78,12 +79,12 @@ Function6f07: ; 6f07
ld d, a
call GetTileCollision
and a ; LANDTILE
jr z, Function6f3e
jr z, WillObjectBumpIntoTile
scf
ret
; 6f2c
Function6f2c: ; 6f2c
WillObjectBumpIntoLand: ; 6f2c
call Function6f5f
ret c
ld hl, OBJECT_NEXT_TILE
@ -91,12 +92,12 @@ Function6f2c: ; 6f2c
ld a, [hl]
call GetTileCollision
cp WATERTILE
jr z, Function6f3e
jr z, WillObjectBumpIntoTile
scf
ret
; 6f3e
Function6f3e: ; 6f3e
WillObjectBumpIntoTile: ; 6f3e
ld hl, OBJECT_NEXT_TILE
add hl, bc
ld a, [hl]
@ -331,7 +332,7 @@ IsNPCAtCoord: ; 7041
ld hl, OBJECT_PALETTE
add hl, bc
bit 7, [hl]
bit BIG_OBJECT_F, [hl]
jr z, .got
call Function7171

View File

@ -684,7 +684,7 @@ DoPlayerMovement:: ; 80000
ld hl, OBJECT_PALETTE
add hl, bc
bit 6, [hl]
bit STRENGTH_BOULDER_F, [hl]
jr z, .not_boulder
ld hl, OBJECT_FLAGS2
@ -696,7 +696,7 @@ DoPlayerMovement:: ; 80000
ld hl, OBJECT_RANGE
add hl, bc
ld a, [hl]
and $fc
and %11111100
or d
ld [hl], a

View File

@ -1071,7 +1071,7 @@ ApplyObjectFacing:
jr c, .not_visible ; STILL_SPRITE
ld hl, OBJECT_FLAGS1
add hl, bc
bit FIXED_FACING, [hl]
bit FIXED_FACING_F, [hl]
jr nz, .not_visible
pop de
ld a, e

View File

@ -96,7 +96,7 @@ _BillsPC: ; e3fd
dw BillsPC_SeeYa
.items ; e4c4
db 5
db 5 ; # items
db 0 ; WITHDRAW
db 1 ; DEPOSIT
db 2 ; CHANGE BOX

View File

@ -1497,29 +1497,29 @@ CalcMonStatC: ; e17b
jr z, .Special
cp STAT_SDEF
jr z, .Special
; DV_HP = (DV_ATK & 1) << 3 + (DV_DEF & 1) << 2 + (DV_SPD & 1) << 1 + (DV_SPC & 1)
; DV_HP = (DV_ATK & 1) << 3 | (DV_DEF & 1) << 2 | (DV_SPD & 1) << 1 | (DV_SPC & 1)
push bc
ld a, [hl]
swap a
and $1
and 1
add a
add a
add a
ld b, a
ld a, [hli]
and $1
and 1
add a
add a
add b
ld b, a
ld a, [hl]
swap a
and $1
and 1
add a
add b
ld b, a
ld a, [hl]
and $1
and 1
add b
pop bc
jr .GotDV

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 356 B

View File

@ -20,7 +20,6 @@ INCLUDE "data/trainers/pic_pointers.asm"
SECTION "Pics 1", ROMX
Pics_1::
HoOhFrontpic: INCBIN "gfx/pokemon/ho_oh/front.animated.2bpp.lz"
MachampFrontpic: INCBIN "gfx/pokemon/machamp/front.animated.2bpp.lz"
@ -794,3 +793,21 @@ INCBIN "gfx/pokemon/unown_y/back.2bpp.lz"
INCBIN "gfx/pokemon/unown_p/back.2bpp.lz"
INCBIN "gfx/pokemon/unown_i/back.2bpp.lz"
INCBIN "gfx/pokemon/unown_r/back.2bpp.lz"
; Sections "Pics 20" to "Pics 24" are not used for any graphics,
; but entries for their banks exist in FixPicBank (see engine/gfx/load_pics.asm).
SECTION "Pics 20", ROMX
SECTION "Pics 21", ROMX
SECTION "Pics 22", ROMX
SECTION "Pics 23", ROMX
SECTION "Pics 24", ROMX

View File

@ -21,10 +21,10 @@ PalPacket_GSTitleScreen:
sgb_pal_set GS_TITLE_SCREEN_0, GS_TITLE_SCREEN_1, GS_TITLE_SCREEN_2, GS_TITLE_SCREEN_3
PalPacket_SCGB_13:
sgb_pal_set GREENMON_NITE, CGB_BADGE, RB_BROWNMON, 00
sgb_pal_set BETA_SHINY_GREENMON, CGB_BADGE, RB_BROWNMON, 00
PalPacket_SCGB_11:
sgb_pal_set SCGB_11_0, SCGB_11_1, SCGB_11_2, SCGB_11_3
PalPacket_BetaPoker:
sgb_pal_set BETA_POKER_0, BETA_POKER_1, BETA_POKER_2, BETA_POKER_3
PalPacket_UnownPuzzle:
sgb_pal_set UNOWN_PUZZLE, UNOWN_PUZZLE, UNOWN_PUZZLE, UNOWN_PUZZLE
@ -35,8 +35,8 @@ PalPacket_9bd6:
PalPacket_GSIntroShellderLapras:
sgb_pal_set GS_INTRO_SHELLDER_LAPRAS, 00, 00, 00
UnreferencedPalPacket_9bf6:
sgb_pal_set 37, 00, 00, 00
UnreferencedPalPacket_BetaIntroLapras:
sgb_pal_set BETA_INTRO_LAPRAS, 00, 00, 00
PalPacket_GSIntroJigglypuffPikachu:
sgb_pal_set GS_INTRO_JIGGLYPUFF_PIKACHU_BG, GS_INTRO_JIGGLYPUFF_PIKACHU_OB, 00, 00
@ -44,13 +44,13 @@ PalPacket_GSIntroJigglypuffPikachu:
PalPacket_GSIntroStartersTransition:
sgb_pal_set GS_INTRO_STARTERS_TRANSITION, 00, 00, 00
PalPacket_Function8b4d:
sgb_pal_set 3B, 00, 00, 00
PalPacket_BetaIntroVenusaur:
sgb_pal_set BETA_INTRO_VENUSAUR, 00, 00, 00
PalPacket_Pack:
sgb_pal_set PACK, 00, 00, 00
PalPacket_SCGB_0F:
PalPacket_BetaPikachuMinigame:
sgb_pal_set GS_INTRO_JIGGLYPUFF_PIKACHU_OB, 00, 00, 00
PalPacket_PartyMenu:
@ -69,7 +69,7 @@ PalPacket_SlotMachine:
sgb_pal_set SLOT_MACHINE_0, SLOT_MACHINE_1, SLOT_MACHINE_2, SLOT_MACHINE_3
PalPacket_SCGB_06:
sgb_pal_set 33, 34, DIPLOMA, RB_PURPLEMON
sgb_pal_set BETA_LOGO_1, BETA_LOGO_2, DIPLOMA, RB_PURPLEMON
PalPacket_Diploma:
sgb_pal_set DIPLOMA, 00, 00, 00

View File

@ -35,40 +35,40 @@
RGB 31,31,31, 30,22,24, 28,15,21, 00,00,00 ; PREDEFPAL_RB_PINKMON
RGB 31,31,31, 31,28,14, 26,20,00, 00,00,00 ; PREDEFPAL_RB_YELLOWMON
RGB 31,31,31, 26,21,22, 15,15,18, 00,00,00 ; PREDEFPAL_CGB_BADGE
RGB 31,31,31, 23,19,13, 14,12,17, 00,00,00 ; PREDEFPAL_MEWMON_NITE
RGB 31,31,31, 16,18,21, 10,12,18, 00,00,00 ; PREDEFPAL_BLUEMON_NITE
RGB 31,31,31, 22,15,16, 17,02,05, 00,00,00 ; PREDEFPAL_REDMON_NITE
RGB 31,31,31, 15,20,20, 05,16,16, 00,00,00 ; PREDEFPAL_CYANMON_NITE
RGB 31,31,31, 23,15,19, 14,04,12, 00,00,00 ; PREDEFPAL_PURPLEMON_NITE
RGB 31,31,31, 20,17,18, 18,13,11, 00,00,00 ; PREDEFPAL_BROWNMON_NITE
RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_GREENMON_NITE
RGB 31,31,31, 21,25,29, 30,22,24, 00,00,00 ; PREDEFPAL_PINKMON_NITE
RGB 31,31,31, 26,23,16, 29,14,09, 00,00,00 ; PREDEFPAL_YELLOWMON_NITE
RGB 31,31,31, 23,19,13, 14,12,17, 00,00,00 ; PREDEFPAL_SHINY_MEWMON
RGB 31,31,31, 16,18,21, 10,12,18, 00,00,00 ; PREDEFPAL_SHINY_BLUEMON
RGB 31,31,31, 22,15,16, 17,02,05, 00,00,00 ; PREDEFPAL_SHINY_REDMON
RGB 31,31,31, 15,20,20, 05,16,16, 00,00,00 ; PREDEFPAL_SHINY_CYANMON
RGB 31,31,31, 23,15,19, 14,04,12, 00,00,00 ; PREDEFPAL_SHINY_PURPLEMON
RGB 31,31,31, 20,17,18, 18,13,11, 00,00,00 ; PREDEFPAL_SHINY_BROWNMON
RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_SHINY_GREENMON
RGB 31,31,31, 21,25,29, 30,22,24, 00,00,00 ; PREDEFPAL_SHINY_PINKMON
RGB 31,31,31, 26,23,16, 29,14,09, 00,00,00 ; PREDEFPAL_SHINY_YELLOWMON
RGB 31,31,31, 18,18,18, 10,10,10, 00,00,00 ; PREDEFPAL_PARTY_ICON
RGB 31,31,31, 30,26,15, 00,23,00, 00,00,00 ; PREDEFPAL_HP_GREEN
RGB 31,31,31, 30,26,15, 31,23,00, 00,00,00 ; PREDEFPAL_HP_YELLOW
RGB 31,31,31, 30,26,15, 31,00,00, 00,00,00 ; PREDEFPAL_HP_RED
RGB 31,31,31, 29,26,19, 27,20,14, 00,00,00 ; PREDEFPAL_POKEGEAR
RGB 31,31,31, 24,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_33
RGB 31,31,31, 31,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_34
RGB 31,31,31, 24,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_BETA_LOGO_1
RGB 31,31,31, 31,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_BETA_LOGO_2
RGB 31,31,31, 30,26,16, 16,12,09, 00,00,00 ; PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO
RGB 31,31,31, 15,28,26, 12,22,26, 03,16,14 ; PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS
RGB 31,31,31, 15,28,26, 23,24,24, 00,00,00 ; PREDEFPAL_37
RGB 31,31,31, 15,28,26, 23,24,24, 00,00,00 ; PREDEFPAL_BETA_INTRO_LAPRAS
RGB 31,31,24, 07,27,19, 26,20,10, 19,12,08 ; PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
RGB 31,31,31, 31,28,14, 31,13,31, 00,00,00 ; PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
RGB 31,31,31, 16,18,21, 10,12,18, 00,00,00 ; PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_3B
RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_BETA_INTRO_VENUSAUR
RGB 31,31,31, 31,14,00, 07,11,15, 00,00,00 ; PREDEFPAL_PACK
RGB 31,31,31, 26,21,22, 26,10,06, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_0
RGB 31,31,31, 30,27,04, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_1
RGB 31,31,31, 31,13,25, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_2
RGB 31,31,31, 16,19,29, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_3
RGB 31,31,31, 30,22,24, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_0
RGB 31,31,31, 21,25,29, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_1
RGB 31,31,31, 20,26,16, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_2
RGB 31,31,31, 31,28,14, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_3
RGB 31,31,31, 18,18,18, 26,10,06, 00,00,00 ; PREDEFPAL_45
RGB 31,31,31, 30,22,24, 28,15,21, 00,00,00 ; PREDEFPAL_46
RGB 31,31,31, 30,22,24, 18,18,18, 16,10,07 ; PREDEFPAL_BETA_POKER_0
RGB 31,31,31, 21,25,29, 18,18,18, 16,10,07 ; PREDEFPAL_BETA_POKER_1
RGB 31,31,31, 20,26,16, 18,18,18, 16,10,07 ; PREDEFPAL_BETA_POKER_2
RGB 31,31,31, 31,28,14, 18,18,18, 16,10,07 ; PREDEFPAL_BETA_POKER_3
RGB 31,31,31, 18,18,18, 26,10,06, 00,00,00 ; PREDEFPAL_BETA_RADIO
RGB 31,31,31, 30,22,24, 28,15,21, 00,00,00 ; PREDEFPAL_BETA_POKEGEAR
RGB 31,31,31, 26,20,00, 16,19,29, 00,00,00 ; PREDEFPAL_47
RGB 31,31,31, 16,02,30, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_0
RGB 31,31,31, 16,13,04, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_1

View File

@ -227,26 +227,7 @@ CompareLong:: ; 31e4
; 31f3
INCLUDE "home/tilemap.asm"
SetHPPal:: ; 334e
; Set palette for hp bar pixel length e at hl.
call GetHPPal
ld [hl], d
ret
; 3353
GetHPPal:: ; 3353
; Get palette for hp bar pixel length e in d.
ld d, HP_GREEN
ld a, e
cp (50 * 48 / 100)
ret nc
inc d ; HP_YELLOW
cp (21 * 48 / 100)
ret nc
inc d ; HP_RED
ret
; 335f
INCLUDE "home/hp_pals.asm"
CountSetBits:: ; 0x335f
; Count the number of set bits in b bytes starting from hl.

19
home/hp_pals.asm Normal file
View File

@ -0,0 +1,19 @@
SetHPPal:: ; 334e
; Set palette for hp bar pixel length e at hl.
call GetHPPal
ld [hl], d
ret
; 3353
GetHPPal:: ; 3353
; Get palette for hp bar pixel length e in d.
ld d, HP_GREEN
ld a, e
cp (HP_BAR_LENGTH_PX * 50 / 100) ; 24
ret nc
inc d ; HP_YELLOW
cp (HP_BAR_LENGTH_PX * 21 / 100) ; 10
ret nc
inc d ; HP_RED
ret
; 335f

View File

@ -482,10 +482,10 @@ GetSpriteMovementFunction:: ; 1a2f
xor a
.ok
ld hl, SpriteMovementData
ld hl, SpriteMovementData + SPRITEMOVEATTR_MOVEMENT
ld e, a
ld d, 0
rept SPRITEMOVEDATA_FIELDS
rept NUM_SPRITEMOVEDATA_FIELDS
add hl, de
endr
ld a, [hl]
@ -497,15 +497,15 @@ GetInitialFacing:: ; 1a47
push de
ld e, a
ld d, 0
ld hl, SpriteMovementData + 1 ; init facing
rept SPRITEMOVEDATA_FIELDS
ld hl, SpriteMovementData + SPRITEMOVEATTR_FACING
rept NUM_SPRITEMOVEDATA_FIELDS
add hl, de
endr
ld a, BANK(SpriteMovementData)
call GetFarByte
add a
add a
and $c
maskbits NUM_DIRECTIONS, 2
pop de
pop bc
ret
@ -537,8 +537,8 @@ CopySpriteMovementData:: ; 1a61
push de
ld e, a
ld d, 0
ld hl, SpriteMovementData + 1 ; init facing
rept SPRITEMOVEDATA_FIELDS
ld hl, SpriteMovementData + SPRITEMOVEATTR_FACING
rept NUM_SPRITEMOVEDATA_FIELDS
add hl, de
endr
ld b, h
@ -549,7 +549,7 @@ endr
inc bc
rlca
rlca
and %00001100
maskbits NUM_DIRECTIONS, 2
ld hl, OBJECT_FACING
add hl, de
ld [hl], a
@ -654,7 +654,7 @@ SetSpriteDirection:: ; 1af8
and %11110011
ld e, a
pop af
and %00001100
maskbits NUM_DIRECTIONS, 2
or e
ld [hl], a
ret
@ -664,6 +664,6 @@ GetSpriteDirection:: ; 1b07
ld hl, OBJECT_FACING
add hl, bc
ld a, [hl]
and %00001100
maskbits NUM_DIRECTIONS, 2
ret
; 1b0f

View File

@ -36,8 +36,10 @@ jumptable: MACRO
ENDM
maskbits: MACRO
; masks just enough bits to cover the argument
; masks just enough bits to cover the first argument
; the second argument is an optional shift amount
; e.g. "maskbits 26" becomes "and %00011111" (since 26 - 1 = %00011001)
; and "maskbits 3, 2" becomes "and %00001100" (since "maskbits 3" becomes %00000011)
; example usage in rejection sampling:
; .loop
; call Random
@ -50,7 +52,11 @@ if x + 1 < (\1)
x = x << 1 | 1
endc
endr
if _NARG == 2
and x << (\2)
else
and x
endc
ENDM
calc_sine_wave: MACRO

View File

@ -46,10 +46,10 @@ GoldenrodGameCornerPokefanM3Script:
turnobject GOLDENRODGAMECORNER_POKEFAN_M3, RIGHT
end
GoldenrodGmeCornerCoinVendorScript:
GoldenrodGameCornerCoinVendorScript:
jumpstd gamecornercoinvendor
GoldenrodGmeCornerTMVendorScript:
GoldenrodGameCornerTMVendorScript:
faceplayer
opentext
writetext GoldenrodGameCornerPrizeVendorIntroText
@ -57,7 +57,7 @@ GoldenrodGmeCornerTMVendorScript:
checkitem COIN_CASE
iffalse GoldenrodGameCornerPrizeVendor_NoCoinCaseScript
writetext GoldenrodGameCornerPrizeVendorWhichPrizeText
GoldenrodGmeCornerTMVendor_LoopScript: ; 056c36
GoldenrodGameCornerTMVendor_LoopScript: ; 056c36
special DisplayCoinCaseBalance
loadmenu GoldenrodGameCornerTMVendorMenuHeader
verticalmenu
@ -76,7 +76,7 @@ GoldenrodGmeCornerTMVendor_LoopScript: ; 056c36
giveitem TM_THUNDER
iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
takecoins 5500
jump GoldenrodGmeCornerTMVendor_FinishScript
jump GoldenrodGameCornerTMVendor_FinishScript
.Blizzard:
checkcoins 5500
@ -87,7 +87,7 @@ GoldenrodGmeCornerTMVendor_LoopScript: ; 056c36
giveitem TM_BLIZZARD
iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
takecoins 5500
jump GoldenrodGmeCornerTMVendor_FinishScript
jump GoldenrodGameCornerTMVendor_FinishScript
.FireBlast:
checkcoins 5500
@ -98,19 +98,19 @@ GoldenrodGmeCornerTMVendor_LoopScript: ; 056c36
giveitem TM_FIRE_BLAST
iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
takecoins 5500
jump GoldenrodGmeCornerTMVendor_FinishScript
jump GoldenrodGameCornerTMVendor_FinishScript
GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript:
writetext GoldenrodGameCornerPrizeVendorConfirmPrizeText
yesorno
end
GoldenrodGmeCornerTMVendor_FinishScript:
GoldenrodGameCornerTMVendor_FinishScript:
waitsfx
playsound SFX_TRANSACTION
writetext GoldenrodGameCornerPrizeVendorHereYouGoText
waitbutton
jump GoldenrodGmeCornerTMVendor_LoopScript
jump GoldenrodGameCornerTMVendor_LoopScript
GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript:
writetext GoldenrodGameCornerPrizeVendorNeedMoreCoinsText
@ -477,8 +477,8 @@ GoldenrodGameCorner_MapEvents:
bg_event 12, 1, BGEVENT_LEFT, GoldenrodGameCornerLeftTheirDrinkScript
db 12 ; object events
object_event 3, 2, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodGmeCornerCoinVendorScript, -1
object_event 16, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodGmeCornerTMVendorScript, -1
object_event 3, 2, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodGameCornerCoinVendorScript, -1
object_event 16, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodGameCornerTMVendorScript, -1
object_event 18, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodGameCornerPrizeMonVendorScript, -1
object_event 8, 7, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, DAY, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
object_event 8, 7, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, NITE, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1

View File

@ -66,12 +66,14 @@ GiftSpearowMail:
db FLOWER_MAIL
db "DARK CAVE leads"
next "to another road@"
GiftSpearowName:
db "KENYA@"
GiftSpearowOTName:
db "RANDY@"
db 0
db 0 ; filler
Route35GoldenrodGatePokefanFScript:
faceplayer

View File

@ -83,7 +83,7 @@ EnableMobile: ; 100082
call DoubleSpeed
xor a
ld [rIF], a
ld a, 1 << VBLANK + 1 << LCD_STAT + 1 << TIMER + 1 << SERIAL
ld a, 1 << VBLANK | 1 << LCD_STAT | 1 << TIMER | 1 << SERIAL
ld [rIE], a
xor a
ld [hMapAnims], a

View File

@ -234,17 +234,22 @@ ROMX $5a
"Pics 19"
ROMX $5b
"bank5B"
"Pics 20"
ROMX $5c
"Mobile 5C"
"Pics 21"
ROMX $5d
"Crystal Phone Text 2"
"Pics 22"
ROMX $5e
"UpdateBattleHUDs"
"Songs 5"
"Crystal Sound Effects"
"Mobile 5E"
"Pics 23"
ROMX $5f
"Mobile 5F"
"Pics 24"
ROMX $60
"Map Scripts 13"
"Pokedex Entries 001-064"

View File

@ -2421,7 +2421,7 @@ wMapObjectsEnd::
wObjectMasks:: ds NUM_OBJECTS ; d81e
wVariableSprites:: ds 16; d82e
wVariableSprites:: ds $100 - SPRITE_VARS ; d82e
wEnteredMapFromContinue:: db ; d83e
ds 2