home bbs files messages ]

Just a sample of the Echomail archive

Cooperative anarchy at its finest, still active today. Darkrealms is the Zone 1 Hub.

   CBM      Commodore Computer Conference      4,328 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,245 of 4,328   
   Harry Potter to All   
   Re: Looking for more optimizations!   
   25 Oct 18 07:24:32   
   
   Following are snippets of the code I'm optimizing:   
   --------------------------   
   void vLook (void)//char Itm1)   
   {   
      //static unsigned char i;   
      //static char* s;   
      static void (*func)();   
      //if (Itm1!=-1) {   
      if (Itm1!=0xFF) {   
         //if (Itm1>=128 && Itm1<160){   
         if ((signed char)Itm1<160) {   
            //i=   
         }   
         //if (SearchInv (Player.Inv, Itm1) ||   
         //   SearchInv (Player.RoomInv[CRoom], Itm1))   
         //if (SearchInv2 (Player.Inv) || SearchInv2 (Player.RoomInv[CRoom]))   
         if (SearchInvPlayer () || SearchInvRoom ())   
         {   
            //if (Itm1 < NumItems) {   
            //if ((signed char)Itm1>=0) {   
               if ((s=hidereadw((void*)&Item[Itm1].Info))==0) {   
                  printscr ("No help available for that item.");   
                  return;   
               }   
               printh (s);   
               //printh ((void*)&Item[Itm1].Info);   
            //else   
            //   ;   
            //return;   
            //}   
         }   
         else {   
            //puts (Message[msgItemNotAvail]);   
            printmsg(msgItemNotAvail);   
         }   
         return;   
      }   
      CurRoomInv=Player.RoomInv[CRoom];   
      CRm=(void*)&Room[CRoom];   
      //printh ((char*)hidereadw((void*)&Room[CRoom].Desc));   
      printh ((char*)hidereadw((void*)&CRm->Desc));   
      //printh (hidereadw(hidereadw((void*)&Room[CRoom].Desc)));   
      //puts (Room[CRoom].Desc);   
      //printh (&Room[CRoom].Desc);   
      //printh (Room[CRoom].RoomHandler);   
      func=hidereadw((void*)&CRm->RoomHandler);   
      (*func) ();   
      printcr();//putchar (13);   
      
      for (i=0; i<8 && (c=CurRoomInv[i])!=0xFF;++i) {   
         //printf ("There is a %s here.\n",   
         prints ("There is a ");   
         printh (hidereadw((void*)&Item[/*CurRoomInv[i]*/c].Name));   
         printscr (" here.");   
         //printf ("There is a %Hs here.\n",   
         //   hidereadw((void*)&Item[Player.RoomInv[CRoom][i]].Name));   
      }   
      if (i) /*{cputc (13); cputc (10);}*/   
         printcr();//putchar (13);   
   }   
      
   void vLook2 (void)   
   {   
      Itm1=-1;   
      vLook ();   
      
   }   
      
   void vGo ()//char Itm1)   
   {   
      //static unsigned char s; /* 1 if go successful */   
      //static unsigned char Dir;   
      //static unsigned char i;   
      //s=0;Dir=-1;   
      if (Itm1>=160 && Itm1<164) {   
      //if ((Itm1&~3)==160) {   
         //j = Itm1-iNorth; goto godir;   
         j = Itm1&0x0F; //goto godir;   
         //if ((i= Room[CRoom].NextRoom[j])==0xFF) {   
         if ((i=CRm->NextRoom[j])==0xFF) {   
            printmsg(msgCantGoThere); return;   
         }   
         CRoom = i; goto exitgood;   
      }   
      switch (Itm1)   
      {   
      /*case iNorth:   
      case iSouth:   
      case iEast:   
      case iWest:   
         j = Itm1-iNorth; goto godir;*/   
      case iTeleporter:   
         if (!SearchInvRoom(/*,   
            iTeleporter*/)) {   
            printscr ("There's no teleporter here.");   
            return;   
         }   
         Player.ExitRoom = CRoom;   
         CRoom = rTeleporter;   
         goto exitgood;   
      //default:   
   //err:   
         //printmsg(msgCantGoThere); return;   
      }   
      printmsg(msgCantGoThere); return;   
   godir:   
   /*   if ((i= Room[CRoom].NextRoom[j])==0xFF) {   
         printmsg(msgCantGoThere); return;   
      }   
      CRoom = i; //Player.ExitRoom = -1;*/   
   exitgood:   
      //Player.ExitRoom =Itm1=-1; vLook();   
      Player.ExitRoom =-1; vLook2();   
   }   
   ------------------------------------   
   void main (void)   
   {   
      //static unsigned char c;   
      //static char Input [38];   
      //static unsigned char Vrb;//, Itm, ItmNum, CurPos;   
      //static unsigned char CurPos;//IncPos;   
      //static unsigned char i;   
      static void (* vfunc) ();   
           //printf ("%X\n", &Item[0].Name);   
           //cgetc();   
      //bordercolor(8); bgcolor (1);   
      //textcolor (4);   
      brdrcol=8;   
      backcol=1;   
      //textcol=4;   
         /*123456789012345678901234567890123456789*/   
      //clrscr ();   
      printscr("\f\n\x9cWelcome to \"Adventures on Planet Smir\n"   
          "III, Episode 1, v .10\" for the Commo-\n"   
          "dore 64 and emulators, created with cc65"   
          "by Joseph Rose.\n\n"   
      
          "Type INTRO during the game for\n"   
          "instructions.\n\n"   
          "Do you want to load a saved game?");   
      //do//while(1)   
      //{   
         //c=tolower(cgetc ());   
         //if ((c=tolower(getkey ()))=='y'/* || c=='Y'*/) { /* If user pressed "Y"   
    */   
         //if ((c=(getkey ()&0x7F))=='y'/* || c=='Y'*/) { /* If user pressed "Y"   
   */   
         //   c=1; break;   
         //} if (c=='n' /*|| c=='N'*/) { /* If user pressed "N" */   
         //   c=2; break;   
         //} if (c=='d' /*|| c=='D'*/) { /* Debug mode */   
         //   c=3; break;   
         //}   
         //switch (c) {   
         //case 'y': c=1; break;   
         //case 'n': c=2; break;   
         //case 'd': c=3; break;   
         //default:  c=0;   
         //}   
         switch (getkey ())   
         {   
         case 'd': ++c;   
         case 'y': ++c;   
         //default:  ++c;   
         //case 'y': ++c; //break;   
         //default: continue;   
         }   
      //} while (!c);   
      InitPlayer ();   
      if (c==2) {   
         printscr ("Debug mode: Enter room #"); GetInput (Input, 4);   
         //CRoom=0;   
         for (CurPos=0;Input[CurPos]; ++CurPos)   
         {   
            //CRoom=CRoom*10+(Input[CurPos]-'0');   
            //CRoom=CRoom*10+(Input[CurPos]&0xF);   
            CRoom=(((CRoom<<2)+CRoom)<<1)+(Input[CurPos]&0xF);   
         }   
         //CRoom=atoi(Input);   
      }   
      //Itm1=-1;   
      vLook2 ();   
      while (1)   
      {   
   //bordercolor(0);   
         /*Itm1=Vrb=Itm = -1;   
         ItmNum =   
            CurPos =   
            IncPos = 0;*/   
         //Itm1=Vrb= -1;   
         //CurPos = 0;   
      
         DispScoreBoard();   
         if (!GetInput (Input,38)) continue;   
   //puts (Input);   
         //if (Input[0] == 0) continue;   
         //CvtLowerCase (Input);   
         //for (; Input[CurPos] == 32; CurPos++);   
         //while (Input[CurPos] == 32) ++CurPos;   
         //if (Input[0] == 0) continue;   
   //bordercolor(1);   
         Vrb = FindVerb (/*Input*/);   
   //bordercolor(2); cgetc();   
         if (Vrb == 0xFF) {   
            //Input [CurPos]=0;   
            //printf("I don't know how to %s.\n",   
            //   &Input [CurPos]);   
            prints ("I don't know how to ");   
            prints (Input);   
            printperiod ();   
            continue;   
         }   
         //CurPos = IncPos;   
   //bordercolor(3);cgetc();   
         //while (Input [CurPos] != 0 && !ItmNum)   
         //{   
            /*for (; ispunct(Input [CurPos]); CurPos++);*/   
            //if ((isspace (Input [CurPos]) /*||   
            //   ispunct (Input [CurPos])*/) &&   
            //   Input [CurPos] != '$')   
            //{   
            //   ++CurPos; continue;   
            //}   
      
            //do {   
            //   if (Input[CurPos]==32) {++CurPos; continue;}   
            //   //c = isNullWord(&Input[CurPos]);   
            //   //CurPos+=c;   
            //} while (c!=0);   
            while (Input[CurPos]==32) ++CurPos;   
            if (Input[CurPos]) //Itm1=-1; goto runverb;}   
   //puts (&Input[CurPos]); cgetc();   
            //Itm1 = FindItem (&Input[CurPos]);   
            {   
   //bordercolor(4);cgetc();   
               if ((Itm1 = FindItem (&Input[CurPos]))==0xFF ) {   
                  //Input [CurPos+IncPos]=0;   
                  //printf ("I don't know what a %s is.\n",   
                  //   &Input[CurPos]);   
                  prints ("I don't know what a ");   
                  prints (&Input[CurPos]);   
                  //prints (Input+CurPos);   
                  printscr (" is.");   
                  //Vrb = -1;   
                  //goto runverb;   
                  continue;   
               }   
            } else Itm1=0xFF;   
            //CurPos+=IncPos;   
            //Itm1 = c; //ItmNum=1;   
   //printc ('<'); printu (Itm1); printscr (">");   
         //}   
   runverb:   
         //if (Vrb != 0xFF) {   
            //(*(void*)hidereadw(Verb[Vrb].vdo)) ();   
            vfunc=hidereadw((void*)&Verb[Vrb].vdo);   
   //printf ("%04.4X %d\n", vfunc, (unsigned) Vrb);   
   //bordercolor(5);cgetc();   
            (*vfunc) ();   
         //}   
      }   
   }   
   -----------------------   
   Does anybody have any optimizations I can use?  :)   
      
   --- SoupGate-Win32 v1.05   
    * Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca