summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemy Oukaour <remy.oukaour@gmail.com>2018-01-16 17:27:50 -0500
committerRemy Oukaour <remy.oukaour@gmail.com>2018-01-16 17:27:50 -0500
commit7b3de85a06e81d14ac0c73e8f9e1ab8e4a474beb (patch)
tree6ffeacd670c9ff66a951550a15a0e990f88ab75d
parent80480821142d7a7b16dd2b1a98a213e7b389af0f (diff)
Avoid "+- 1" at every maskbits
-rw-r--r--audio/engine.asm20
-rw-r--r--constants/pokemon_data_constants.asm2
-rw-r--r--data/wild/roammon_maps.asm1
-rwxr-xr-xengine/battle/ai/move.asm2
-rw-r--r--engine/battle/battle_transition.asm2
-rw-r--r--engine/battle/core.asm2
-rw-r--r--engine/battle/effect_commands.asm6
-rw-r--r--engine/battle_anims/anim_commands.asm4
-rw-r--r--engine/color.asm6
-rw-r--r--engine/events/battle_tower/load_trainer.asm6
-rw-r--r--engine/events/buena.asm2
-rw-r--r--engine/events/fish.asm2
-rwxr-xr-xengine/events/magnet_train.asm2
-rw-r--r--engine/events/poisonstep_pals.asm2
-rw-r--r--engine/item_effects.asm2
-rw-r--r--engine/load_font.asm2
-rw-r--r--engine/map_objects.asm2
-rwxr-xr-xengine/npc_movement.asm6
-rw-r--r--engine/pack.asm8
-rwxr-xr-xengine/player_movement.asm8
-rwxr-xr-xengine/player_object.asm2
-rw-r--r--engine/pokedex_2.asm2
-rwxr-xr-xengine/pokegear.asm4
-rw-r--r--engine/radio.asm18
-rw-r--r--engine/scripting.asm4
-rwxr-xr-xengine/stats_screen.asm8
-rwxr-xr-xengine/trade_animation.asm2
-rwxr-xr-xengine/unown_puzzle.asm2
-rwxr-xr-xengine/wildmons.asm10
-rw-r--r--home/time.asm6
-rw-r--r--macros/code.asm8
-rwxr-xr-xmobile/mobile_41.asm2
32 files changed, 79 insertions, 76 deletions
diff --git a/audio/engine.asm b/audio/engine.asm
index 215ab2a3f..0a952b358 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -1304,7 +1304,7 @@ ParseSFXOrRest: ; e8698
ld [hl], a
; are we on the last channel? (noise sampling)
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
cp CHAN4
ret z
; update hi frequency from next param
@@ -1668,7 +1668,7 @@ MusicEE; e883e
; if ????, jump
; get channel
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
ld e, a
ld d, 0
; hl = Channel1JumpCondition + channel id
@@ -1966,7 +1966,7 @@ Music_NoteType: ; e8963
add hl, bc
ld [hl], a
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
cp CHAN4
ret z
; intensity
@@ -2414,7 +2414,7 @@ SetLRTracks: ; e8b1b
push de
; store current channel in de
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
ld e, a
ld d, 0
; get this channel's lr tracks
@@ -2449,7 +2449,7 @@ _PlayMusic:: ; e8b30
call LoadMusicByte ; store first byte of music header in a
rlca
rlca
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
inc a
.loop
; start playing channels
@@ -2505,7 +2505,7 @@ _PlayCryHeader:: ; e8b79
; Top 2 bits contain the number of channels
rlca
rlca
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
; For each channel:
inc a
@@ -2530,7 +2530,7 @@ _PlayCryHeader:: ; e8b79
; No tempo for channel 4
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
cp CHAN4
jr nc, .start
@@ -2669,7 +2669,7 @@ _PlaySFX:: ; e8c04
call LoadMusicByte
rlca ; top 2
rlca ; bits
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
inc a ; # channels -> # loops
.startchannels
push af
@@ -2722,7 +2722,7 @@ PlayStereoSFX:: ; e8ca6
call LoadMusicByte
rlca
rlca
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
inc a
.loop
@@ -2736,7 +2736,7 @@ PlayStereoSFX:: ; e8ca6
push de
; get tracks for this channel
ld a, [CurChannel]
- maskbits NUM_MUSIC_CHANS +- 1
+ maskbits NUM_MUSIC_CHANS
ld e, a
ld d, 0
call GetLRTracks
diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm
index 65dd35fd0..cc9e4407b 100644
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -216,6 +216,8 @@ NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2
WATER_WILDDATA_LENGTH EQU (NUM_WATERMON * 2 + 1) * 1 + 2
+NUM_ROAMMON_MAPS EQU 16 ; RoamMaps table size (see data/wild/roammon_maps.asm)
+
; swarms
diff --git a/data/wild/roammon_maps.asm b/data/wild/roammon_maps.asm
index c0b552b26..07bb7a9d9 100644
--- a/data/wild/roammon_maps.asm
+++ b/data/wild/roammon_maps.asm
@@ -13,6 +13,7 @@ endr
ENDM
RoamMaps: ; 2a40f
+; there are NUM_ROAMMON_MAPS entries
roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
diff --git a/engine/battle/ai/move.asm b/engine/battle/ai/move.asm
index 27a8ad5a5..7ccb20972 100755
--- a/engine/battle/ai/move.asm
+++ b/engine/battle/ai/move.asm
@@ -186,7 +186,7 @@ AIChooseMove: ; 440ce
.ChooseMove:
ld hl, Buffer1
call Random
- maskbits NUM_MOVES +- 1
+ maskbits NUM_MOVES
ld c, a
ld b, 0
add hl, bc
diff --git a/engine/battle/battle_transition.asm b/engine/battle/battle_transition.asm
index 1409ddc37..452339e81 100644
--- a/engine/battle/battle_transition.asm
+++ b/engine/battle/battle_transition.asm
@@ -640,7 +640,7 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
.cgb
ld hl, .daypals
ld a, [TimeOfDayPal]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
cp DARKNESS_F
jr nz, .daytime
ld hl, .nightpals
diff --git a/engine/battle/core.asm b/engine/battle/core.asm
index 5d79f5fd5..e1c5f331f 100644
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -6031,7 +6031,7 @@ ParseEnemyAction: ; 3e7c1
.loop2
ld hl, EnemyMonMoves
call BattleRandom
- maskbits NUM_MOVES +- 1
+ maskbits NUM_MOVES
ld c, a
ld b, 0
add hl, bc
diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm
index 801ce211e..c1bc3752a 100644
--- a/engine/battle/effect_commands.asm
+++ b/engine/battle/effect_commands.asm
@@ -932,7 +932,7 @@ BattleCommand_CheckObedience: ; 343db
.RandomMove:
call BattleRandom
- maskbits NUM_MOVES +- 1
+ maskbits NUM_MOVES
cp b
jr nc, .RandomMove
@@ -4387,7 +4387,7 @@ BattleCommand_SleepTalk: ; 35b33
.sample_move
push hl
call BattleRandom
- maskbits NUM_MOVES +- 1
+ maskbits NUM_MOVES
ld c, a
ld b, 0
add hl, bc
@@ -8204,7 +8204,7 @@ BattleCommand_Conversion: ; 3707f
.done
.loop3
call BattleRandom
- maskbits NUM_MOVES +- 1
+ maskbits NUM_MOVES
ld c, a
ld b, 0
ld hl, StringBuffer1
diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm
index d19e7210a..07ab82d95 100644
--- a/engine/battle_anims/anim_commands.asm
+++ b/engine/battle_anims/anim_commands.asm
@@ -1206,7 +1206,7 @@ BattleAnimCmd_Sound: ; cc7cd (33:47cd)
srl a
ld [wSFXDuration], a
call .GetCryTrack
- maskbits NUM_NOISE_CHANS +- 1
+ maskbits NUM_NOISE_CHANS
ld [CryTracks], a ; CryTracks
ld e, a
@@ -1243,7 +1243,7 @@ BattleAnimCmd_Sound: ; cc7cd (33:47cd)
BattleAnimCmd_Cry: ; cc807 (33:4807)
call GetBattleAnimByte
- maskbits NUM_NOISE_CHANS +- 1
+ maskbits NUM_NOISE_CHANS
ld e, a
ld d, 0
ld hl, .CryData
diff --git a/engine/color.asm b/engine/color.asm
index b95d0a2f4..cc12ffaf8 100644
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -1230,7 +1230,7 @@ LoadMapPals:
ld l, a
; Futher refine by time of day
ld a, [TimeOfDayPal]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
add a
add a
add a
@@ -1276,7 +1276,7 @@ LoadMapPals:
.got_pals
ld a, [TimeOfDayPal]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
ld bc, 8 palettes
ld hl, MapObjectPals
call AddNTimes
@@ -1300,7 +1300,7 @@ LoadMapPals:
ld de, RoofPals
add hl, de
ld a, [TimeOfDayPal]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
cp NITE_F
jr c, .morn_day
rept 4
diff --git a/engine/events/battle_tower/load_trainer.asm b/engine/events/battle_tower/load_trainer.asm
index 006e0afa3..7c229219f 100644
--- a/engine/events/battle_tower/load_trainer.asm
+++ b/engine/events/battle_tower/load_trainer.asm
@@ -27,12 +27,12 @@ Function_LoadOpponentTrainerAndPokemons: ; 1f8000
add b
ld b, a ; b contains the nr of the trainer
if DEF(_CRYSTAL11)
- maskbits BATTLETOWER_NUM_UNIQUE_TRAINERS +- 1
+ maskbits BATTLETOWER_NUM_UNIQUE_TRAINERS
cp BATTLETOWER_NUM_UNIQUE_TRAINERS
else
; Crystal 1.0 used the wrong constant here, so only the first 21
; trainers in BattleTowerTrainers can be sampled.
- maskbits BATTLETOWER_NUM_UNIQUE_PKMN +- 1
+ maskbits BATTLETOWER_NUM_UNIQUE_PKMN
cp BATTLETOWER_NUM_UNIQUE_PKMN
endc
jr nc, .resample
@@ -115,7 +115,7 @@ Function_LoadRandomBattleTowerPkmn: ; 1f8081
ld a, [hRandomAdd]
add b
ld b, a
- maskbits BATTLETOWER_NUM_UNIQUE_PKMN +- 1
+ maskbits BATTLETOWER_NUM_UNIQUE_PKMN
cp BATTLETOWER_NUM_UNIQUE_PKMN
jr nc, .resample
; in register 'a' is the chosen Pkmn of the LevelGroup
diff --git a/engine/events/buena.asm b/engine/events/buena.asm
index cd0ecc98d..d5a80ef2e 100644
--- a/engine/events/buena.asm
+++ b/engine/events/buena.asm
@@ -17,7 +17,7 @@ Special_BuenasPassword: ; 8af6b
ld a, [MenuSelection]
ld c, a
ld a, [wBuenasPassword]
- maskbits NUM_PASSWORDS_PER_CATEGORY +- 1
+ maskbits NUM_PASSWORDS_PER_CATEGORY
cp c
jr nz, .wrong
ld b, $1
diff --git a/engine/events/fish.asm b/engine/events/fish.asm
index 05bd7f530..39644847d 100644
--- a/engine/events/fish.asm
+++ b/engine/events/fish.asm
@@ -80,7 +80,7 @@ rept 4
endr
ld a, [TimeOfDay]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
cp NITE_F
jr c, .time_species
inc hl
diff --git a/engine/events/magnet_train.asm b/engine/events/magnet_train.asm
index c2ff36135..232372dbd 100755
--- a/engine/events/magnet_train.asm
+++ b/engine/events/magnet_train.asm
@@ -435,7 +435,7 @@ MagnetTrain_Jumptable_FirstRunThrough: ; 8ceae
ld a, [wEnvironment]
push af
ld a, [TimeOfDay]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
ld [TimeOfDayPal], a
ld a, $1
ld [wEnvironment], a
diff --git a/engine/events/poisonstep_pals.asm b/engine/events/poisonstep_pals.asm
index c0d4c5ace..5b5b642ce 100644
--- a/engine/events/poisonstep_pals.asm
+++ b/engine/events/poisonstep_pals.asm
@@ -10,7 +10,7 @@ LoadPoisonBGPals: ; cbcdd
and a
jr nz, .cgb
ld a, [TimeOfDayPal]
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
cp DARKNESS_F
ld a, %00000000
jr z, .convert_pals
diff --git a/engine/item_effects.asm b/engine/item_effects.asm
index b072d9e1a..29815a56e 100644
--- a/engine/item_effects.asm
+++ b/engine/item_effects.asm
@@ -775,7 +775,7 @@ GetPokedexEntryBank:
ld a, [EnemyMonSpecies]
rlca
rlca
- maskbits NUM_DEX_ENTRY_BANKS +- 1
+ maskbits NUM_DEX_ENTRY_BANKS
ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
diff --git a/engine/load_font.asm b/engine/load_font.asm
index 347a85746..af64b69f6 100644
--- a/engine/load_font.asm
+++ b/engine/load_font.asm
@@ -82,7 +82,7 @@ _LoadFontsBattleExtra:: ; fb4be
LoadFrame: ; fb4cc
ld a, [TextBoxFrame]
- maskbits NUM_FRAMES +- 1
+ maskbits NUM_FRAMES
ld bc, 6 * LEN_1BPP_TILE
ld hl, Frames
call AddNTimes
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index 0f04a0a16..5899ba49d 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -893,7 +893,7 @@ MapObjectMovementPattern: ; 47dd
ld hl, OBJECT_DIRECTION_WALKING
add hl, de
ld a, [hl]
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld d, 1 * 8 + 6
cp DOWN
jr z, .ok_13
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
index 71583408e..e8b353fa6 100755
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -106,7 +106,7 @@ Function6f3e: ; 6f3e
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld a, [hl]
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld e, a
ld d, 0
ld hl, .data_6f5b
@@ -131,7 +131,7 @@ Function6f5f: ; 6f5f
push af
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld e, a
ld d, 0
ld hl, .data_6f7b
@@ -178,7 +178,7 @@ Function6fa1: ; 6fa1
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld a, [hl]
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
jr z, .down
dec a
jr z, .up
diff --git a/engine/pack.asm b/engine/pack.asm
index c013994a0..1d9f4e70b 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -954,7 +954,7 @@ InitPackBuffers: ; 1068a
ld [wJumptableIndex], a
; pocket id -> jumptable index
ld a, [wLastPocket]
- maskbits NUM_POCKETS +- 1
+ maskbits NUM_POCKETS
ld [wCurrPocket], a
inc a
add a
@@ -1099,7 +1099,7 @@ DepositSellTutorial_InterpretJoypad: ; 1076f
.d_left
ld a, [wJumptableIndex]
dec a
- maskbits NUM_POCKETS +- 1
+ maskbits NUM_POCKETS
ld [wJumptableIndex], a
push de
ld de, SFX_SWITCH_POCKETS
@@ -1111,7 +1111,7 @@ DepositSellTutorial_InterpretJoypad: ; 1076f
.d_right
ld a, [wJumptableIndex]
inc a
- maskbits NUM_POCKETS +- 1
+ maskbits NUM_POCKETS
ld [wJumptableIndex], a
push de
ld de, SFX_SWITCH_POCKETS
@@ -1281,7 +1281,7 @@ WaitBGMap_DrawPackGFX: ; 1089a (4:489a)
call WaitBGMap
DrawPackGFX: ; 1089d
ld a, [wCurrPocket]
- maskbits NUM_POCKETS +- 1
+ maskbits NUM_POCKETS
ld e, a
ld d, $0
ld a, [BattleType]
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index e475bf6a4..d6d10aea1 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -140,7 +140,7 @@ DoPlayerMovement:: ; 80000
.water
ld a, c
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld c, a
ld b, 0
ld hl, .water_table
@@ -244,7 +244,7 @@ DoPlayerMovement:: ; 80000
ld a, [PlayerDirection]
rrca
rrca
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
cp e
jr z, .not_turning
@@ -430,7 +430,7 @@ DoPlayerMovement:: ; 80000
ld a, [PlayerDirection]
rrca
rrca
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
cp e
jr nz, .not_warp
call WarpCheck
@@ -559,7 +559,7 @@ DoPlayerMovement:: ; 80000
cp 0
ret z
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld e, a
ld d, 0
ld hl, .forced_dpad
diff --git a/engine/player_object.asm b/engine/player_object.asm
index 50cabadf6..b630078a2 100755
--- a/engine/player_object.asm
+++ b/engine/player_object.asm
@@ -589,7 +589,7 @@ Special_SurfStartStep: ; 8379
ld a, [PlayerDirection]
srl a
srl a
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld e, a
ld d, 0
ld hl, .movement_data
diff --git a/engine/pokedex_2.asm b/engine/pokedex_2.asm
index 4a5a08803..3831d2ae9 100644
--- a/engine/pokedex_2.asm
+++ b/engine/pokedex_2.asm
@@ -230,7 +230,7 @@ GetDexEntryPointer: ; 44333
push de
rlca
rlca
- maskbits NUM_DEX_ENTRY_BANKS +- 1
+ maskbits NUM_DEX_ENTRY_BANKS
ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index d8fa30b54..37640311e 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -251,7 +251,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
ld a, $4f
call ByteFill
ld a, [wPokegearCard]
- maskbits NUM_POKEGEAR_CARDS +- 1
+ maskbits NUM_POKEGEAR_CARDS
add a
ld e, a
ld d, 0
@@ -289,7 +289,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
ld [hWY], a
; swap region maps
ld a, [wPokegearMapRegion]
- maskbits NUM_REGIONS +- 1
+ maskbits NUM_REGIONS
xor 1
ld [wPokegearMapRegion], a
ret
diff --git a/engine/radio.asm b/engine/radio.asm
index de19a289c..bfc95404e 100644
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -247,7 +247,7 @@ endr
; Generate a number, either 0, 1, or 2, to choose a time of day.
.loop2
call Random
- maskbits NUM_DAYTIMES +- 1
+ maskbits NUM_DAYTIMES
cp DARKNESS_F
jr z, .loop2
@@ -351,7 +351,7 @@ OaksPkmnTalk8:
; 0-15 are all valid indexes into .Adverbs,
; so no need for a retry loop
call Random
- maskbits NUM_OAKS_MON_TALK_ADVERBS +- 1
+ maskbits NUM_OAKS_MON_TALK_ADVERBS
ld e, a
ld d, 0
ld hl, .Adverbs
@@ -466,7 +466,7 @@ OaksPkmnTalk9:
; 0-15 are all valid indexes into .Adjectives,
; so no need for a retry loop
call Random
- maskbits NUM_OAKS_MON_TALK_ADJECTIVES +- 1
+ maskbits NUM_OAKS_MON_TALK_ADJECTIVES
ld e, a
ld d, 0
ld hl, .Adjectives
@@ -692,7 +692,7 @@ PokedexShow_GetDexEntryBank:
dec a
rlca
rlca
- maskbits NUM_DEX_ENTRY_BANKS +- 1
+ maskbits NUM_DEX_ENTRY_BANKS
ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
@@ -1164,7 +1164,7 @@ PnP_Text3:
PeoplePlaces4: ; People
call Random
- maskbits NUM_TRAINER_CLASSES +- 1
+ maskbits NUM_TRAINER_CLASSES
inc a
cp NUM_TRAINER_CLASSES - 1
jr nc, PeoplePlaces4
@@ -1208,7 +1208,7 @@ PeoplePlaces5:
; 0-15 are all valid indexes into .Adjectives,
; so no need for a retry loop
call Random
- maskbits NUM_PNP_PEOPLE_ADJECTIVES +- 1
+ maskbits NUM_PNP_PEOPLE_ADJECTIVES
ld e, a
ld d, 0
ld hl, .Adjectives
@@ -1358,7 +1358,7 @@ PeoplePlaces7:
; 0-15 are all valid indexes into .Adjectives,
; so no need for a retry loop
call Random
- maskbits NUM_PNP_PLACES_ADJECTIVES +- 1
+ maskbits NUM_PNP_PLACES_ADJECTIVES
ld e, a
ld d, 0
ld hl, .Adjectives
@@ -1565,7 +1565,7 @@ BuenasPassword4:
; There are only 11 groups to choose from.
.greater_than_11
call Random
- maskbits NUM_PASSWORD_CATEGORIES +- 1
+ maskbits NUM_PASSWORD_CATEGORIES
cp NUM_PASSWORD_CATEGORIES
jr nc, .greater_than_11
; Store it in the high nybble of e.
@@ -1574,7 +1574,7 @@ BuenasPassword4:
; For each group, choose one of the three passwords.
.greater_than_three
call Random
- maskbits NUM_PASSWORDS_PER_CATEGORY +- 1
+ maskbits NUM_PASSWORDS_PER_CATEGORY
cp NUM_PASSWORDS_PER_CATEGORY
jr nc, .greater_than_three
; The high nybble of wBuenasPassword will now contain the password group index, and the low nybble contains the actual password.
diff --git a/engine/scripting.asm b/engine/scripting.asm
index f4bd6eaad..87415135d 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -614,7 +614,7 @@ GetPocketName:
ld a, [wItemAttributeParamBuffer]
dec a
ld hl, .Pockets
- maskbits NUM_POCKETS +- 1
+ maskbits NUM_POCKETS
add a
ld e, a
ld d, 0
@@ -2474,7 +2474,7 @@ Script_warpfacing:
; parameters: facing, map_group, map_id, x, y
call GetScriptByte
- maskbits NUM_DIRECTIONS +- 1
+ maskbits NUM_DIRECTIONS
ld c, a
ld a, [wPlayerSpriteSetupFlags]
set 5, a
diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm
index a1744c42d..1e3fb8a77 100755
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -283,7 +283,7 @@ StatsScreen_GetJoypad: ; 4de2c (13:5e2c)
StatsScreen_JoypadAction: ; 4de54 (13:5e54)
push af
ld a, [wcf64]
- maskbits NUM_STAT_PAGES +- 1
+ maskbits NUM_STAT_PAGES
ld c, a
pop af
bit B_BUTTON_F, a
@@ -512,7 +512,7 @@ StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
.ClearBox: ; 4dfda (13:5fda)
ld a, [wcf64]
- maskbits NUM_STAT_PAGES +- 1
+ maskbits NUM_STAT_PAGES
ld c, a
call StatsScreen_LoadPageIndicators
hlcoord 0, 8
@@ -522,7 +522,7 @@ StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
.LoadPals: ; 4dfed (13:5fed)
ld a, [wcf64]
- maskbits NUM_STAT_PAGES +- 1
+ maskbits NUM_STAT_PAGES
ld c, a
farcall LoadStatsScreenPals
call DelayFrame
@@ -532,7 +532,7 @@ StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
.PageTilemap: ; 4e002 (13:6002)
ld a, [wcf64]
- maskbits NUM_STAT_PAGES +- 1
+ maskbits NUM_STAT_PAGES
dec a
ld hl, .Jumptable
rst JumpTable
diff --git a/engine/trade_animation.asm b/engine/trade_animation.asm
index f5e83048b..08b30b132 100755
--- a/engine/trade_animation.asm
+++ b/engine/trade_animation.asm
@@ -552,7 +552,7 @@ TradeAnim_GetTrademonSFX: ; 29277
; 29281
TradeAnim_TubeAnimJumptable: ; 29281
- maskbits TRADEANIMJUMPTABLE_LENGTH +- 1
+ maskbits TRADEANIMJUMPTABLE_LENGTH
ld e, a
ld d, 0
ld hl, .Jumptable
diff --git a/engine/unown_puzzle.asm b/engine/unown_puzzle.asm
index 429bfaefd..8a032db42 100755
--- a/engine/unown_puzzle.asm
+++ b/engine/unown_puzzle.asm
@@ -835,7 +835,7 @@ INCBIN "gfx/unown_puzzle/tile_borders.2bpp"
LoadUnownPuzzlePiecesGFX: ; e17a3
ld a, [ScriptVar]
- maskbits NUM_UNOWN_PUZZLES +- 1
+ maskbits NUM_UNOWN_PUZZLES
ld e, a
ld d, 0
ld hl, .LZPointers
diff --git a/engine/wildmons.asm b/engine/wildmons.asm
index 287ffe6ac..1425c7636 100755
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -739,11 +739,11 @@ JumpRoamMons: ; 2a394
JumpRoamMon: ; 2a3cd
.loop
ld hl, RoamMaps
-.innerloop1 ; This loop is completely unnecessary.
- call Random ; Choose a random number.
- maskbits $10 - 1 ; Mask the number to limit it between 0 and 15.
- cp $10 ; If the number is not less than 16, try again.
- jr nc, .innerloop1 ; I'm sure you can guess why this check is bogus.
+.innerloop1 ; This loop happens to be unnecessary.
+ call Random ; Choose a random number.
+ maskbits NUM_ROAMMON_MAPS ; Mask the number to limit it between 0 and 15.
+ cp NUM_ROAMMON_MAPS ; If the number is not less than 16, try again.
+ jr nc, .innerloop1 ; I'm sure you can guess why this check is bogus.
inc a
ld b, a
.innerloop2 ; Loop to get hl to the address of the chosen roam map.
diff --git a/home/time.asm b/home/time.asm
index be141a066..9ed703686 100644
--- a/home/time.asm
+++ b/home/time.asm
@@ -48,17 +48,17 @@ GetClock:: ; 5b7
ld [hl], RTC_S
ld a, [de]
- maskbits 60 - 1
+ maskbits 60
ld [hRTCSeconds], a
ld [hl], RTC_M
ld a, [de]
- maskbits 60 - 1
+ maskbits 60
ld [hRTCMinutes], a
ld [hl], RTC_H
ld a, [de]
- maskbits 24 - 1
+ maskbits 24
ld [hRTCHours], a
ld [hl], RTC_DL
diff --git a/macros/code.asm b/macros/code.asm
index 6e9c378e3..799c27d45 100644
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -37,17 +37,17 @@ ENDM
maskbits: MACRO
; masks just enough bits to cover the argument
-; e.g. "maskbits %00010100" becomes "and %00011111"
+; e.g. "maskbits 26" becomes "and %00011111" (since 26 - 1 = %00011001)
; example usage in rejection sampling:
; .loop
; call Random
-; maskbits 30 +- 1
+; maskbits 30
; cp 30
; jr nc, .loop
x = 1
rept 8
-if x < (\1)
-x = (x + 1) * 2 +- 1
+if x + 1 < (\1)
+x = x << 1 | 1
endc
endr
and x
diff --git a/mobile/mobile_41.asm b/mobile/mobile_41.asm
index a4f2c7e61..f010998f6 100755
--- a/mobile/mobile_41.asm
+++ b/mobile/mobile_41.asm
@@ -1072,7 +1072,7 @@ Function106464:: ; 106464
Function10649b: ; 10649b
ld a, [TextBoxFrame]
- maskbits NUM_FRAMES +- 1
+ maskbits NUM_FRAMES
ld bc, 6 * LEN_1BPP_TILE
ld hl, Frames
call AddNTimes