diff options
| author | SnorlaxMonster <7100450+SnorlaxMonster@users.noreply.github.com> | 2026-01-18 08:11:37 +1030 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-17 16:41:37 -0500 |
| commit | 85b9d866c8392b9ca56c1c17f82dc99a37e1011c (patch) | |
| tree | eb0ce74afcb326f2e5f4c5a8235486269009aee9 | |
| parent | Document SFX event bug inside Rocket Hideout B1F (#566) (diff) | |
| download | pokeyellow-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.asm | 16 | ||||
| -rw-r--r-- | data/text/text_2.asm | 18 | ||||
| -rw-r--r-- | engine/battle/core.asm | 138 | ||||
| -rw-r--r-- | engine/battle/used_move_text.asm | 139 |
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" |
