Remove Some Japanese Text Grammar Functions - pret/pokered GitHub Wiki
UPDATE: As of Jan. 17, 2026, the move grammar functions are stored and labeled differently in the decomp. The old method will be preserved below the more up-to-date method, to benefit those using older revisions.
Code originally by JoJoBear13 (in ShinPokered)
...
-_UsedMove1Text::
- text_start
- line "used @"
- text_end
-
-_UsedMove2Text::
+_UsedMoveText::
text_start
line "used @"
text_end
...
...
-_EndUsedMove1Text::
- text "!"
- done
-
-_EndUsedMove2Text::
- text "!"
- done
-
-_EndUsedMove3Text::
- text "!"
- done
-
-_EndUsedMove4Text::
- text "!"
- done
-
-_EndUsedMove5Text::
+_EndUsedMoveText::
text "!"
done
...
...
-_UnaffectedText::
- text "<TARGET>'s"
- line "unaffected!"
- prompt
...engine/battle/used_move_text.asm
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
+ ld hl, MonUsedMoveText
ret
-UsedMove1Text:
- text_far _UsedMove1Text
- text_asm
- jr UsedMoveText_CheckObedience
-
-UsedMove2Text:
- text_far _UsedMove2Text
+MonUsedMoveText:
+ text_far _UsedMoveText
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
+ ld hl, EndUsedMoveText
ret
+EndUsedMoveText:
+ text_far _EndUsedMoveText
+ text_end
-
-.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"
PrintMoveFailureText:
ld de, wPlayerMoveEffect
ldh a, [hWhoseTurn]
and a
jr z, .playersTurn
ld de, wEnemyMoveEffect
.playersTurn
ld hl, DoesntAffectMonText
ld a, [wDamageMultipliers]
and EFFECTIVENESS_MASK
jr z, .gotTextToPrint
ld hl, AttackMissedText
ld a, [wCriticalHitOrOHKO]
cp $ff
jr nz, .gotTextToPrint
- ld hl, UnaffectedText
+ ld hl, DoesntAffectMonText
.gotTextToPrint
push de
call PrintText
xor a
ld [wCriticalHitOrOHKO], a
pop de
ld a, [de]
cp JUMP_KICK_EFFECT
ret nz
...
...
-UnaffectedText:
- text_far _UnaffectedText
- text_end
...You can now delete the file data\moves\grammar.asm.
...
-_Used1Text::
- text_start
- line "used @"
- text_end
-_Used2Text::
- text_start
- line "used @"
- text_end
+_UsedText::
+ text_start
+ line "used @"
+ text_end
...
...
-_ExclamationPoint1Text::
- text "!"
- done
-_ExclamationPoint2Text::
- text "!"
- done
-_ExclamationPoint3Text::
- text "!"
- done
-_ExclamationPoint4Text::
- text "!"
- done
-_ExclamationPoint5Text::
- text "!"
- done
+_ExclamationPointText::
+ text "!"
+ done
...
...
-_UnaffectedText::
- text "<TARGET>'s"
- line "unaffected!"
- prompt
......
-; 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 [wd11e], a
- call DetermineExclamationPointTextNum
- ld a, [wMonIsDisobedient]
- and a
- ld hl, Used2Text
- ret nz
- ld a, [wd11e]
- cp 3
- ld hl, Used2Text
- ret c
- ld hl, Used1Text
+ ld hl, UsedText
ret
-Used1Text:
- text_far _Used1Text
- text_asm
- jr PrintInsteadText
-Used2Text:
- text_far _Used2Text
- text_asm
- ; fall through
+UsedText:
+ text_far _UsedText
+ text_asm
+ ; fall through
...
...
PrintMoveName:
ld hl, _PrintMoveName
ret
_PrintMoveName:
text_far _MoveNameText
text_asm
- ld hl, ExclamationPointPointerTable
- ld a, [wd11e] ; exclamation point num
- 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
+ ld hl, ExclamationPointText
+ ret
+ExclamationPointText:
+ text_far _ExclamationPointText
+ text_end
+ 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, [wd11e] ; 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 [wd11e], a ; exclamation point num
- pop bc
- ret
-INCLUDE "data/moves/grammar.asm"
PrintMoveFailureText:
ld de, wPlayerMoveEffect
ldh a, [hWhoseTurn]
and a
jr z, .playersTurn
ld de, wEnemyMoveEffect
.playersTurn
ld hl, DoesntAffectMonText
ld a, [wDamageMultipliers]
and $7f
jr z, .gotTextToPrint
ld hl, AttackMissedText
ld a, [wCriticalHitOrOHKO]
cp $ff
jr nz, .gotTextToPrint
- ld hl, UnaffectedText
+ ld hl, IsUnaffectedText
.gotTextToPrint
push de
call PrintText
xor a
ld [wCriticalHitOrOHKO], a
pop de
ld a, [de]
cp JUMP_KICK_EFFECT
ret nz
...
...
-UnaffectedText:
- text_far _UnaffectedText
- text_end
...delete data\moves\grammar.asm.