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 /engine | |
| 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.
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/battle/core.asm | 138 | ||||
| -rw-r--r-- | engine/battle/used_move_text.asm | 139 |
2 files changed, 142 insertions, 135 deletions
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" |
