Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - OmerMor

Pages: [1] 2 3 ... 48
1
SCI Syntax Help / Re: Is this an acutal release?
« on: Today at 04:41:47 AM »
So Soft World is a distributor from Taiwan, so not Japanese but Chinese.

Here you can find pictures for many other adventure games with Chinese packages. I don't believe any of them were translated - only their package.

2
SCI Syntax Help / Re: Is this an acutal release?
« on: Today at 04:29:45 AM »
These are the Japanese SCI games that I know of:
  • Castle of Dr. Brain (PC-98)
  • King's Quest 5 (FM-Towns)
  • King's Quest 5 (PC-98)
  • Lighthouse (PC)
  • Mixed-Up Mother Goose (FM-Towns)
  • Phantasmagoria 2 (PC)
  • Police Quest 2 (PC-98)
  • Quest for Glory 1 (PC-98)
  • Space Quest 4 (PC-98)

4
Do you know the source code for the game can be found here: https://github.com/historicalsource/donald-ducks-playground ?

It also has the shipped game files - but I don't know which version it was.

And if you're looking for the booter image, it can be found in this archive: https://archive.org/details/20220303_20220303_0527

5
SCI Syntax Help / Re: ((or temp1025 temp1024) nsLeft:)?
« on: January 04, 2024, 12:07:51 PM »
Here's the snippet from the original source code:
Code: [Select]
; if editI we add it right under text item
(if editI
(editI
moveTo:
((or subI mainI) nsLeft?)
(+ MARGIN ((or subI mainI) nsBottom?))
)
; add edit item and resize the dialog
(theDialog add:editI, setSize:)
)
https://github.com/historicalsource/leisure-suit-larry-5/blob/341bc91b5529c3243220a7fe77cc6b041c8022d4/SYSTEM/INTRFACE.SC#L1568C2-L1577C3

6
Are you aware that the original code for LSL5 was leaked 2 years ago?
https://github.com/historicalsource/leisure-suit-larry-5

7
SCI Syntax Help / Re: Display procedure
« on: October 26, 2023, 05:35:03 PM »
Yeah, it's kinda involved and has both "manually type" and "select from list" modes, including a whole "detect letter inputs and append them to a command buffer" thing. Browsing a directory structure, password protection, shilling other Sierra games, it has the works. I might blog about how the hell this does what it does.

It even has a misspelled LIESURE SUIT LARRY. Twice.

8
Very interesting.
Can you write a quick script the dumps all the words that are not referenced by any script? Maybe there are other interesting unused words in AGI games.

9
May I suggest using SluiceBox's excellent decompilation archive?

Yes, I do use it; especially when SCICompanion can't decompile ASM. It's a huge timesaver.

Unfortunately, in this case his code still has the same bug that's setting flag 1 when param2 isn't passed. Checking the number of arguments instead of param2 fixes the problem and probably should have been the test in the original source.

I was suggesting using his archive as alternative to SCI Companion's decompilation since his code is clearer. His scripts doesn't have any bug fixes.

10
Cool thread :-)

May I suggest using SluiceBox's excellent decompilation archive? For example, here's his version of the points method (link):
Code: [Select]
(method (points param1 param2)
(if (and (> argc 1) (IsFlag param2))
(return)
)
(if param1
(gGame changeScore: param1)
(if param2
(SetFlag param2)
)
(if (and (> param1 0) pointSound)
(pointSound play:)
(statusCode doit:)
)
)
)

11
Unfortunately I was not granted permission to publish this.
If you want some specific snippets - I guess that's fine, but I can't simply share it as-is.

12
Leaked source.
If you want additional snippets of code from the game, LMK.

13
I never tried to.

14
In this post I was asking about what the AUTOTP file triggers in LSL7, and I'm still unable to answer this question today...

Sluicebox has done a full decompilation of lsl7. I had a quick look, apart from what you said in setting global243 to 1, it does absolutely nothing! There are no other references to that variable or the autotp file in the entire codebase.

My guess is it was some unfinished code or extraneous code that stayed around for production.  Maybe it was something planned that was never implemented.

Thanks,
I'm aware of Sluicebox's archive and took a look myself. I believe this was debug code that was removed in the production build.
I made an analysis of Torin's Passage similar code in this post: https://sciprogramming.com/community/index.php?topic=9135.msg74330#msg74330

15
After Cloudee uploaded MegaTokyo's boards, I found an old question of mine from there:
using Brian's decompiled 000.scr from lsl7 i figured out the game looks for a "CLASSES" file to trigger the debug mode - and it worked.
I still have one more question though for Brian:
I can also see that the file "AUTOTP" has a significance (it triggers the global variable global243), but I have no idea what it does (it is not used in any of the scripts you published).
Any help please?

Since we are still not able to decompile LSL7, I wondered if I could find information in the source code I have from Torin's Passage. Both games were from the same time period, and both by Al Lowe.

Here's what I found:

In 0.SC:
Code: (SCI) [Select]
#ifdef DEBUG
;============================================+
; Take out the following lines for shipping  ;
;                                            ;

#ifndef DEMO
      ; Programmers always has the "classes" file
      (if (FileIO FileExists "classes")
         (= gbDebug TRUE)                    ;
      else
         ; Oooh...sneaky, Look in resource file
         (= cfgBuf (String newWith: 100 " "))
         (GetConfig "TorinDebug" cfgBuf)
         (cfgBuf lower:)
         (= i (cfgBuf at: 0))
         (if (== i `t)           ; t for true (or tea for two!)
            (= gbDebug TRUE)
         )
         (cfgBuf dispose:)
      )
      (if (FileIO FileExists "autotp") ; automatically teleport on pick a chapter
         (= gbDebugTeleport TRUE)
      )
     
      (if gbDebug
         (goDebugger init:)
      ) 
#endif
;
;                                            ;
; Take out the above lines for shipping      ;
;============================================+
#endif

So the presence of AUTOTP sets the gbDebugTeleport flag.
Let's look for that, shall we?

In GAME.SH we find:
Code: (SCI) [Select]
gbDebugTeleport         243   = FALSE ; is auto-teleport on for this game?

And we also find it in PIKACHPT.SC. Here's the full script:
Code: (SCI) [Select]

;;;;  PIKACHPT.SC
;;;;
;;;;  (c) Sierra On-Line, Inc, 1995
;;;;
;;;;  PIKACHPT.SC -- the sierra logo
;;;;     Created for Domain, 1995
;;;;
;;;;  Author:  Don Munsil
;;;;

(script# rPickAChapter)
(include "200.shm")
(include "110.shm")

#ifdef DEMO
(include "300.shm")
#endif

(procedure
   TipOfTheDay
)

(public
   roPickAChapter 0
)

(local
   line1 = NULL   ; the lines pointing at the world
   line2 = NULL   ; more lines
   line3 = NULL   
   line4 = NULL
   line5 = NULL


(define     INTRO_BUTTON_FONT    2510)
; how far from top of the button should we start drawing the connecting line
; This number is dependant upon the font
(define     LINE_OFFSET          14)

(define LINE_COLOR   227)

; X alignemnt of the chapter buttons
(define     BUTTON_X          480)
(define     BOTTOM_Y          440)

; This is called by the choose a chapter number buttons.
(instance oRoomChosen of Object
   (method (doit aChapter)

      (if (not gbInterfaceInitted)
         (goInterface init:)
         (InitInterface2)
         (goMainMenu disable:)
      )

      (goMusic1 stop:)                               

      (= gnChapter 1)

      ;; chapter init stuff -- pass through whether or not we are teleporting
      (switch aChapter
         (INTRO_N
            (= gnChapter 0)
         ) 
         (TLA_N
            ; ego gets nothing
            (= gnChapter 1)
         )
         (ESCARPA_N
            (= gnChapter 2)
            (ego get: gioBoogleBox)
            (ego get: gioBoogleWorm)
            (ego get: gioBoogleLantern)
            (ego get: gioShard)
            (ego get: gioEressdy)
         )
         (PERGOLA_N
            (= gnChapter 3)
            (ego get: gioBoogleBox)
            (ego get: gioBoogleShovel)
            (ego get: gioBoogleWorm)
            (ego get: gioBoogleLantern)
            (ego get: gioBoogleYoYo)
            (ego get: gioEressdy)
            (ego get: gioLocket)
         )
         (ASTHENIA_N
            (= gnChapter 4)
            (ego get: gioBoogleBox)
            (ego get: gioBoogleShovel)
            (ego get: gioBoogleWorm)
            (ego get: gioBoogleLantern)
            (ego get: gioBoogleYoYo)
            (ego get: gioBoogleRedCross)
            (ego get: gioEressdy)
            (ego get: gioKnife)
         )
         (TENEBROUS_N
            (= gnChapter 5)
            (ego get: gioBoogleBox)
            (ego get: gioBoogleShovel)
            (ego get: gioBoogleWorm)
            (ego get: gioBoogleLantern)
            (ego get: gioBoogleYoYo)
            (ego get: gioBoogleRedCross)
            (ego get: gioEressdy)
            (ego get: gioAmmonia)
            (ego get: gioKnife)
         ) 
         (EPILOGUE_N
            (= gnChapter 6)
            (curRoom newRoom: rCredits)
            (return)
         ) 
         (RESUME_N
            (curRoom setScript: soResume)
            ; actually we never reach this statement, but...
            (return)
         )
         (RESTORE_N
            (curRoom setScript: soRestore)
            (return)
         )
         (EXIT_N
            (= quit TRUE)
            (return)
         ) 
      ) 

      (if
         (and
            (< 0 gnChapter 6) ; chapter 1 to 5
            (or gbTeleport gbDebugTeleport)
         )
         (= gbTeleport FALSE)
         (curRoom newRoom: (RoomTeleport gnChapter))
      else
;djm           (MonoOut "chapter %d, select %d" gnChapter aChapter)
         (switch aChapter
            (INTRO_N
               (curRoom newRoom: rPrologue1)
            ) 
            (TLA_N
               (curRoom newRoom: rChapter1)
            )
            (ESCARPA_N
               (curRoom newRoom: rChapter2)
            )
            (PERGOLA_N
               (curRoom newRoom: rChapter3)
            ) 
            (ASTHENIA_N
               (curRoom newRoom: rChapter4)
            ) 
            (TENEBROUS_N
               (curRoom newRoom: rChapter5)
            )
            (else
               ; They wanna leave
               (= quit TRUE)
            )
         )
      )
   )
)

(procedure (TipOfTheDay &tmp oTipStr)
   ; tip of the day
   (if gbTipOfTheDay
      (= oTipStr (MakeMessageText ALL ALL TIP_OF_THE_DAY gnNextTip 110))
      (if oTipStr
         (TextDialog oTipStr (String with: goDismissString) (MakeMessageText ALL ALL TIP_TITLE 1 110))
         (= oTipStr NULL)
      ) 
      (++ gnNextTip)

      ; check to see if we should wrap around
      (= oTipStr (MakeMessageText ALL ALL TIP_OF_THE_DAY gnNextTip 110))
      (if oTipStr
         (StringDispose oTipStr)
         (= oTipStr NULL)
      else
         (= gnNextTip 1)
      )
     
      (SavePrefs)
   )
)

(instance foBlackOpaque of OpaqueFeature)
(instance oBlackPlane of Plane
   (properties
      priority    PRI_ROT_INV
      picture     -1
   )
   (method (init)
      (super init: &rest)
      (foBlackOpaque init: self)
   )
)
(instance soFadeToTip of Script
   (method (changeState newState &tmp oTipStr)
      (switchto (= state newState)
         (
            (FadeToBlack TRUE 15 self TRUE)
         )
         (
            ; put a black plane over all
            (oBlackPlane init: 0 0 lastScreenX lastScreenY)
            (= ticks 1)
         )
         (
            ; put the color back so we can see the dialog
            (FadeToBlack FALSE 100 self TRUE)
         )
         (
            (TipOfTheDay)
            (self dispose:)
         )
      )
   )
)
(instance soResume of Script
   (method (changeState newState &tmp oTipStr)
      (switchto (= state newState)
         (
            (self setScript: soFadeToTip self)
         )
         (
            (theGame autorestore:)

            ; if we get here some really bad happened
            (oBlackPlane dispose:)
            (self dispose:)
         )
      )
   )
)
(instance soRestore of Script
   (method (changeState newState &tmp oTipStr)
      (switchto (= state newState)
         (
            (self setScript: soFadeToTip self)
         )
         (
            (Open)

            ; we get here if they choose not to restore
            (oBlackPlane dispose:)
            (self dispose:)
         )
      )
   )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; VIEWS, FEATURES, PROPS AND THEIR RELATED SCRIPTS/CUEOBJECTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(instance oIntroButton of MessageButton
   (properties
      noun              INTRO_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      INTRO_N
      x                 BUTTON_X
      y                 96
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
   ) 
)

(instance oResumeButton of MessageButton
   (properties
      noun              RESUME_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      RESUME_N
      x                 252
      y                 BOTTOM_Y
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      ; same margin on my left side as the buttons on the right side
      (= x (- 639 (+ (oExitButton x?) (oExitButton nWidth?))))
      (= x (Max 5 x)); never let the button go off the screen
      (super init: &rest)
   ) 
)

(instance oRestoreButton of MessageButton
   (properties
      noun              RESTORE_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      RESTORE_N
      x                 100
      y                 BOTTOM_Y
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      ; center button
      (= x (- 316 (/ nWidth 2)))
      (UpdateScreenItem self)
   ) 
)

(instance oChapter1Button of MessageButton
   (properties
      noun              TLA_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      TLA_N
      x                 BUTTON_X
      y                 132
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      (= line1 (AddLine oPickAChapter 434 (+ y LINE_OFFSET) x (+ y LINE_OFFSET) 200 LINE_COLOR 0 0 2))
   )
)
(instance oChapter2Button of MessageButton
   (properties
      noun              ESCARPA_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      ESCARPA_N
      x                 BUTTON_X
      y                 168
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      (= line2 (AddLine oPickAChapter 413 (+ y LINE_OFFSET) x (+ y LINE_OFFSET) 200 LINE_COLOR 0 0 2))
   )
)
(instance oChapter3Button of MessageButton
   (properties
      noun              PERGOLA_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      PERGOLA_N
      x                 BUTTON_X
      y                 204
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      (= line3 (AddLine oPickAChapter 389 (+ y LINE_OFFSET) x (+ y LINE_OFFSET) 200 LINE_COLOR 0 0 2))
   )
)
(instance oChapter4Button of MessageButton
   (properties
      noun              ASTHENIA_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      ASTHENIA_N
      x                 BUTTON_X
      y                 240
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      (= line4 (AddLine oPickAChapter 346 (+ y LINE_OFFSET) x (+ y LINE_OFFSET) 200 LINE_COLOR 0 0 2))
   )
)
(instance oChapter5Button of MessageButton
   (properties
      noun              TENEBROUS_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      TENEBROUS_N
      x                 BUTTON_X
      y                 276
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
      (= line5 (AddLine oPickAChapter 275 (+ y LINE_OFFSET) x (+ y LINE_OFFSET) 200 LINE_COLOR 0 0 2))
   )
)

; actually the credits button
(instance oEpilogueButton of MessageButton
   (properties
      noun              EPILOGUE_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      EPILOGUE_N
      x                 BUTTON_X
      y                 312
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
   ) 
)
(instance oExitButton of MessageButton
   (properties
      noun              EXIT_N
      module            200
      font              INTRO_BUTTON_FONT
      mode              teJustCenter
      nSelectMethod     #doit
      nSelectValue      EXIT_N
      x                 BUTTON_X
      y                 BOTTOM_Y
      vTileOff          vButtonOffBg
      vTileOn           vButtonOnBg
      nMinWidth         130
   )
   (method (init)
      (= back gnButtonDownColor)
      (= fore gnButtonUpColor)
      (super init: &rest)
   ) 
)

(instance oTwinkle1 of Prop
   (properties
      view        vTwinklingStars
      loop        0
      x           2
      y           313
   )
)

(instance oTwinkle2 of Prop
   (properties
      view        vTwinklingStars
      loop        1
      x           609
      y           279
   )
)
(instance oTwinkle3 of Prop
   (properties
      view        vTwinklingStars
      loop        2
      x           30
      y           30
   )
)
(instance oTwinkle4 of Prop
   (properties
      view        vTwinklingStars
      loop        3
      x           516
      y           50
   )
)
(instance oTwinkle5 of Prop
   (properties
      view        vTwinklingStars
      loop        0
      x           464
      y           196
   )
)
(instance oTwinkle6 of Prop
   (properties
      view        vTwinklingStars
      loop        2
      x           420
      y           429
   )
)
(instance oTwinkle7 of Prop
   (properties
      view        vTwinklingStars
      loop        3
      x           122
      y           394
   )
)

(instance voText of View)

(instance voLogo of View
   (properties
      view     vLogo
      x        48
      y        231
   )


(instance foAll of OpaqueFeature)
(instance oPickAChapter of Plane
   (method (dispose)
      (if line1
         (DeleteLine line1 self)
         (= line1 NULL)
      )
      (if line2
         (DeleteLine line2 self)
         (= line2 NULL)
      ) 
      (if line3
         (DeleteLine line3 self)
         (= line3 NULL)
      ) 
      (if line4
         (DeleteLine line4 self)
         (= line4 NULL)
      ) 
      (if line5
         (DeleteLine line5 self)
         (= line5 NULL)
      ) 
      (super dispose: &rest)
   )

   
(instance roPickAChapter of TPRoom
   (properties
      picture        pPickAChapter
   )
   (method (dispose)
      (goMainMenu enable: TRUE)
      (super dispose: &rest)
   ) 
   (method (init &tmp fp oTipStr pathName)
      ; Always load the system palette.  This is not necessary,
      ; but is handy if we have loaded something that screwed
      ; the palette
      (Palette PalLoad 999)

      (oPickAChapter
         priority:   (- PRI_ROT_INV 1),
         init:       0 0 lastScreenX lastScreenY
      )
      (= plane oPickAChapter)

      (super init: &rest)

      (goMusic1                       
         playSound:  S_PICK_A_CHAPTER
      )                               
     
      (= gnChapter 0)
     
      (oIntroButton        oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oChapter1Button     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oChapter2Button     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oChapter3Button     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oChapter4Button     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oChapter5Button     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oEpilogueButton     oSelectNotify: oRoomChosen, init: oPickAChapter)
      (oExitButton         oSelectNotify: oRoomChosen, init: oPickAChapter)
     
      (= pathName (String new:))
      (pathName format: "%s\%s" curSaveDir "torinsg.cat")
      (= fp (FileIO FileOpen (pathName data?) fRead))
      (pathName dispose:)

      (if (!= fp -1)
         (oRestoreButton      oSelectNotify: oRoomChosen, init: oPickAChapter)
         (FileIO FileClose fp)
      )

      (foAll init:)

      ; Only create the resume button of we have an autosave game
      (= fp (FileIO FileOpen "autosave.cat" fRead))
      (if
         (or
            (!= fp -1)
            (SaveGame SGCheckSaveGame "Autosave" 0 (KString StrGetData version))
         )
         ; create after exit button, it's alignment depends on oExitButton
         (oResumeButton       oSelectNotify: oRoomChosen, init: oPickAChapter)
      )
      ; only close the file if it was actually opened
      (if (!= fp -1) (FileIO FileClose fp))

      (oTwinkle1 init:, cycleSpeed (Random 7 17), setCycle: Forward)
      (oTwinkle2 init:, cycleSpeed (Random 7 17), setCycle: RandCycle)
      (oTwinkle3 init:, cycleSpeed (Random 7 17), setCycle: RandCycle)
      (oTwinkle4 init:, cycleSpeed (Random 7 17), setCycle: RandCycle)
      (oTwinkle5 init:, cycleSpeed (Random 7 17), setCycle: Forward)
      (oTwinkle6 init:, cycleSpeed (Random 7 17), setCycle: RandCycle)
      (oTwinkle7 init:, cycleSpeed (Random 7 17), setCycle: RandCycle)

      (FadeToBlack FALSE 15 goHandsOnWhenCued TRUE)
     
      (goMainMenu disable:)
   )


Did you notice the "Created for Domain, 1995" comment at the header there?
It seems that it's present in almost all the source files.
So I got curios, and did a bit of digging. Turns out the working title for this game was either Domain or Domain's Quest:

New Adventure Games For 1995

From the adventure game people at Sierra Publishing, the word is that Al Lowe (designer of Leisure Suit Larry, and Freddy Pharkas) has teamed up with Andy Hoyos (Art Director of King's Quest V and VII, Quest for Glory IV) to create a new high fantasy game called "Domain." No word about whether this game is a follow-up or sequel to either Quest for Glory IV or Betrayal of Krondor.

Good News, Bad News. And a Great Family Christmas Product.

The bad news is there won't be a new King's Quest next Christmas. The good news is that Designer Al Lowe, Producer Mark Seibert and Senior Art Director Andy Hoyos (all long-time Sierra game development veterans), have joined forces to produce a new family game suitable for all ages. They promise it will be full of cute humor, great puzzles, and fun characters. They also promise it will be available in time for Christmas.
This game was referred to in the last issue of InterAction as Domain's Quest, but the new (and hopefully final), name is Torin's Passage. If you think a name change this big is a good trick, check out the Boogie. (The cute little purple character that looks like a cross between a cat and a miniature giraffe.) The Boogie can change into any other object at will (like an ax or a gift). Cool.

Pages: [1] 2 3 ... 48

SMF 2.0.19 | SMF © 2021, Simple Machines
Simple Audio Video Embedder

Page created in 0.02 seconds with 14 queries.