If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Tetris (iOS)
Tetris |
---|
Developer:
EA Mobile
|
It's the classic Tetris on your phone! What more could you need? How about a Season Pass? Some DLC? How about exclusive content locked behind a Club Tetris membership?
Wait, what do you mean that's not what you wanted?
Excel Spreadsheet
![]() |
Download Tetris (iOS) Spreadsheet
File: tetrisiosspreadsheet.rar (77 KB) (info)
|
An Excel spreadsheet containing all of the game's text, along with some notes for the translator. The game never uses any text from this file.
Unused Text
[default] ; GENERAL DummyProperty1 = 1 DummyProperty2 = 2 DummyProperty3 = 3 ; KEYBOARD ;------------------------------------------------------------------------------- ; The Blast virtual key names can be found in header file "Key.h" ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; OS key code to Blast virtual keys. ;------------------------------------------------------------------------------- ; Maps OS key codes to Blast virtual keys for extra keys not normalized by the OS. ; Some devices provides extra-keys that do not map to any OS virtual key code. For ; example, J2ME only defines few numpad virtual keys. Some J2ME devices has full ; QWERTY keyboards and the letters do not have any OS virtual key mapping. In ; such case, Blast has to provide the correct mapping. ; ; Multiple key codes can map to the same VK. For example if the device sends ; differents key code if the modifier keys are pressed or if the keycode sent ; for the pressed state is different than the keycode sent for the release state. ; ; Format must be: keyCodeValue = virtualKeyName ; ; [devices: HTC544] ; 8234 = kLetterA ; Key code sent when key 'A' is pressed. ; 4328 = kLetterA ; Key code sent when key 'A, is released. ; 3242 = kLetterA ; Key code sent when keys 'Shift' and 'A' are pressed. ; ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; Blast virtual keys meta data for text edition and game help text. ;------------------------------------------------------------------------------- ; It is possible to embeds meta data associated with a virtual key. The meta ; data is used for text edition if the OS does not provide proper support. The ; following fields are recongnized. ; ; char: The list of character associated with the key. ; shift: The list of character associated with the key when the shift key is pressed. ; alt: The list of character associated with the key when the alt key is pressed. ; ctrl: The list of character associated with the key when the ctrl key is pressed. ; fn; The list of character associated with the key when the fn key is pressed. ; ; If a value is not defined, the field can be empty, tail values can be ommited. In the ; list, if the key represents a number, it must be first, then letters and finally ; symbols. ; ; Encode any non-ASCII characters using the 16-bits char C++ notation. (\x3AF2) ; ; Format must be: virtualKeyName = char,shift,alt,ctrl,fn ; ; The Blast virtual key names can be found in file "Key.cpp" ; ; [platforms: Win32] ; kDigit2 = 2,",\x010F ; kLetterA = a,A ; ; [devices:VX7000, VX8000, VX8100] ; kNumPad0 = 0 ; kNumpad2 = 2abc,2ABC ; ; [devices:BB8100] ; kLetterQ = qw,QW,! ; kLetterE = 1er,1ER ; kLetterT = 2ty,2TY ; kLetterU = 3ui,3UI ; kLetterO = op,OP,. ;-------------------------------------------------------------------------------
EAMCore.ini is almost entirely comprised of commented out text.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WARNING !!! ; ; ; ; If you modify the local version of this file (located in TetrisApp\dev\data\Assets\GameDesignerConstants) and submit it on P4, ; ; please inform Macaron so that he can upload the latest revision of the file on the server. ; ; ; ; Otherwise, since the game always downloads and uses the version of GameDesignerConstants.ini located on the server at game launch, ; ; it won't use the local GameDesignerConstants.ini file where local modifications are, which will be VERY misleading if someone wants to do ; ; some tests by modifying this file... ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
This warning for developers is found in GameDesignerConstants.ini.
; Put comment here to describe more exactly where is the planet identified by this ID: EX First Galaxy, Second Planet ; Put comment here to describe more exactly where is the planet identified by this ID: EX First Galaxy, Second Planet ; Put comment here to describe more exactly where is the planet identified by this ID: EX First Galaxy, Second Planet ; The 2 following fields are additive, meaning that if you enter "1" in the hour field and "120" in the minutes field, the total cooldown time will be 1h + 2h = 3 hours
In the same file, there are also a few developer comments.
Perl Script
A Perl script, stored in lang_plist_maker_script_.pl. It was likely used to split the Excel spreadsheet (see above) into multiple language files.
#!/usr/bin/perl -w #Requires Spreadsheed::ParseExcel http://search.cpan.org/~kwitknr/Spreadsheet-ParseExcel-0.2603/ParseExcel.pm INSTALL LAST #Requires Crypt::RC4 http://www.perl.org/CPAN/authors/id/S/SI/SIFUKURT/Crypt-RC4-2.02.tar.gz #Requires Digest::Perl::MD5 http://www.perl.org/CPAN/authors/id/D/DE/DELTA/Digest-Perl-MD5-1.8.tar.gz #Requires IO::Scalar http://search.cpan.org/~dskoll/IO-stringy-2.110/lib/IO/Scalar.pm #Requires OLE::Storage_Lite http://search.cpan.org/~jmcnamara/OLE-Storage_Lite-0.19/lib/OLE/Storage_Lite.pm use strict; use Switch; use Spreadsheet::ParseExcel; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('EBISU_Strings_with_ID.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } print "FILE :", $workbook->{File} , "\n"; print "COUNT :", $workbook->{SheetCount} , "\n"; print "AUTHOR:", $workbook->{Author} , "\n"; open(my $arrFileHandle, ">:utf8", "EBISU_StringExport_Array.h") or die "EBISU_StringExport_Array.h $!"; open(my $enumFileHandle, ">:utf8", "EBISU_StringExport_Defines.h") or die "EBISU_StringExport_Defines.h $!"; # Print headers for Array file. my $time = localtime(time); print $arrFileHandle "// This file was auto-generated on: ", $time; print $arrFileHandle "\n\n#ifndef __EBISU_STRINGEXPORT_ARRAY_H__\n"; print $arrFileHandle "#define __EBISU_STRINGEXPORT_ARRAY_H__\n"; print $arrFileHandle "NSString * const cKeyArray[] = {\n"; # Print header for Defines file print $enumFileHandle "// This file was auto-generated on: ", $time; print $enumFileHandle "\n\n#ifndef __EBISU_STRINGEXPORT_DEFINES_H__\n"; print $enumFileHandle "#define __EBISU_STRINGEXPORT_DEFINES_H__\n"; print $enumFileHandle "typedef enum {\n"; my @languages = (); my @fileHandles = (); my $worksheet = $workbook->{Worksheet}[0]; my $worksheetName = $worksheet->get_name(); print "--------- SHEET:", $worksheet->{Name}, "\n"; #grab the language names out of this worksheet, and initialize the plists my ( $col_min, $col_max ) = $worksheet->col_range(); my ( $row_min, $row_max ) = $worksheet->row_range(); my $itt = 0; for my $col ( $col_min .. $col_max ) { my $cell = $worksheet->get_cell( $row_min, $col ); if( !defined($cell)) { print "Undefined cell at Row: ", $row_min, " Col: ", $col, "\n"; } my $val = $cell->value(); if( $val && $val ne '' && $val ne 'String ID' && $val ne 'English Status' && $val ne 'Comments' && $val ne 'Max Length') { print "Initializing = ", $val, "\n"; $languages[$itt] = $val; my $fileName = "$val.plist"; print "Opening file, ", $fileName; open($fileHandles[$itt], ">:utf8", $fileName) or die "$fileName: $!"; my $handle = $fileHandles[$itt]; print $handle "<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE plist PUBLIC '-//Apple Computer//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'><plist version='1.0'><dict>"; $itt++; } } print "\n"; print "Parsing worksheet: ", $worksheetName, "\n"; my $didUpdateArrayAndEnumFiles = 0; for my $col ( $col_min .. $col_max ) { my $testCell = $worksheet->get_cell( $row_min, $col ); my $colTitle = $testCell->value(); if( $colTitle && $colTitle ne '' && $colTitle ne 'String ID' && $colTitle ne 'English Status' && $colTitle ne 'Comments' && $colTitle ne 'Max Length') { my $index = 0; print "Column Title: ", $colTitle, "\n"; while($languages[$index] ne $colTitle) { #print "Language: ", $languages[$index], " ", $index, "\n"; $index++; } my $fileHandle = $fileHandles[$index]; for my $row ( ($row_min + 1) .. $row_max ) { my $keyCell = $worksheet->get_cell( $row, $col_min ); #keys must be in the leftmost column next unless $keyCell; my $valueCell = $worksheet->get_cell( $row, $col ); next unless $valueCell; my $key = $keyCell->value(); my $value = $valueCell->value(); $value =~ s/</@/g; $value =~ s/>/@/g; if($key ne '') { print $fileHandle "<key>$key</key><string>$value</string>\n"; if($didUpdateArrayAndEnumFiles == 0) { #print to array and enum files print $arrFileHandle " [$key] = @\"$key\",\n"; print $enumFileHandle " $key,\n"; } } } $didUpdateArrayAndEnumFiles = 1; } } print $arrFileHandle "};"; print $arrFileHandle "\n#endif\n"; print $enumFileHandle "} eStringKey;"; print $enumFileHandle "\n#endif\n"; for my $handle ( @fileHandles ) { print $handle "</dict></plist>"; close $handle; }
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Electronic Arts > Games developed by EA Mobile
Games > Games by platform > IOS games
Games > Games by publisher > Games published by Electronic Arts
Games > Games by release date > Games released in 2008
Games > Games by series > Tetris series