| 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 |