Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HDB: Add engine for Hyperspace Delivery Boy #1805

Closed
wants to merge 1,234 commits into from

Conversation

@nipunG314
Copy link
Contributor

commented Aug 13, 2019

This adds a new engine to run the Monkeystone game Hyperspace Delivery Boy. This work was done under the Google Summer of Code 2019 program, as described here: https://wiki.scummvm.org/index.php?title=Summer_of_Code/GSoC_Ideas_2019#Hyperspace_Delivery_Boy

HDB was originally built for the PocketPC and later on ported to Windows and Linux. This engine was originally built using the source code of the Windows version, and support for the PocketPC version was added later. As such, it has been thoroughly tested with the Windows data files, but not so with the data files for the other platforms. However, it should work similarly for the Linux data files which have been tested to a brief extent.

The PocketPC data files however will most likely not work. The source code for the PocketPC version had a number of breaking changes, and as such, the PocketPC support for the engine is still in development. It might work, but one should expect crashes.

Most of the levels are known completable with the exception of a few at the end which hasn't been playtested.

Known Issues:

  1. The PPC version crashes when starting a new game from the actual in-game menu. You can try to load it through the command-line Fixed now.
@sev-

This comment has been minimized.

Copy link
Member

commented Aug 13, 2019

Nice work!

strcpy(e->entityName, str1);

if (str2)
strcpy(e->printedName, str2);

This comment has been minimized.

Copy link
@bluegr

bluegr Aug 16, 2019

Member

Perhaps you could use Common::String instead?

return *it;
}

if (g_hdb->_map->laserBeamExist(x, y))

This comment has been minimized.

Copy link
@bluegr

bluegr Aug 16, 2019

Member

laserBeamExists() or laserBeamsExist()

*y = h->y;
return;
}
}

This comment has been minimized.

Copy link
@bluegr

bluegr Aug 16, 2019

Member

Same with these, perhaps Common::String could be used instead?

engines/hdb/ai-init.cpp Show resolved Hide resolved
engines/hdb/ai-player.cpp Show resolved Hide resolved
engines/hdb/file-manager.cpp Outdated Show resolved Hide resolved
engines/hdb/gfx.cpp Show resolved Hide resolved
if (g_hdb->isPPC())
CursorMan.showMouse(true);
else
_mousePointer[anim]->drawMasked(g_hdb->_input->getMouseX() - 16, g_hdb->_input->getMouseY() - 16);

This comment has been minimized.

Copy link
@bluegr

bluegr Aug 16, 2019

Member

Perhaps we could change all versions to use CursorMan for the mouse cursor?

This comment has been minimized.

Copy link
@nipunG314

nipunG314 Aug 21, 2019

Author Contributor

I can look into doing that. As long as the graphics for the same can be loaded at runtime, it shouldn't be a problem.

engines/hdb/hdb.cpp Outdated Show resolved Hide resolved
for (i = 0; i < _width * _height; i++)
out->writeByte(_mapExpBarrels[i]);
for (i = 0; i < _width * _height; i++)
out->writeByte(_mapLaserBeams[i]);

This comment has been minimized.

Copy link
@bluegr

bluegr Aug 16, 2019

Member

These write consecutive bytes, so they could be changed to out->write(foo, _width * _height)

This comment has been minimized.

Copy link
@nipunG314

nipunG314 Aug 22, 2019

Author Contributor

I'll do that.

@sev- sev- force-pushed the nipunG314:hyperspace-delivery-boy branch from b39bf88 to 07f6dde Aug 23, 2019

sev- and others added 26 commits Aug 17, 2019
HDB: Fix teleporter on MAP29 in PPC version.
It was fixed later in the Win version, as it was transferring
Guy to a wrong level.
HDB: Fix closed loops with laser beams
Nipun was able to construct such position in Map28 which led to a closed
loop and the game hung.

We're inserting a watchdog here now.

@sev- sev- force-pushed the nipunG314:hyperspace-delivery-boy branch from e709026 to 7da3c2f Sep 3, 2019

@sev-

This comment has been minimized.

Copy link
Member

commented Sep 3, 2019

Weird, it says there are conflicts, still, it is rebased to the tip of the master.

@sev-

This comment has been minimized.

Copy link
Member

commented Sep 3, 2019

Merged manually. GitHub is misbehaving.

@sev- sev- closed this Sep 3, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.