Here is some info I gleaned from looking at the data in the GROMs. The first 180 bytes of GROM are 16-bit pointers to "phrases". Phrases are made up of "samples", which can be a word, multiple words, or a sound effect. When you turn the game on, the 90th phrase is played; the address of that phrase data is pulled from address 00B2: 0292. The data at 0292 are 16-bit pointers to samples. If the 2 highest bits of the pointer are 11, it is the last one. I'm not sure what is indicated if just one of the 2 highest bits is set. 90 00B2 0292:77FB(37FB) 732A(332A) 77FB(37FB) F7FB(37FB) 37FB is a pause of about 1/2 seconds (bit 14 set means ?) 332A is "You turn me on" (bit 14 set means ?) 37FB is a pause (bit 14 set means ?) 37FB is a pause (bits 14 and 15 set means end of phrase) I'm not sure how the game knows how long each sample is. It looks like it's done with terminating bytes, but I haven't figured it out. Many samples end with 80, and many others end in x0, but some do not. And there are 80s within samples. This article says the data is compressed, so the format will likely need to be pulled from the code disassembly: www.seanriddle.com/miltonspeech.txt Next, the 37th phrase is played. The address of the phrase data is pulled from address 0048, and is 013C. 37 0048 013C:434B(034B) 77FB(37FB) 77FB(37FB) 70BF(30BF) 77FB(37FB) 77FB(37FB) 5313(1313) 2764(2764) 32C9(32C9) E7B5(27B5) 034B is "I'm Milton" 37FB is a pause 37FB is a pause 30BF is "Who's out there" 37FB is a pause 37FB is a pause 1313 is "Hey Hey Hey" 2764 is "pick" - note bit 14 is not set 32C9 is "your" 27B5 is "play" - bits 14 and 15 mean end of phrase If you don't choose a game, the 38th phrase is played. The vector is 004A, and the phrase data is at 0150. 38 004A 0150:5313(1313) 2764(2764) 32C9(32C9) 67B5(27B5) 29A6(29A6) 751C(351C) 75CB(35CB) 2732(2732) F617(3617) 1313 is "Hey Hey Hey" 2764 is "pick" 32C9 is "your" 27B5 is "play" 29A6 is "push" 351C is "1" 35CB is "2" 2732 is "or" 3617 is "3" - bits 14 and 15 mean end of phrase