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.

Topics - Kawa

Pages: [1] 2
SCI Development Tools / Custom-building your own SSCI
« on: April 12, 2017, 05:48:34 PM »
I just managed to compile my own copy of sierra.exe. It doesn't actually run anything yet, but at least I got the right compiler! Lemme just rename it so it can coexist with the one that came with the archive...

Yeah okay, I'll accept that.

Edit: got a new development environment set up in a DOSbox. Two minor changes to startasm.s and info.c later, I have an SCI.EXE (debug) that manages to run the template game, albeit without the ability to initialize my sound hardware, and a SIERRA.EXE that actively refuses because it's not been stamped.

Everything-Else / This is what happens when I get bored.
« on: September 21, 2016, 04:39:50 PM »
I not only make mockups... but I implement them!

There used to be an image here, but it's gone.

Everything-Else / So I was amassing a large amount of vaporwave...
« on: August 15, 2016, 05:48:05 AM »
...when I found this particular track. I was like whaaat? :o I know that shit's all about vague distortions of existing songs (and AESTHETICS, I suppose) but I did not expect Codename Iceman sounds 5 and 7.

That'll be all.

How large is large? Two days, two hours, twenty-two minutes... and one second.

SCI Development Tools / Vocab 999
« on: March 06, 2016, 10:37:49 AM »
Just because I wanted to be able to compile the sentence (RemapColors rcPERCENT 253 64) without having to write StrSplit and play pretend, here's a quick tool I whipped up to create a 999.voc with all the kernel calls that SCI11 supports. If you run it as-is, it'll use an internal list. If you specify a file name as a parameter (read: drop it on the icon) it'll use that instead. And for that reason I include one of those too.

Everything-Else / Anachronisms
« on: January 23, 2016, 10:30:53 AM »
On the one hand, you have Cloudee1's Space Quest remake.

On the other, there's this.

Not a photoshop, actual unaltered screenshot of what is obviously a joke that shan't be worked out further.

The Games and other Sierra Adventure stuff / The Dating Pool
« on: December 27, 2015, 11:40:52 AM »
First public release! Here's a demo version that features the first day and its puzzle. It's probably pretty buggy, and in fact I had to remove some things just to make it not crash. If you feel like a challenge in figuring out why the removed things make it crash, just tell me. If you have any suggestions for content or style, please go ahead and tell me.

But now, with no further ado, you can get The Dating Pool - One Day Demo at

Just took these from the site linked above, lol.

Changes to New Years demo since Christmas
Canister logic fixed
Intro crash bug fixed
Credits and post-demo slideshow amended

SCI Syntax Help / This is not a game about The Flash
« on: December 16, 2015, 11:01:05 AM »
Strangest thing. I was working on some scripts for dialogue and puzzles and such so I might get that one-day demo done some time this year, when this odd shit started happening: walking directly left or right makes Ego outright zip across the screen, while any of the other six directions move as they should. The only related thing I touched was to correct the default scale. Even with most of SetupEgo commented out (because who knows?) and nothing in the room code making further changes to Ego. What could cause such an effect?

Edit: you might notice there's no diagonal animations. That's because the grooper was disabled.

The Games and other Sierra Adventure stuff / Christmas card
« on: December 08, 2015, 10:21:17 AM »
I am sorely tempted to make a 2015 Christmas Card demo. Specifically, the Carol of the Burger King, with either a nicely redrawn SQ3 Monolith employee singing it (in subtitles only of course holy shit) or a slightly altered JONES Monolith employee doing the same. I'm partial towards the latter since the screen layout would have plenty space for greetings, it wouldn't look too much like the original video, and it would minimize the amount of graphical effort -- just make it snow on the game board, string some lights...

Then, of course, one would take a Carol of the Bells midi and drop in cue points for the lyrics.

The Games and other Sierra Adventure stuff / High-Resolution Packs
« on: November 09, 2015, 05:06:27 PM »
Has anyone else 'round here considered this concept as it might apply to SCI? Like, you'd take ScummVM and alter the graphics and sound code for its SCI engine to detect and substitute external data where available.

Something relatively simple might be like playing hrp/42.ogg instead of 42.snd, while something rather more involved might be drawing hrp/0_2_4.png instead of loop 2 cel 4 of 0.v56.

Just hypothetical I guess, but I doubt I'm the first here.

I have, in my closet, a large amount of backup DVDs, since I haven't always had an external HD and such. I thought it lost, but I found it anyway... the design docs for an attempt at a Larry 4 game that Raf wrote after I'd emailed Al Lowe for permission to make it! And god DAMN are these docs Flemish!

And not just that, but the AGS project files and such for the same are here too! Original plan was to write it in SCI, when SCI Studio 4 was released. Of course, we all know how that ended.

...all that hidden in the very first stack of many to boot!

SCI Community How To's & Tutorials / SCI1.1: Persistent Settings
« on: November 01, 2015, 03:18:12 PM »
Whenever you start a new game, you get these default settings for your detail, volume, and speed. Three, twelve, six respectively I believe. These values are included in savegames, as a necessity of the savegame design, but what if you have a particular volume preference and start a new game? Bam, it's back to twelve!

That won't do.

What if we could save these things in a separate file, apart from savegames, and detect and reload it when a new game starts?

In, add this to gameControls:
Code: [Select]
(method (dispose)
(var fHnd, value)
= fHnd FileIO(fiOPEN "settings" fCREATE)
= value (send gGame:_detailLevel)
FileIO(fiWRITE fHnd @value 2)
= value (send gGame:masterVolume)
FileIO(fiWRITE fHnd @value 2)
= value gGEgoMoveSpeed
FileIO(fiWRITE fHnd @value 2)
= value gTextSpeech
FileIO(fiWRITE fHnd @value 2)
FileIO(fiCLOSE fHnd)
And in, SQ5::play(), add this right between the debug trigger and (self:newRoom(theStartRoom):
Code: [Select]
= fHnd FileIO(fiOPEN "settings" fOPENFAIL)
(if (> fHnd 0)
FileIO(fiREAD fHnd @value 2)
= _detailLevel value
FileIO(fiREAD fHnd @value 2)
(self:masterVolume value)
FileIO(fiREAD fHnd @value 2)
= gGEgoMoveSpeed value
FileIO(fiREAD fHnd @value 2)
= gTextSpeech value
FileIO(fiCLOSE fHnd)

If you restore a savegame with different settings and press Play, the saved settings will of course reflect the savegame's settings.

SCI Syntax Help / OnMeCheck can't see the forest for the trees
« on: October 26, 2015, 05:13:28 AM »
Picture this: a T-split in a road, leading east-west in the foreground and northbound into the background. At the far end is a building. Tall trees surround the roads, leaving open sky in the middle above the building. The player's car sits on the road in the foreground with an interesting pool of fluid around one wheel. The car, pool, trees and building each have their shapes drawn out on the control screen in red, cyan, and brown respectively, with a little silver box for the building in the distance.

In rm110::init:
Code: [Select]
(trees:init() setOnMeCheck(omcCOLORS ctlBROWN))
(aShop:init() setOnMeCheck(omcCOLORS ctlSILVER))
(aCar:init() setOnMeCheck(omcCOLORS ctlRED))
(aPuddle:init() setOnMeCheck(omcCOLORS ctlCYAN))

Later on:
Code: [Select]
(instance aPuddle of Feature
sightAngle 40
approachX 132
approachY 172
_approachVerbs V_LOOK
onMeCheck ctlCYAN
//doVerb omitted, confirmed to work.
(instance aCar of Feature
approachX 160
approachY 160
_approachVerbs V_DO
onMeCheck ctlRED
noun N_CAR
//doVerb omitted, confirmed to work.
(instance aShop of Feature
onMeCheck ctlSILVER
noun N_SHOP
//These two don't ever trigger.
(method (handleEvent theEvent)
(super:handleEvent(rest theEvent))
(method (doVerb theVerb)
(super:doVerb(rest theVerb))
(instance trees of Feature
onMeCheck ctlBROWN
noun N_TREES
//testing doVerb and handleEvent omitted, equally dead.

I can click anywhere on the actual car (not in a hot rect, but on the actual shape) or puddle to verb them, having played through the little puzzle as far as its implementation allows me to so far. Looking at the trees or shop is supposed to remark that they're "just some trees" and "probably a gas station", but all I get is the room's description.

And I say hey, what's going on?

I've been following the development of a certain SNES emulator up close, and earlier today I was reminded of something from a while back. It was a SNES ROM that could identify with a high degree of certainty which emulator or console revision it ran on. The challenge for this certain emulator whose author strives for accuracy was to foil the detection without resorting to blatant lies.

How this ended is ultimately irrevelant.

What is, is that this in turn reminded me of a certain difference between Sierra's SCI terps and ScummVM: the latter supports everything at once, while the former has somewhat game-specific terps. For example, King's Quest 6 has its SEQ videos, while Larry 6 has the old SCI01 menu bar, and there are at least two "magnifying glass" effects that only work in their own respective games. If you run LSL6 on the SIERRA.EXE from KQ6, it outright says AddMenu is not supported.

On the other hand, ScummVM does not seem to care as much, as long as the kernel functions are basically all uniquely numbered. There doesn't seem to be anything stopping you from using SetCursor subop 10, the magnifying glass effect in Freddy Pharkas, and the menu bar code doesn't seem to care at all. Thus, theoretically, one should be able to play videos (both SEQ and AVI?) as well as do a magnification effect, color remapping (thanks QFG4 Demo), and a menu bar to bind them all together... if you run in ScummVM.

Now imagine an SCI11 game that actually does all these things. No single SSCI terp would be able to run it, of course; only ScummVM could. But imagine you want to let those who try it anyway down gently, like a Gameboy Color game in a classic mono Gameboy. Of course, where the GBC actually lets the game ROM know outright that it's a GBC (A=11h from the get-go, easy to check), I can't think of a way for an SCI11 script to tell if it's running on ScummVM or SSCI without deliberately crashing. The first idea I had was to check for a driver file, since ScummVM doesn't use those, but that wouldn't work as well considering they can still be present...

So what method, if any, is there to detect that you're running in ScummVM so that if you're not, you can show a gentle error message and quit again. Showing the message in SCI proper would be preferred, but that's a bit out of scope.

Of course, if all of the above is wrong and I've been misinterpreting the source code all along, that's a valid answer as well ;)

Police Quest 3 had these, but that used the old system with Text resources and all that. Here's my take on a no-hassle implementation that supports Messages.

By the end of this, you should be able to make this:

First, define a couple talkers. I called them NEATSPEAK1 through 5.

To's locals, add these:
Code: [Select]

In Template::init, add this:
Code: [Select]
= gNarrator templateNarrator
= gNeatSpeaker neatSpeaker //this bit
= gWindow mainWindow

Elsewhere -- I picked between templateNarrator and testMessager -- add this:
Code: [Select]
(class NeatNarrator of Narrator
(method (aim target)
= gWindow gNewSpeakWindow
(send gNewSpeakWindow:
tailX((send target:nsLeft))
tailY((- (send target:nsTop) 16))
//TODO: detect heads and center on those
//instead where available.
(instance neatSpeaker of NeatNarrator
(method (init param1)
= font gFont
(super:init(rest param1))

In templateNarrator::init, add
Code: [Select]
= gWindow mainWindowIf you use other narrators or talkers too, you might want to do similarly for those.

In testMessager::findTalker, add these cases:
Code: [Select]
(send gNeatSpeaker:aim(gNeatSpeakers[0]))
(send gNeatSpeaker:aim(gNeatSpeakers[1]))
(send gNeatSpeaker:aim(gNeatSpeakers[2]))
(send gNeatSpeaker:aim(gNeatSpeakers[3]))
(send gNeatSpeaker:aim(gNeatSpeakers[4]))

Almost there. Before you display a message, perhaps in your room's init, you can now set the gNeatSpeakers entries you'll use to those views that'll speak like that:
Code: [Select]
= gNeatSpeakers[0] gEgo
= gNeatSpeakers[1] neatTest //this is the coin in the screenshot.

Of course, this'll invalidate the pointers when you change rooms, but bulletproofing that is a challenge for later.

TODO: protect from stale pointers, allow separate heads, allow speech animation, look into SCUMM-style.

SCI Community How To's & Tutorials / Iceman Save Scumming
« on: September 03, 2015, 05:17:18 PM »
In Codename Iceman, there's this minigame wherein your opponent doesn't let you save your way to victory. I thought I'd do a little investigation into how this is done, and it turns out to be pretty simple. Here's how:
  • In Game::replay, right after the (send gSounds:pause(0)) line near the bottom of that method, add (send gRegions:eachElementDo(#replay)).
  • In Game::rgn, add a blank replay method. Just (method (replay)).
  • In your protected room (or region!), add a non-blank replay method. This'll trigger whenever the player restores a saved game that's set in this room.

For completeness' sake, here's basically the replay method from Iceman room 39:
Code: [Select]
(method (replay)
(if (< 2 ++replays)
TextPrint("The old salt looks you in the eye and says, \n\"Now lad I won't be playin' with \nye restorin' every time you lose. \nThat be cheatin'!\"")
//Screw over the player here or whatever.
(switch (replays)
(case 1
TextPrint("The old salt says, \"well do ye think your little rest has changed your luck?\"")
(case 2
TextPrint("\"You wouldn't be saving the game just to avoid losing would ye?\"")

Relatedly, sites like TVTropes report that the old salt'll remove your save game when you restore too often. I cannot in fact find anything in the actual decompilation to this effect -- only that the rum is gone.

Pages: [1] 2

SMF 2.0.11 | SMF © 2015, Simple Machines
Simple Audio Video Embedder

Page created in 0.154 seconds with 16 queries.