View Page Source

Back to Page
Revision 1 (current)
Edited by Sand on 3/13/2023 7:29 AM
!!! Movies

[module:PublicationHistory|publicationId=5088]

!!! Versions

''Mixed-Up Mother Goose'' is a Sierra adventure game.

The game was
[https://wiki.scummvm.org/index.php/Mixed-Up_Mother_Goose#Versions|remade and rereleased several times].
This article is about the original 1987
[https://en.wikipedia.org/wiki/Adventure_Game_Interpreter|AGI] version for DOS.

!!! Tools

Utilities for reverse engineering, routing, etc. from [5088M]:

 git clone !https://www.bamsoftware.com/git/mumg.git

[http://agiwiki.sierrahelp.com/index.php?title=Agikit|agikit]
is useful for decompiling game logic.
The [http://agiwiki.sierrahelp.com/index.php?title=Main_Page|AGI Programmer's Wiki]
is useful in general.

See [Forum/Topics/23454] for notes on the development of [5088M].

!!! Map

[https://www.bamsoftware.com/computers/tasvideos/mumg-map-revised.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-map-revised.png|alt=Game map, a 7×5 grid of overworld rooms with 9 additional interior rooms]

There are 44 [http://agiwiki.sierrahelp.com/index.php?title=Room|rooms],
which are internally numbered 1–44.
Rooms 1–35 are overworld rooms.
Rooms 36–44 are interior rooms.

Blue circles in the diagram show the destination rooms
to which the numbered items 18–30 have to be delivered.
Gold squares show where random item assignment may place items;
see below.

!!! Items

There are 20 items, numbered 11–30.
Items 11–17 are "walking" items that follow the player
around while they are in the inventory.
Items 18–30 are "pocket" items that disappear from the screen
while they are in the inventory.
The important difference is that walking items
cannot remain in interior rooms:
the initial random items assignment will not
place a walking item in an interior room,
and if you swap a walking item for another item
while in an interior room,
the walking item will not remain there,
but will warp to some other overworld room.

||#||Item||Type||Delivery room||
|11|Wife|walking|12|
|12|Miss Muffet|walking|9|
|13|Mouse|walking|41|
|14|Fiddlers Three|walking|37|
|15|Sheep|walking|23|
|16|Little Dog|walking|27|
|17|Little Lamb|walking|13|
|18|Fiddle|pocket|7|
|19|Pie|pocket|43|
|20|Knife|pocket|3|
|21|Steak|pocket|36|
|22|Pipe|pocket|37|
|23|Bowl|pocket|37|
|24|Broth|pocket|21|
|25|Candlestick|pocket|33|
|26|Pail|pocket|1|
|27|Watering Can|pocket|31|
|28|Sixpence|pocket|15|
|29|Ladder|pocket|5|
|30|Horse|pocket|18|

!!! Random item assignment

The location of all items is randomized,
except for the Watering Can, which is
[https://archive.org/details/msdos_Mixed-Up_Mother_Goose_1987_feelies/page/n14/mode/1up|always in room 45].
The random item assignment code is in
[http://agiwiki.sierrahelp.com/index.php?title=Logic_Resource_(AGI)|logic resource] 0.
It happens once, when a new game is started.
The [Forum/Posts/515748|random number generator]
is seeded from the current time
(an [https://www.delorie.com/djgpp/doc/rbinter/id/80/22.html|18.2 Hz 16-bit counter]).

See [Forum/Posts/515748]
for details of the random number generator
and the item assignment algorithm.
[https://www.bamsoftware.com/computers/tasvideos/mumg-assign.csv|mumg-assign.csv]
shows the item assignment for every random seed.

!!! Game mechanics

!! Movement

The player character can move 1 pixel per
[http://agiwiki.sierrahelp.com/index.php?title=AGI_Specifications:_Chapter_3_-_AGI_Internals#Interpreter_work_cycle|game cycle]
(horizontally or vertically or both).
It may look like the player moves 2 pixels per cycle horizontally,
but that is because the game's graphics are stretched 2× horizontally—internally,
the x-coordinate only changes by 1 unit.
If you need to move both horizontally and vertically,
the time needed is proportional to the ''maximum''
of the horizontal and vertical distances ([https://en.wikipedia.org/wiki/Chebyshev_distance|Chebyshev distance]).
The walkable area of rooms is usually 160 pixels wide and 80 pixels tall, but there are many exceptions.

Collection and delivery of items
is usually triggered by being within
a certain radius of a certain point.
For example, the graphic below shows the delivery radius of Jack in room 33.
The delivery area is diamond-shaped
because that is the shape of a circle
in the way the game measures [http://agiwiki.sierrahelp.com/index.php?title=Distance|distance].

[https://www.bamsoftware.com/computers/tasvideos/mumg-E5-deliver.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-E5-deliver.png|alt=Picture of room 33 with the delivery radius around Jack highlighted.]

Most interaction areas are a radius like this, but not all.
For example, Old King Cole in room 37
has a rectangular delivery area.
In general, you
have to check the logic code in every case.

The goal is not necessarily to enter the delivery area as quickly as possible.
Starting a deliver cutscene slows the game down to Normal speed,
and then the player character usually moves to a fixed waypoint under
[http://agiwiki.sierrahelp.com/index.php?title=Program.control|program control].
It is usually worth spending extra time moving
to a favorable point at the edge of the delivery area,
to minimize the distance to the first waypoint
for the player character to move there slowly and automatically.

! Movement carryover

Many effects in AGI are driven by serial state updates
to flags or variables.
It may happen that a delivery cutscene, for example,
is irrevocably triggered in one game cycle,
but does not actually begin until the next cycle.
During this "halfway" cycle,
it may be possible to continue moving the player character
even though the cutscene has technically already been triggered.
The main takeaway is that you should take advantage of this kind of movement,
when possible,
to move closer to the first forced waypoint.

An important special case of the movement carryover effect
is when walking between rooms.
Do not hold down the movement key only long enough to trigger
the room transition—hold it for at least one cycle longer.
The extra cycle of keyboard input will give you one free pixel
of movement in the new room, before you regain control of the player character.

!! Item swap

You can only carry one inventory item at a time.
If you collect an item while already holding one,
You will drop the item you are holding and pick up the other.
If you are in an interior room and currently have a walking item
in your inventory,
the walking item will not remain in the room after being swapped,
but will warp to another room.

!! Item warp

The destinations of item warps are controlled by a stack.
At the beginning of the game,
the 2 overworld rooms left unassigned
by the item assignment algorithm
are at the top of the stack.
Below them are rooms 4, 25, 18, 5, and 33.
Whenever you are in an overworld room, have an empty inventory,
and pick up an item,
the current room is pushed to the top of the warps stack.
Whenever an item is warped,
it pops the location off the warps stack.

!!! Known shortcuts

There are many places where a room's logic code
defines special connectivity that can save time.

[https://www.bamsoftware.com/computers/tasvideos/mumg-D5-connectivity.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-D5-connectivity.png|alt=Picture of room 32 with zones that transfer to other rooms highlighted.]

For example,
prefer walking behind Mother Goose's house, not in front of it,
whenever crossing from room 32 to room 31 or vice versa.
The room transition triggers are closer to the center of the screen,
and you are placed a farther into the new room, not at the edge.

!! Out of bounds in shoe house (room 44)

[https://www.bamsoftware.com/computers/tasvideos/mumg-G3I-oob.gif|alt=Animated gameplay capture showing the player walking out of bounds in room 44 to collect the Candlestick.]

[https://www.bamsoftware.com/computers/tasvideos/mumg-G3I-priority-exploded.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-G3I-priority-exploded.png|alt=The priority of room 44, with a 4× zoom near the door showing that a black line does not reach the bottom row of pixels.]

There is a gap in the barrier that defines the walkable area in room 44.
You can get out of bounds,
but still close enough to the item to collect it.
It saves time because you can exit the room
just by walking south,
rather than having to walk all the way back to the door.

!! Jump the wall from clock house (room 24)

[https://www.bamsoftware.com/computers/tasvideos/mumg-C4-C3N-skip.gif|alt=Animated gameplay capture that shows the player walking north from room 24 to arrive in the side yard, returning to room 24, then again walking north but this time close to the wall, to arrive on the wrong side of the wall.]

[https://www.bamsoftware.com/computers/tasvideos/mumg-C4-connectivity.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-C4-connectivity.png|alt=Picture of room 24 with zones that transfer to other rooms highlighted.]

There is 1 pixel behind the clock house where you can walk north
and end up outside the wall, rather than inside.

!! Jump the wall to pumpkin house (room 19)

[https://www.bamsoftware.com/computers/tasvideos/mumg-E3-E2-skip.gif|alt=Animated gameplay capture of the player walking outside the wall in room 19, going north, and arriving inside the wall in room 12.]

[https://www.bamsoftware.com/computers/tasvideos/mumg-E3-connectivity.svg|https://www.bamsoftware.com/computers/tasvideos/mumg-E3-connectivity.png|alt=Picture of room 19 with zones that transfer to other rooms highlighted.]

There is a small area outside the wall
where you can walk north and end up inside the yard
of the pumpkin house in room 12,
rather than outside.