Hi,

> SetMenu(pos, foo, bar)
>         pos := ((menu + 1) << 8) | (item + 1)

Okay, here's a quick run-down of the SetMenu call:

The foo parameter is actually a command code which chooses the value to
get/set (which comes from bar). The possibilities are:

  0x6D - Said spec (Yes, you were right!)
  0x6E - Item text
  0x6F - Key text
  0x70 - Enabled flag
  0x71 - Tag value

I don't really know about 0x71, but the only thing I can think of is
that it is used internally to maintain the state of, for instance, Sound
on/off - that's the only place I've seen it used.

The syntax for GetMenu() is:

GetMenu(pos, foo)

and it returns bar.

The SelectMenu() takes an event record as a paramater, plus an optional
boolean value which apparently has something to do with sound being
paused or not (It's probably there because SelectMenu() is used in the
strange manner seen in Hoyle).

> Setting menu 0201: foo=006d, bar=942e ("Save: F5")
> Setting menu 0202: foo=006d, bar=9436 ("Restore: F7")
> Setting menu 0204: foo=006d, bar=943e ("Restart: F9")
> Setting menu 0405: foo=006d, bar=9446 ("Repeat: F3")
> Setting menu 0302: foo=006d, bar=944e ("Normal animation: =")
> Setting menu 0501: foo=006d, bar=9456 ("Inventory: C-i")
> Setting menu 0504: foo=006d, bar=945a ("Time/Day: C-t")

> 
> Note that the space pointed to by "bar" appears to take no more than 8
> bytes. In the 0201 case, it's
> 04 34 f5 f2  08 25 f6 ff
> Which could very well be a Said() block, if I'm not mistaken. So this 

Makes sense, according to the above. Just setting some pointers to said
specs.

> > BTW, this game would be brilliant for testing our menu API's... for each
> > card game, a game-specific menu is added to the menu bar.
> 
> So they remove the menus, too?

Yes, they would have to do that.

Lars

Reply via email to