home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************************/
- /* */
- /* WaveMaker - a program to allow a user to construct waveforms */
- /* by superposition of harmonic sine waves. */
- /* */
- /* */
- /* This program is intended for beginning music and physics students */
- /* to help them get a better intuitive feel for constructing a */
- /* complex wave form from a sum of harmonics. */
- /* */
- /* For program operation see WaveMaker.doc. */
- /* */
- /* This program was written in SAS C, version 5.10. It is */
- /* compiled with the enclosed lmkfile. */
- /* */
- /* WaveMaker is freely distributable as long as it is not sold for */
- /* profit. It is permitted (encouraged) to include it on software */
- /* collections sold for a nominal sum, such as club disks and */
- /* Fish disks. Copyright is retained by the author. */
- /* */
- /* Thanks are due to those people who posted example programs in */
- /* the BIX listings area. One good example is worth several chapters*/
- /* of explanation. Of particular use were gad.c and menu.c. both by */
- /* John Draper, and scales.c by Steven A. Bennett. */
- /* */
- /* Comments, bugs, complaints, and praise may be sent to me at */
- /* Thomas Meyer */
- /* 12 Physics, Iowa State University */
- /* Ames, IA 50010 */
- /* BIX: TMEYER */
- /* BITNET:MEYER@ALISUVAX */
- /* Internet: meyer@iastate.edu */
- /* */
- /**********************************************************************/
- /* */
- /* Update history: */
- /* 4/10/91 Version 1.2 */
- /* Wave calculation speeded up */
- /* Bad pointers fixed (guru causers) */
- /* Display of partial sums added */
- /* Bug fixed in display when waveform rescales */
- /* 1/24/90 Version 1.1 */
- /* Easy game added */
- /* Fixed crashes from rawkey>64 */
- /* Closed down in correct order */
- /* Game doesn't interfere with amps[] */
- /* Random seed from timer */
- /* 1/21/90 Version 1.0 released on AAAUG club disk */
- /**********************************************************************/
-
- #include <math.h>
- #include <stdio.h>
- #include <exec/types.h>
- #include <exec/nodes.h>
- #include <exec/lists.h>
- #include <exec/ports.h>
- #include <exec/devices.h>
- #include <exec/memory.h>
- #include <hardware/custom.h>
- #include <hardware/dmabits.h>
- #include <proto/dos.h>
- #include <devices/audio.h>
- #include <devices/inputevent.h>
- #include <proto/intuition.h>
- #include <graphics/gfxbase.h>
- #include <graphics/gfx.h>
- #include <graphics/clip.h>
- #include <graphics/view.h>
- #include <graphics/rastport.h>
- #include <proto/layers.h>
-
- extern struct MsgPort *CreatePort();
- extern VOID ModifyProp();
- extern VOID PrintIText();
-
- struct IntuitionBase *IntuitionBase;
- struct GfxBase *GfxBase;
- struct Window *Window;
- struct Screen *Screen;
- struct ViewPort *ViewPort;
- struct RastPort *rport;
- struct IntuiMessage *mesg;
- struct IOAudio *ioa,*audchan[4],*finish[4];
-
- /****************************************/
- /* Build the Intuition Gadgets */
- /****************************************/
-
- /* Define Logicals for GadgetIDs */
-
- #define HARMON0 0
- #define HARMON1 1
- #define HARMON2 2
- #define HARMON3 3
- #define HARMON4 4
- #define HARMON5 5
- #define HARMON6 6
- #define HARMON7 7
- #define INTEG 0
- #define UPARROW 8
- #define DNARROW 16
- #define PROPOR 24
- #define PLUSMINUS 32
- #define SELECT 64
- #define YES 1
- #define NO 0
- #define NBR_IOA_STRUCTS 6
-
- /* define logicals for ErrExit */
-
- #define SUCCESS 0
- #define INTUITION_FAIL 1
- #define GRAPHICS_FAIL 2
- #define PORTPN_FAIL 3
- #define PORTP0_FAIL 4
- #define AUDIOALLOC_FAIL 5
- #define AUDIO_FAIL 6
- #define USERSOUND_FAIL 7
- #define REFSOUND_FAIL 8
- #define SCREEN_FAIL 9
- #define WINDOW_FAIL 10
-
- /* Miscellaneous logicals */
-
- #define INTUITION_REV 0
- #define GRAPHICS_REV 0
-
- #define TWOPI 6.283185
-
- /*************************************/
- /* Global variables and structures */
- /*************************************/
-
- SHORT sinewave[8][513];
- LONG amps[8],refamps[8];
- LONG maxuser=1,maxref=1;
- LONG maxamp=16066;
- BYTE waveform[514],refform[514],selform[514];
- BYTE *usersound,*refsound;
- BYTE sunit=0x0F;
- SHORT audiochan[128] ={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
- SHORT waiting[5]={NO, NO, NO, NO, NO};
- SHORT gameon=NO;
- UBYTE selflag,bitval[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
- 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
- VOID ErrExit();
-
- /* Structures for drawing waveforms */
-
- USHORT userwave[513][2],refwave[513][2],selwave[513][2];
-
- struct Border UWave_brd1 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 4,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&userwave[0][0], /* Count, *XY */
- NULL /* *NextBorder */
- };
- struct Border UWave_brd2 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 4,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&userwave[126][0], /* Count, *XY */
- &UWave_brd1 /* *NextBorder */
- };
- struct Border UWave_brd3 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 4,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&userwave[252][0], /* Count, *XY */
- &UWave_brd2 /* *NextBorder */
- };
- struct Border UWave_brd4 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 4,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&userwave[378][0], /* Count, *XY */
- &UWave_brd3 /* *NextBorder */
- };
- struct Border UWave_brd5 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 4,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 9,&userwave[504][0], /* Count, *XY */
- &UWave_brd4 /* *NextBorder */
- };
- struct Border RWave_brd1 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 6,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&refwave[0][0], /* Count, *XY */
- NULL /* *NextBorder */
- };
- struct Border RWave_brd2 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 6,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&refwave[126][0], /* Count, *XY */
- &RWave_brd1 /* *NextBorder */
- };
- struct Border RWave_brd3 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 6,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&refwave[252][0], /* Count, *XY */
- &RWave_brd2 /* *NextBorder */
- };
- struct Border RWave_brd4 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 6,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&refwave[378][0], /* Count, *XY */
- &RWave_brd3 /* *NextBorder */
- };
- struct Border RWave_brd5 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 6,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 9,&refwave[504][0], /* Count, *XY */
- &RWave_brd4 /* *NextBorder */
- };
-
- struct Border SWave_brd1 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 5,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&selwave[0][0], /* Count, *XY */
- NULL /* *NextBorder */
- };
- struct Border SWave_brd2 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 5,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&selwave[126][0], /* Count, *XY */
- &SWave_brd1 /* *NextBorder */
- };
- struct Border SWave_brd3 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 5,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&selwave[252][0], /* Count, *XY */
- &SWave_brd2 /* *NextBorder */
- };
- struct Border SWave_brd4 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 5,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 127,&selwave[378][0], /* Count, *XY */
- &SWave_brd3 /* *NextBorder */
- };
- struct Border SWave_brd5 =
- {
- 64,13, /* LeftEdge, TopEdge */
- 5,0,JAM1, /* FrontPen, BackPen, DrawMode */
- 9,&selwave[504][0], /* Count, *XY */
- &SWave_brd4 /* *NextBorder */
- };
-
- /* Declare the character buffer for IntuitText structures
- (to be filled later). */
-
- char textbuf[6]=" 0";
-
- struct IntuiText textamp =
- {
- 1,0,JAM2, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge (use offsets to set) */
- NULL, /* *ITextFont (use default) */
- (char *)&textbuf, /* *IText (fill later) */
- NULL /* *NextText */
- };
-
- /* Border structures for the amplitude display box */
-
- USHORT BoxPairsb[9][2]=
- {
- 2,11, 53,11, 53,2, 54,2, 54,11,
- 55,11, 55,2, 56,2, 56,11 /* Brown shadow around int */
- };
-
- struct Border brdi1b =
- {
- -2,-2,2,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1, 9, /* DrawMode, Count */
- (USHORT *)&BoxPairsb,/* *XY */
- NULL /* *NextBorder */
- };
-
- USHORT BoxPairs[5][2]=
- {
- 0, 0, 52,0, 52,10, 0,10, 0,0 /* Coords of box */
- };
-
- struct Border brdi1 =
- {
- -2,-2,1,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1, 5, /* DrawMode, Count */
- (USHORT *)&BoxPairs, /* *XY */
- &brdi1b /* *NextBorder */
- };
-
- /*************************************/
- /* First amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info1 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext1 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"1:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Image empty1,empty2,empty3,empty4,empty5,empty6,empty7,empty8;
-
- struct Gadget propor1 =
- {
- NULL,65,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty1, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext1,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info1, /* SpecialInfo */
- HARMON0|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- USHORT updn_shadata[] = {2,7, 17,7, 17,1, 18,1, 18,7, 19,7, 19,1};
- struct Border updn_shadow =
- {
- -2,-1,2,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1,7, /* DrawMode, Count */
- (USHORT *)&updn_shadata, /* *XY */
- NULL /* *NextBorder */
- };
-
- USHORT updn_data[] = {0,0, 0,6, 16,6, 16,0, 0,0};
- struct Border updn_border =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1,5, /* DrawMode, Count */
- (USHORT *)&updn_data, /* *XY */
- &updn_shadow /* *NextBorder */
- };
-
- USHORT uparr_data[] = {8,2, 3,4, 13,4, 8,2};
- struct Border up_arr =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1,4, /* DrawMode, Count */
- (USHORT *)&uparr_data, /* *XY */
- &updn_border /* *NextBorder */
- };
-
- struct Gadget up1 =
- {
- &propor1,44,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON0|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- USHORT dnarr_data[] = {3,2, 13,2, 8,4, 3,2};
- struct Border dn_arr =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1,4, /* DrawMode, Count */
- (USHORT *)&dnarr_data, /* *XY */
- &updn_border /* *NextBorder */
- };
-
- struct Gadget dn1 =
- {
- &up1,44,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON0|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- /* tie shadow for proportional gadget here since
- I can't get border structures working for prop gadgets */
- USHORT pshad_data[] = {24,23, 38,23, 38,-45, 39,-45, 39,23, 40,23, 40,-45};
-
- struct Border propshad =
- {
- -2,-2,2,0, /* LeftEdge, TopEdge, FrontPen, BackPen */
- JAM1, 7, /* DrawMode, Count */
- (USHORT *)&pshad_data, /* *XY */
- NULL /* *NextBorder */
- };
-
- USHORT plus1[] = {5,3, 9,3};
- USHORT plus2[] = {7,2, 7,4};
- USHORT minus[] = {5,6, 9,6};
- USHORT plmi_data[] = {0,0, 0,8, 15,8, 15,0, 0,0};
- USHORT plmi_datas[]= {2,9, 16,9, 16,1, 17,1, 17,9, 18,9, 18,1};
-
- struct Border plmi1 =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, Frontpen, BackPen */
- JAM1,2, /* DrawMode, Count */
- (USHORT *)&plus1, /* *XY */
- &propshad /* *NextBorder */
- };
-
- struct Border plmi2 =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, Frontpen, BackPen */
- JAM1,2, /* DrawMode, Count */
- (USHORT *)&plus2,&plmi1 /* *XY, *NextBorder */
- };
-
- struct Border plmi3 =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, Frontpen, BackPen */
- JAM1,2, /* DrawMode, Count */
- (USHORT *)&minus,&plmi2 /* *XY, *NextBorder */
- };
-
- struct Border plmi4 =
- {
- -2,-1,1,0, /* LeftEdge, TopEdge, Frontpen, BackPen*/
- JAM1,5, /* DrawMode, Count */
- (USHORT *)&plmi_data,&plmi3 /* *XY, *NextBorder */
- };
-
- struct Border plmi5 =
- {
- -2,-1,2,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,7, /* DrawMode, Count */
- (USHORT *)&plmi_datas,&plmi4 /* *XY, *NextBorder */
- };
-
- struct Gadget plusminus1 =
- {
- &dn1,44,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON0|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
-
- struct Border sel_off_shad =
- {
- -2,-1,2,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,7, /* DrawMode, Count */
- (USHORT *)&updn_shadata, /* *XY */
- NULL /* *NextBorder */
- };
-
- struct Border sel_on_shad =
- {
- -2,-1,2,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,7, /* DrawMode, Count */
- (USHORT *)&updn_shadata, /* *XY */
- NULL /* *NextBorder */
- };
-
- USHORT selon_data[] = {0,0, 0,6, 16,6, 16,0, 1,0, 1,1, 15,1, 15,2,
- 1,2, 1,3, 15,3, 15,4, 1,4, 1,5, 15,5};
-
- USHORT seloff_data[] = {1,1, 15,1, 15,2,
- 1,2, 1,3, 15,3, 15,4, 1,4, 1,5, 15,5};
-
- struct Border sel_off2 =
- {
- -2,-1,0,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,10, /* DrawMode, Count */
- (USHORT *)&seloff_data, /* *XY */
- &sel_off_shad /* *NextBorder */
- };
-
- struct Border sel_off =
- {
- -2,-1,5,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,5, /* DrawMode, Count */
- (USHORT *)&updn_data, /* *XY */
- &sel_off2 /* *NextBorder */
- };
-
- struct Border sel_on =
- {
- -2,-1,5,0, /* LeftEdge,TopEdge, Frontpen,BackPen */
- JAM1,15, /* DrawMode, Count */
- (USHORT *)&selon_data, /* *XY */
- &sel_on_shad /* *NextBorder */
- };
-
- struct Gadget select1 =
- {
- &plusminus1,44,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON0|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Second amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info2 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext2 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"2:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor2 =
- {
- &select1,139,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty2, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext2,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info2, /* SpecialInfo */
- HARMON1|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up2 =
- {
- &propor2,118,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON1|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn2 =
- {
- &up2,118,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON1|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus2 =
- {
- &dn2,118,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON1|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select2 =
- {
- &plusminus2,118,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON1|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Third amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info3 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext3 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"3:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor3 =
- {
- &select2,213,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty3, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext3,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info3, /* SpecialInfo */
- HARMON2|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up3 =
- {
- &propor3,192,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON2|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn3 =
- {
- &up3,192,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON2|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus3 =
- {
- &dn3,192,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON2|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select3 =
- {
- &plusminus3,192,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON2|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Fourth amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info4 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext4 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"4:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor4 =
- {
- &select3,287,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty4, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext4,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info4, /* SpecialInfo */
- HARMON3|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up4 =
- {
- &propor4,266,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON3|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn4 =
- {
- &up4,266,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON3|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus4 =
- {
- &dn4,266,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON3|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select4 =
- {
- &plusminus4,266,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON3|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Fifth amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info5 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext5 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"5:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor5 =
- {
- &select4,361,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext5,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info5, /* SpecialInfo */
- HARMON4|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up5 =
- {
- &propor5,341,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON4|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn5 =
- {
- &up5,340,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON4|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus5 =
- {
- &dn5,340,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON4|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select5 =
- {
- &plusminus5,340,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON4|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Sixth amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info6 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext6 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"6:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor6 =
- {
- &select5,435,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty6, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext6,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info6, /* SpecialInfo */
- HARMON5|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up6 =
- {
- &propor6,414,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON5|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn6 =
- {
- &up6,414,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON5|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus6 =
- {
- &dn6,414,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON5|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select6 =
- {
- &plusminus6,414,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON5|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Seventh amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info7 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext7 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"7:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor7 =
- {
- &select6,509,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty7, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext7,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info7, /* SpecialInfo */
- HARMON6|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up7 =
- {
- &propor7,488,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON6|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn7 =
- {
- &up7,488,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON6|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus7 =
- {
- &dn7,488,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON6|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select7 =
- {
- &plusminus7,488,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON6|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- /*************************************/
- /* Eighth amplitude gadgets */
- /*************************************/
-
- /* Proportional gadget */
-
- struct PropInfo prop_info8 =
- {
- AUTOKNOB|FREEVERT, /* Flags */
- 0xFFFF,0xFFFF, /* HorizPot, VertPot */
- 0x0800,0x0800, /* HorizBody, VertBody */
- 16,64, /* CWidth,CHeight */
- 0x0800,0x0800, /* HPotRes, VPotRes */
- 0,0 /* LeftBorder, TopBorder */
- };
-
- struct IntuiText protext8 =
- {
- 1, 2, JAM2, /* FrontPen, BackPen, DrawMode */
- -20, 3, /* LeftEdge, TopEdge */
- NULL,"8:", /* *ITextFont, *Itext */
- NULL /* *NextText */
- };
-
- struct Gadget propor8 =
- {
- &select7,583,113, /* *NextGadget, LeftEdge, TopEdge */
- 14,69,GADGHCOMP|AUTOKNOB, /* Width, Height, Flags */
- RELVERIFY|GADGIMMEDIATE, /* Activation */
- PROPGADGET,(APTR)&empty8, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- &protext8,0, /* *GadgetText, MutualExclude */
- (APTR)&prop_info8, /* SpecialInfo */
- HARMON7|PROPOR, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Up arrow gadget */
-
- struct Gadget up8 =
- {
- &propor8,562,143, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&up_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON7|UPARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* down arrow gadget */
-
- struct Gadget dn8 =
- {
- &up8,562,152, /* *NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&dn_arr, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON7|DNARROW, /* GadgetID */
- NULL /* UserData */
- };
-
- /* Change sign gadget */
-
- struct Gadget plusminus8 =
- {
- &dn8,562,161, /* *NextGadget, LeftEdge, TopEdge */
- 15,8,GADGHCOMP, /* Width, Height, Flags */
- GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&plmi5, /* GadgetType, GadgetRender */
- NULL, /* SelectRender */
- NULL,0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON7|PLUSMINUS, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget select8 =
- {
- &plusminus8,562,172, /* NextGadget, LeftEdge, TopEdge */
- 16,6,GADGHIMAGE, /* Width, Height, Flags */
- TOGGLESELECT|GADGIMMEDIATE, /* Activation */
- BOOLGADGET,(APTR)&sel_off, /* GadgetType, GadgetRender */
- (APTR)&sel_on, /* SelectRender */
- NULL, 0, /* *GadgetText, MutualExclude */
- NULL, /* SpecialInfo */
- HARMON7|SELECT, /* GadgetID */
- NULL /* UserData */
- };
-
- struct Gadget *propadd[8]={&propor1,&propor2,&propor3,&propor4,
- &propor5,&propor6,&propor7,&propor8};
-
- /********************/
- /* Menu Structures */
- /********************/
-
-
- struct IntuiText stoptext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Stop", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem stopgame = {
- NULL, /* *NextItem */
- 0,20,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&stoptext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText hardtext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Start-Hard", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem starthard = {
- &stopgame, /* *NextItem */
- 0,10,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&hardtext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText easytext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Start-Easy", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem starteasy = {
- &starthard, /* *NextItem */
- 0,0,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&easytext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct Menu game = {
- NULL, /* *NextMenu */
- 161,0,80,10, /* LeftEdge, TopEdge, Width, Height */
- MENUENABLED, /* Flags */
- "Game", /* *MenuName */
- &starteasy /* First Item */
- };
-
- struct IntuiText squaretext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Square", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem square = {
- NULL, /* *NextItem */
- 0,30,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&squaretext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText sawtext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Sawtooth", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem sawtooth = {
- &square, /* *NextItem */
- 0,20,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&sawtext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText triangletext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Triangle", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem triangle = {
- &sawtooth, /* *NextItem */
- 0,10,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&triangletext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText resettext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Reset", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem resetwave = {
- &triangle, /* *NextItem */
- 0,0,80,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&resettext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct Menu waves = {
- &game, /* *NextMenu */
- 81,0,80,10, /* LeftEdge, TopEdge, Width, Height */
- MENUENABLED, /* Flags */
- "Waveforms", /* *MenuName */
- &resetwave /* First Item */
- };
-
- struct IntuiText quittext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Quit", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem quit = {
- NULL, /* *NextItem */
- 0,40,120,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&quittext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText fronttext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Screen to Front", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem scfront = {
- &quit, /* *NextItem */
- 0,30,120,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&fronttext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText backtext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Screen to Back", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem scback = {
- &scfront, /* *NextItem */
- 0,20,120,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&backtext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText expandtext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"Full Scale", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem expand = {
- &scback, /* *NextItem */
- 0,10,120,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&expandtext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct IntuiText abouttext = {
- 0,1,JAM1, /* FrontPen, BackPen, DrawMode */
- 0,0, /* LeftEdge, TopEdge */
- NULL,"About", /* ITextFont, *IText */
- NULL /* *NextText */
- };
-
- struct MenuItem about = {
- &expand, /* *NextItem */
- 0,0,120,10, /* LeftEdge, TopEdge, Width, Height */
- ITEMTEXT|ITEMENABLED|HIGHCOMP, /* Flags */
- NULL, (APTR)&abouttext, /* MutualExclude, ItemFill */
- NULL,NULL, /* Command, *SubItem */
- NULL /* NextSelect */
- };
-
- struct Menu project = {
- &waves, /* *NextMenu */
- 0,0,80,10, /* LeftEdge, TopEdge, Width, Height */
- MENUENABLED, /* Flags */
- "Project", /* *MenuName */
- &about /* First Item */
- };
-
- /****************************************/
- /* "about" requester structures */
- /****************************************/
-
- struct IntuiText OK = {0,1,JAM2,5,4,NULL,"OK",NULL};
-
- struct IntuiText About7 = {0,1,JAM2,8,85,NULL,
- "Click on either <OK> box to proceed",
- NULL};
-
- struct IntuiText About6 = {0,1,JAM2,8,70,NULL,
- " internet: meyer@iastate.edu",
- &About7};
-
- struct IntuiText About5 = {0,1,JAM2,8,60,NULL,
- "Ames, IA, 50011, USA. BITNET: MEYER@ALISUVAX",
- &About6};
-
- struct IntuiText About4 = {0,1,JAM2,8,50,NULL,
- "W. T. Meyer, 12 Physics, Iowa State University,",
- &About5};
-
- struct IntuiText About3 = {0,1,JAM2,8,30,NULL,
- "Comments and suggestions may be sent to:",
- &About4};
-
- struct IntuiText About2 = {0,1,JAM2,8,20,NULL,
- "Copyright (c) 1990, 1991 by W. T. Meyer.",
- &About3};
-
- struct IntuiText About1 = {0,1,JAM2,8,10,NULL,
- "WaveMaker is freely distributable for noncommercial use.",
- &About2};
-
- /*************************************/
- /* "Answers" requester structures */
- /*************************************/
-
- char Answers[80];
-
- struct IntuiText Answer3 = {0,1,JAM2,8,30,NULL,
- "Click on either <OK> box to proceed",
- NULL};
-
- struct IntuiText Answer2 = {0,1,JAM2,8,20,NULL,
- (char *)&Answers,&Answer3};
-
- struct IntuiText Answer1 = {0,1,JAM2,8,10,NULL,
- "The answers are:",&Answer2};
-
- /************************************************************/
- main()
- /************************************************************/
- {
- ULONG mclass;
- USHORT mcode,mqual,gadID,gadno,gadtyp,i;
- USHORT amptopot();
- unsigned seed;
- LONG pottoamp(),MakeWave();
- SHORT potsign,keyraw,keyup,keyrepeat;
- struct Gadget *mgadget;
- struct PropInfo *propinfo;
- VOID OpenLibs(),WaveCleanup(),MakeDisplay(),MakeSin(),MakePalette();
- VOID AmpsUpDate(),PropUpdate(),DrawBoxes(),DrawUser();
- VOID SoundOn(),SoundOff(),MenuSetup(),DoMenu(),OpenAudio();
- VOID Update(),InitArrays();
-
- /* Initialization */
-
- OpenLibs();
-
- OpenAudio();
-
- seed = (unsigned)time(NULL);
- srand(seed);
-
- MakeSin();
-
- for (i=0;i<8;++i) amps[i]=0;
-
- InitArrays();
-
- MakeDisplay();
-
- SetMenuStrip(Window,&project);
-
-
- /* Set up an IDCMP Read Loop */
-
- for(;;) {
- Wait(1<<Window->UserPort->mp_SigBit);
-
- while((mesg=(struct IntuiMessage *)
- GetMsg(Window->UserPort))!=NULL) /* Wait for IntuiMessage */
- {
- mclass = mesg->Class; /* Run through all of them */
- mcode = mesg->Code; /* Local copies of variables*/
- mqual = mesg->Qualifier;
- mgadget =(struct Gadget *)mesg->IAddress;
- switch(mclass)
- {
- case CLOSEWINDOW:
- {
- WaveCleanup();
- Exit(TRUE);
- break;
- }
- case REFRESHWINDOW:
- {
- DrawBoxes();
- Update(0);
- break;
- }
- case MENUPICK:
- {
- DoMenu(mcode);
- break;
- }
- case GADGETDOWN:
- {
- gadID = mgadget->GadgetID;
- gadno = gadID&0x7;
- gadtyp = gadID&0x78;
- switch(gadtyp)
- {
- case UPARROW:
- if (amps[gadno]>=0) ++amps[gadno];
- else --amps[gadno];
- Update(gadno);
- ModifyProp(propadd[gadno],Window,NULL,
- FREEVERT|AUTOKNOB,0xFFFF,
- amptopot(amps[gadno]),0x0800,0x0800);
- break;
- case DNARROW:
- if (amps[gadno]>=0) --amps[gadno];
- else ++amps[gadno];
- Update(gadno);
- ModifyProp(propadd[gadno],Window,NULL,
- FREEVERT|AUTOKNOB,0xFFFF,
- amptopot(amps[gadno]),0x0800,0x0800);
- break;
- case PLUSMINUS:
- amps[gadno]=-amps[gadno];
- Update(gadno);
- break;
- case PROPOR:
- break;
- case SELECT:
- if (selflag & bitval[gadno])
- selflag=selflag&bitval[gadno+8];
- else
- selflag = selflag | bitval[gadno];
- DrawUser();
- break;
- }
- break;
- }
- case GADGETUP:
- {
- gadID = mgadget->GadgetID;
- gadno = gadID&0x7;
- gadtyp = gadID&0x38;
- switch(gadtyp)
- {
- case UPARROW:
- break;
- case DNARROW:
- break;
- case PLUSMINUS:
- break;
- case PROPOR:
- potsign=1;
- if (amps[gadno]<0) potsign=-1;
- propinfo=(struct PropInfo *)mgadget->SpecialInfo;
- amps[gadno]=pottoamp(propinfo->VertPot,
- potsign);
- Update(gadno);
- break;
- case SELECT:
- break;
- }
- break;
- }
- case RAWKEY:
- keyrepeat=mqual&IEQUALIFIER_REPEAT;
- keyraw = mcode&0x7F;
- keyup = mcode&0x80;
- if (keyup==0&&!keyrepeat)
- SoundOn(keyraw,usersound);
- if (keyup!=0) SoundOff(keyraw);
- break;
- }
- ReplyMsg(mesg); /* Give message back */
- }
- }
- }
-