MCS' Coding Tips
                 "Success!"



  
Modifying the signon screen

   Written by MCS
   Tested by Quinnsey and BrotherTank


Main Page

News

Wolfenstein 3D
Texture Library


MCS' Coding
Tips - "Success"!


Utilities

Spear
Resurrection


Wolfendoom

Wolf
Collection


Original Wolf 3D

Doom/Duke
maps


Other Stuff

Links

Questions?
Email us!
The first screen displayed after starting Wolf, is the so-called signon screen with the memory and hardware indicators.
As you'd probably know, this screen is precompiled in the SIGNON.OBJ file that comes with the Wolf source package, and cannot be altered in the program itself.
However, it is possible to transfer such a screen to the VGAGRAPH, so it can be edited with a program like Paint Shop Pro, and modified to your likings.

First of all, you need to decide which image slot to use for your signon screen. Of course, it's best to add an extra slot with FloEdit (read Flo's helptext on this subject carefully, if you don't have any experience with this).
In the example below, I'll use the second image in the VGAGRAPH, i.e. the little picture of the road that leads to the castle, referred to as H_CASTLEPIC in the code.

CAUTION: FloEdit doesn't allow you to import just every 320x200 image. This is because the compressed size of the image must not exceed 64K due to limitations of the Wolf engine.
Wolf images are Huffman compressed. Please refer to FloEdit's help for more information.


Now on to the code. There's only one file involved in this operation.

Open WL_MAIN.C and do a search for the following lines:

if (!virtualreality)
{
  VW_SetScreen(0x8000,0);
  VL_MungePic (&introscn,320,200);
  VL_MemToScreen (&introscn,320,200,0,0);
  VW_SetScreen(0,0);
}

and remove all of them completely.

Next, do a search for these lines:


void FinishSignon (void)
{
#ifndef SPEAR
VW_Bar (0,189,300,11,peekb(0xa000,0));
WindowX = 0;
WindowW = 320;
PrintY = 190;

#ifndef JAPAN
SETFONTCOLOR(14,4);

#ifdef SPANISH
US_CPrint ("Oprima una tecla");
#else
US_CPrint ("Press a key");
#endif

#endif

if (!NoWait)
  IN_Ack ();

#ifndef JAPAN
VW_Bar (0,189,300,11,peekb(0xa000,0));

PrintY = 190;
SETFONTCOLOR(10,4);

#ifdef SPANISH
US_CPrint ("pensando...");
#else
US_CPrint ("Working...");
#endif

#endif

SETFONTCOLOR(0,15);
#else
if (!NoWait)
  VW_WaitVBL(3*70);
#endif
}


Remove all these lines,
and add these lines instead:


void FinishSignon (int screen)
{
CA_CacheScreen (screen);
VW_UpdateScreen ();
}


Now go and look for these lines:

/
/ draw intro screen stuff
//
if (!virtualreality)
  IntroScreen ();

and replace these with:

// draw intro screen stuff
//
if (!NoWait)
{
  FinishSignon (H_CASTLEPIC);
  IntroScreen ();
  IN_UserInput(TickBase*7);
}


Now do a search for:

InitRedShifts ();

Immediately below this one, you'll find these two lines:

if (!virtualreality)
  FinishSignon();


just  remove  these LAST two lines. The InitRedShifts(); has to stay intact.

That's it. Compile the project and link it up.
If all went well, you'll start the game with your own signon screen.


Success!
MCS