-
Notifications
You must be signed in to change notification settings - Fork 1k
Remove SHIFT Mode
This tutorial details how to permanently turn off the SHIFT
battle style, or in other words, making the SET
battle style permanent.
Open the file engine/menus/main_menu.asm and delete (or comment out) the following line.
...
.cursorInBattleStyle
ld a, [wOptionsBattleStyleCursorX] ; battle style cursor X coordinate
- xor $0b ; toggle between 1 and 10
ld [wOptionsBattleStyleCursorX], a
jp .eraseOldMenuCursor
...
This disables the ability to move the cursor in the "Battle Style" options.
Next, head down a bit more and delete the word SHIFT
and replace it with 5 spaces to keep SET
in the correct position.
...
BattleStyleOptionText:
db "BATTLE STYLE"
- next " SHIFT SET@"
+ next " SET@"
...
This removes the presence of SHIFT
in the options menu.
Next, when you start the game for the first time, you may remember that the cursor is automatically set to SHIFT
mode, so we need to initialize it to SET
mode. Make the following change to correct this.
...
.storeBattleAnimationCursorX
ld [wOptionsBattleAnimCursorX], a ; battle animation cursor X coordinate
hlcoord 0, 8
call .placeUnfilledRightArrow
sla c
- ld a, 1
+ ld a, 10
jr nc, .storeBattleStyleCursorX
ld a, 10
...
Finally the initial value of [wOptionsBattleStyleCursorX]
is also automatically set for SHIFT
mode. So we force the SET
battle style with the following change
...
.battleStyleSet
set 6, d
jr .storeOptions
.battleStyleShift
- res 6, d
+ set 6, d
.storeOptions
ld a, d
ld [wOptions], a
...
Lastly, we remove the switching mechanic from the game engine so that its never called. Head to engine/battle/core.asm and make the change,
...
cp LINK_STATE_BATTLING
jr z, .next4
ld a, [wOptions]
bit BIT_BATTLE_SHIFT, a
- jr nz, .next4
+ jr .next4 ; Always skip switch request
ld hl, TrainerAboutToUseText
call PrintText
hlcoord 0, 7
...
That's it. Now you can force yourself and others to play the real way.