summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--constants/deco_constants.asm8
-rw-r--r--constants/hardware_constants.asm1
-rw-r--r--constants/item_constants.asm10
-rw-r--r--data/pokemon/egg_move_pointers.asm4
-rw-r--r--data/pokemon/egg_moves.asm56
-rw-r--r--data/pokemon/evos_attacks.asm47
-rw-r--r--docs/design_flaws.md2
-rw-r--r--engine/events/magnet_train.asm67
-rw-r--r--engine/link/link.asm56
-rw-r--r--engine/link/mystery_gift.asm6
-rw-r--r--engine/overworld/scripting.asm6
-rw-r--r--engine/printer/printer.asm18
-rw-r--r--engine/printer/printer_serial.asm8
-rw-r--r--home/handshake.asm4
-rw-r--r--home/init.asm4
-rw-r--r--home/lcd.asm2
-rw-r--r--home/serial.asm24
-rw-r--r--home/vblank.asm16
-rw-r--r--lib/mobile/main.asm8
-rw-r--r--macros/enum.asm2
-rw-r--r--macros/scripts/events.asm2
-rw-r--r--mobile/mobile_40.asm4
-rw-r--r--mobile/mobile_46.asm2
24 files changed, 129 insertions, 234 deletions
diff --git a/Makefile b/Makefile
index bbc1060c5..9bd7e17a7 100644
--- a/Makefile
+++ b/Makefile
@@ -65,9 +65,9 @@ tools:
$(MAKE) -C tools/
-$(crystal_obj): RGBASMFLAGS = -D _CRYSTAL
-$(crystal11_obj): RGBASMFLAGS = -D _CRYSTAL -D _CRYSTAL11
-$(crystal_au_obj): RGBASMFLAGS = -D _CRYSTAL -D _CRYSTAL11 -D _CRYSTAL_AU
+$(crystal_obj): RGBASMFLAGS =
+$(crystal11_obj): RGBASMFLAGS = -D _CRYSTAL11
+$(crystal_au_obj): RGBASMFLAGS = -D _CRYSTAL11 -D _CRYSTAL_AU
# The dep rules have to be explicit or else missing files won't be reported.
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
diff --git a/constants/deco_constants.asm b/constants/deco_constants.asm
index f385e7cd7..d18018214 100644
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -62,8 +62,8 @@ ENDM
; decorations:
; - DecorationAttributes (see data/decorations/attributes.asm)
; - DecorationIDs (see data/decorations/decorations.asm)
-const_value = 1
-__enum__ = 0
+ const_def 1
+ enum_start
; FindOwnedBeds.beds values (see engine/overworld/decorations.asm)
const BEDS
deco FEATHERY_BED
@@ -121,7 +121,7 @@ __enum__ = 0
deco GEODUDE_DOLL
deco MACHOP_DOLL
deco TENTACOOL_DOLL
-NUM_NON_TROPHY_DECOS = __enum__
+NUM_NON_TROPHY_DECOS EQU __enum__
deco GOLD_TROPHY_DOLL
deco SILVER_TROPHY_DOLL
-NUM_DECOS = __enum__
+NUM_DECOS EQU __enum__
diff --git a/constants/hardware_constants.asm b/constants/hardware_constants.asm
index 34c7d6813..6205a1d7f 100644
--- a/constants/hardware_constants.asm
+++ b/constants/hardware_constants.asm
@@ -42,6 +42,7 @@ LCD_STAT EQU 1
TIMER EQU 2
SERIAL EQU 3
JOYPAD EQU 4
+IE_DEFAULT EQU (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
; OAM attribute flags
OAM_TILE_BANK EQU 3
diff --git a/constants/item_constants.asm b/constants/item_constants.asm
index ec70ebf01..4f7888c4b 100644
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -199,7 +199,7 @@
add_tm: MACRO
if !DEF(TM01)
-TM01 = const_value
+TM01 EQU const_value
enum_start 1
endc
define _\@_1, "TM_\1"
@@ -260,11 +260,11 @@ ENDM
add_tm FIRE_PUNCH ; f0
add_tm FURY_CUTTER ; f1
add_tm NIGHTMARE ; f2
-NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
+NUM_TMS EQU const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
add_hm: MACRO
if !DEF(HM01)
-HM01 = const_value
+HM01 EQU const_value
endc
define _\@_1, "HM_\1"
const _\@_1
@@ -278,7 +278,7 @@ ENDM
add_hm FLASH ; f7
add_hm WHIRLPOOL ; f8
add_hm WATERFALL ; f9
-NUM_HMS = const_value - HM01
+NUM_HMS EQU const_value - HM01
add_mt: MACRO
enum \1_TMNUM
@@ -287,7 +287,7 @@ ENDM
add_mt FLAMETHROWER
add_mt THUNDERBOLT
add_mt ICE_BEAM
-NUM_TM_HM_TUTOR = __enum__ + -1
+NUM_TM_HM_TUTOR EQU __enum__ + -1
const ITEM_FA ; fa
diff --git a/data/pokemon/egg_move_pointers.asm b/data/pokemon/egg_move_pointers.asm
index 3f4de2d2a..dacf4cffd 100644
--- a/data/pokemon/egg_move_pointers.asm
+++ b/data/pokemon/egg_move_pointers.asm
@@ -118,11 +118,7 @@ EggMovePointers::
dw NoEggMoves
dw GoldeenEggMoves
dw NoEggMoves
-if _CRYSTAL
dw NoEggMoves
-else
- dw StaryuEggMoves
-endc
dw NoEggMoves
dw MrMimeEggMoves
dw ScytherEggMoves
diff --git a/data/pokemon/egg_moves.asm b/data/pokemon/egg_moves.asm
index 1ababff89..a34b73b79 100644
--- a/data/pokemon/egg_moves.asm
+++ b/data/pokemon/egg_moves.asm
@@ -17,9 +17,6 @@ BulbasaurEggMoves:
db LIGHT_SCREEN
db SKULL_BASH
db SAFEGUARD
-if !_CRYSTAL
- db CHARM
-endc
db RAZOR_WIND
db PETAL_DANCE
db -1 ; end
@@ -46,9 +43,6 @@ PidgeyEggMoves:
db PURSUIT
db FAINT_ATTACK
db FORESIGHT
-if !_CRYSTAL
- db STEEL_WING
-endc
db -1 ; end
RattataEggMoves:
@@ -73,9 +67,7 @@ EkansEggMoves:
db SLAM
db SPITE
db BEAT_UP
-if _CRYSTAL
db CRUNCH
-endc
db -1 ; end
SandshrewEggMoves:
@@ -83,9 +75,7 @@ SandshrewEggMoves:
db SAFEGUARD
db COUNTER
db RAPID_SPIN
-if _CRYSTAL
db METAL_CLAW
-endc
db -1 ; end
NidoranFEggMoves:
@@ -129,9 +119,6 @@ OddishEggMoves:
db RAZOR_LEAF
db FLAIL
db SYNTHESIS
-if !_CRYSTAL
- db CHARM
-endc
db -1 ; end
ParasEggMoves:
@@ -140,9 +127,6 @@ ParasEggMoves:
db COUNTER
db PSYBEAM
db FLAIL
-if !_CRYSTAL
- db SWEET_SCENT
-endc
db LIGHT_SCREEN
db PURSUIT
db -1 ; end
@@ -176,9 +160,7 @@ PsyduckEggMoves:
db LIGHT_SCREEN
db FUTURE_SIGHT
db PSYCHIC_M
-if _CRYSTAL
db CROSS_CHOP
-endc
db -1 ; end
MankeyEggMoves:
@@ -257,9 +239,6 @@ SlowpokeEggMoves:
db -1 ; end
FarfetchDEggMoves:
-if !_CRYSTAL
- db STEEL_WING
-endc
db FORESIGHT
db MIRROR_MOVE
db GUST
@@ -337,9 +316,7 @@ CuboneEggMoves:
db SCREECH
db SKULL_BASH
db PERISH_SONG
-if _CRYSTAL
db SWORDS_DANCE
-endc
db -1 ; end
LickitungEggMoves:
@@ -403,14 +380,6 @@ GoldeenEggMoves:
db HYDRO_PUMP
db -1 ; end
-if !_CRYSTAL
-StaryuEggMoves:
- db AURORA_BEAM
- db BARRIER
- db SUPERSONIC
- db -1 ; end
-endc
-
MrMimeEggMoves:
db FUTURE_SIGHT
db HYPNOSIS
@@ -461,16 +430,10 @@ AerodactylEggMoves:
db WHIRLWIND
db PURSUIT
db FORESIGHT
-if !_CRYSTAL
- db STEEL_WING
-endc
db -1 ; end
SnorlaxEggMoves:
db LICK
-if !_CRYSTAL
- db CHARM
-endc
db -1 ; end
DratiniEggMoves:
@@ -495,9 +458,7 @@ CyndaquilEggMoves:
db REVERSAL
db THRASH
db FORESIGHT
-if _CRYSTAL
db SUBMISSION
-endc
db -1 ; end
TotodileEggMoves:
@@ -523,9 +484,7 @@ HoothootEggMoves:
db FAINT_ATTACK
db WING_ATTACK
db WHIRLWIND
-if _CRYSTAL
db SKY_ATTACK
-endc
db -1 ; end
LedybaEggMoves:
@@ -650,9 +609,7 @@ MurkrowEggMoves:
db QUICK_ATTACK
db MIRROR_MOVE
db WING_ATTACK
-if _CRYSTAL
db SKY_ATTACK
-endc
db -1 ; end
MisdreavusEggMoves:
@@ -732,9 +689,7 @@ TeddiursaEggMoves:
db SEISMIC_TOSS
db FOCUS_ENERGY
db COUNTER
-if _CRYSTAL
db METAL_CLAW
-endc
db -1 ; end
SlugmaEggMoves:
@@ -784,9 +739,7 @@ SkarmoryEggMoves:
db DRILL_PECK
db PURSUIT
db WHIRLWIND
-if _CRYSTAL
db SKY_ATTACK
-endc
db -1 ; end
HoundourEggMoves:
@@ -803,9 +756,7 @@ PhanpyEggMoves:
db FOCUS_ENERGY
db BODY_SLAM
db ANCIENTPOWER
-if _CRYSTAL
db WATER_GUN
-endc
db -1 ; end
StantlerEggMoves:
@@ -824,9 +775,6 @@ TyrogueEggMoves:
db -1 ; end
SmoochumEggMoves:
-if !_CRYSTAL
- db LOVELY_KISS
-endc
db MEDITATE
db -1 ; end
@@ -835,9 +783,7 @@ ElekidEggMoves:
db BARRIER
db ROLLING_KICK
db MEDITATE
-if _CRYSTAL
db CROSS_CHOP
-endc
db -1 ; end
MagbyEggMoves:
@@ -845,9 +791,7 @@ MagbyEggMoves:
db MEGA_PUNCH
db BARRIER
db SCREECH
-if _CRYSTAL
db CROSS_CHOP
-endc
db -1 ; end
MiltankEggMoves:
diff --git a/data/pokemon/evos_attacks.asm b/data/pokemon/evos_attacks.asm
index 1ec2f2886..86df03733 100644
--- a/data/pokemon/evos_attacks.asm
+++ b/data/pokemon/evos_attacks.asm
@@ -670,9 +670,7 @@ DiglettEvosAttacks:
DugtrioEvosAttacks:
db 0 ; no more evolutions
-if _CRYSTAL
db 1, TRI_ATTACK
-endc
db 1, SCRATCH
db 1, GROWL
db 1, MAGNITUDE
@@ -1115,11 +1113,7 @@ MagnetonEvosAttacks:
db 16, SONICBOOM
db 21, THUNDER_WAVE
db 27, LOCK_ON
-if _CRYSTAL
db 35, TRI_ATTACK
-else
- db 35, SWIFT
-endc
db 43, SCREECH
db 53, ZAP_CANNON
db 0 ; no more level-up moves
@@ -1235,9 +1229,7 @@ CloysterEvosAttacks:
db 1, SUPERSONIC
db 1, AURORA_BEAM
db 1, PROTECT
-if _CRYSTAL
db 33, SPIKES
-endc
db 41, SPIKE_CANNON
db 0 ; no more level-up moves
@@ -1814,11 +1806,7 @@ EeveeEvosAttacks:
db 16, GROWL
db 23, QUICK_ATTACK
db 30, BITE
-if _CRYSTAL
db 36, BATON_PASS
-else
- db 36, FOCUS_ENERGY
-endc
db 42, TAKE_DOWN
db 0 ; no more level-up moves
@@ -2297,11 +2285,7 @@ SpinarakEvosAttacks:
db 23, LEECH_LIFE
db 30, FURY_SWIPES
db 37, SPIDER_WEB
-if _CRYSTAL
db 45, AGILITY
-else
- db 45, SCREECH
-endc
db 53, PSYCHIC_M
db 0 ; no more level-up moves
@@ -2317,11 +2301,7 @@ AriadosEvosAttacks:
db 25, LEECH_LIFE
db 34, FURY_SWIPES
db 43, SPIDER_WEB
-if _CRYSTAL
db 53, AGILITY
-else
- db 53, SCREECH
-endc
db 63, PSYCHIC_M
db 0 ; no more level-up moves
@@ -2544,11 +2524,7 @@ HoppipEvosAttacks:
db EVOLVE_LEVEL, 18, SKIPLOOM
db 0 ; no more evolutions
db 1, SPLASH
-if _CRYSTAL
db 5, SYNTHESIS
-else
- db 1, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2566,9 +2542,7 @@ SkiploomEvosAttacks:
db 1, SYNTHESIS
db 1, TAIL_WHIP
db 1, TACKLE
-if _CRYSTAL
db 5, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2585,9 +2559,7 @@ JumpluffEvosAttacks:
db 1, SYNTHESIS
db 1, TAIL_WHIP
db 1, TACKLE
-if _CRYSTAL
db 5, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2641,11 +2613,7 @@ YanmaEvosAttacks:
db 19, SONICBOOM
db 25, DETECT
db 31, SUPERSONIC
-if _CRYSTAL
db 37, WING_ATTACK
-else
- db 37, SWIFT
-endc
db 43, SCREECH
db 0 ; no more level-up moves
@@ -2857,9 +2825,7 @@ GranbullEvosAttacks:
QwilfishEvosAttacks:
db 0 ; no more evolutions
-if _CRYSTAL
db 1, SPIKES
-endc
db 1, TACKLE
db 1, POISON_STING
db 10, HARDEN
@@ -2919,9 +2885,7 @@ SneaselEvosAttacks:
db 41, AGILITY
db 49, SLASH
db 57, BEAT_UP
-if _CRYSTAL
db 65, METAL_CLAW
-endc
db 0 ; no more level-up moves
TeddiursaEvosAttacks:
@@ -2989,9 +2953,7 @@ SwinubEvosAttacks:
db 28, TAKE_DOWN
db 37, MIST
db 46, BLIZZARD
-if _CRYSTAL
db 55, AMNESIA
-endc
db 0 ; no more level-up moves
PiloswineEvosAttacks:
@@ -3005,9 +2967,7 @@ PiloswineEvosAttacks:
db 33, FURY_ATTACK
db 42, MIST
db 56, BLIZZARD
-if _CRYSTAL
db 70, AMNESIA
-endc
db 0 ; no more level-up moves
CorsolaEvosAttacks:
@@ -3300,17 +3260,10 @@ SuicuneEvosAttacks:
db 0 ; no more evolutions
db 1, BITE
db 1, LEER
-if _CRYSTAL
db 11, BUBBLEBEAM
db 21, RAIN_DANCE
db 31, GUST
db 41, AURORA_BEAM
-else
- db 11, WATER_GUN
- db 21, ROAR
- db 31, GUST
- db 41, BUBBLEBEAM
-endc
db 51, MIST
db 61, MIRROR_COAT
db 71, HYDRO_PUMP
diff --git a/docs/design_flaws.md b/docs/design_flaws.md
index 8669bc7a6..bcabff901 100644
--- a/docs/design_flaws.md
+++ b/docs/design_flaws.md
@@ -332,7 +332,7 @@ Edit `GetMapMusic`:
add_tm PSYCHIC_M ; dd
...
add_tm NIGHTMARE ; f2
-NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
+NUM_TMS EQU const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
```
`GetTMHMNumber` and `GetNumberedTMHM` in [engine/items/items.asm](https://github.com/pret/pokecrystal/blob/master/engine/items/items.asm) have to compensate for this.
diff --git a/engine/events/magnet_train.asm b/engine/events/magnet_train.asm
index 1a037ef41..fa6f6da60 100644
--- a/engine/events/magnet_train.asm
+++ b/engine/events/magnet_train.asm
@@ -3,14 +3,14 @@ MagnetTrain:
and a
jr nz, .ToGoldenrod
ld a, 1 ; forwards
- lb bc, $40, $60
- lb de, (11 * 8) - (11 * 8 + 4), -$60
+ lb bc, 8 * TILE_WIDTH, 12 * TILE_WIDTH
+ lb de, (11 * TILE_WIDTH) - (11 * TILE_WIDTH + 4), -12 * TILE_WIDTH
jr .continue
.ToGoldenrod:
ld a, -1 ; backwards
- lb bc, -$40, -$60
- lb de, (11 * 8) + (11 * 8 + 4), $60
+ lb bc, -8 * TILE_WIDTH, -12 * TILE_WIDTH
+ lb de, (11 * TILE_WIDTH) + (11 * TILE_WIDTH + 4), 12 * TILE_WIDTH
.continue
ld h, a
@@ -34,11 +34,11 @@ MagnetTrain:
push af
ldh a, [hSCY]
push af
- call MagntTrain_LoadGFX_PlayMusic
+ call MagnetTrain_LoadGFX_PlayMusic
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], $1
+ ld [hl], 1
.loop
ld a, [wJumptableIndex]
and a
@@ -84,18 +84,19 @@ MagnetTrain:
MagnetTrain_UpdateLYOverrides:
ld hl, wLYOverridesBackup
- ld c, $2f
+ ld c, 6 * TILE_WIDTH - 1
ld a, [wMagnetTrainOffset]
add a
ldh [hSCX], a
call .loadloop
- ld c, $30
+ ld c, 6 * TILE_WIDTH
ld a, [wMagnetTrainPosition]
call .loadloop
- ld c, $31
+ ld c, 6 * TILE_WIDTH + 1
ld a, [wMagnetTrainOffset]
add a
call .loadloop
+
ld a, [wMagnetTrainDirection]
ld d, a
ld hl, wMagnetTrainOffset
@@ -111,20 +112,22 @@ MagnetTrain_UpdateLYOverrides:
jr nz, .loadloop
ret
-MagntTrain_LoadGFX_PlayMusic:
+MagnetTrain_LoadGFX_PlayMusic:
call ClearBGPalettes
call ClearSprites
call DisableLCD
callfar ClearSpriteAnims
call SetMagnetTrainPals
call DrawMagnetTrain
- ld a, $90
+ ld a, SCREEN_HEIGHT_PX
ldh [hWY], a
call EnableLCD
xor a
ldh [hBGMapMode], a
ldh [hSCX], a
ldh [hSCY], a
+
+ ; Load the player sprite
ldh a, [rSVBK]
push af
ld a, BANK(wPlayerGender)
@@ -135,6 +138,8 @@ MagntTrain_LoadGFX_PlayMusic:
ld hl, vTiles0
ld c, 4
call Request2bpp
+
+ ; Load the trainer walking frame
ld hl, 12 tiles
add hl, de
ld d, h
@@ -142,7 +147,9 @@ MagntTrain_LoadGFX_PlayMusic:
ld hl, vTiles0 tile $04
ld c, 4
call Request2bpp
+
call MagnetTrain_InitLYOverrides
+
ld hl, wJumptableIndex
xor a
ld [hli], a ; wJumptableIndex
@@ -150,6 +157,7 @@ MagntTrain_LoadGFX_PlayMusic:
ld [hli], a ; wMagnetTrainOffset
ld [hli], a ; wMagnetTrainPosition
ld [hli], a ; wMagnetTrainWaitCounter
+
ld de, MUSIC_MAGNET_TRAIN
call PlayMusic2
ret
@@ -159,25 +167,26 @@ DrawMagnetTrain:
xor a
.loop
call GetMagnetTrainBGTiles
- ld b, 32 / 2
+ ld b, BG_MAP_WIDTH / 2
call .FillAlt
inc a
- cp $12
+ cp SCREEN_HEIGHT
jr c, .loop
+
hlbgcoord 0, 6
- ld de, MagnetTrainTilemap1
+ ld de, MagnetTrainTilemap
ld c, 20
call .FillLine
hlbgcoord 0, 7
- ld de, MagnetTrainTilemap2
+ ld de, MagnetTrainTilemap + 20
ld c, 20
call .FillLine
hlbgcoord 0, 8
- ld de, MagnetTrainTilemap3
+ ld de, MagnetTrainTilemap + (20 * 2)
ld c, 20
call .FillLine
hlbgcoord 0, 9
- ld de, MagnetTrainTilemap4
+ ld de, MagnetTrainTilemap + (20 * 3)
ld c, 20
call .FillLine
ret
@@ -247,7 +256,7 @@ MagnetTrain_InitLYOverrides:
ret
SetMagnetTrainPals:
- ld a, $1
+ ld a, 1
ldh [rVBK], a
; bushes
@@ -274,7 +283,7 @@ SetMagnetTrainPals:
ld a, PAL_BG_YELLOW
call ByteFill
- ld a, $0
+ ld a, 0
ldh [rVBK], a
ret
@@ -305,7 +314,7 @@ MagnetTrain_Jumptable:
ret
.InitPlayerSpriteAnim:
- ld d, 10 * 8 + 5
+ ld d, (8 + 2) * TILE_WIDTH + 5
ld a, [wMagnetTrainPlayerSpriteInitX]
ld e, a
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
@@ -317,7 +326,6 @@ MagnetTrain_Jumptable:
bit PLAYERGENDER_FEMALE_F, a
jr z, .got_gender
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
-
.got_gender
pop af
ldh [rSVBK], a
@@ -325,9 +333,9 @@ MagnetTrain_Jumptable:
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
- ld [hl], $0
+ ld [hl], 0
call .Next
- ld a, $80
+ ld a, 128
ld [wMagnetTrainWaitCounter], a
ret
@@ -350,7 +358,7 @@ MagnetTrain_Jumptable:
.PrepareToHoldTrain:
call .Next
- ld a, $80
+ ld a, 128
ld [wMagnetTrainWaitCounter], a
ret
@@ -408,6 +416,7 @@ MagnetTrain_Jumptable_FirstRunThrough:
call MagnetTrain_UpdateLYOverrides
call PushLYOverrides
call DelayFrame
+
ldh a, [rSVBK]
push af
ld a, BANK(wEnvironment)
@@ -416,20 +425,23 @@ MagnetTrain_Jumptable_FirstRunThrough:
push af
ld a, [wEnvironment]
push af
+
ld a, [wTimeOfDay]
maskbits NUM_DAYTIMES
ld [wTimeOfDayPal], a
- ld a, $1
+ ld a, TOWN
ld [wEnvironment], a
ld b, SCGB_MAPPALS
call GetSGBLayout
call UpdateTimePals
+
ldh a, [rBGP]
ld [wBGP], a
ldh a, [rOBP0]
ld [wOBP0], a
ldh a, [rOBP1]
ld [wOBP1], a
+
pop af
ld [wEnvironment], a
pop af
@@ -438,11 +450,8 @@ MagnetTrain_Jumptable_FirstRunThrough:
ldh [rSVBK], a
ret
-MagnetTrainTilemap1:
+MagnetTrainTilemap:
db $1f, $05, $06, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0b, $0c, $1f
-MagnetTrainTilemap2:
db $14, $15, $16, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1b, $1c, $1d
-MagnetTrainTilemap3:
db $24, $25, $26, $27, $07, $2f, $29, $28, $28, $28, $28, $28, $28, $29, $07, $2f, $2a, $2b, $2c, $2d
-MagnetTrainTilemap4:
db $20, $1f, $2e, $1f, $17, $00, $2e, $1f, $1f, $1f, $1f, $1f, $1f, $2e, $17, $00, $1f, $2e, $1f, $0f
diff --git a/engine/link/link.asm b/engine/link/link.asm
index 3550c2b20..9cb29801c 100644
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -50,17 +50,17 @@ Gen2ToGen1LinkComms:
call DelayFrames
xor a
ldh [hSerialSend], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
call DelayFrame
xor a
ldh [hSerialSend], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
.player_1
@@ -70,7 +70,7 @@ Gen2ToGen1LinkComms:
call DelayFrames
xor a
ldh [rIF], a
- ld a, $8
+ ld a, 1 << SERIAL
ldh [rIE], a
ld hl, wd1f3
ld de, wEnemyMonSpecies
@@ -90,7 +90,7 @@ Gen2ToGen1LinkComms:
call Serial_ExchangeBytes
xor a
ldh [rIF], a
- ld a, $1d
+ ld a, (1 << JOYPAD) | (1 << SERIAL) | (1 << TIMER) | (1 << VBLANK)
ldh [rIE], a
call Link_CopyRandomNumbers
ld hl, wOTPlayerName
@@ -194,17 +194,17 @@ Gen2ToGen2LinkComms:
call DelayFrames
xor a
ldh [hSerialSend], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
call DelayFrame
xor a
ldh [hSerialSend], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
.Player1:
@@ -214,7 +214,7 @@ Gen2ToGen2LinkComms:
call DelayFrames
xor a
ldh [rIF], a
- ld a, $8
+ ld a, 1 << SERIAL
ldh [rIE], a
ld hl, wd1f3
ld de, wEnemyMonSpecies
@@ -243,7 +243,7 @@ Gen2ToGen2LinkComms:
.not_trading
xor a
ldh [rIF], a
- ld a, $1d
+ ld a, (1 << JOYPAD) | (1 << SERIAL) | (1 << TIMER) | (1 << VBLANK)
ldh [rIE], a
ld de, MUSIC_NONE
call PlayMusic
@@ -447,7 +447,7 @@ Gen2ToGen2LinkComms:
xor a
ldh [rIF], a
ldh a, [rIE]
- set 1, a
+ set LCD_STAT, a
ldh [rIE], a
pop af
ldh [rIF], a
@@ -1558,9 +1558,9 @@ Function28b22:
xor a
ldh [rSB], a
ldh [hSerialSend], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ret
@@ -2104,18 +2104,18 @@ WaitForOtherPlayerToExit:
xor a
ldh [rSB], a
ldh [hSerialReceive], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ld c, 3
call DelayFrames
xor a
ldh [rSB], a
ldh [hSerialReceive], a
- ld a, (0 << rSC_ON) | 0
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 0
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
ld c, 3
call DelayFrames
@@ -2131,7 +2131,7 @@ WaitForOtherPlayerToExit:
push af
xor a
ldh [rIF], a
- ld a, $f
+ ld a, IE_DEFAULT
ldh [rIE], a
pop af
ldh [rIF], a
@@ -2160,9 +2160,9 @@ SetBitsForTimeCapsuleRequest:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
- ld a, (0 << rSC_ON) | 0
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 0
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
xor a ; LINK_TIMECAPSULE - 1
ld [wPlayerLinkAction], a
@@ -2177,9 +2177,9 @@ WaitForLinkedFriend:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
- ld a, (0 << rSC_ON) | 0
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 0
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
call DelayFrame
call DelayFrame
@@ -2202,9 +2202,9 @@ WaitForLinkedFriend:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
- ld a, (0 << rSC_ON) | 0
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 0
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
ld a, [wLinkTimeoutFrames]
dec a
@@ -2218,9 +2218,9 @@ WaitForLinkedFriend:
.not_done
ld a, $1
ldh [rSB], a
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
call DelayFrame
jr .loop
diff --git a/engine/link/mystery_gift.asm b/engine/link/mystery_gift.asm
index 840853a87..041127abe 100644
--- a/engine/link/mystery_gift.asm
+++ b/engine/link/mystery_gift.asm
@@ -434,7 +434,7 @@ Function104bd0:
xor a
ldh [rIF], a
ldh a, [rIE]
- or $1
+ or 1 << VBLANK
ldh [rIE], a
ei
call DelayFrame
@@ -559,7 +559,7 @@ Function104d1c:
xor a
ldh [rIF], a
ldh a, [rIE]
- or $1
+ or 1 << VBLANK
ldh [rIE], a
ei
call DelayFrame
@@ -600,7 +600,7 @@ Function104d56:
Function104d5e:
call Function104d74
- ld a, $4
+ ld a, 1 << TIMER
ldh [rIE], a
xor a
ldh [rIF], a
diff --git a/engine/overworld/scripting.asm b/engine/overworld/scripting.asm
index ee6e15b51..7496b82bd 100644
--- a/engine/overworld/scripting.asm
+++ b/engine/overworld/scripting.asm
@@ -145,9 +145,7 @@ ScriptCommandTable:
dw Script_loadmenu ; 4f
dw Script_closewindow ; 50
dw Script_jumptextfaceplayer ; 51
-if _CRYSTAL
dw Script_farjumptext ; 52
-endc
dw Script_jumptext ; 53
dw Script_waitbutton ; 54
dw Script_buttonsound ; 55
@@ -330,8 +328,6 @@ JumpTextScript:
closetext
end
-if _CRYSTAL
-
Script_farjumptext:
; script command 0x52
; parameters: text_pointer
@@ -346,8 +342,6 @@ Script_farjumptext:
ld hl, JumpTextScript
jp ScriptJump
-endc
-
Script_writetext:
; script command 0x4c
; parameters: text_pointer
diff --git a/engine/printer/printer.asm b/engine/printer/printer.asm
index 93945113c..588699863 100644
--- a/engine/printer/printer.asm
+++ b/engine/printer/printer.asm
@@ -56,7 +56,7 @@ PrintDexEntry:
push af
xor a
ldh [rIF], a
- ld a, $9
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
call Printer_StartTransmission
@@ -140,13 +140,13 @@ PrintPCBox:
push af
xor a
ldh [rIF], a
- ld a, %1001
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], %0100
+ ld [hl], 4
xor a
ldh [hBGMapMode], a
@@ -219,7 +219,7 @@ PrintUnownStamp:
push af
xor a
ldh [rIF], a
- ld a, $9
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
ld hl, hVBlank
ld a, [hl]
@@ -284,7 +284,7 @@ PrintMail:
push af
xor a
ldh [rIF], a
- ld a, %1001
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
xor a
@@ -326,7 +326,7 @@ PrintPartymon:
push af
xor a
ldh [rIF], a
- ld a, %1001
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
xor a
@@ -390,7 +390,7 @@ _PrintDiploma:
push af
xor a
ldh [rIF], a
- ld a, %1001
+ ld a, (1 << SERIAL) | (1 << VBLANK)
ldh [rIE], a
ld hl, hVBlank
@@ -458,9 +458,9 @@ CheckCancelPrint:
ld [wPrinterOpcode], a
ld a, $88
ldh [rSB], a
- ld a, $1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, $81
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
.loop2
ld a, [wPrinterOpcode]
diff --git a/engine/printer/printer_serial.asm b/engine/printer/printer_serial.asm
index 154cc2fd4..e8cec0345 100644
--- a/engine/printer/printer_serial.asm
+++ b/engine/printer/printer_serial.asm
@@ -279,9 +279,9 @@ Printer_WaitHandshake:
ld [wPrinterOpcode], a
ld a, $88
ldh [rSB], a
- ld a, $1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, $81
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ret
@@ -622,9 +622,9 @@ Printer_Send0x08:
Printer_SerialSend:
ldh [rSB], a
- ld a, $1 ; switch to internal clock
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, $81 ; start transfer
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ret
diff --git a/home/handshake.asm b/home/handshake.asm
index 44c659496..ee01cfadb 100644
--- a/home/handshake.asm
+++ b/home/handshake.asm
@@ -32,11 +32,11 @@ AskSerial::
ldh [rSB], a
; switch to internal clock
- ld a, %00000001
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
; start transfer
- ld a, %10000001
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ret
diff --git a/home/init.asm b/home/init.asm
index 676b5460a..b8c4d90a9 100644
--- a/home/init.asm
+++ b/home/init.asm
@@ -6,7 +6,7 @@ Reset::
call ClearPalettes
xor a
ldh [rIF], a
- ld a, 1 ; VBlank int
+ ld a, 1 << VBLANK
ldh [rIE], a
ei
@@ -154,7 +154,7 @@ Init::
xor a
ldh [rIF], a
- ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts
+ ld a, IE_DEFAULT
ldh [rIE], a
ei
diff --git a/home/lcd.asm b/home/lcd.asm
index e50672f95..59bf22727 100644
--- a/home/lcd.asm
+++ b/home/lcd.asm
@@ -46,7 +46,7 @@ DisableLCD::
ld b, a
; Disable VBlank
- res 0, a ; vblank
+ res VBLANK, a
ldh [rIE], a
.wait
diff --git a/home/serial.asm b/home/serial.asm
index 1d790a79a..d95d6ce49 100644
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -28,9 +28,9 @@ Serial::
cp USING_INTERNAL_CLOCK
jr z, .player2
- ld a, 0 << rSC_ON
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, 1 << rSC_ON
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
jr .player2
@@ -65,9 +65,9 @@ Serial::
bit 7, a
jr nz, .wait_bit_7
- ld a, 0 << rSC_ON
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, 1 << rSC_ON
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
jr .player2
@@ -130,9 +130,9 @@ Serial_ExchangeByte::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .not_player_2
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
.not_player_2
.loop2
@@ -352,9 +352,9 @@ LinkTransfer::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .player_1
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
.player_1
@@ -382,9 +382,9 @@ LinkDataReceived::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
ret nz
- ld a, (0 << rSC_ON) | 1
+ ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, (1 << rSC_ON) | 1
+ ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ldh [rSC], a
ret
@@ -396,8 +396,8 @@ Unreferenced_Function919::
ldh [rSB], a
xor a
ldh [hSerialReceive], a
- ld a, 0 << rSC_ON
+ ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
- ld a, 1 << rSC_ON
+ ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ldh [rSC], a
ret
diff --git a/home/vblank.asm b/home/vblank.asm
index c26963636..e86ee00b7 100644
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -196,13 +196,13 @@ VBlank1::
xor a
ldh [rIF], a
; enable lcd stat
- ld a, %10 ; lcd stat
+ ld a, 1 << LCD_STAT
ldh [rIE], a
; rerequest serial int if applicable (still disabled)
; request lcd stat
ld a, b
- and %1000 ; serial
- or %10 ; lcd stat
+ and 1 << SERIAL
+ or 1 << LCD_STAT
ldh [rIF], a
ei
@@ -220,7 +220,7 @@ VBlank1::
xor a
ldh [rIF], a
; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
+ ld a, IE_DEFAULT
ldh [rIE], a
; rerequest ints
ld a, b
@@ -279,7 +279,7 @@ VBlank3::
push af
xor a
ldh [rIF], a
- ld a, %10 ; lcd stat
+ ld a, 1 << LCD_STAT
ldh [rIE], a
ldh [rIF], a
@@ -302,7 +302,7 @@ VBlank3::
xor a
ldh [rIF], a
; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
+ ld a, IE_DEFAULT
ldh [rIE], a
; request ints
ld a, b
@@ -368,7 +368,7 @@ VBlank5::
xor a
ldh [rIF], a
- ld a, %10 ; lcd stat
+ ld a, 1 << LCD_STAT
ldh [rIE], a
; request lcd stat
ldh [rIF], a
@@ -384,7 +384,7 @@ VBlank5::
xor a
ldh [rIF], a
; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
+ ld a, IE_DEFAULT
ldh [rIE], a
ret
diff --git a/lib/mobile/main.asm b/lib/mobile/main.asm
index 2bf5eef23..ce7c697d6 100644
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -605,7 +605,7 @@ Function11032c:
Function110393:
ld c, LOW(rIE)
ldh a, [c]
- or $c
+ or (1 << SERIAL) | (1 << TIMER)
ldh [c], a
ret
@@ -4101,9 +4101,9 @@ Function111b21:
Function111b2e:
ld hl, $c822
set 1, [hl]
- ld a, $3
+ ld a, (0 << rSC_ON) | (1 << rSC_CGB) | (1 << rSC_CLOCK)
ldh [rSC], a
- ld a, $83
+ ld a, (1 << rSC_ON) | (1 << rSC_CGB) | (1 << rSC_CLOCK)
ldh [rSC], a
Function111b3b:
@@ -4684,7 +4684,7 @@ Function111f07:
ret
.asm_111f17
ldh a, [rSC]
- and $80
+ and 1 << rSC_ON
jr nz, .asm_111f17
di
ld a, [$c81e]
diff --git a/macros/enum.asm b/macros/enum.asm
index 009400743..003445be7 100644
--- a/macros/enum.asm
+++ b/macros/enum.asm
@@ -14,7 +14,7 @@ endc
ENDM
enum: MACRO
-\1 = __enum__
+\1 EQU __enum__
__enum__ = __enum__ + __enumdir__
ENDM
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index 95cf1ecff..07b6dcd3a 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -536,13 +536,11 @@ jumptextfaceplayer: MACRO
dw \1 ; text_pointer
ENDM
-; if _CRYSTAL
enum farjumptext_command ; $52
farjumptext: MACRO
db farjumptext_command
dba \1
ENDM
-; endc
enum jumptext_command ; $53
jumptext: MACRO
diff --git a/mobile/mobile_40.asm b/mobile/mobile_40.asm
index c342388dd..2d01435ea 100644
--- a/mobile/mobile_40.asm
+++ b/mobile/mobile_40.asm
@@ -79,7 +79,7 @@ EnableMobile:
call DoubleSpeed
xor a
ldh [rIF], a
- ld a, 1 << VBLANK | 1 << LCD_STAT | 1 << TIMER | 1 << SERIAL
+ ld a, IE_DEFAULT
ldh [rIE], a
xor a
ldh [hMapAnims], a
@@ -162,7 +162,7 @@ Function1000fa:
xor a
ldh [rIF], a
ldh a, [rIE]
- and $13
+ and $1f ^ (1 << SERIAL | 1 << TIMER)
ldh [rIE], a
xor a
ldh [hMobileReceive], a
diff --git a/mobile/mobile_46.asm b/mobile/mobile_46.asm
index 75ed452b9..78b728e46 100644
--- a/mobile/mobile_46.asm
+++ b/mobile/mobile_46.asm
@@ -469,7 +469,7 @@ BattleTowerRoomMenu_InitRAM:
ld a, [hl]
ld [wcd7f], a
set 1, [hl]
- ld a, $f
+ ld a, (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
ldh [rIE], a
ld a, $1
ldh [hMobileReceive], a