DS: Merge changes from 1.1.0 branch into trunk

svn-id: r48677
This commit is contained in:
Max Horn 2010-04-16 20:49:16 +00:00
parent 17c0c846aa
commit b191acf7cc
2 changed files with 127 additions and 101 deletions

View file

@ -41,6 +41,15 @@ Visit the main ScummVM website <http://www.scummvm.org>
What's New? What's New?
------------------------------------------------------------------------ ------------------------------------------------------------------------
ScummVM DS 1.1.0
* New games are supported in this stable build: Return to Zork, Rodney's
Funscreen, Manhole, Leather Goddess of Phobos 2, Cruise for a Corpse.
ScummVM DS 1.0.0
* No changes!
ScummVM DS 1.0.0 RC1 ScummVM DS 1.0.0 RC1
* Gamma correction feature to improve brightness level of game on the * Gamma correction feature to improve brightness level of game on the
@ -226,25 +235,25 @@ Here is what you need to do:
If your copy of ScummVM DS has been successfully patched, you will get a If your copy of ScummVM DS has been successfully patched, you will get a
message on the top screen that looks like this: message on the top screen that looks like this:
DLDI Device: DLDI Device:
GBA Movie Player (Compact Flash) GBA Movie Player (Compact Flash)
The message should show the name of your card reader. If it is wrong, The message should show the name of your card reader. If it is wrong,
you have used the wrong DLDI file. you have used the wrong DLDI file.
If you haven't patched your .nds file, you will get the following message If you haven't patched your .nds file, you will get the following message
DLDI Driver not patched! DLDI Driver not patched!
DLDI Initialise failed. DLDI Initialise failed.
In this case, you've made a mistake following the above instructions, or In this case, you've made a mistake following the above instructions, or
have patched the wrong file. have patched the wrong file.
You may also see the following message: You may also see the following message:
DLDI Device: DLDI Device:
GBA Movie Player (Compact Flash) GBA Movie Player (Compact Flash)
DLDI Initialise failed. DLDI Initialise failed.
In this case, the driver did not start up correctly. The driver is In this case, the driver did not start up correctly. The driver is
probably broken, or you've used the wrong one for your card reader. probably broken, or you've used the wrong one for your card reader.
@ -310,7 +319,7 @@ CANNOT DO THIS.
------------------------------------------------------------------------ ------------------------------------------------------------------------
I'm glad you asked. Here is a list of the compatible games in version I'm glad you asked. Here is a list of the compatible games in version
1.0.0 RC1. Demo versions of the games listed should work too. 1.1.0. Demo versions of the games listed should work too.
Flight of the Amazon Queen, Beneath a Steel Sky, and Lure of the Flight of the Amazon Queen, Beneath a Steel Sky, and Lure of the
Temptress have generously been released as freeware by the original Temptress have generously been released as freeware by the original
@ -342,9 +351,9 @@ Monkey Island 2: LeChuck's Revenge A
Indiana Jones and the Fate of Atlantis A Indiana Jones and the Fate of Atlantis A
Day of the Tentacle A Day of the Tentacle A
Sam & Max Hit the Road A Some slowdown in a few scenes Sam & Max Hit the Road A Some slowdown in a few scenes
when MP3 audio is enabled when MP3 audio is enabled
Bear Stormin' (DOS) A Bear Stormin' (DOS) A
@ -400,6 +409,16 @@ Lure of the Temptress G
Nippon Safes G Nippon Safes G
Return to Zork I
Leather Goddess of Phobos 2 I
Manhole I
Rodney's Funscreen I
Cruise for a Corpse K
Full Throttle and The Dig can run on the DS using an external RAM pack Full Throttle and The Dig can run on the DS using an external RAM pack
plugged into slot-2 (the GBA slot). To do this, download the special plugged into slot-2 (the GBA slot). To do this, download the special
@ -456,7 +475,8 @@ with the DS pen, you can switch the input into one of three modes. Press
left on the D-pad to enable the left mouse button. Press right on the left on the D-pad to enable the left mouse button. Press right on the
D-pad to enable the right mouse button. Press up on the D-pad to enable D-pad to enable the right mouse button. Press up on the D-pad to enable
hover mode. In this mode, you won't click on anything, just hover the hover mode. In this mode, you won't click on anything, just hover the
mouse cursor over it. This lets you pick out active objects in the scene. mouse cursor over it. This lets you pick out active objects in the
scene.
An icon on the top screen will show you which mode you're in. An icon on the top screen will show you which mode you're in.
@ -467,46 +487,48 @@ mode) will click the left or right mouse button.
There is an alternative method of control which doesn't require you to There is an alternative method of control which doesn't require you to
change modes with the D-pad. Press 'Select' to bring up the DS options, change modes with the D-pad. Press 'Select' to bring up the DS options,
and choose 'Tap for left click, double tap for right click'. In this and choose 'Tap for left click, double tap for right click'. In this
mode, you can quickly tap the screen to left click the mouse, and tap twice mode, you can quickly tap the screen to left click the mouse, and tap
to right click the mouse. twice to right click the mouse.
Here is a complete list of controls in right-handed mode (the default Here is a complete list of controls in right-handed mode (the default
setting): setting):
Key Usage Key Usage
Pad Left Left mouse button Pad Left Left mouse button
Pad Right Right mouse button Pad Right Right mouse button
Pad Up Hover mouse (no mouse button) Pad Up Hover mouse (no mouse button)
Pad Down Skip dialogue line (for some Lucasarts games), Show inventory Pad Down Skip dialogue line (for some Lucasarts games),
(for Beneath a Steel Sky), Show active objects (for Simon the Sorceror) Show inventory (for Beneath a Steel Sky), Show
Start Pause/game menu (works in some games) active objects (for Simon the Sorceror)
Select DS Options Start Pause/game menu (works in some games)
B Skip cutscenes Select DS Options
A Swap main screen and zoomed screen B Skip cutscenes
Y Show/Hide debug console A Swap main screen and zoomed screen
X Show/Hide on-screen keyboard Y Show/Hide debug console
L + D-pad or L + Pen Scroll touch screen view X Show/Hide on-screen keyboard
L + B Zoom in L + D-pad or L + Pen Scroll touch screen view
L + A Zoom out L + B Zoom in
L + A Zoom out
And here's left-handed mode: And here's left-handed mode:
Key Usage Key Usage
Y Left mouse button Y Left mouse button
A Right mouse button A Right mouse button
X Hover mouse (no mouse button) X Hover mouse (no mouse button)
B Skip dialogue line (for some Lucasarts games), Show inventory (for B Skip dialogue line (for some Lucasarts games),
Beneath a Steel Sky), Show active objects (for Simon the Sorceror) Show inventory (for Beneath a Steel Sky), Show
Start Pause/game menu (works in some games) active objects (for Simon the Sorceror)
Select DS Options Start Pause/game menu (works in some games)
D-pad down Skip cutscenes Select DS Options
D-pad up Swap main screen and zoomed screen D-pad down Skip cutscenes
D-pad left Show/Hide debug console D-pad up Swap main screen and zoomed screen
D-pad right Show/Hide on-screen keyboard D-pad left Show/Hide debug console
R + D-pad or R + Pen Scroll touch screen view D-pad right Show/Hide on-screen keyboard
R + D-pad down Zoom in R + D-pad or R + Pen Scroll touch screen view
R + d-pad right Zoom out R + D-pad down Zoom in
R + d-pad right Zoom out
@ -779,11 +801,11 @@ This program was brought to you by caffiene, sugar, and late nights.
------------------------------------------------------------------------ ------------------------------------------------------------------------
If you have problems getting ScummVM to work on your hardware, please If you have problems getting ScummVM to work on your hardware, please
read the FAQ first. /Please/ don't ask me questions which are read the FAQ first. /Please/ don't ask me questions which are answered
answered in the FAQ, I get many emails about this program each day, and in the FAQ, I get many emails about this program each day, and I can't
I can't help the people who really need help if I'm answering the same help the people who really need help if I'm answering the same question
question all the time which is already answered on this page. Other than all the time which is already answered on this page. Other than that,
that, feel free to post on the ScummVM DS forum <http://forums.scummvm.org> feel free to post on the ScummVM DS forum <http://forums.scummvm.org>
for help. Please do your research first though. There is no way of for help. Please do your research first though. There is no way of
running this on an out-of-the box DS without extra hardware. Most of running this on an out-of-the box DS without extra hardware. Most of
these things are fairly inexpensive though. these things are fairly inexpensive though.
@ -819,14 +841,16 @@ libmad support by opening 'backends/platform/ds/arm9/makefile' and
commenting out the line which says USE_MAD = 1. commenting out the line which says USE_MAD = 1.
Then, enter the 'backends/platform/ds' folder and type: Then, enter the 'backends/platform/ds' folder and type:
make SCUMM_BUILD=a
make SCUMM_BUILD=a
The executable nds file will build inside 'backends/platform/ds/arm9/SCUMMVM-A'. The executable nds file will build inside 'backends/platform/ds/arm9/SCUMMVM-A'.
For other builds, substitute the letters b - g in the above line. For other builds, substitute the letters b - g in the above line.
To build everything, type: To build everything, type:
make allbuildssafe
make allbuildssafe

View file

@ -349,19 +349,19 @@ gameListType* currentGame = NULL;
// Stylus // Stylus
#define ABS(x) ((x)>0?(x):-(x)) #define ABS(x) ((x)>0?(x):-(x))
bool penDown; bool penDown = FALSE;
bool penHeld; bool penHeld = FALSE;
bool penReleased; bool penReleased = FALSE;
bool penDownLastFrame; bool penDownLastFrame = FALSE;
s32 penX, penY; s32 penX = 0, penY = 0;
s32 penDownX, penDownY; s32 penDownX = 0, penDownY = 0;
int keysDownSaved; int keysDownSaved = 0;
int keysReleasedSaved; int keysReleasedSaved = 0;
int keysChangedSaved; int keysChangedSaved = 0;
bool penDownSaved; bool penDownSaved = FALSE;
bool penReleasedSaved; bool penReleasedSaved = FALSE;
int penDownFrames; int penDownFrames = 0;
int touchXOffset = 0; int touchXOffset = 0;
int touchYOffset = 0; int touchYOffset = 0;
@ -1403,18 +1403,21 @@ void doButtonSelectMode(OSystem_DS* system)
if (getPenReleased() && (leftButtonDown || rightButtonDown)) { if (getPenReleased() && (leftButtonDown || rightButtonDown)) {
if (leftButtonDown) { if (leftButtonDown) {
event.type = Common::EVENT_LBUTTONUP; event.type = Common::EVENT_LBUTTONUP;
} else { leftButtonDown = false;
event.mouse = Common::Point(getPenX(), getPenY());
system->addEvent(event);
} else if (rightButtonDown) {
event.type = Common::EVENT_RBUTTONUP; event.type = Common::EVENT_RBUTTONUP;
rightButtonDown = false;
event.mouse = Common::Point(getPenX(), getPenY());
system->addEvent(event);
} }
event.mouse = Common::Point(getPenX(), getPenY());
system->addEvent(event);
} }
if ((mouseMode != MOUSE_HOVER) || (!displayModeIs8Bit)) { if ((mouseMode != MOUSE_HOVER) || (!displayModeIs8Bit)) {
if (getPenDown() && (!(getKeysHeld() & KEY_L)) && (!(getKeysHeld() & KEY_R))) { if (getPenDown() && (!(getKeysHeld() & KEY_L)) && (!(getKeysHeld() & KEY_R))) {
if ((mouseMode == MOUSE_LEFT) || (!displayModeIs8Bit)) { if (mouseMode == MOUSE_LEFT) {
event.type = Common::EVENT_LBUTTONDOWN; event.type = Common::EVENT_LBUTTONDOWN;
leftButtonDown = true; leftButtonDown = true;
} else { } else {
@ -1462,8 +1465,7 @@ void doButtonSelectMode(OSystem_DS* system)
mouseMode = MOUSE_LEFT; mouseMode = MOUSE_LEFT;
} }
if (rightButtonDown) if (rightButtonDown) {
{
Common::Event event; Common::Event event;
event.mouse = Common::Point(getPenX(), getPenY()); event.mouse = Common::Point(getPenX(), getPenY());
event.type = Common::EVENT_RBUTTONUP; event.type = Common::EVENT_RBUTTONUP;
@ -1642,26 +1644,26 @@ void addEventsToQueue() {
} }
static int selectHoldCount = 0; static int selectTimeDown = -1;
static const int SELECT_HOLD_TIME = 60; static const int SELECT_HOLD_TIME = 1000;
if ((getKeysHeld() & KEY_SELECT)) { if (getKeysDown() & KEY_SELECT) {
selectHoldCount++; selectTimeDown = getMillis();
if (selectHoldCount == SELECT_HOLD_TIME) {
// Hold select down for one second - show GMM
g_engine->openMainMenuDialog();
}
} else {
selectHoldCount = 0;
} }
if (selectTimeDown != -1) {
if (getKeysHeld() & KEY_SELECT) {
if (getMillis() - selectTimeDown >= SELECT_HOLD_TIME) {
// Hold select down for one second - show GMM
g_engine->openMainMenuDialog();
}
}
if (getKeysReleased() & KEY_SELECT) {
if (getKeysReleased() & KEY_SELECT) { if (getMillis() - selectTimeDown < SELECT_HOLD_TIME) {
if (selectHoldCount < SELECT_HOLD_TIME) { // Just pressed select - show DS options screen
// Just pressed select - show DS options screen showOptionsDialog();
showOptionsDialog(); }
} }
} }
} }
@ -2081,7 +2083,7 @@ void VBlankHandler(void) {
storedMouseX = penX; storedMouseX = penX;
storedMouseY = penY; storedMouseY = penY;
if (gameScreenSwap) { if (gameScreenSwap && touchPadStyle) {
setIcon(3, storedMouseX - mouseHotspotX, storedMouseY - mouseHotspotY, 8, 0, true); setIcon(3, storedMouseX - mouseHotspotX, storedMouseY - mouseHotspotY, 8, 0, true);
setIconMain(3, 0, 0, 0, 0, false); setIconMain(3, 0, 0, 0, 0, false);
} else { } else {