mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-04 00:19:56 +00:00
8a595e7771
- graphics code fully rewritten - Apple IIgs font support - Amiga Topaz support - Word parser rewritten - menu code rewritten - removed forced 2 second delay on all room changes replaced with heuristic to detect situations, where it's required - lots of naming cleanup - new console commands show_map, screenobj, vmvars and vmflags - all sorts of hacks/workarounds removed - added SCI wait mouse cursor - added Apple IIgs mouse cursor - added Atari ST mouse cursor - added Amiga/Apple IIgs transition - added Atari ST transition - user can select another render mode and use Apple IIgs palette + transition for PC versions - inventory screen rewritten - SetSimple command now properly implemented - PreAGI Mickey: Sierra logo now shown - saved games: now saving controller key mapping also saving automatic save data (SetSimple command) - fixed invalid memory access when saving games (31 bytes were saved using Common::String c_ptr() Special Thanks to: - fuzzie for helping out with the Apple IIgs font + valgrind - eriktorbjorn for helping out with valgrind - LordHoto for figuring out the code, that caused invalid memory access in the original code, when saving a game - sev for help out with reversing the Amiga transition currently missing: - mouse support for menu - mouse support for system dialogs - predictive dialog support
312 lines
10 KiB
C++
312 lines
10 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef AGI_PALETTE_H
|
|
#define AGI_PALETTE_H
|
|
|
|
namespace Agi {
|
|
|
|
/**
|
|
* 16 color RGB palette.
|
|
* This array contains the 6-bit RGB values of the EGA palette exported
|
|
* to the console drivers.
|
|
*/
|
|
static const uint8 PALETTE_EGA[16 * 3] = {
|
|
0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x2a,
|
|
0x00, 0x2a, 0x00,
|
|
0x00, 0x2a, 0x2a,
|
|
0x2a, 0x00, 0x00,
|
|
0x2a, 0x00, 0x2a,
|
|
0x2a, 0x15, 0x00,
|
|
0x2a, 0x2a, 0x2a,
|
|
0x15, 0x15, 0x15,
|
|
0x15, 0x15, 0x3f,
|
|
0x15, 0x3f, 0x15,
|
|
0x15, 0x3f, 0x3f,
|
|
0x3f, 0x15, 0x15,
|
|
0x3f, 0x15, 0x3f,
|
|
0x3f, 0x3f, 0x15,
|
|
0x3f, 0x3f, 0x3f
|
|
};
|
|
|
|
/**
|
|
* 4 color CGA palette.
|
|
*/
|
|
static const uint8 PALETTE_CGA[4 * 3] = {
|
|
0x00, 0x00, 0x00, // black
|
|
0x55, 0xff, 0xff, // cyan
|
|
0xff, 0x55, 0xff, // magenta
|
|
0xff, 0xff, 0xff
|
|
};
|
|
|
|
/**
|
|
* Atari ST AGI palette.
|
|
* Used by all of the tested Atari ST AGI games
|
|
* from Donald Duck's Playground (1986) to Manhunter II (1989).
|
|
* 16 RGB colors. 3 bits per color component.
|
|
*/
|
|
static const uint8 PALETTE_ATARI_ST[16 * 3] = {
|
|
0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0x7,
|
|
0x0, 0x4, 0x0,
|
|
0x0, 0x5, 0x4,
|
|
0x5, 0x0, 0x0,
|
|
0x5, 0x3, 0x6,
|
|
0x4, 0x3, 0x0,
|
|
0x5, 0x5, 0x5,
|
|
0x3, 0x3, 0x2,
|
|
0x0, 0x5, 0x7,
|
|
0x0, 0x6, 0x0,
|
|
0x0, 0x7, 0x6,
|
|
0x7, 0x2, 0x3,
|
|
0x7, 0x4, 0x7,
|
|
0x7, 0x7, 0x4,
|
|
0x7, 0x7, 0x7
|
|
};
|
|
|
|
/**
|
|
* Second generation Apple IIGS AGI palette.
|
|
* A 16-color, 12-bit RGB palette.
|
|
*
|
|
* Used by at least the following Apple IIGS AGI versions:
|
|
* 1.003 (Leisure Suit Larry I v1.0E, intro says 1987)
|
|
* 1.005 (AGI Demo 2 1987-06-30?)
|
|
* 1.006 (King's Quest I v1.0S 1988-02-23)
|
|
* 1.007 (Police Quest I v2.0B 1988-04-21 8:00am)
|
|
* 1.013 (King's Quest II v2.0A 1988-06-16 (CE))
|
|
* 1.013 (Mixed-Up Mother Goose v2.0A 1988-05-31 10:00am)
|
|
* 1.014 (King's Quest III v2.0A 1988-08-28 (CE))
|
|
* 1.014 (Space Quest II v2.0A, LOGIC.141 says 1988)
|
|
* 2.004 (Manhunter I v2.0E 1988-10-05 (CE))
|
|
* 2.006 (King's Quest IV v1.0K 1988-11-22 (CE))
|
|
* 3.001 (Black Cauldron v1.0O 1989-02-24 (CE))
|
|
* 3.003 (Gold Rush! v1.0M 1989-02-28 (CE))
|
|
*/
|
|
// *NOT* identical to Amiga generation 2 palette
|
|
static const uint8 PALETTE_APPLE_II_GS[16 * 3] = {
|
|
0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0xF,
|
|
0x0, 0x8, 0x0,
|
|
0x0, 0xD, 0xB,
|
|
0xC, 0x0, 0x0,
|
|
0xB, 0x7, 0xD,
|
|
0x8, 0x5, 0x0,
|
|
0xB, 0xB, 0xB,
|
|
0x7, 0x7, 0x7,
|
|
0x0, 0xB, 0xF,
|
|
0x0, 0xE, 0x0,
|
|
0x0, 0xF, 0xD,
|
|
0xF, 0x9, 0x8,
|
|
0xD, 0x9, 0xF, // difference between Amiga v2 palette and Apple II GS palette, gotten from emulator (SQ2)
|
|
0xE, 0xE, 0x0,
|
|
0xF, 0xF, 0xF
|
|
};
|
|
|
|
/**
|
|
* First generation Amiga & Apple IIGS AGI palette.
|
|
* A 16-color, 12-bit RGB palette.
|
|
*
|
|
* Used by at least the following Amiga AGI versions:
|
|
* 2.082 (King's Quest I v1.0U 1986)
|
|
* 2.082 (Space Quest I v1.2 1986)
|
|
* 2.090 (King's Quest III v1.01 1986-11-08)
|
|
* 2.107 (King's Quest II v2.0J 1987-01-29)
|
|
* x.yyy (Black Cauldron v2.00 1987-06-14)
|
|
* x.yyy (Larry I v1.05 1987-06-26)
|
|
*
|
|
* Also used by at least the following Apple IIGS AGI versions:
|
|
* 1.002 (Space Quest I, intro says v2.2 1987)
|
|
*/
|
|
static const uint8 PALETTE_AMIGA_V1[16 * 3] = {
|
|
0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0xF,
|
|
0x0, 0x8, 0x0,
|
|
0x0, 0xD, 0xB,
|
|
0xC, 0x0, 0x0,
|
|
0xB, 0x7, 0xD,
|
|
0x8, 0x5, 0x0,
|
|
0xB, 0xB, 0xB,
|
|
0x7, 0x7, 0x7,
|
|
0x0, 0xB, 0xF,
|
|
0x0, 0xE, 0x0,
|
|
0x0, 0xF, 0xD,
|
|
0xF, 0x9, 0x8,
|
|
0xF, 0x7, 0x0,
|
|
0xE, 0xE, 0x0,
|
|
0xF, 0xF, 0xF
|
|
};
|
|
|
|
/**
|
|
* Second generation Amiga AGI palette.
|
|
* A 16-color, 12-bit RGB palette.
|
|
*
|
|
* Used by at least the following Amiga AGI versions:
|
|
* 2.202 (Space Quest II v2.0F. Intro says 1988. ScummVM 0.10.0 detects as 1986-12-09)
|
|
*/
|
|
static const uint8 PALETTE_AMIGA_V2[16 * 3] = {
|
|
0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0xF,
|
|
0x0, 0x8, 0x0,
|
|
0x0, 0xD, 0xB,
|
|
0xC, 0x0, 0x0,
|
|
0xB, 0x7, 0xD,
|
|
0x8, 0x5, 0x0,
|
|
0xB, 0xB, 0xB,
|
|
0x7, 0x7, 0x7,
|
|
0x0, 0xB, 0xF,
|
|
0x0, 0xE, 0x0,
|
|
0x0, 0xF, 0xD,
|
|
0xF, 0x9, 0x8,
|
|
0xD, 0x0, 0xF,
|
|
0xE, 0xE, 0x0,
|
|
0xF, 0xF, 0xF
|
|
};
|
|
|
|
/**
|
|
* Third generation Amiga AGI palette.
|
|
* A 16-color, 12-bit RGB palette.
|
|
*
|
|
* Used by at least the following Amiga AGI versions:
|
|
* 2.310 (Police Quest I v2.0B 1989-02-22)
|
|
* 2.316 (Gold Rush! v2.05 1989-03-09)
|
|
* x.yyy (Manhunter I v1.06 1989-03-18)
|
|
* 2.333 (Manhunter II v3.06 1989-08-17)
|
|
* 2.333 (King's Quest III v2.15 1989-11-15)
|
|
*/
|
|
static const uint8 PALETTE_AMIGA_V3[16 * 3] = {
|
|
0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0xB,
|
|
0x0, 0xB, 0x0,
|
|
0x0, 0xB, 0xB,
|
|
0xB, 0x0, 0x0,
|
|
0xB, 0x0, 0xB,
|
|
0xC, 0x7, 0x0,
|
|
0xB, 0xB, 0xB,
|
|
0x7, 0x7, 0x7,
|
|
0x0, 0x0, 0xF,
|
|
0x0, 0xF, 0x0,
|
|
0x0, 0xF, 0xF,
|
|
0xF, 0x0, 0x0,
|
|
0xF, 0x0, 0xF,
|
|
0xF, 0xF, 0x0,
|
|
0xF, 0xF, 0xF
|
|
};
|
|
|
|
/**
|
|
* 16 color amiga-ish palette.
|
|
*/
|
|
static const uint8 PALETTE_AMIGA_ALT[16 * 3] = {
|
|
0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x3f,
|
|
0x00, 0x2A, 0x00,
|
|
0x00, 0x2A, 0x2A,
|
|
0x33, 0x00, 0x00,
|
|
0x2f, 0x1c, 0x37,
|
|
0x23, 0x14, 0x00,
|
|
0x2f, 0x2f, 0x2f,
|
|
0x15, 0x15, 0x15,
|
|
0x00, 0x2f, 0x3f,
|
|
0x00, 0x33, 0x15,
|
|
0x15, 0x3F, 0x3F,
|
|
0x3f, 0x27, 0x23,
|
|
0x3f, 0x15, 0x3f,
|
|
0x3b, 0x3b, 0x00,
|
|
0x3F, 0x3F, 0x3F
|
|
};
|
|
|
|
/**
|
|
* 256 color palette used with AGI256 and AGI256-2 games.
|
|
* Uses full 8 bits per color component.
|
|
* This is NOT the standard VGA palette.
|
|
*/
|
|
static const uint8 PALETTE_VGA[256 * 3] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x00, 0xA8, 0xA8,
|
|
0xA8, 0x00, 0x00, 0xA8, 0x00, 0xA8, 0xA8, 0x54, 0x00, 0xA8, 0xA8, 0xA8,
|
|
0x54, 0x54, 0x54, 0x54, 0x54, 0xFC, 0x54, 0xFC, 0x54, 0x54, 0xFC, 0xFC,
|
|
0xFC, 0x54, 0x54, 0xFC, 0x54, 0xFC, 0xFC, 0xFC, 0x54, 0xFC, 0xFC, 0xFC,
|
|
0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0x20, 0x20, 0x20, 0x2C, 0x2C, 0x2C,
|
|
0x38, 0x38, 0x38, 0x44, 0x44, 0x44, 0x50, 0x50, 0x50, 0x60, 0x60, 0x60,
|
|
0x70, 0x70, 0x70, 0x80, 0x80, 0x80, 0x90, 0x90, 0x90, 0xA0, 0xA0, 0xA0,
|
|
0xB4, 0xB4, 0xB4, 0xC8, 0xC8, 0xC8, 0xE0, 0xE0, 0xE0, 0xFC, 0xFC, 0xFC,
|
|
0x00, 0x00, 0xFC, 0x40, 0x00, 0xFC, 0x7C, 0x00, 0xFC, 0xBC, 0x00, 0xFC,
|
|
0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xBC, 0xFC, 0x00, 0x7C, 0xFC, 0x00, 0x40,
|
|
0xFC, 0x00, 0x00, 0xFC, 0x40, 0x00, 0xFC, 0x7C, 0x00, 0xFC, 0xBC, 0x00,
|
|
0xFC, 0xFC, 0x00, 0xBC, 0xFC, 0x00, 0x7C, 0xFC, 0x00, 0x40, 0xFC, 0x00,
|
|
0x00, 0xFC, 0x00, 0x00, 0xFC, 0x40, 0x00, 0xFC, 0x7C, 0x00, 0xFC, 0xBC,
|
|
0x00, 0xFC, 0xFC, 0x00, 0xBC, 0xFC, 0x00, 0x7C, 0xFC, 0x00, 0x40, 0xFC,
|
|
0x7C, 0x7C, 0xFC, 0x9C, 0x7C, 0xFC, 0xBC, 0x7C, 0xFC, 0xDC, 0x7C, 0xFC,
|
|
0xFC, 0x7C, 0xFC, 0xFC, 0x7C, 0xDC, 0xFC, 0x7C, 0xBC, 0xFC, 0x7C, 0x9C,
|
|
0xFC, 0x7C, 0x7C, 0xFC, 0x9C, 0x7C, 0xFC, 0xBC, 0x7C, 0xFC, 0xDC, 0x7C,
|
|
0xFC, 0xFC, 0x7C, 0xDC, 0xFC, 0x7C, 0xBC, 0xFC, 0x7C, 0x9C, 0xFC, 0x7C,
|
|
0x7C, 0xFC, 0x7C, 0x7C, 0xFC, 0x9C, 0x7C, 0xFC, 0xBC, 0x7C, 0xFC, 0xDC,
|
|
0x7C, 0xFC, 0xFC, 0x7C, 0xDC, 0xFC, 0x7C, 0xBC, 0xFC, 0x7C, 0x9C, 0xFC,
|
|
0xB4, 0xB4, 0xFC, 0xC4, 0xB4, 0xFC, 0xD8, 0xB4, 0xFC, 0xE8, 0xB4, 0xFC,
|
|
0xFC, 0xB4, 0xFC, 0xFC, 0xB4, 0xE8, 0xFC, 0xB4, 0xD8, 0xFC, 0xB4, 0xC4,
|
|
0xFC, 0xB4, 0xB4, 0xFC, 0xC4, 0xB4, 0xFC, 0xD8, 0xB4, 0xFC, 0xE8, 0xB4,
|
|
0xFC, 0xFC, 0xB4, 0xE8, 0xFC, 0xB4, 0xD8, 0xFC, 0xB4, 0xC4, 0xFC, 0xB4,
|
|
0xB4, 0xFC, 0xB4, 0xB4, 0xFC, 0xC4, 0xB4, 0xFC, 0xD8, 0xB4, 0xFC, 0xE8,
|
|
0xB4, 0xFC, 0xFC, 0xB4, 0xE8, 0xFC, 0xB4, 0xD8, 0xFC, 0xB4, 0xC4, 0xFC,
|
|
0x00, 0x00, 0x70, 0x1C, 0x00, 0x70, 0x38, 0x00, 0x70, 0x54, 0x00, 0x70,
|
|
0x70, 0x00, 0x70, 0x70, 0x00, 0x54, 0x70, 0x00, 0x38, 0x70, 0x00, 0x1C,
|
|
0x70, 0x00, 0x00, 0x70, 0x1C, 0x00, 0x70, 0x38, 0x00, 0x70, 0x54, 0x00,
|
|
0x70, 0x70, 0x00, 0x54, 0x70, 0x00, 0x38, 0x70, 0x00, 0x1C, 0x70, 0x00,
|
|
0x00, 0x70, 0x00, 0x00, 0x70, 0x1C, 0x00, 0x70, 0x38, 0x00, 0x70, 0x54,
|
|
0x00, 0x70, 0x70, 0x00, 0x54, 0x70, 0x00, 0x38, 0x70, 0x00, 0x1C, 0x70,
|
|
0x38, 0x38, 0x70, 0x44, 0x38, 0x70, 0x54, 0x38, 0x70, 0x60, 0x38, 0x70,
|
|
0x70, 0x38, 0x70, 0x70, 0x38, 0x60, 0x70, 0x38, 0x54, 0x70, 0x38, 0x44,
|
|
0x70, 0x38, 0x38, 0x70, 0x44, 0x38, 0x70, 0x54, 0x38, 0x70, 0x60, 0x38,
|
|
0x70, 0x70, 0x38, 0x60, 0x70, 0x38, 0x54, 0x70, 0x38, 0x44, 0x70, 0x38,
|
|
0x38, 0x70, 0x38, 0x38, 0x70, 0x44, 0x38, 0x70, 0x54, 0x38, 0x70, 0x60,
|
|
0x38, 0x70, 0x70, 0x38, 0x60, 0x70, 0x38, 0x54, 0x70, 0x38, 0x44, 0x70,
|
|
0x50, 0x50, 0x70, 0x58, 0x50, 0x70, 0x60, 0x50, 0x70, 0x68, 0x50, 0x70,
|
|
0x70, 0x50, 0x70, 0x70, 0x50, 0x68, 0x70, 0x50, 0x60, 0x70, 0x50, 0x58,
|
|
0x70, 0x50, 0x50, 0x70, 0x58, 0x50, 0x70, 0x60, 0x50, 0x70, 0x68, 0x50,
|
|
0x70, 0x70, 0x50, 0x68, 0x70, 0x50, 0x60, 0x70, 0x50, 0x58, 0x70, 0x50,
|
|
0x50, 0x70, 0x50, 0x50, 0x70, 0x58, 0x50, 0x70, 0x60, 0x50, 0x70, 0x68,
|
|
0x50, 0x70, 0x70, 0x50, 0x68, 0x70, 0x50, 0x60, 0x70, 0x50, 0x58, 0x70,
|
|
0x00, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, 0x00, 0x40, 0x30, 0x00, 0x40,
|
|
0x40, 0x00, 0x40, 0x40, 0x00, 0x30, 0x40, 0x00, 0x20, 0x40, 0x00, 0x10,
|
|
0x40, 0x00, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, 0x00, 0x40, 0x30, 0x00,
|
|
0x40, 0x40, 0x00, 0x30, 0x40, 0x00, 0x20, 0x40, 0x00, 0x10, 0x40, 0x00,
|
|
0x00, 0x40, 0x00, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, 0x00, 0x40, 0x30,
|
|
0x00, 0x40, 0x40, 0x00, 0x30, 0x40, 0x00, 0x20, 0x40, 0x00, 0x10, 0x40,
|
|
0x20, 0x20, 0x40, 0x28, 0x20, 0x40, 0x30, 0x20, 0x40, 0x38, 0x20, 0x40,
|
|
0x40, 0x20, 0x40, 0x40, 0x20, 0x38, 0x40, 0x20, 0x30, 0x40, 0x20, 0x28,
|
|
0x40, 0x20, 0x20, 0x40, 0x28, 0x20, 0x40, 0x30, 0x20, 0x40, 0x38, 0x20,
|
|
0x40, 0x40, 0x20, 0x38, 0x40, 0x20, 0x30, 0x40, 0x20, 0x28, 0x40, 0x20,
|
|
0x20, 0x40, 0x20, 0x20, 0x40, 0x28, 0x20, 0x40, 0x30, 0x20, 0x40, 0x38,
|
|
0x20, 0x40, 0x40, 0x20, 0x38, 0x40, 0x20, 0x30, 0x40, 0x20, 0x28, 0x40,
|
|
0x2C, 0x2C, 0x40, 0x30, 0x2C, 0x40, 0x34, 0x2C, 0x40, 0x3C, 0x2C, 0x40,
|
|
0x40, 0x2C, 0x40, 0x40, 0x2C, 0x3C, 0x40, 0x2C, 0x34, 0x40, 0x2C, 0x30,
|
|
0x40, 0x2C, 0x2C, 0x40, 0x30, 0x2C, 0x40, 0x34, 0x2C, 0x40, 0x3C, 0x2C,
|
|
0x40, 0x40, 0x2C, 0x3C, 0x40, 0x2C, 0x34, 0x40, 0x2C, 0x30, 0x40, 0x2C,
|
|
0x2C, 0x40, 0x2C, 0x2C, 0x40, 0x30, 0x2C, 0x40, 0x34, 0x2C, 0x40, 0x3C,
|
|
0x2C, 0x40, 0x40, 0x2C, 0x3C, 0x40, 0x2C, 0x34, 0x40, 0x2C, 0x30, 0x40,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
};
|
|
|
|
} // End of namespace Agi
|
|
|
|
#endif /* AGI_PALETTE_H */
|