____ ______________ ___________ ______ __ | | | | |/ / / __ | / / / / / / __ / _______/ / <_/ // / / /___/ / / | / /_____ \___ // / / ____/ / / / / / // / / /\ \__/ /__/ / _______/ /__//__/ / / \ / / / / / /___/|_________/ / FREQUENTLY ASKED QUESTIONS | / | / |_/ ------------------ |_/ ---------------------------------------------- KOF91 FAQ 04/2001 =================== Do not use a proportional font to read this !!!! ================================================================================ ================================================================================ What is this all about ? ======================== In KOF91 , all graphics are in PCX format and therefore can be edited , modified , or replaced easily with any picture editor . Also , WAV samples , MIDI/MP3 music , and the FLI/FLC intro can be replaced . So everyone can rip (or create !) the sprite-set of new characters and *IMMEDIATELY* add it to KOF91 without having to wait for a code update . You can even replace all characters and make a whole new game with YOUR OWN characters and design . I suggest 3 kinds of characters sprites-set : -> character from a famous fighting game , ripped with an emulator . -> original character , fully created by yourself . -> yourself : make sprites of yourself ( and your friends and family ...) in ridiculous positions with a numeric camera and fight against Ryu , or Bill Gates , or whatever you can rip ... ================================================================================ ================================================================================ How do I add or replace characters ? ==================================== One good approach to add a character for the first time would be to edit an existing sprite-set and replace each image with your own art . Then , you will learn to edit the char.ini file as you feel the need ! --> You'll have to rename sprites as follow : |===============|=======================|=========|==========================| | ACTION | SIZE | FRAMES | NAME | | | |(maximum)| | |===============|=======================|=========|==========================| | STATIC | | 20 | static1.pcx-static20.pcx | | BLOCK | | 1 | block1.pcx | | GROUND-BLOCK | | 1 | gblock1.pcx | | CROUCH | static_w x height | 1 | crouch1.pcx | | JUMP | | *5* | jump1.pcx-jump5.pcx | | HURT | | 3 | hurt1.pcx-hurt3.pcx | | GROUND-HURT | | 3 | ghurt1.pcx-ghurt3.pcx | | WALK | | 15 | walk1.pcx-walk15.pcx | |===============|=======================|=========|==========================| | WEAK PUNCH | wpunch_w x height | 10 | punch1.pcx-punch10.pcx | |===============|=======================|=========|==========================| | WEAK KICK | wkick_w x height | 10 | kick1.pcx-kick10.pcx | |===============|=======================|=========|==========================| | STRONG PUNCH | spunch_w x height | 20 | punch1.pcx-punch20.pcx | |===============|=======================|=========|==========================| | STRONG KICK | skick_w x height | 20 | kick1.pcx-kick20.pcx | |===============|=======================|=========|==========================| | AIR-PUNCH | apunch_w x height | 10 | apunch1.pcx-apunch10.pcx | |===============|=======================|=========|==========================| | GROUND-PUNCH | gpunch_w x height | 10 | gpunch1.pcx-gpunch10.pcx | |===============|=======================|=========|==========================| | AIR-KICK | akick_w x height | 10 | akick1.pcx-akick10.pcx | |===============|=======================|=========|==========================| | GROUND-KICK | gkick_w x height | 10 | gkick1.pcx-gkick10.pcx | |===============|=======================|=========|==========================| | KO/kicked | ko_w x height | *5* | ko1.pcx-ko5.pcx | |===============|=======================|=========|==========================| Then you'll have to fill the corresponding sections with the width and height of the sprites in the char.ini file NOTE : Basic moves all have the same width (static_w) . ALL sprites of all moves have the same height (height) . JUMP and KO animations cannot have less than 5 frames (and cannot have more neither) . For some moves , you'll also have to fill the following : ***_nbf is the number of frames in the animation ***_spd is the time that each frame of the move lasts , with 1 being 1/70 second ***_hit is the frame on which the attack hits the opponent ***_dmg (optional) is the damage of the attack If you don't put damage values for your character's attacks , the program will use the following default values : wpunch_dmg = 1 wkick_dmg = 1 spunch_dmg = 2 skick_dmg = 2 apunch_dmg = 1 akick_dmg = 2 gpunch_dmg = 1 gkick_dmg = 2 fireb_dmg = 3 rush_dmg = 3 smove_dmg = 3 Hint : browse a sprite directory of KOF91 ( such as \sprites\sfzryu ) with your pic editor and see how the sprites are sized . --> Make sure the background color of the sprites ( which will be transparent in the game ) is *bright pink* with the following RGB values : Red: 255 , Green: 0 , Blue: 255 --> When your sprite-set is ready , create a new directory in KOF91's \sprites\ directory and put your sprites and samples in there . You have to put the character's directory name in his char.ini file, i.e. Ryu's directory is \sfzryu\ so i put [sfzryu] at the top of his char.ini . You'll also have to fill the corresponding sections (with sprite sizes and info). Now you can create images of the char for the select screen (100x110 and 26x26). Rename these images selbig.pcx and selsmall.pcx and put them in your character's directory . Launch KOF91 and select the corresponding character . There you go . ================================================================================ ================================================================================ How do I add special moves to my character ? ============================================ []--> Fire Ball : this requires 2 sprites sequences : ========= * fireb1-20.pcx (the character doing the move) * fball1-10.pcx (the fireball , animated or not) and you will have to fill the ini file with the following info : fireb = -> 1 if the character has a fireball move , 0 if not ... fireb_w = -> as usual fireb_nbf = -> as usual fireb_hit = -> the frame on which the ball "launches" fireb_spd = -> as usual fireb_exec = -> a sequence of keys to press to execute the move with : N = none U = up D = down L = left/backward R = right/forward UL= up-left UR= up-right DL= down-left DR= down-right P = Punch K = Kick * = end of the sequence for example , Ryu's fireball would be : fireb_exec =D DR R P * NOTE : there is no space between = and the first parameter of the sequence . fball_h = -> the actual ball height fball_w = -> the ball width fball_nbf = -> as usual fball_spd = -> as usual fball_pix = -> the speed of the ball ( pixels per 1/70 second ) fball_cx = -> coordinates to locate where the ball launches fball_cy = starting from the upper-left corner of the character'sprite []--> Rush move : this should support lots of move (i think) including : ========= * Ryu's Hurricane kick * Liu Kang's flying kick * Various rush moves , looped or not sprites are named rush1-20.pcx and require the following info : rush = -> 1 if the character has a rush move , 0 if not ... rush_w = -> as usual rush_nbf = -> as usual rush_hit = -> the frame on which the looped animation (if there is any) starts If it's not a rotation move then it should be the frame on which the move hits the opponent (as usual) rush_spd = -> as usual rush_rot = -> number of times the animation is looped rush_pix = -> the speed of the rush ( pixels per screen refresh ) rush_exec = -> same as fireball NOTE : ALL special moves REQUIRE samples . The samples have the same name as the move's sprites ex : for a fireball move you must include a sample named fireb.wav in the character's directory . ================================================================================ ================================================================================ How do I add Super Specials to my character ? ============================================= * The number of special moves per character is now 6 , organized as follow : * SPECIALS : ======== * fireb + fball (projectile) * rush (rush, can be looped) * smove (behaves like a static attack, can be looped) * SPECIALS or SUPER SPECIALS : ========================== * firebx + fballx (projectile) * rushx (rush, can be looped) * smovex (behaves like a static attack, can be looped) The ****x specials can be either regular specials or super specials . You have to put ****x_spec = 1 in the char.ini file to enable super special . As a super special, the move can only be executed when the power bar is full . As a regular special, the move can be executed at anytime . rushx ans smovex animations can have up to 30 sprites . firebx animation can have up to 40 sprites And don't forget to include the WAV files ! (1 per move) ================================================================================ ================================================================================ How do I edit/create collision boxes ? ====================================== Use the Character Editor and choose PICK . Then you can pick the offensive (red) and defensive (green) boxes on the sprite image with the right and left mouse buttons ! You have to save collision box data for all moves except : intro , outwin , ko , (g)block and (g)hurt . Look at Charlce with the character editor to understand how it works . ================================================================================ ================================================================================ How do I control the AI of my character ? ========================================= You can control each character's behavior for each difficulty level by adding 6 new values to its char.ini file : * easy_off * easy_def * medium_off * medium_def * hard_off * hard_def -> ****_off (0-100) : controls the offensivity of the character =============== for example : ****_off = 0 -> the character keeps running away from the opponent ****_off = 100 -> the character goes berserk against the opponent -> ****_def (0-100) : probability that the character will block your attack =============== for example : ****_def = 0 -> the character never blocks ****_def = 100 -> the character always blocks If you don't put this info in the char.ini file the program will use default values that you should put in the GAME.INI file . ================================================================================ ================================================================================ How do I replace backgrounds ? ============================== Backgrounds are stored in the BKGDS directory Backgrounds are just one big PCX image with virtually infinite size . The only conditions are that it must be a minimum of 320x200 dimensions , and you must include a MIDI file with the same name as the background in the \midi\ directory . (i.e. , sprites\ryustage.pcx -> midi\ryustage.mid ) Background files can now have any name , the program will detect them automatically . Just put you favorite PCXs in the \bkgds\ directory and it's ready ! You can also use FLC movies as backgrounds . NOTE : FLC movies can rarely have a width longer than 700 pixels . Make tests . ================================================================================ ================================================================================ How do I replace WAV samples ? ============================== WAV samples are stored in the WAV directory ... You can replace them with virtually ANY WAV sample (16bit 44100Hz stereo ...) but I strongly advise you to use 16bit 22050Hz mono samples for better compatibility with all souncards available around here . bing.wav browse select screens buzz.wav wrong choice done.wav character/background selected **_alwa.wav this always plays when you hit attack button/key . hit1.wav this plays when basic attacks are succesfull . hit2.wav this plays when special moves are succesfull . rd1.wav "Round 1" rd2.wav "Round 2" rd3.wav "Round 3" / "Final Round" fight.wav "Fight!" ko.wav "KO" argh1.wav 1st / male "Aaaaargh !" argh2.wav 2nd / female "Aaaaargh !" NOTE : if you want your character to use a secondary or female argh.wav put female = 1 in your character's section in the game.ini file . NOTE2 : ALL special moves REQUIRE samples . The samples have the same name as the move's sprites ex : for a fireball move you must include a sample named fireb.wav in the character's directory . ================================================================================ ================================================================================ How do I replace MIDI songs ? ============================= MIDI songs are stored in the MIDI directory ... Choose the MIDI songs you want to use and rename them as follow : select.mid Select screen music ******.mid Backgrounds music ================================================================================ ================================================================================ How do I replace the FLIC intro or opening ? ============================================ You can create a 320x200 FLI or FLC movie for the game intro and opening. Then rename it to 'intro.flc' or 'open.flc' (even if it's a FLI) and put it in the same directory as the executable . ================================================================================ ================================================================================ *** If something is not clear , you can always ask me for explanations . You can also tell me about outrageous mistakes .*** ================================================================================ ================================================================================ |--------------------------------------------| | | | moah@kof91.com | | | | http://www.kof91.com/ | | | |--------------------------------------------| ================================================================================ ================================================================================