English translation for the fangame eraTouhouReverse (Warning: Game is 18+)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
modified files.txt
release notes.txt



English translation for the fangame eraTouhouReverse (Warning: Game is 18+)

As per the wishes of the developer of the game, this repo and translation is held to the Creative Commons by-as version 2.5 https://creativecommons.org/licenses/by-sa/2.5/deed.en

Latest version at the time of this readme is 1.212.

You'll have to get the patches from http://eratoho.dyndns.dk/cgi/upload.php (user/pass is era/era). This is only the base game. No images or sounds are included.

Before you start translating, look at the formatted files thoroughly. the lines with ;PRINTFORMW/PRINTFORML/PRINTFORMDL <Japanese text> are to be left alone. That's why there's 2 of each. One original, the other to be translated. I CANNOT STRESS THIS ENOUGH! Any Pull request that does not follow the guidelines will not be accepted!

Getting started

  1. Fork the repo
  2. Clone your repo.
  3. Grab Notepad++/Sublime text with the EraBasic addon/Visual Studio Code with the EraBasic addon
  4. Please note: Only edit the ERB and CSV files. CSV contains the characters and stats as well as clothing and items. The ERBs are located in the "ERB" folder while the CSVs are located in the "CSV" folder.
  5. Push your changes to the "translation" branch of your repo
  6. Submit pull request

Familiarize yourself with EraBasic


Everything that's after any variant of PRINT is pretty much waiting for translation

PRINT - simply write stuff, in one line, without any variables PRINTFORM - can use variables (strings: %CALLNAME%, and numbers: {LOCAL})

PRINTL, PRINTFORML - works accordingly, but after writing stuff it goes to next line PRINTW, PRINFORMW - same as above but game stops and waits for a button/mouse press from player

You can add/remove/change all PRINT instructions as you want, until your sentence is PERFECT (correct lines, stops, etc.)

Variants of PRINTs with "S" or "V" at the end shouldn't be translated, they are for quick use of variables without having to write %% or {}

CALL whatever_in_japanese - Don't translate these, it's for calling functions BUT if structure is something like CALL xxx("text","othertext",1) you most likely can translate what's inside quotation marks

; - (semicolon) A comment, often used to explain some stuff, can be put at the beginning of line (as first character), you can write whatever you want there [SKIPSTART] [SKIPEND] - comment for disabling whole segment of code between start and stop

%CALLNAME:MASTER%, %CALLNAME:TARGET% etc. - if used with PRINTFORM it'll show character's name %HIS_HER(TARGET)%, %HIM_HER(PLAYER)% %HE_SHE(TARGET)% (sometimes also %TOSTR_THIRD(TARGET)%) - gets gender pronoun You can also start with capital letter when you add ",1" after the variable like: %any_function(TARGET,1)%


MASTER, TARGET, PLAYER, ASSISTANT - Special variables that hold ID of your and characters that you currently interact with CHARANUM - total number of characters available in the game (read only)

If you use any variation of PRINTFORM you can use variables like names of characters, numbers for stats or custom functions {} - is for numbers, %% - is for text

About statistics and flags from .csv files:
There are arrays for different variables divided into "groups" that are in CSV folders TALENT - Things that are in Talent.csv file ABL - in Abl.csv BASE - in BASE.csv etc.

When you want to show some statistic, let's say ENE (energy) of player character with PRINTFORM, you use something like this: {BASE:MASTER:ENE} There is also a way to show name from .csv file for example it you use: %ABLNAME:LOCAL% it will show corresponding name for number, like for eraTW with LOCAL = 4 it'll show "MSense" Ofc instead ABLNAME you can also use things like BASENAME, EXPNAME, ITEMNAME etc.

Translating .csv files: Things like "Virgin" talent or "C Sensitivity" ability are located in .csv files in /CSV/ folder ("TALENT.csv", "ABL.csv", [...])

Examples of EraBasic syntax:

PRINT instructions ;suffixes for PRINT instructions (in order of possible usage): PRINT(SINGLE|PLAIN)(V|S|FORM|FORMS|FORMV)(K|D)(L|W) SINGLE - cuts the part of text that normally would get shown in the next line PLAIN - disables ability for text to be recognized as button V - for numbers ({}); instead of "PRINTFORM {LOCAL}" you can write "PRINTFORMV LOCAL" S - equivalent of strings (%%) K - something with forcing kana (extremely rarely used) D - ignores color change from SETCOLOR L - makes line after printing the text W - waits for player input

;example of PRINTFORM usage: LOCALS = This LOCAL = 8 PRINTFORML %LOCALS% can use strings, and numbers like {LOCAL} result: "This can use strings, and numbers like 8"

;short form of IF inside PRINTFORM PRINTFORM ARG is @ARG > 5 ? more than 5 # less or equal to 5 @ stuff

PRINT [15] button number 15 PRINTBUTTON "text that will highlight, without need to add [16]", 16

Conditional statements

IF ARG >= 50 ;if ARG is more or equal 50 ELSEIF ARG == 20 ;if ARG equals 20 ELSE ;every other condition ENDIF

SIF ARG == 420 ;short IF, executes only one instruction that's directly under it

;Even shorter IF PRINTFORML If inside the PRINTFORM instructions: @ IS_MALE(TARGET) ? he # she @. ;note that it ignores the spaces used around the edges of he/she


SELECTCASE ARG CASE 0 ;ARG == 0 CASE 5 TO 10 ;ARG from 5 to 10 CASE 11, 15, 69 ;cases 11 15 and 69 CASE IS > 100 ;cases more than 100 CASEELSE ;other cases ENDSELECT


FOR LOCAL, 0, 42 ;loop that will go from 0 to 42 (excluding 42) ;LOCAL is variable holding of current loop count SIF LOCAL == 5 CONTINUE ;it skips case 5 and goes to next one - that is 6 ;stuff SIF LOCAL == 12 BREAK ;exits the loop completely, ignoring whether it's the last time (42 in this case) NEXT

WHILE !LOCAL ;this continues as long as LOCAL == 0 WEND

REPEAT 5 ;repeats itself 5 times ;uses global variable COUNT for ... counting REND

Changing text colors

;Changing text colors SETCOLOR 204, 0, 102 ;in rgb SETCOLOR 0xff00ff ;in hex SETCOLOR C_RED ;it also supports constant variables SETCOLOR FOO("red") ;and functions

RESETCOLOR ;use this when you're finished with fancy coloring

;example function construction: @USELESS_FUNCTION(ARG) LOCALS:1 = ;need to clear it because if you repeat this function the "+=" will add text to string again and again

SIF !IS_MALE(ARG) LOCALS:1 += "pussy and " ;when using += for a string you'll have to use quotes LOCALS:1 += "asshole" ;(this also makes adding space at the edge of string possible)

FOR LOCAL, 0, CHARANUM ;CHARANUM is constant that means number of static (in chara folder) characters LOCAL:1 ++ ;increment LOCAL:1 (it's short for LOCAL:1 = LOCAL:1 + 1) NEXT

;(you can add spaces at the edges of PRINTs btw) PRINTFORM %CALLNAME:ARG%'s %LOCALS:1% got rekt


PRINTW times ;pause and line RETURN ;it returns to previously used function that used "CALL USELESS_FUNCTION(TARGET)"