aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSnorlaxMonster <7100450+SnorlaxMonster@users.noreply.github.com>2026-01-18 08:11:37 +1030
committerGitHub <noreply@github.com>2026-01-17 16:41:37 -0500
commit85b9d866c8392b9ca56c1c17f82dc99a37e1011c (patch)
treeeb0ce74afcb326f2e5f4c5a8235486269009aee9
parentDocument SFX event bug inside Rocket Hideout B1F (#566) (diff)
downloadpokeyellow-85b9d866c8392b9ca56c1c17f82dc99a37e1011c.tar.gz
pokeyellow-85b9d866c8392b9ca56c1c17f82dc99a37e1011c.tar.xz
pokeyellow-85b9d866c8392b9ca56c1c17f82dc99a37e1011c.zip
Align move grammar with pokecrystal (#565)
Add comments explaining the redundant move grammar categories inherited from the Japanese version.
-rw-r--r--data/moves/grammar.asm16
-rw-r--r--data/text/text_2.asm18
-rw-r--r--engine/battle/core.asm138
-rw-r--r--engine/battle/used_move_text.asm139
4 files changed, 162 insertions, 149 deletions
diff --git a/data/moves/grammar.asm b/data/moves/grammar.asm
index bc3d1dc6..e3e87387 100644
--- a/data/moves/grammar.asm
+++ b/data/moves/grammar.asm
@@ -1,17 +1,21 @@
-ExclamationPointMoveSets:
-; set 0
+; Used by GetMoveGrammar (see engine/battle/core.asm)
+; Each move is given an identifier for what usedmovetext to use (0-4).
+; Made redundant in English localization, where all are just "[mon]<LINE>used [move]!"
+
+MoveGrammar:
+; 0: originally "[mon]は<LINE>[move]を つかった!" ("[mon]<LINE>used [move]!")
db SWORDS_DANCE
db GROWTH
db 0 ; end set
-; set 1
+; 1: originally "[mon]は<LINE>[move]を した!" ("[mon]<LINE>did [move]!")
db RECOVER
db BIDE
db SELFDESTRUCT
db AMNESIA
db 0 ; end set
-; set 2
+; 2: originally "[mon]は<LINE>[move]した!" ("[mon]<LINE>did [move]!")
db MEDITATE
db AGILITY
db TELEPORT
@@ -20,7 +24,7 @@ ExclamationPointMoveSets:
db BARRAGE
db 0 ; end set
-; set 3
+; 3: originally "[mon]の<LINE>[move] こうげき!" ("[mon]'s<LINE>[move] attack!")
db POUND
db SCRATCH
db VICEGRIP
@@ -69,4 +73,6 @@ ExclamationPointMoveSets:
db SUBSTITUTE
db 0 ; end set
+; 4: originally "[mon]の<LINE>[move]!" ("[mon]'s<LINE>[move]!")
+; Any move not listed above uses this grammar.
db -1 ; end
diff --git a/data/text/text_2.asm b/data/text/text_2.asm
index df28740d..d62e0929 100644
--- a/data/text/text_2.asm
+++ b/data/text/text_2.asm
@@ -1075,21 +1075,21 @@ _MoveIsDisabledText::
cont "disabled!"
prompt
-_MonName1Text::
+_ActorNameText::
text "<USER>@"
text_end
-_Used1Text::
+_UsedMove1Text::
text_start
line "used @"
text_end
-_Used2Text::
+_UsedMove2Text::
text_start
line "used @"
text_end
-_InsteadText::
+_UsedInsteadText::
text "instead,"
cont "@"
text_end
@@ -1098,23 +1098,23 @@ _MoveNameText::
text_ram wStringBuffer
text "@"
-_ExclamationPoint1Text::
+_EndUsedMove1Text::
text "!"
done
-_ExclamationPoint2Text::
+_EndUsedMove2Text::
text "!"
done
-_ExclamationPoint3Text::
+_EndUsedMove3Text::
text "!"
done
-_ExclamationPoint4Text::
+_EndUsedMove4Text::
text "!"
done
-_ExclamationPoint5Text::
+_EndUsedMove5Text::
text "!"
done
diff --git a/engine/battle/core.asm b/engine/battle/core.asm
index dd9fbc71..fc17ec44 100644
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -3115,7 +3115,7 @@ PlayerCanExecuteChargingMove:
; resulting in the Pokemon being invulnerable for the whole battle
res INVULNERABLE, [hl]
PlayerCanExecuteMove:
- call PrintMonName1Text
+ call DisplayUsedMoveText
ld hl, DecrementPP
ld de, wPlayerSelectedMove ; pointer to the move just used
ld b, BANK(DecrementPP)
@@ -3713,139 +3713,7 @@ HandleSelfConfusionDamage:
ldh [hWhoseTurn], a
jp ApplyDamageToPlayerPokemon
-PrintMonName1Text:
- ld hl, MonName1Text
- jp PrintText
-
-; this function wastes time calling DetermineExclamationPointTextNum
-; and choosing between Used1Text and Used2Text, even though
-; those text strings are identical and both continue at PrintInsteadText
-; this likely had to do with Japanese grammar that got translated,
-; but the functionality didn't get removed
-MonName1Text:
- text_far _MonName1Text
- text_asm
- ldh a, [hWhoseTurn]
- and a
- ld a, [wPlayerMoveNum]
- ld hl, wPlayerUsedMove
- jr z, .playerTurn
- ld a, [wEnemyMoveNum]
- ld hl, wEnemyUsedMove
-.playerTurn
- ld [hl], a
- ld [wMoveGrammar], a
- call DetermineExclamationPointTextNum
- ld a, [wMonIsDisobedient]
- and a
- ld hl, Used2Text
- ret nz
- ld a, [wMoveGrammar]
- cp 3
- ld hl, Used2Text
- ret c
- ld hl, Used1Text
- ret
-
-Used1Text:
- text_far _Used1Text
- text_asm
- jr PrintInsteadText
-
-Used2Text:
- text_far _Used2Text
- text_asm
- ; fall through
-
-PrintInsteadText:
- ld a, [wMonIsDisobedient]
- and a
- jr z, PrintMoveName
- ld hl, InsteadText
- ret
-
-InsteadText:
- text_far _InsteadText
- text_asm
- ; fall through
-
-PrintMoveName:
- ld hl, _PrintMoveName
- ret
-
-_PrintMoveName:
- text_far _MoveNameText
- text_asm
- ld hl, ExclamationPointPointerTable
- ld a, [wMoveGrammar]
- add a
- push bc
- ld b, $0
- ld c, a
- add hl, bc
- pop bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ret
-
-ExclamationPointPointerTable:
- dw ExclamationPoint1Text
- dw ExclamationPoint2Text
- dw ExclamationPoint3Text
- dw ExclamationPoint4Text
- dw ExclamationPoint5Text
-
-ExclamationPoint1Text:
- text_far _ExclamationPoint1Text
- text_end
-
-ExclamationPoint2Text:
- text_far _ExclamationPoint2Text
- text_end
-
-ExclamationPoint3Text:
- text_far _ExclamationPoint3Text
- text_end
-
-ExclamationPoint4Text:
- text_far _ExclamationPoint4Text
- text_end
-
-ExclamationPoint5Text:
- text_far _ExclamationPoint5Text
- text_end
-
-; this function does nothing useful
-; if the move being used is in set [1-4] from ExclamationPointMoveSets,
-; use ExclamationPoint[1-4]Text
-; otherwise, use ExclamationPoint5Text
-; but all five text strings are identical
-; this likely had to do with Japanese grammar that got translated,
-; but the functionality didn't get removed
-DetermineExclamationPointTextNum:
- push bc
- ld a, [wMoveGrammar] ; move ID
- ld c, a
- ld b, $0
- ld hl, ExclamationPointMoveSets
-.loop
- ld a, [hli]
- cp $ff
- jr z, .done
- cp c
- jr z, .done
- and a
- jr nz, .loop
- inc b
- jr .loop
-.done
- ld a, b
- ld [wMoveGrammar], a
- pop bc
- ret
-
-INCLUDE "data/moves/grammar.asm"
+INCLUDE "engine/battle/used_move_text.asm"
PrintMoveFailureText:
ld de, wPlayerMoveEffect
@@ -5642,7 +5510,7 @@ EnemyCanExecuteChargingMove:
EnemyCanExecuteMove:
xor a
ld [wMonIsDisobedient], a
- call PrintMonName1Text
+ call DisplayUsedMoveText
ld a, [wEnemyMoveEffect]
ld hl, ResidualEffects1
ld de, $1
diff --git a/engine/battle/used_move_text.asm b/engine/battle/used_move_text.asm
new file mode 100644
index 00000000..abb35e67
--- /dev/null
+++ b/engine/battle/used_move_text.asm
@@ -0,0 +1,139 @@
+DisplayUsedMoveText:
+ ld hl, UsedMoveText
+ jp PrintText
+
+UsedMoveText:
+ text_far _ActorNameText
+ text_asm
+
+ ldh a, [hWhoseTurn]
+ and a
+ ld a, [wPlayerMoveNum]
+ ld hl, wPlayerUsedMove
+ jr z, .playerTurn
+
+ ld a, [wEnemyMoveNum]
+ ld hl, wEnemyUsedMove
+
+.playerTurn
+ ld [hl], a
+ ld [wMoveGrammar], a
+ call GetMoveGrammar
+ ld a, [wMonIsDisobedient]
+ and a
+ ld hl, UsedMove2Text
+ ret nz
+
+ ; check move grammar
+ ld a, [wMoveGrammar]
+ cp $3
+ ld hl, UsedMove2Text
+ ret c
+ ld hl, UsedMove1Text
+ ret
+
+UsedMove1Text:
+ text_far _UsedMove1Text
+ text_asm
+ jr UsedMoveText_CheckObedience
+
+UsedMove2Text:
+ text_far _UsedMove2Text
+ text_asm
+ ; fall through
+
+UsedMoveText_CheckObedience:
+; check obedience
+ ld a, [wMonIsDisobedient]
+ and a
+ jr z, .GetMoveNameText
+; print "instead,"
+ ld hl, .UsedInsteadText
+ ret
+
+.UsedInsteadText:
+ text_far _UsedInsteadText
+ text_asm
+ ; fall through
+
+.GetMoveNameText:
+ ld hl, MoveNameText
+ ret
+
+MoveNameText:
+ text_far _MoveNameText
+ text_asm
+ ld hl, .endusedmovetexts
+ ld a, [wMoveGrammar]
+ add a
+ push bc
+ ld b, $0
+ ld c, a
+ add hl, bc
+ pop bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+.endusedmovetexts:
+; entries correspond to MoveGrammar sets
+ dw EndUsedMove1Text
+ dw EndUsedMove2Text
+ dw EndUsedMove3Text
+ dw EndUsedMove4Text
+ dw EndUsedMove5Text
+
+EndUsedMove1Text:
+ text_far _EndUsedMove1Text
+ text_end
+
+EndUsedMove2Text:
+ text_far _EndUsedMove2Text
+ text_end
+
+EndUsedMove3Text:
+ text_far _EndUsedMove3Text
+ text_end
+
+EndUsedMove4Text:
+ text_far _EndUsedMove4Text
+ text_end
+
+EndUsedMove5Text:
+ text_far _EndUsedMove5Text
+ text_end
+
+; This function is redundant in the English localization.
+; In Japanese, it selects one of 5 distinct sentence structures.
+; In English, all of these sentences have the exact same structure,
+; so this serves no purpose.
+GetMoveGrammar:
+ push bc
+ ld a, [wMoveGrammar] ; move ID
+ ld c, a
+ ld b, $0
+ ld hl, MoveGrammar
+.loop
+ ld a, [hli]
+; end of table?
+ cp -1
+ jr z, .end
+; match?
+ cp c
+ jr z, .end
+; advance grammar type at 0
+ and a
+ jr nz, .loop
+; next grammar type
+ inc b
+ jr .loop
+
+.end
+; wMoveGrammar now contains move grammar
+ ld a, b
+ ld [wMoveGrammar], a
+ pop bc
+ ret
+
+INCLUDE "data/moves/grammar.asm"