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