Add files via upload

This commit is contained in:
Antoine Vignau 2020-06-08 22:58:01 +02:00 committed by GitHub
parent 26c8981329
commit 54c01d1ce8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 1762 additions and 0 deletions

View File

@ -0,0 +1,102 @@
/*
** Ball, Release v1.0 - 19 July 1993.
** C Source Code - "Config.cc" - Source Support Segment
**
** Routines here are mostly by Josef Wankerl (thanks Joe! & Diz :) & GS+
** Suscribe to GS+; it's a great mag!
**
** Copyright 1993 DigiSoft Innovations, All Rights Reserved.
**
** Permission granted to use this source in any module designed for
** Twilight II for the Apple IIGS.
*/
/*****************************************************************************\
|* LoadConfigResource-
|* This function attempts to load a named rT2ModuleWord resource. If
|* the resource exists, the value of the rT2ModuleWord resource is
|* returned, otherwise a default value is returned.
\*****************************************************************************/
Word LoadConfigResource (char *Name, Word DefaultValue) {
Word Result, fileID;
Long rID;
Handle ConfigData;
struct {
word Type;
Long ID;
} HandleInfo;
/* Attempt to load the named resource */
rID = RMFindNamedResource((Word) rT2ModuleWord, (Ptr) Name, &fileID);
ConfigData = LoadResource((Word) rT2ModuleWord, rID);
if (toolerror ())
Result = DefaultValue; /* Resource does not exist, so return the default value */
else
{
HLock(ConfigData); /* Resource exists, return the rT2Module word value */
Result = **(word **)ConfigData;
HUnlock(ConfigData);
ReleaseResource(3, (Word) rT2ModuleWord, rID);
}
return Result;
}
/*****************************************************************************\
|* SaveConfigResource-
|* This function takes a Word value and saves it as a rT2ModuleWord
|* resource in the Twilight.Setup file. The value is saved and a
|* name is added. Any previous rT2ModuleWord with the same name is
|* first removed before the new value is added.
\*****************************************************************************/
void SaveConfigResource (char *Name, Word SaveValue) {
Word FileID;
Long ResourceID;
Word **ConfigData;
/* Check to see if the named resource already exists */
ResourceID = RMFindNamedResource (rT2ModuleWord, Name, &FileID);
if (!toolerror()) {
char NullString = '\x000';
/* The resource already exists, so first remove the name from */
/* the resource, then remove the resource itself */
RMSetResourceName (rT2ModuleWord, ResourceID, &NullString);
RemoveResource (rT2ModuleWord, ResourceID);
}
/* Create new handle for the future resource */
ConfigData =
(Word **) NewHandle (sizeof (Word), GetCurResourceApp(), attrLocked, NULL);
**ConfigData = SaveValue;
/* Find a new ID for the resource and add it */
ResourceID = UniqueResourceID (0, rT2ModuleWord);
AddResource ((Handle) ConfigData, 0, rT2ModuleWord, ResourceID);
if (toolerror ())
DisposeHandle ((Handle) ConfigData);
else {
/* Set the name of the resource if it was added correctly */
RMSetResourceName (rT2ModuleWord, ResourceID, Name);
UpdateResourceFile (SetupFileNumber);
}
}

View File

@ -0,0 +1,27 @@
# Twilight II Spirographics UNIX MakeFile
# by Jim Maricondo
# v1.0 - 18 Jul 93 6:22pm
# First deal with all the dfork...
ball.d.root: ball.cc config.cc 22/t2.h
compile +w ball.cc keep=ball.d
ball.d: ball.d.root ball.d.a
link +w ball.d keep=ball.d
# Now work with the rfork...
ball.r: ball.rez 22/t2common.rez
compile ball.rez keep=ball.r
# Now put it together.
# filetype ball $bc $4004
ballgraphics: ball.r ball.d
duplicate -d ball.d ball
duplicate -r ball.r ball
setfile -at $4004 -t $bc ball -m .
cp ball *:system:cdevs:twilight:ball
22:beep

View File

@ -0,0 +1,274 @@
/*
** Ball, Release v1.0 - 16 July 1993. (4 spaces = 1 tab)
**
** A Twilight II module by James C Smith and James R Maricondo.
** Parts based off the original T2 C shell by Josef Wankerl.
**
** Copyright 1993 DigiSoft Innovations, All Rights Reserved.
**
** Permission granted to use this source in any module designed for Twilight II.
*/
/* pragmas */
#pragma keep "Ball.d"
#pragma cdev Ball
#pragma optimize -2
#pragma debug 0
/* defines */
#define ballCtlList 1l
#define RedStr 1l
#define BlueStr 2l
#define GreenStr 3l
#define PurpleStr 4l
#define YellowStr 5l
#define TurquoiseStr 6l
#define ballColorStr 10l
#define useSoundStr 20l
#define colorMenu 1l
#define colorCtl 1l
#define useSoundCtl 2l
#define ballStrCtl 3l
#define ballIconCtl 4l
#define ballLineCtl 5l
#define blueMenuItem 1l
#define greenMenuItem 2l
#define redMenuItem 3l
#define turquoiseMenuItem 4l
#define purpleMenuItem 5l
#define yellowMenuItem 6l
#define ballIcon 0x0010DD01l
/* includes */
#include "22:T2.h"
#include <quickdraw.h>
#include <control.h>
#include <resources.h>
#include <orca.h>
#include <memory.h>
pascal void SysBeep() inline(0x2C03,dispatcher);
pascal LongWord TickCount() inline(0x1006,dispatcher);
#pragma lint -1
/* prototypes */
LongWord Ball(LongWord, LongWord, Word);
LongWord MakeT2Ball(void);
void LoadSetupT2Ball(void);
void SaveConfigResource(char *, Word);
Word LoadConfigResource(char *, Word);
LongWord HitT2Ball(LongWord);
void SaveT2Ball(void);
/* globals */
char *ConfigNameString="\pBall Setup";
unsigned int BallColor, SoundFlag;
Word *movePtr;
long NewTick, OldTick;
Word SetupFileNumber;
GrafPortPtr SetupWindow;
Long X,Y,XV,YV, BallSize, GravityValue;
Rect MyRect, OldRect;
Word MyColorTable[16];
/* other source files */
#include "config.cc"
/* main functions */
LongWord BlankT2Ball(void) {
int temp;
InitColorTable(MyColorTable);
SetColorTable(0, MyColorTable);
BallSize=10;
GravityValue=8000;
X=100<<16;
Y=15<<16;
XV=4<<16;
YV=0;
SetPenMode(modeXOR);
SetSolidPenPat(0xF);
while (!(*movePtr)) {
YV+=GravityValue;
X+=XV;
Y+=YV;
if((X+BallSize>(320<<16))|(X-BallSize<0))
XV=-XV;
if((Y+BallSize>(200<<16))|(Y-BallSize<0))
YV=-YV;
asm {
lda MyRect+0
sta OldRect+0
lda MyRect+2
sta OldRect+2
lda MyRect+4
sta OldRect+4
lda MyRect+6
sta OldRect+6
};
MyRect.v1=(Y>>16)-BallSize;
MyRect.h1=(X>>16)-BallSize;
MyRect.v2=(Y>>16)+BallSize;
MyRect.h2=(X>>16)+BallSize;
asm {
lda MyRect
clc
adc BallSize
sta temp
lda temp
cmp #200
bcc fine
lda #199
sta temp
fine: sep #0x30
waitloop: lda >0xe0c02f
asl a
lda >0xe0c02e
rol a
cmp temp
bne waitloop
rep #0x30
};
PaintOval(&OldRect);
PaintOval(&MyRect);
/*
l0: lda >0xe1c019
bmi l0
l1: lda >0xe1c019
bpl l1
};*/
/* SetSolidPenPat(0);
FrameOval(&MyRect);*/
}
ClearScreen (0);
return (LongWord) NULL;
}
void SaveT2Ball(void) {
Word OptionWord;
Word FileNumber;
#ifdef zzz
/* Save current resource file and switch in Twilight.Setup */
FileNumber = GetCurResourceFile ();
SetCurResourceFile (SetupFileNumber);
/* Save control values */
ConfigNumBalls = GetCtlValue (GetCtlHandleFromID (SetupWindow, NumBallsPopup));
OptionWord=ConfigNumBalls;
SaveConfigResource(ConfigNameString, OptionWord);
/* Restore old resource file */
SetCurResourceFile (FileNumber);
#endif
}
LongWord HitT2Ball(LongWord ControlHit) {
LongWord EnableFlag = 0L;
if (ControlHit == 1 || ControlHit == 2)
EnableFlag = 1L;
return EnableFlag;
}
LongWord MakeT2Ball(void) {
CtlRecHndl junk;
Word FileNumber;
FileNumber = GetCurResourceFile ();
SetCurResourceFile (SetupFileNumber);
LoadSetupT2Ball();
SetCurResourceFile (FileNumber);
junk=NewControl2(SetupWindow, resourceToResource, (long) ballCtlList);
SetCtlValue (BallColor, GetCtlHandleFromID (SetupWindow, colorCtl));
SetCtlValue (SoundFlag, GetCtlHandleFromID (SetupWindow, useSoundCtl));
return 5L;
}
/*
|* LoadSetupT2Message- *|
|* This function loads in the messages configuration data. *|
|*/
void LoadSetupT2Ball(void) {
Word OptionWord;
/* Option Word format
** 0x000F = Num Balls
*/
OptionWord = LoadConfigResource (ConfigNameString, 0x8FF0);
BallColor = OptionWord & 0x0FFF;
SoundFlag = OptionWord & 0x8000;
}
LongWord Ball(LongWord data2, LongWord data1, Word message) {
LongWord Result = 1L;
switch (message) {
case MakeT2:
SetupWindow = (GrafPortPtr) data1;
SetupFileNumber = (Word) data2;
Result = MakeT2Ball ();
break;
case BlankT2:
movePtr=(Word *) data1;
Result = BlankT2Ball ();
break;
case SaveT2:
SaveT2Ball();
break;
case LoadSetupT2:
LoadSetupT2Ball();
break;
case HitT2:
Result = HitT2Ball(data2);
case UnloadSetupT2:
case KillT2:
break;
}
return Result;
}

View File

@ -0,0 +1,383 @@
// --------------------------------------------------------------------
// Genesys created REZ data code
// Simple Software Systems International, Inc.
// APWREZ.SCG 1.2
// --------------------------------------------------------------------
#include "types.rez"
// --- Icon Definitions
resource rIcon (ICON_00000001, $0000) {
$8000, // kind
$0014, // height
$0016, // width
$"F00000000000000000000F"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0F044000000000000000F0"
$"0F444400000DDD000000F0"
$"0F44770000DDDDD00000F0"
$"0F0777700ADDDDD00000F0"
$"0F077660BBDDDDD00000F0"
$"0F00666BBBBDDD030000F0"
$"0F0066EBBBB003000000F0"
$"0F000EEEBB0000330000F0"
$"0F000EEEE00000300000F0"
$"0F0000EE000000033000F0"
$"0FFFFFFFFFFFFFFFFAFFF0"
$"0000000000000000000000"
$"F0FFFFFFFFFFFFFFFFFF0F"
$"F0FFFFFFFFFFFFFFFFFF0F"
$"F0FF4AFFFFFFFFFFFFFF0F"
$"F0CCCCCCCCCCCCCCCCCC0F"
$"F0FFFFFFFFFFFFFFFAFF0F"
$"F00000000000000000000F",
$"0FFFFFFFFFFFFFFFFFFFF0"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0";
};
// --- Control List Definitions
resource rControlList (CTLLST_00000005, $0000) {
{
CTLTMP_00010012, // control 1
CTLTMP_00007003, // control 2
CTLTMP_00010013, // control 3
CTLTMP_00007002, // control 4
CTLTMP_00007001, // control 5
CTLTMP_00007000, // control 6
CTLTMP_00006FFF, // control 7
CTLTMP_00006FFE, // control 8
};
};
// --- Control Templates
resource rControlTemplate (CTLTMP_00006FFE, $0000) {
$00006FFE, // ID
{ 61, 74, 0, 0}, // rect
popUpControl {{
$0040, // flag
$1002, // moreFlags
$00000000, // refCon
$0000, // titleWidth
MENU_00000002, // menuRef
$01FF, // initialValue
0 // colorTableRef
}};
};
resource rControlTemplate (CTLTMP_00006FFF, $0000) {
$00006FFF, // ID
{ 75, 78, 84,188}, // rect
checkControl {{
$0000, // flag
$1002, // moreFlags
$00000000, // refCon
PSTR_000000FE, // titleRef
$0001 // initialValue
}};
};
resource rControlTemplate (CTLTMP_00007000, $0000) {
$00007000, // ID
{ 49,114, 59,209}, // rect
statTextControl {{
$0000, // flag
$1002, // moreFlags
$00000000, // refCon
LETXTBOX_00000001, // textRef
LETXTBOX_00000001_CNT, // textSize
$0001 // just
}};
};
resource rControlTemplate (CTLTMP_00007001, $0000) {
$00007001, // ID
{ 26,138, 49,186}, // rect
iconButtonControl {{
$0004, // flag
$1020, // moreFlags
$00000000, // refCon
ICON_00000001, // iconRef
0, // titleRef
0, // colorTableRef
$0000, // displayMode
}};
};
resource rControlTemplate (CTLTMP_00007002, $0000) {
$00007002, // ID
{ 4,232, 16,286}, // rect
simpleButtonControl {{
$0000, // flag
$3002, // moreFlags
$00000000, // refCon
PSTR_000000FD, // titleRef
0, // colorTableRef
{"T","t",$0100,$0100} // key equivalents
}};
};
resource rControlTemplate (CTLTMP_00007003, $0000) {
$07FEFFFE, // ID
{ 4,290, 16,344}, // rect
simpleButtonControl {{
$0000, // flag
$3002, // moreFlags
$00000000, // refCon
PSTR_00000012, // titleRef
0, // colorTableRef
{"S","s",$0100,$0100} // key equivalents
}};
};
resource rControlTemplate (CTLTMP_00010012, $0000) {
$07FEFFFF, // ID
{ 53, 60, 92,274}, // rect
{{
$0002, // flag
$1000, // moreFlags
$00000000, // refCon
resource rControlTemplate (CTLTMP_00010013, $0000) {
$07FEFFFD, // ID
{ 4, 4, 0, 0}, // rect
popUpControl {{
$0040, // flag
$1082, // moreFlags
$00000000, // refCon
$0000, // titleWidth
MENU_00000001, // menuRef
$0200 // initialValue
}};
};
// --- rPString Templates
resource rPString (PSTR_00000001, $C018) {
"Screen Corners"
};
resource rPString (PSTR_00000002, $C018) {
"Options"
};
resource rPString (PSTR_00000012, $0000) {
"Save"
};
resource rPString (PSTR_000000FC, $0000) {
"Setup: "
};
resource rPString (PSTR_000000FD, $0000) {
"Test"
};
resource rPString (PSTR_000000FE, $0000) {
"Use Sound"
};
resource rPString (PSTR_000000FF, $0000) {
" Ball Color: "
};
resource rPString (PSTR_00000100, $0000) {
"Red"
};
resource rPString (PSTR_00000107, $C018) {
"Blue"
};
resource rPString (PSTR_00000108, $C018) {
"Green"
};
resource rPString (PSTR_00000109, $C018) {
"Purple"
};
resource rPString (PSTR_0000010A, $C018) {
"Yellow"
};
resource rPString (PSTR_0000010B, $C018) {
"Turquoise"
};
// --- Menu Definitions
resource rMenu (MENU_00000001, $0018) {
$0001, // menuID
$A008, // menuFlag
PSTR_000000FC, { // menuTitleRef
MENUITEM_00000200,
MENUITEM_00000201
};
};
resource rMenu (MENU_00000002, $0000) {
$0002, // menuID
$A000, // menuFlag
PSTR_000000FF, { // menuTitleRef
MENUITEM_000001FF,
MENUITEM_00000107,
MENUITEM_00000108,
MENUITEM_00000109,
MENUITEM_0000010A,
MENUITEM_0000010B
};
};
// --- Menu Item Definitions
resource rMenuItem (MENUITEM_00000107, $C018) {
$000F, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_00000107 // itemTitleRef
};
resource rMenuItem (MENUITEM_00000108, $C018) {
$00F0, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_00000108 // itemTitleRef
};
resource rMenuItem (MENUITEM_00000109, $C018) {
$0F0F, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_00000109 // itemTitleRef
};
resource rMenuItem (MENUITEM_0000010A, $C018) {
$0FF0, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_0000010A // itemTitleRef
};
resource rMenuItem (MENUITEM_0000010B, $C018) {
$00FF, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_0000010B // itemTitleRef
};
resource rMenuItem (MENUITEM_000001FF, $0000) {
$0F00, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_00000100 // itemTitleRef
};
resource rMenuItem (MENUITEM_00000200, $C018) {
$0200, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8000, // itemFlag
PSTR_00000001 // itemTitleRef
};
resource rMenuItem (MENUITEM_00000201, $C018) {
$0201, // itemID
"","", // itemChar, itemAltChar
NIL, // itemCheck
$8040, // itemFlag
PSTR_00000002 // itemTitleRef
};
// --- rTextForLETextBox2 Templates
#define LETXTBOX_00000001_CNT 40 /* move this line to the top of this file */
resource rTextForLETextBox2 (LETXTBOX_00000001, $0000) {
"\$01"
"J"
"\$00"
"\$00"
"\$01"
"L"
"\$00"
"\$00"
"\$01"
"R"
"\$04"
"\$00"
"\$01"
"F"
"\$FE"
"\$FF"
"\$00"
"\$08"
"\$01"
"C"
"\$00"
"\$00"
"\$01"
"B"
"\$FF"
"\$FF"
" Ball Options "
};
// --- Window Templates
resource rWindParam1 (WPARAM1_00000FFF, $0000) {
$C0A8, // plFrame (frame bits)
PSTR_000000FC, // plTitle (title ID)
$00000000, // p1RefCon
{ 0, 0, 0, 0}, // p1ZoomRect
WCOLOR_00000001, // p1ColorTable
{$0000, $0000}, // p1YOrigin, p1XOrigin
{$0000, $0000}, // p1DataHeight, p1DataWidth
{$0000, $0000}, // p1MaxHeight, p1MaxWidth
{$0000, $0000}, // p1VerScroll, p1HorScroll
{$0000, $0000}, // p1VerPage, p1HorPage
$00000000, // p1InfoText (info RefCon)
$0000, // p1InfoHeight
{ 50,146,180,494}, // p1Position
infront, // p1Plane
CTLLST_00000005, // plControlList
$0A09 // plInDesc
};
// --- Window Color Templates
resource rWindColor (WCOLOR_00000001, $0000) {
$0000, // frameColor
$0F00, // titleColor
$020F, // tBarColor
$F0FF, // growColor
$00F0 // infoColor
};

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,354 @@
/*
* "BallBounce" v1.0 - Sample Twilight II Module in Orca/C
*
* v1.0 - 30 May 1993 by James R. Maricondo
* =
* =
*/
#pragma keep "ball.d"
#pragma optimize -1
#pragma cdev BallBounce
#include "ball.h"
#pragma lint -1
/* Strings */
char toT2String[]=toT2Str;
char ImageDelayStr[]="\pSpiro: ImageDelay";
char SmallPenStr[]="\pSpiro: SmallPen";
/* Prototypes */
extern int random(void);
extern void set_random_seed(void);
extern void init_random(char *);
LongWord MakeT2Message(void);
void LoadSetupT2Message(void);
void SaveConfigResource(char *, word);
word LoadConfigResource(char *, word);
LongWord HitT2Message(LongWord);
LongWord BlankT2Message(void);
void SaveT2Message(void);
/* Global Variables */
Word *movePtr;
Word ImageDelay; /* Image delay */
Word SmallPen; /* Force small pen size? */
Word SetupFileNumber;
GrafPortPtr SetupWindow;
/*------ SPIROGRAPHICS main drawing control routine ------*/
LongWord BlankT2Message (void) {
extended vertex_angle, rotation_angle;
unsigned int shapes, sides;
Word startSane, MyID;
Long TargetTick;
struct startupToolsOut spiroToolsOut;
Ptr spiroToolsOutP = (Ptr) &spiroToolsOut;
MyID = MMStartUp();
startSane = SANEStatus();
if (!startSane) {
SendRequest(t2StartupTools, stopAfterOne+sendToName, (long) toT2String,
(long) (((long) MyID<<16) + startshut_sane),
(Ptr) spiroToolsOutP);
if (spiroToolsOut.errors)
return (LongWord) NULL;
}
SetPenMode(modeCopy);
SetSolidPenPat(-1);
SetPenSize(1,1);
init_random(toT2String);
/*
* vertex_angle and rotation_angle can be any number in the range 1 thru 359
* repetitions should be between 10-45
* sides should be between 1-40
* the fewer sides, the fewer repetitions should be executed <- unimplemented
*/
while (!(*movePtr)) {
vertex_angle = (int) (random() & 31); /*32(cur),<<23>>,25,35,45,60*/
rotation_angle = (int) (random() % 38); /*40,50,70,80*/
shapes = (random() & 31) + 14; /*31-45(cur),35-45,25-47,30-45,30-50*/
sides = (random() & 15); /*16(cur),18,25,40*/
if (vertex_angle > 23)
vertex_angle = 0;
/*
* Now the variables have whole numbers. This is acceptable, but it will
* prevent us from seeing many unique shapes (like a triangle, where
* vertex_angle must be ~ 1.5) that only can be generated with radians with
* decimals. So give both randomized radian measures decimals, by adding
* a random number between 0 and 1.
*/
vertex_angle += ((unsigned int) random() / 65534.9);
rotation_angle += ((unsigned int) random() / 65534.9);
if (draw_spirographic(vertex_angle, rotation_angle, shapes, sides))
break;
TargetTick = GetTick () + (ImageDelay * 60);
while ((!(*movePtr)) && (GetTick () < TargetTick));
if (*movePtr)
break;
ClearScreen(0);
}
if (!startSane)
SendRequest(t2ShutdownTools, stopAfterOne+sendToName, (long) toT2String,
(long) startshut_sane,
(long) NULL);
/* No error occurred, so return a NULL handle */
return (LongWord) NULL;
}
/*****************************************************************************\
|* SaveConfigResource-
|* This function takes a word value and saves it as a rT2ModuleWord
|* resource in the Twilight.Setup file. The value is saved and a *|
|* name is added. Any previous rT2ModuleWord with the same name is
|* first removed before the new value is added.
\*****************************************************************************/
void SaveConfigResource (char *Name, Word SaveValue) {
Word FileID;
Long ResourceID;
Word **ConfigData;
/* Check to see if the named resource already exists */
ResourceID = RMFindNamedResource (rT2ModuleWord, Name, &FileID);
if (!toolerror ())
{
char NullString = '\x000';
/* The resource already exists, so first remove the name from */
/* the resource, then remove the resource itself */
RMSetResourceName (rT2ModuleWord, ResourceID, &NullString);
RemoveResource (rT2ModuleWord, ResourceID);
}
/* Create new handle for the future resource */
ConfigData =
(Word **) NewHandle (sizeof (Word), GetCurResourceApp(), attrLocked, 0L);
**ConfigData = SaveValue;
/* Find a new ID for the resource and add it */
ResourceID = UniqueResourceID (0, rT2ModuleWord);
AddResource ((handle) ConfigData, 0, rT2ModuleWord, ResourceID);
if (toolerror ())
DisposeHandle ((handle) ConfigData);
else
{
/* Set the name of the resource if it was added correctly */
RMSetResourceName (rT2ModuleWord, ResourceID, Name);
UpdateResourceFile (SetupFileNumber);
}
}
/*****************************************************************************\
|* LoadConfigResource- *|
|* This function attempts to load a named rT2ModuleWord resource. If *|
|* the resource exists, the value of the rT2ModuleWord resource is *|
|* returned, otherwise a default value is returned. *|
\*****************************************************************************/
Word LoadConfigResource (char *Name, Word DefaultValue) {
Word Result, fileID;
Long rID;
Handle ConfigData;
/**************************************/
/* Attempt to load the named resource */
/**************************************/
rID = RMFindNamedResource((Word) rT2ModuleWord, (Ptr) Name, &fileID);
ConfigData = LoadResource((Word) rT2ModuleWord, rID);
if (toolerror ())
Result = DefaultValue; /* Resource does not exist, so return the default value */
else {
HLock(ConfigData); /* Resource exists, return the rT2Module word value */
Result = **(word **)ConfigData;
HUnlock(ConfigData);
ReleaseResource(3, (Word) rT2ModuleWord, rID);
}
return Result;
}
/*****************************************************************************\
|* LoadSetupT2Message- *|
|* This function loads in the messages configuration data. *|
\*****************************************************************************/
void LoadSetupT2Message(void) {
ImageDelay = LoadConfigResource (ImageDelayStr, 7u);
SmallPen = LoadConfigResource (SmallPenStr, FALSE);
}
/*****************************************************************************\
|* MakeT2Message- *|
|* This function creates the controls for the messages setup window *|
|* and sets the value of the controls the the current setup. *|
\*****************************************************************************/
LongWord MakeT2Message(void) {
int i;
Word FileNumber;
pointer *extraInfoH;
handle df_rez_ctlH;
handle df_ctlH;
/* Save current resource file and switch in Twilight.Setup */
FileNumber = GetCurResourceFile ();
SetCurResourceFile (SetupFileNumber);
/* Make absolutely sure that the messages configuration data is loaded */
LoadSetupT2Message ();
/* Restore old resource file */
SetCurResourceFile (FileNumber);
/* Create setup controls and set their states to match current setup */
NewControl2 (SetupWindow, resourceToResource, MainControlList);
df_rez_ctlH = LoadResource (rControlTemplate, imageDelayCtl_rID);
extraInfoH = (pointer *) GetWRefCon( (GrafPortPtr) SetupWindow);
(long) (*df_rez_ctlH)[14] = (long) *extraInfoH;
df_ctlH = (handle) NewControl2((WindowPtr) SetupWindow, singlePtr, (long) *df_rez_ctlH);
ReleaseResource (3, rControlTemplate, imageDelayCtl_rID);
MakeThisCtlTarget ((CtlRecHndl) df_ctlH);
CallCtlDefProc ((CtlRecHndl) df_ctlH, (word) SetFieldValue, (((long)ImageDelay<<16)+34ul));
SetCtlValue (SmallPen, GetCtlHandleFromID (SetupWindow, forceSmallPenCtl));
/* Return the number of the last control */
return LastCtl;
}
/*****************************************************************************\
|* HitT2Message-
|* This function checks to see which control has been hit, and if a
|* control that requires the "Update" button has been hit, the
|* EnableFlag is set to true.
\*****************************************************************************/
LongWord HitT2Message (LongWord ControlHit) {
/* LongWord EnableFlag = 0L;*/
if ((ControlHit == imageDelayCtl) || (ControlHit == forceSmallPenCtl))
return 1L;
/* EnableFlag = 1L;*/
else
return 0L;
/* Return the update button enable flag */
/* return EnableFlag;*/
}
/*****************************************************************************\
|* SaveT2Message-
|* This function saves the values of all setup controls.
\*****************************************************************************/
void SaveT2Message (void) {
Word FileNumber;
/* Save current resource file and switch in Twilight.Setup */
FileNumber = GetCurResourceFile ();
SetCurResourceFile (SetupFileNumber);
/* Save control values */
ImageDelay = (unsigned int) CallCtlDefProc (GetCtlHandleFromID (SetupWindow,
imageDelayCtl), GetFieldValue, 34ul);
SaveConfigResource (ImageDelayStr, ImageDelay);
SmallPen = GetCtlValue (GetCtlHandleFromID (SetupWindow, forceSmallPenCtl));
SaveConfigResource (SmallPenStr, SmallPen);
/* Restore old resource file */
SetCurResourceFile (FileNumber);
}
/*****************************************************************************\
|* BallBounce-
|* This function checks the Twilight II message parameter and *|
|* dispatches control to the appropriate message handler. *|
\*****************************************************************************/
LongWord BallBounce (LongWord data2, LongWord data1, Word message) {
LongWord Result = 1L;
switch (message)
{
case MakeT2:
/* Save pointer to setup window and resource file number of Twilight.Setup */
SetupWindow = (GrafPortPtr) data1;
SetupFileNumber = (Word) data2;
/* Create the setup controls */
Result = MakeT2Message();
break;
case SaveT2:
SaveT2Message();
break;
case BlankT2:
movePtr=(Word *) data1;
Result = BlankT2Message();
break;
case LoadSetupT2:
LoadSetupT2Message();
case UnloadSetupT2:
case KillT2:
break;
case HitT2:
Result = HitT2Message(data2);
break;
}
return Result;
}

View File

@ -0,0 +1,46 @@
#include <types.h>
#include <quickdraw.h>
#include <orca.h>
#include <math.h>
#include <memory.h>
#include <sane.h>
#include <control.h>
#include <quickdraw.h>
#include <resources.h>
#include <window.h>
#include <locator.h>
#include <misctool.h>
#include "22:t2.h"
#define MAX_X 640
#define MAX_Y 200
#define CENTER_Y MAX_Y/2
#define CENTER_X MAX_X/2
/* Aspect ratio = 1.27 for 320 mode for standard displays
2.54 for 640 mode for standard displays
2.10 for 640 mode for Jim's condensed-type display */
#define SCALE_X 2.10
#define PI 3.141592653589793
/* resource IDs */
#define imageDelayCtl_rID 1L
#define forceSmallPenCtl_rID 2L
#define imageDelayStatTextCtl_rID 3L
#define spiroOptsStatTextCtl_rID 4L
#define iconCtl_rID 5L
#define MainControlList 1L
/* Control IDs */
#define forceSmallPenCtl 1L
#define imageDelayTxtCtl 2L
#define iconCtl 3L
#define imageDelayCtl 4L
#define LastCtl imageDelayCtl

View File

@ -0,0 +1,226 @@
#include "types.rez"
#include "22:T2Common.Rez"
// --- type rDataList ($1986) defines
#define imageDelayDataList 1
// --- type rTaggedStrings ($802E) defines
#define field1Strings 1
// --- type $8003 defines
#define spiroCtlLst 1
// --- type $8004 defines
#define imageDelayCtl 1
#define forceSmallPenCtl 2
#define imageDelayStatTextCtl 3
#define spiroOptsStatTextCtl 4
#define iconCtl 5
// --- type $8006 defines
#define forceSmallPen_pstr 2
#define spiroOpts_pstr 3
// --- type $800B defines
#define imageDelay_LText 1
// --- custom resource type defines
resource rT2ModuleFlags (moduleFlags) {
fSetup +
fFadeOut +
fFadeIn +
fLeavesUsableScreen +
fGrafPort640, // module flags
$01, // enabled flag (unimplemented)
$0110, // minimum T2 version required
NIL, // reserved
"Spirographics" // module name
};
// --- Icon Definitions
resource rIcon (moduleIcon) {
$8000, // kind
$0014, // height
$0016, // width
$"F00000000000000000000F"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0F0000000EEE00000000F0"
$"0F000000E000E0000000F0"
$"0F00000E00E00E000000F0"
$"0F0000E00E0E0E0D0000F0"
$"0F0000E0E00B0E0E0000F0"
$"0F0000E0E0000E0E0000F0"
$"0F0000E00E00E00E0000F0"
$"0F00000E00EE00E00000F0"
$"0F000000E0000E000000F0"
$"0F0000000EEEE0000000F0"
$"0FFFFFFFFFFFFFFFFAFFF0"
$"0000000000000000000000"
$"F0FFFFFFFFFFFFFFFFFF0F"
$"F0FFFFFFFFFFFFFFFFFF0F"
$"F0FF4AFFFFFFFFFFFFFF0F"
$"F0CCCCCCCCCCCCCCCCCC0F"
$"F0FFFFFFFFFFFFFFFAFF0F"
$"F00000000000000000000F",
$"0FFFFFFFFFFFFFFFFFFFF0"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFF"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0"
$"0FFFFFFFFFFFFFFFFFFFF0";
};
// --- Control List Definitions
resource rControlList (spiroCtlLst) {
{
iconCtl, // control 3
imageDelayStatTextCtl, // control 5
forceSmallPenCtl, // control 6
};
};
// --- Control Templates
resource rControlTemplate (forceSmallPenCtl) {
1, // ID
{ 92, 14,101,232}, // rect
checkControl {{
$0000, // flag
$3002, // moreFlags
$00000000, // refCon
forceSmallPen_pstr, // titleRef
$0000, // initialValue
0, // colorTableRef
{"F","f",$0100,$0100} // key equivalents
}};
};
resource rControlTemplate (imageDelayStatTextCtl) {
2, // ID
{ 77, 12, 87,249}, // rect
statTextControl {{
$0000, // flag
$1002, // moreFlags
$00000000, // refCon
imageDelay_LText // textRef
}};
};
resource rControlTemplate (iconCtl) {
3, // ID
{ 30, 58, 63,286}, // rect
iconButtonControl {{
$000C, // flag
$1022, // moreFlags
NIL, // refCon
moduleIcon, // iconRef
spiroOpts_pstr, // titleRef
NIL, // colorTableRef
$0000 // displayMode
}};
};
resource rControlTemplate (imageDelayCtl,locked) {
4, // control ID
{ 75,250, 88,302}, // rect - 306
dataFieldControl {{
ctlVisible, // flag
fCtlCanBeTarget+RefIsResource,
NIL, // refCon
imageDelayDataList, // dataListRef
{0,0,0,0,0,0,0,0} // fieldValues
}};
};
// --- rPString Templates
resource rPString (forceSmallPen_pstr) {
"Force Small Pen Size"
};
resource rPString (spiroOpts_pstr) {
"Spirographics Options"
};
// --- rTextForLETextBox2 Templates
resource rTextForLETextBox2 (imageDelay_LText) {
"Delay between images (seconds):"
};
resource rTextForLETextBox2 (moduleMessage) {
TBLeftJust
TBBackColor TBColorF
TBForeColor TBColor4
"Spirographics"
TBForeColor TBColor1
" generates intriguing progressive geometric "
"figures randomly on the screen.\nWho said geometry was boring?"
};
// --- datafield stuff
/* This structure describes the relative locations and strings associated with
each data field. Since there may be from 1 to 8 data fields in each control,
these location/string reference pairs repeat for each field. */
resource rDataList (imageDelayDataList, nospecialmemory,nocrossbank) {
{
{2,6}, // relative location of this field
field1Strings // reference to this field's string list
};
};
/* These are the tagged strings that are associated with each field in the
control. The tag value that is specified is used to track the current value
of each field. If you wish only to have a list of integers displayed, simply
provide the tag values and null (empty) strings as in the second field. */
resource rTaggedStrings (field1Strings) {
{
0,"0",
1,"1",
2,"2",
3,"3",
4,"4",
5,"5",
6,"6",
7,"7",
8,"8",
9,"9",
10,"10",
15,"15",
20,"20",
25,"25",
30,"30",
45,"45",
60,"60",
120,"120"
};
};
// --- rVersion Templates
resource rVersion (moduleVersion) {
{1,0,0,release,0}, // Version
verUS, // US Version
"T2 Spirographics Module", // program's name
"By Jim Maricondo.\n"
"Copyright 1992-93, Jim Maricondo." // copyright notice
};

Binary file not shown.

142
source/twilight/sample/t2.h Normal file
View File

@ -0,0 +1,142 @@
/********************************************
* File: T2.h
*
* v1.0 - Josef W. Wankerl - 8 June 1992
* v1.0a - Jim R. Maricondo - 23 December 1992
* v1.0.1 - Jim R. Maricondo - 3 January 1993
* v1.0.2 - Jim R. Maricondo and James C. Smith - 9 January 1993
* v1.0.3 - Jim R. Maricondo - 31 January 1993 (bf)
* v1.0.4 - JRM - 03 Feb 1993 *ROJAC '93* - new ipc stuff
* v1.0.5 - JRM - 28 Feb 1993 *AFS_NYC!* - new blank_screen getbuffers..
* v1.0.6 - JRM - 03 Mar 1993 - new bmr and lmr, getinfo rec
* v1.0.7 - JRM - 06 Mar 1993 - (bmi/lmi/etc)
* v1.0.8 - JRM - 01 Apr 1993 - mcp lmr
* v1.0.9 - JRM - 31 May 1993 - new mr/mi for public release
* v1.1 - JRM - 19 Jul 1993 - released to the public at KFest '93
* v1.1.1 - JRM - 08 Jul 1994 - new structure: freqOffsetOut
*
********************************************/
#ifndef __TYPES__
#include <TYPES.h>
#endif
#ifndef __T2__
#define __T2__
#define toT2Str "\pDYA~Twilight II~"
/* Action message codes sent to modules. */
#define MakeT2 0
#define SaveT2 1
#define BlankT2 2
#define LoadSetupT2 3
#define UnloadSetupT2 4
#define KillT2 5
#define HitT2 6
/* Resources types. */
#define rT2ModuleFlags 0x1000u
#define rT2ExtSetup1 0x1001u
#define rT2ModuleWord 0x1002u
/* DataField equates. */
#define SetFieldValue 0x8000u /* custom control messages that are */
#define GetFieldValue 0x8001u /* accepted by DataField */
/* DataOut structure for t2StartupTools */
typedef struct startupToolsOut {
Word recvCount;
Word errors; /* returned errors */
};
/* DataOut structure for t2CalcFreqOffset */
typedef struct freqOffsetOut {
Word recvCount;
Word freqOffset; /* returned converted frequency */
};
/* t2StartupTools flag bits */
#define startshut_sane 1ul
#define startshut_sound 2ul
/* DataOut structure for t2GetBuffers */
typedef struct getBuffersOut {
Word recvCount;
void ** shr_main_bufferH; /* handle to bank E1 buffer */
void ** shr_aux_bufferH; /* handle to bank 01 buffer */
void ** palette_bufferH; /* handle to palette buffer */
};
/* this is wrigged to always return ALL info available */
/* to make it easier for C */
typedef struct getInfoOut {
Word recvCount;
Word start_offset; /* -- $0 -- copy from this byte of the buffer */
Word end_offset; /* -- $E -- to this byte of the buffer */
Word state_word; /* state word */
Word count_selected_modules; /* # selected modules */
Word tii_version; /* version of T2 in Toolbox TN 100 format */
void * noblank_cursor320P; /* pointers to noblank cursors */
void * noblank_cursor640P;
};
/*
* t2GetInfo -
* dataIn: reserved (pass zero)
* dataOut: pointer to structure
* +00 - word output - count
* +02 - word input - start buffer offset (FROM this byte)
* +04 - word input - end buffer offset (TO this byte)
* (end buffer offset minus start buffer offset = SIZE)
* +06 - byte array output - returned information output buffer
* +06+SIZE - eos - end of structure
*
* Buffer information available (`-`=through)
* 00,01= state word
* 02,03= number of modules selected in random mode (1 if rm off)
* 04,05= version of Twilight II
* 06,07,08,09= pointer to 320 mode don't blank cursor
* 0a,0b,0c,0d= pointer to 640 mode don't blank cursor
*/
/* T2 External IPC */
#define t2TurnOn 0x9000u
#define t2TurnOff 0x9001u
#define t2BoxOverrideOff 0x9002u
#define t2BoxOverrideOn 0x9003u
#define t2GetInfo 0x9004u
#define t2StartupTools 0x9005u
#define t2ShutdownTools 0x9006u
#define t2ShareMemory 0x9007u
#define t2SetBlinkProc 0x9008u
#define t2ForceBkgBlank 0x9009u
#define t2BkgBlankNow 0x900Au
#define t2GetBuffers 0x900Bu
#define t2Reserved1 0x900Cu
#define t2CalcFreqOffset 0x900Du
/* bits of BlankT2's T2Result [blankMessageResult] */
#define bmrNextModule 0x01000000ul /* goto next module */
#define bmrFadeIn 0x02000000ul /* fade in after all */
#define bmrLeavesUsableScreen 0x04000000ul /* leaves usable screen */
#define bmrLeavesCycleScreen 0x08000000ul /* leaves cycle-able screen */
/* bits of LoadSetupT2's T2Result [loadMessageResult] */
#define lmrReqUsableScreen 0x0001ul /* requires usable screen */
#define lmrFadeOut 0x0002ul /* fade out after all */
#define lmrMostCommonPalette 0x0004ul /* mcp after all */
#define lmrPrematureExit 0x0008ul /* exits before movePtr=true */
/* Bits of flag word passed to modules at loadsetupT2 time in T2data2 (lo) */
/* lmi = loadmessageinput */
#define lmiOverrideSound 0x0001u /* bit0- 1=override sound, 0=sound ok */
/* bits of flag word passed to mdoules at blankT2 time in T2Data2 (lo) */
/* (bmi = blankMessageInput) */
#define bmiBlankNow 0x0001u /* bit0- 1=from blank now, 0= not */
#define bmiCycleColors 0x0002u /* prev mdl left cycle-able screen */
#endif /* __T2__ */

View File

@ -0,0 +1,116 @@
* T2 Common Module Equates. By Jim Maricondo.
* Copyright DigiSoft Innovations 1993, All rights reserved.
* v1.0 - 05/24/92 - Initial Version.
* v1.1 - 05/29/92 - Revised 'cuz of new t2common.rez. - T2 v1.0d33
* v1.2 - 10/24/92 - IPC equates added - T2 v1.0.1b1. - datafield added
* v1.3 - 12/13/92 - mfOverrideSound added - T2 v1.0.1b2
* v1.4 - 01/31/93 - bf bits added. - T2 v1.0.1f2.
* v1.5 - 02/03/93 - (ROJAC!!) new IPC revised - T2 v1.0.1f2
* v1.6 - 02/07/93 - $D001 - T2 v1.0.1f2
* v1.7 - 03/02/93 - bmr, lmr, etc - T2 v1.1f3
* v1.7a - 03/06/93 - bmi, lmi, etc - T2 v1.1f3
* v1.7c - 03/28/93 - bytearray - T2 v1.1f5
* v1.8d - 04/01/93 - mcp lmr - T2 v1.1f5
* v1.8e - 05/31/93 - new mr/mi - T2 v1.1 release
* Resources types.
rT2ModuleFlags gequ $D001
rT2ExtSetup1 gequ $1001
rT2ModuleWord gequ $1002 ; reztype for module words in T2 setup
rT2String gequ $1010 ; used only by T2!
rByteArray gequ $1012
* Action message codes sent to modules.
MakeT2 gequ 0 ; Make module-specific ctls.
SaveT2 gequ 1 ; Save new preferences
BlankT2 gequ 2 ; Blank the screen.
LoadSetupT2 gequ 3 ; Load any resources from yo' fork
UnloadSetupT2 gequ 4 ; Dispose of any resources from yo' fk.
KillT2 gequ 5 ; Module setup being closed.
HitT2 gequ 6 ; Setup window control hit.
* How the stack is setup when a module gets called.
dp gequ 1 ; This is how the stack is set up
Bank gequ dp+2 ; with DP at the top and Result
rtlAddr gequ Bank+1 ; occuping the top 4 bytes
T2data2 gequ rtlAddr+3
T2data1 gequ T2data2+4
T2Message gequ T2data1+4
T2Result gequ T2Message+2
T2StackSize gequ T2Result+4
* Softswitches
KBD gequ >$E0C000
KBDSTRB gequ >$E0C010
RDVBLBAR gequ >$E0C019 ; bit 7 = 1 if not VBL
TBCOLOR gequ >$E0C022
KEYMODREG gequ >$E0C025 ; keyboard modifier register
NEWVIDEO gequ >$E0C029
VERTCNT gequ >$E0C02E
SPKR gequ >$E0C030
CLOCKCTL gequ >$E0C034 ; border color / rtc register
SHADOW gequ >$E0C035
INCBUSYFLG gequ >$E10064 ; increment busy flag
DECBUSYFLG gequ >$E10068 ; decrement busy flag
SHR gequ >$E12000
SCBS gequ >$E19D00
PALETTES gequ >$E19E00
* Boolean logic
FALSE gequ 0
TRUE gequ 1
* T2 External IPC
t2TurnOn gequ $9000
t2TurnOff gequ $9001
t2BoxOverrideOff gequ $9002
t2BoxOverrideOn gequ $9003
t2GetInfo gequ $9004
t2StartupTools gequ $9005
t2ShutdownTools gequ $9006
t2ShareMemory gequ $9007
t2SetBlinkProc gequ $9008
t2ForceBkgBlank gequ $9009
t2BkgBlankNow gequ $900A
t2GetBuffers gequ $900B
t2Reserved1 gequ $900C ; was t2GetVersion
t2CalcFreqOffset gequ $900D
* T2 Private IPC
reqDLZSS gequ $8007
t2PrivGetProcs gequ $9020
* DataField equates.
SetFieldValue gequ $8000 ;custom control messages that are
GetFieldValue gequ $8001 ; accepted by DataField
* Flag word passed to modules at loadsetupT2 time in T2data2 (lo)
* (lmi = loadMessageInput)
lmiOverrideSound gequ $0001 ; bit 0. 1=override sound, 0=sound ok
* Flag word passed to mdoules at blankT2 time in T2Data2 (lo)
* (bmi = blankMessageInput)
bmiBlankNow gequ $0001
bmiCycleColors gequ $0002 ; prev module left color cycle-able scrn
* bits of BlankT2's T2Result - _hi_ word (blankmessageresult)
bmrNextModule gequ $0100
bmrFadeIn gequ $0200
bmrLeavesUsableScreen gequ $0400
bmrLeavesCycleScreen gequ $0800 ; left color cycle-able screen after all
* bits of LoadSetupT2's T2Result - lo word (loadmessageresult)
lmrReqUsableScreen gequ $0001 ; requires usable screen
lmrFadeOut gequ $0002 ; fade out after all
lmrMostCommonPalette gequ $0004 ; mcp after all
lmrPrematureExit gequ $0008 ; exits before movePtr=true

View File

@ -0,0 +1,91 @@
// =====================================================
// T2 Common Module Resources.
// Copyright 1992-93 Jim Maricondo and DigiSoft Innovations.
//
// v1.0 - 05/24/92 - Initial Version.
// v1.1 - 05/29/92 - Cleaned up, revised module flags. - T2 v1.0d33
// v1.2 - 06/11/92 - Added fOpenRForkWriteEnabled - T2 v1.0d34
// v1.3 - 09/18/92 - v1.1 about string - T2 v1.0d37
// v1.4 - 11/28/92 - DC -> DSI - T2 v1.0.1b1
// v1.5 - 1/2/93 - Misc cleanup - T2 v1.0.1b3 (?)
// v1.5a - 1/9/93 - Changed comments - T2 v1.0.1b4
// v1.6 - 1/28/93 - Revised for _NEW_ rT2ModuleFlags format. - T2 v1.0.1f1
// v1.7 - 2/7/93 - "f" flag word names, $D001 - T2 v1.0.1f2
// v1.7a - 2/16/93 - $1000 -> $D001 - T2 v1.0.1f2
// v1.8 - 03/02/93 - new moduleflagword bits - T2 v1.1f3
// v1.9 - 03/28/93 - mostcommonpalette - t2 v1.1f4
// v2.0 - 06/19/93 - fixed up for release at KFest '93
// =====================================================
// =====================================================
// Module resource IDs.
// =====================================================
/***** Required *****/
// #define moduleName $00000001
#define moduleMessage $0010DD01
#define moduleIcon $0010DD01
#define moduleVersion $00000001
#define moduleFlags $00000001
/***** Added for you... *****/
#define moduleComment $00000001
#define moduleInfo $00000002
// =====================================================
// --- custom resource type defines
// =====================================================
#define rT2ModuleFlags $D001
#define rT2ExtSetup1 $1001
#define rT2ModuleWord $1002
#define rT2String $1010 // reserved for use by tii only!
#define rByteArray $1012
// =====================================================
// Defined bits of T2ModuleFlags module flag word.
// =====================================================
#define fSetup $0001
#define fFadeOut $0002
#define fFadeIn $0004
#define fGrafPort320 $0008
#define fGrafPort640 $0010
#define fLoadSetupBoot $0020
#define fLoadSetupBlank $0040
#define fOpenRForkWriteEnabled $0080
#define fMostCommonPalette $0100
#define fReqUsableScreen $0200
#define fLeavesUsableScreen $0400
#define fLeavesCycleScreen $0800
#define fPrematureExit $1000
#define fForeground $0000
#define fBackground $4000
#define fInternal $8000
// =====================================================
// Custom resource type defines.
// =====================================================
type rT2ModuleFlags {
byte = $01; /* module flags version - use 1 */
hex unsigned word; /* module flags word */
byte; /* enabled flag (unimplemented) - use 1 now */
hex unsigned word; /* minimum T2 version required */
hex unsigned word; /* reserved */
pstring[25]; /* module name */
};
type rT2ModuleWord {
unsigned word;
};
// =====================================================
// Current common comments.
// =====================================================
resource rComment (moduleInfo) {
"This is a Twilight II\$AA screen saver module. "
"Place in the \$D2Twilight\$D3 module folder (located in the same directory "
"as the Twilight II control panel) and access via Twilight II!\n"
"For more information, refer to the Twilight II manual."
};

Binary file not shown.