|
|
This page contains no introduction. |
Source Code#
Several chunks of the source code remain in TRANS.EXE. Strangely, it's written in some variant of Forth, an unusual choice for a game and especially in 1989.
\ Forward Reference resolved after ReceptorRole def.
Global WhichSeat# \ to contain ^EF.seat# when order is posted
0 Constant HasNo \ Bordering paramaters
1 Constant HasBlue
2 Constant HasRed
3 Constant HasNormal
\ Bitflag manipulators
\ These assume that their data has been most recently referenced.
\ The framelptr for most these words is actually FramelBodyBuf, where
\ data has been imported using :ImportBody
: thFlagTrue ( FramelBody\n -- ) \ sets nth bitflag
swap ^EF.flags swap thBit ( s: flagsAddr\mask -- )
bitsON
UpdateDataInFramelBodySeg
;
: thFlagFalse ( FramelBody\n -- ) \ resets nth bitflag
swap ^EF.flags swap thBit ( s: flagsAddr\mask -- )
bitsOFF
UpdateDataInFramelBodySeg
;
: thFlagTrue? ( FramelBody\n -- flag) \ true if bit is set
swap ^EF.flags swap thBit@ ;
: IsInactive? ( framelBody -- True if controller is inactive. Not msg)
3 thFlagTrue? ;
1 Constant Dim \ All three IBM Mode 6 dependent.
5 Constant Bright
0 Constant Invisible
Doer DrawThisOutline \ May be rounded if a button is used
: OutlineDrawn ( FramelBody\Attribute -- ) \ Draw appropriate outline
<GDTA> C@ ( s: FramelBody\Attribute\OldAttribute -- )
Rot Rot DR-COLOR ( s: OldAttribute\FramelBody -- )
'sOutlineCoords ‹j‹å DrawThisOutline ( s: OldAttribute -- )
DR-COLOR ; \ Restore old attribute. This is IBM Mode 6 dependent.
\ Controller hit check, for mouse support
-CAPS
DVARIABLE THEPOINT
: CHECKFORHIT ( x\y\framelBody -- True if hit | Else False )
DUP ISINACTIVE? \ if asleep, don't respond to hits
IF
DDROP DROP FALSE
ELSE
C{ 'SOUTLINECOORDS ReorderCoords FRAMEL'SRECT }SetRect
DROP \ unneeded remaining stack item
THEPOINT D! \ Put the point where MTW will find it
C{ 1 1 FRAMEL'SRECT GET:CS THEPOINT }PtOnRect
THEN
;
\ Protect framel rects while the :Appear, to prevent mouse cursor boffing
DEFER PROTECTRECT \ noop if no mouse
DEFER UNPROTECTRECT \ noop if no mouse
: (PROTECTRECT) ( frmlPtr -- frmlPtr ) \ Protect the rectangle
C{ DUP :IMPORTBODY 'SOUTLINECOORDS ReorderCoords PROTECTEDRECT }SetRect
C{ PROT
appear
\ 7 November 88 5:46pm RGM Use TheImage not TheMovie in (MovieBorderDrawn)
\ 21 November 88 10:26am RGM Draw dim outline when sleeping if bordered
\ 8 Dec
if no mouse
DEFER UNPROTECTRECT \ noop if no mouse
: (PROTECTRECT) ( frmlPtr -- frmlPtr ) \ Protect the rectangle
C{ DUP :IMPORTBODY 'SOUTLINECOORDS Reorder
|
The Star Trek series | |
|---|---|
|
The Original Series | |
|
Commodore VIC-20 |
|
|
Atari 8-bit family |
|
|
DOS |
The Kobayashi Alternative • 25th Anniversary • Judgment Rites |
|
NES |
|
|
SNES |
|
|
The Next Generation | |
|
DOS |
|
|
Mac OS Classic |
|
|
NES |
|
|
Game Boy |
|
|
Game Gear |
|
|
Genesis |
|
|
SNES |
|
|
PlayStation |
|
|
Deep Space Nine | |
|
Genesis |
|
|
SNES |
|
|
Voyager | |
|
Windows, Mac OS Classic, Mac OS X, PlayStation 2 |
|
|
Lower Decks | |
|
Android, iOS |
|
|
Misc. | |
|
Windows |
Generations • Armada • Armada II • Resurgence |
|
Nintendo DS |
|
|
PlayStation 2 |
|
|
PlayStation Portable |
|
|
PlayStation 5, PlayStation 4, Xbox One, Xbox Series X, Nintendo Switch |
|