aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2005-11-18 01:36:14 +0000
committerTravis Howell2005-11-18 01:36:14 +0000
commit2f8306aeb4601fccbb0c58becd29488b2db43dc7 (patch)
tree2a77a7d158272e6fe0d0f12bf17cd0f635ce6612
parent9cde2621920b456fe2a2403b04af820700bf5072 (diff)
downloadscummvm-rg350-2f8306aeb4601fccbb0c58becd29488b2db43dc7.tar.gz
scummvm-rg350-2f8306aeb4601fccbb0c58becd29488b2db43dc7.tar.bz2
scummvm-rg350-2f8306aeb4601fccbb0c58becd29488b2db43dc7.zip
Add Polish charset.
Remove some hard coded values. svn-id: r19635
-rw-r--r--simon/charset.cpp146
-rw-r--r--simon/simon.cpp8
2 files changed, 136 insertions, 18 deletions
diff --git a/simon/charset.cpp b/simon/charset.cpp
index d9a285f103..d16af80edb 100644
--- a/simon/charset.cpp
+++ b/simon/charset.cpp
@@ -176,7 +176,7 @@ void SimonEngine::render_string(uint vga_sprite_id, uint color, uint width, uint
dst += READ_BE_UINT32(p);
memset(dst, 0, count);
- if (_language == 20)
+ if (_language == Common::HB_ISR)
dst += width - 1; // For Hebrew, start at the right edge, not the left.
dst_org = dst;
@@ -185,13 +185,13 @@ void SimonEngine::render_string(uint vga_sprite_id, uint color, uint width, uint
dst_org += width * 10;
dst = dst_org;
} else if ((chr -= ' ') == 0) {
- dst += (_language == 20 ? -6 : 6); // Hebrew moves to the left, all others to the right
+ dst += (_language == Common::HB_ISR ? -6 : 6); // Hebrew moves to the left, all others to the right
} else {
byte *img_hdr = src + 48 + chr * 4;
uint img_height = img_hdr[2];
uint img_width = img_hdr[3], i;
byte *img = src + READ_LE_UINT16(img_hdr);
- if (_language == 20)
+ if (_language == Common::HB_ISR)
dst -= img_width - 1; // For Hebrew, move from right edge to left edge of image.
byte *cur_dst = dst;
@@ -211,7 +211,7 @@ void SimonEngine::render_string(uint vga_sprite_id, uint color, uint width, uint
cur_dst += width;
} while (--img_height);
- if (_language != 20) // Hebrew character movement is done higher up
+ if (_language != Common::HB_ISR) // Hebrew character movement is done higher up
dst += img_width - 1;
}
}
@@ -301,8 +301,8 @@ void SimonEngine::video_putchar(FillOrCopyStruct *fcs, byte c, byte b) {
video_fill_or_copy_from_3_to_2(fcs);
} else if (c == 0xD || c == 0xA) {
video_putchar_newline(fcs);
- } else if ((c == 1 && _language != 20) || (c == 8)) {
- if (_language == 20) { //Hebrew
+ } else if ((c == 1 && _language != Common::HB_ISR) || (c == 8)) {
+ if (_language == Common::HB_ISR) { //Hebrew
if (b >= 64 && b < 91)
width = _hebrew_char_widths [b - 64];
@@ -334,7 +334,7 @@ void SimonEngine::video_putchar(FillOrCopyStruct *fcs, byte c, byte b) {
fcs->textRow--;
}
- if (_language == 20) { //Hebrew
+ if (_language == Common::HB_ISR) { //Hebrew
if (c >= 64 && c < 91)
width = _hebrew_char_widths [c - 64];
fcs->textColumnOffset -= width;
@@ -371,6 +371,7 @@ void SimonEngine::video_putchar_newline(FillOrCopyStruct *fcs) {
#ifdef PALMOS_68K
static const byte *russian_video_font;
+static const byte *polish_video_font;
static const byte *french_video_font;
static const byte *german_video_font;
static const byte *hebrew_video_font;
@@ -479,6 +480,107 @@ static const byte russian_video_font[] = {
240, 240, 240, 240, 240, 240, 240, 240,
};
+static const byte polish_video_font[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 112, 112, 32, 32, 0, 32, 0,
+ 48, 48, 96, 0, 0, 0, 0, 0,
+ 0, 0, 112, 136, 248, 128, 112, 8,
+ 0, 16, 120, 128, 112, 8, 240, 0,
+ 192, 64, 64, 96, 192, 64, 224, 0,
+ 0, 16, 40, 16, 42, 68, 58, 0,
+ 48, 48, 96, 0, 0, 0, 0, 0,
+ 0, 4, 8, 8, 8, 8, 4, 0,
+ 0, 32, 16, 16, 16, 16, 32, 0,
+ 0, 0, 20, 8, 62, 8, 20, 0,
+ 0, 32, 112, 136, 136, 136, 112, 0,
+ 0, 0, 0, 0, 0, 48, 48, 96,
+ 0, 0, 0, 240, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 48, 0,
+ 0, 32, 112, 136, 128, 136, 112, 0,
+ 112, 136, 152, 168, 200, 136, 112, 0,
+ 32, 96, 32, 32, 32, 32, 112, 0,
+ 112, 136, 8, 48, 64, 136, 248, 0,
+ 112, 136, 8, 48, 8, 136, 112, 0,
+ 16, 48, 80, 144, 248, 16, 56, 0,
+ 248, 128, 240, 8, 8, 136, 112, 0,
+ 48, 64, 128, 240, 136, 136, 112, 0,
+ 248, 136, 8, 16, 32, 32, 32, 0,
+ 112, 136, 136, 112, 136, 136, 112, 0,
+ 112, 136, 136, 120, 8, 16, 96, 0,
+ 0, 0, 48, 48, 0, 48, 48, 0,
+ 0, 32, 240, 136, 136, 136, 136, 0,
+ 80, 0, 136, 136, 136, 136, 112, 0,
+ 0, 32, 248, 144, 32, 72, 248, 0,
+ 8, 32, 248, 144, 32, 72, 248, 0,
+ 112, 136, 8, 16, 32, 0, 32, 0,
+ 0, 0, 112, 8, 120, 136, 120, 4,
+ 112, 136, 136, 248, 136, 136, 136, 0,
+ 240, 72, 72, 112, 72, 72, 240, 0,
+ 48, 72, 128, 128, 128, 72, 48, 0,
+ 224, 80, 72, 72, 72, 80, 224, 0,
+ 248, 72, 64, 112, 64, 72, 248, 0,
+ 248, 72, 64, 112, 64, 64, 224, 0,
+ 48, 72, 128, 152, 136, 72, 56, 0,
+ 136, 136, 136, 248, 136, 136, 136, 0,
+ 248, 32, 32, 32, 32, 32, 248, 0,
+ 24, 8, 8, 8, 136, 136, 112, 0,
+ 200, 72, 80, 96, 80, 72, 200, 0,
+ 224, 64, 64, 64, 64, 72, 248, 0,
+ 136, 216, 168, 168, 136, 136, 136, 0,
+ 136, 200, 168, 152, 136, 136, 136, 0,
+ 112, 136, 136, 136, 136, 136, 112, 0,
+ 240, 72, 72, 112, 64, 64, 224, 0,
+ 112, 136, 136, 136, 136, 168, 112, 8,
+ 240, 72, 72, 112, 72, 72, 200, 0,
+ 112, 136, 128, 112, 8, 136, 112, 0,
+ 248, 168, 32, 32, 32, 32, 112, 0,
+ 136, 136, 136, 136, 136, 136, 120, 0,
+ 136, 136, 136, 80, 80, 32, 32, 0,
+ 136, 136, 136, 136, 168, 216, 136, 0,
+ 136, 136, 80, 32, 80, 136, 136, 0,
+ 136, 136, 136, 112, 32, 32, 112, 0,
+ 248, 136, 16, 32, 64, 136, 248, 0,
+ 0, 14, 8, 8, 8, 8, 14, 0,
+ 0, 128, 64, 32, 16, 8, 4, 0,
+ 224, 64, 64, 96, 192, 72, 248, 0,
+ 16, 120, 128, 112, 8, 136, 112, 0,
+ 248, 72, 64, 112, 64, 72, 248, 16,
+ 32, 248, 16, 32, 64, 136, 248, 0,
+ 0, 0, 112, 8, 120, 136, 120, 0,
+ 192, 64, 80, 104, 72, 72, 112, 0,
+ 0, 0, 112, 136, 128, 136, 112, 0,
+ 24, 16, 80, 176, 144, 144, 112, 0,
+ 0, 0, 112, 136, 248, 128, 112, 0,
+ 48, 72, 64, 224, 64, 64, 224, 0,
+ 0, 0, 104, 144, 144, 112, 136, 112,
+ 192, 64, 80, 104, 72, 72, 200, 0,
+ 64, 0, 192, 64, 64, 64, 224, 0,
+ 8, 0, 8, 8, 8, 8, 136, 112,
+ 192, 64, 72, 80, 96, 80, 200, 0,
+ 192, 64, 64, 64, 64, 64, 224, 0,
+ 0, 0, 144, 216, 168, 136, 136, 0,
+ 0, 0, 240, 136, 136, 136, 136, 0,
+ 0, 0, 112, 136, 136, 136, 112, 0,
+ 0, 0, 176, 72, 72, 112, 64, 224,
+ 0, 0, 104, 144, 144, 112, 16, 56,
+ 0, 0, 176, 72, 72, 64, 224, 0,
+ 0, 0, 120, 128, 112, 8, 240, 0,
+ 64, 64, 240, 64, 64, 72, 48, 0,
+ 0, 0, 144, 144, 144, 144, 104, 0,
+ 0, 0, 136, 136, 136, 80, 32, 0,
+ 0, 0, 136, 136, 168, 216, 144, 0,
+ 0, 0, 136, 80, 32, 80, 136, 0,
+ 0, 0, 136, 136, 136, 112, 32, 192,
+ 0, 0, 248, 144, 32, 72, 248, 0,
+ 32, 80, 0, 96, 144, 144, 96, 0,
+ 0, 14, 8, 48, 8, 8, 14, 0,
+ 0, 8, 8, 8, 8, 8, 8, 0,
+ 0, 112, 16, 12, 16, 16, 112, 0,
+ 0, 0, 0, 0, 0, 0, 248, 0,
+ 252, 252, 252, 252, 252, 252, 252, 252,
+ 240, 240, 240, 240, 240, 240, 240, 240,
+};
+
static const byte french_video_font[] = {
0, 0, 0, 0, 0, 0, 0, 0,
32, 112, 112, 32, 32, 0, 32, 0,
@@ -1096,20 +1198,34 @@ void SimonEngine::video_putchar_drawchar(FillOrCopyStruct *fcs, uint x, uint y,
dst = dx_lock_2();
dst += y * _dxSurfacePitch + x * 8 + fcs->textColumnOffset;
- if (_language == 21) {
+ switch(_language == 21) {
+ case Common::RU_RUS:
src = russian_video_font + (chr - 0x20) * 8;
- } else if (_language == 20) {
+ break;
+ case Common::PL_POL:
+ src = polish_video_font + (chr - 0x20) * 8;
+ break;
+ case Common::HB_ISR:
src = hebrew_video_font + (chr - 0x20) * 8;
- } else if (_language == 5) {
+ break;
+ case Common::ES_ESP:
src = spanish_video_font + (chr - 0x20) * 8;
- } else if (_language == 3) {
+ break;
+ case Common::IT_ITA:
src = italian_video_font + (chr - 0x20) * 8;
- } else if (_language == 2) {
+ break;
+ case Common::FR_FRA:
src = french_video_font + (chr - 0x20) * 8;
- } else if (_language == 1) {
+ break;
+ case Common::DE_DEU:
src = german_video_font + (chr - 0x20) * 8;
- } else
+ break;
+ case Common::EN_USA:
src = video_font + (chr - 0x20) * 8;
+ break;
+ default:
+ error("video_putchar_drawchar: Unknown language %d\n", _language);
+ }
color = fcs->text_color;
@@ -1137,6 +1253,7 @@ void SimonEngine::video_putchar_drawchar(FillOrCopyStruct *fcs, uint x, uint y,
_GINIT(Simon_Charset)
_GSETPTR(Simon::russian_video_font, GBVARS_RUSSIANVIDEOFONT_INDEX, byte, GBVARS_SIMON)
+_GSETPTR(Simon::polish_video_font, GBVARS_POLISHVIDEOFONT_INDEX, byte, GBVARS_SIMON)
_GSETPTR(Simon::french_video_font, GBVARS_FRENCHVIDEOFONT_INDEX, byte, GBVARS_SIMON)
_GSETPTR(Simon::german_video_font, GBVARS_GERMANVIDEOFONT_INDEX, byte, GBVARS_SIMON)
_GSETPTR(Simon::hebrew_video_font, GBVARS_HEBREWVIDEOFONT_INDEX, byte, GBVARS_SIMON)
@@ -1147,6 +1264,7 @@ _GEND
_GRELEASE(Simon_Charset)
_GRELEASEPTR(GBVARS_RUSSIANVIDEOFONT_INDEX, GBVARS_SIMON)
+_GRELEASEPTR(GBVARS_POLISHVIDEOFONT_INDEX, GBVARS_SIMON)
_GRELEASEPTR(GBVARS_FRENCHVIDEOFONT_INDEX, GBVARS_SIMON)
_GRELEASEPTR(GBVARS_GERMANVIDEOFONT_INDEX, GBVARS_SIMON)
_GRELEASEPTR(GBVARS_HEBREWVIDEOFONT_INDEX, GBVARS_SIMON)
diff --git a/simon/simon.cpp b/simon/simon.cpp
index ed1194eeed..8a424e13af 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -660,19 +660,19 @@ int SimonEngine::init(GameDetector &detector) {
if ((getGameType() == GType_SIMON1) && (getFeatures() & GF_TALKIE)) {
// Add default file directories
switch (_language) {
- case 20:
+ case Common::HB_ISR:
File::addDefaultDirectory(_gameDataPath + "hebrew/");
File::addDefaultDirectory(_gameDataPath + "HEBREW/");
break;
- case 5:
+ case Common::ES_ESP:
File::addDefaultDirectory(_gameDataPath + "spanish/");
File::addDefaultDirectory(_gameDataPath + "SPANISH/");
break;
- case 3:
+ case Common::IT_ITA:
File::addDefaultDirectory(_gameDataPath + "italian/");
File::addDefaultDirectory(_gameDataPath + "ITALIAN/");
break;
- case 2:
+ case Common::FR_FRA:
File::addDefaultDirectory(_gameDataPath + "french/");
File::addDefaultDirectory(_gameDataPath + "FRENCH/");
break;