Subj : Re: Looking for more optimizations!
To   : All
From : Harry Potter
Date : Thu Oct 25 2018 07:24 am

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)