In Japanese, there are five ways to say "*POKéMON* used *MOVE*!": - "*POKéMON*の *MOVE* つかった!" ("*POKéMON* used *MOVE*!") - "*POKéMON*の *MOVE*した!" ("*POKéMON* did *MOVE*!") - "*POKéMON*の *MOVE* した!" ("*POKéMON* did *MOVE*!" for long move names) - "*POKéMON*の *MOVE* こうげき!" ("*POKéMON*'s *MOVE* attack!") - "*POKéMON*の *MOVE*!" ("*POKéMON*'s *MOVE*!") This tutorial will showcase how to localize and restore the grammar table that once held the code responsible for showing these five ways. This tutorial will also fix grammatical issues with some of the move text. ## Contents 1. [Add in new, translated move text and fix other text](#1-add-in-new-translated-move-text-and-fix-other-text) 2. [Make the move text show properly ingame](#2-make-the-move-text-show-properly-ingame) ## 1. Add in new, translated move text and fix other text Edit [data/text/common_2.asm](../blob/master/data/text/common_2.asm): ```diff _ActorNameText:: text "@" text_end _UsedMove1Text:: - text_start + text " used" - line "used @" + line "@" text_end _UsedMove2Text:: +_UsedMove3Text:: - text_start + text " did" - line "used @" + line "@" text_end + +_UsedMove4Text:: +_UsedMove5Text:: + text "'s" + line "@" + text_end + _UsedInsteadText:: - text "instead," + text " instead used" - cont "@" + line "@" text_end _MoveNameText:: text_ram wStringBuffer2 text_end - - text_end ; unused _EndUsedMove1Text:: +_EndUsedMove2Text:: +_EndUsedMove3Text:: +_EndUsedMove5Text:: text "!" done -_EndUsedMove2Text:: - text "!" - done - -_EndUsedMove3Text:: - text "!" - done - _EndUsedMove4Text:: - text "!" + text " attack!" done - -_EndUsedMove5Text:: - text "!" - done ``` ## 2. Make the move text show properly ingame Edit [engine/battle/used_move_text.asm](../blob/master/engine/battle/used_move_text.asm): ```diff push hl farcall CheckUserIsCharging pop hl jr nz, .grammar ; update last move ld a, [wMoveGrammar] ld [hl], a ld [de], a .grammar call GetMoveGrammar ; convert move id to grammar index - -; everything except 'instead' made redundant in localization ; check obedience ld a, [wAlreadyDisobeyed] and a - ld hl, UsedMove2Text ret nz ; check move grammar ld a, [wMoveGrammar] - cp $3 + and a - ld hl, UsedMove2Text + ld hl, UsedMove1Text - ret c + ret z + dec a - ld hl, UsedMove1Text + ld hl, UsedMove2Text + ret z + dec a + ld hl, UsedMove3Text + ret z + dec a + ld hl, UsedMove4Text + ret z + ld hl, UsedMove5Text ret UsedMove1Text: text_far _UsedMove1Text text_asm jr UsedMoveText_CheckObedience UsedMove2Text: text_far _UsedMove2Text text_asm + jr UsedMoveText_CheckObedience + +UsedMove3Text: + text_far _UsedMove3Text + text_asm + jr UsedMoveText_CheckObedience + +UsedMove4Text: + text_far _UsedMove4Text + text_asm + jr UsedMoveText_CheckObedience + -UsedMove2Text: +UsedMove5Text: - text_far _UsedMove2Text + text_far _UsedMove5Text text_asm UsedMoveText_CheckObedience: ; check obedience ld a, [wAlreadyDisobeyed] and a jr z, .GetMoveNameText -; print "instead," +; print "instead used" ld hl, .UsedInsteadText ret ``` Older versions of pokecrystal may use `db "@"` in place of `text_end`.