<commit_before>﻿NullpoMino
Version 7.3.0

1. What is this?
A falling block puzzle game using Java.

2. How to run
This game needs Java Runtime Environment 1.5 or newer version to run. http://www.java.com/

Windows:
	Double-click "play_swing.bat", "play_slick.bat" or "play_sdl.bat".

	"play_swing.bat" starts Swing version of NullpoMino.
		(Does not use any OS-dependent libraries. However, performance and sound quality are poor.
		 There is no support for joysticks. BGM is also missing.)
	"play_slick.bat" starts Slick version of NullpoMino.
		(An OpenGL compatible video card required, some PCs may have problems with keyboard.
		 Has limited support of joysticks.)
	"play_sdl.bat" starts SDL version of NullpoMino.
		(Aside from random crashing bug which I can't fix it, it's most stable for 32bit PCs, I think.
		 Has best support of joysticks.
		 Won't work with 64bit PCs.)

	"ruleeditor.bat" runs Rule Editor, where you can create your own ruleset.
	"sequencer.bat" runs Sequence Viewer, which should be helpful for TASing. (Created by Zircean)
	"musiclisteditor.bat" runs MusicListEditor, where you can configure which music file to use.
	"netserver.bat" runs NetServer (ALPHA!), which is a server for netplay feature. More details later.

Linux:
	First, open a X-terminal emulator. Next, navigate to the folder where the archive was extracted.
	(Use "ls" and "cd" command to navigate the folder)

	Finally, enter the following commands:

	To start Swing version:
chmod +x play_swing
./play_swing

	To start Slick version:
chmod +x play_slick
./play_slick

	To start SDL version:
chmod +x play_sdl
./play_sdl

	To start rule editor:
chmod +x ruleeditor
./ruleeditor

	To start Sequence Viewer:
chmod +x sequencer
./sequencer

	To start MusicListEditor:
chmod +x musiclisteditor
./musiclisteditor

	To start NetServer:
chmod +x netserver
./netserver

	Note: You don't have to execute chmod command from 2nd time.

	Depending on your video card and Linux version, you might encounter small or big problems.

	Swing version problems:
		It's not working yet.
		The performance is under 3 FPS, and most SFX won't load.

	Slick version problems:
		Turn off 3D desktop (such as Beryl) to run smoother.
		In the "play_slick" shell script, "XMODIFIERS=@im=none" is not needed if your system don't have SCIM.

	SDL version problems:
		If you tried SDL version but it didn't work, you need to manually install libsdl.
		In Ubuntu 8.04, I think you can install it with following command:
sudo apt-get install libsdl1.2debian
		SDL version requires i386 architecture CPU and 32bit OS to run.

Mac OS X:
	Unfortunately I don't own any Mac OS X PC now :(
	Slick version does seem to work with Linux version commandline.
	SDL version does not work, because sdljava (Java SDL wrapper) doesn't support Mac OS X.
	I don't know anything about Swing version.

3. How to play
A piece made of blocks falls from top of the field.
You can do these actions to the piece until the piece lands on something: move, rotate, or drop.
When the piece lands on something (eg. floor or other blocks), the piece locks, then the new piece will appear from top of the field.
You can erase blocks by filling a horizontal line without gap (In other words, connect 10 blocks to horizontal).
The game ends when the pile of blocks reaches to top of the field.

4. Description of buttons
UP:Hard Drop (Drop current piece instantly) ; Move cursor up
DOWN:Soft Drop (Drop current piece faster) ; Move cursor down
LEFT:Move left ; Decrease current option's value
RIGHT:Move right ; Increase current option's value
A:Rotate
B:Reverse Rotate
C:Rotate
D:Hold (Keep a piece to use later)
E:180-Degree Rotate
F:Skip ending credits (SPEED MANIA and GARBAGE MANIA modes)
QUIT:Quit the game
PAUSE:Pause the game
GIVEUP:Return to the title screen
RETRY:Reset the game and restart from beginning
FRAME STEP:Frame step (pause screen)
SCREEN SHOT:Save screen shot to ss folder

You can change key mappings in CONFIG screen.

If you want to reset settings, delete the following file(s):
	Swing: config\setting\swing.cfg
	Slick: config\setting\slick.cfg
	SDL: config\setting\sdl.cfg
	Global settings: config\setting\global.cfg
	High-scores: config\setting\mode.cfg

5. Game rule
Depending on the game rule, the movement of pieces will be different.
You can select which rule to use in the CONFIG>RULE SELECT screen.
You can create your own rule by using Rule Editor.

(Default Rule)   : The default rule. It's not good for most players so I recommend you to select other rule.
AVALANCHE        : A rule used to play AVALANCHE type games.
CLASSIC0         : A classic rule that many Japanese players played like a monkey. Best suitable for RETRO MANIA mode.
CLASSIC0-68K     : CLASSIC0 with reverse rotation.
CLASSIC1         : Only 1 piece preview, no hold function, no hard drop function, less flexible wallkicks.
                   If you think standard rules are too easy, this rule might be suitable for you.
CLASSIC2         : If you want faster play but dislike standard rules, this rule can help you.
CLASSIC3         : If you dislike standard rules but classic 1-2 is too difficult, this rule is for you.
                   I and T shaped pieces has more flexible wallkicks.
CLASSIC-EASY-A   : It is much easier than other classic rules. Block colors are also different.
CLASSIC-EASY-A2  : Almost same as CLASSIC-EASY-A, but block colors are not different from others.
CLASSIC-EASY-B   : Soft and hard drop behavior is reversed in this rule.
CLASSIC-EASY-B2  : Almost same as CLASSIC-EASY-B, but block colors are not different from others.
CLASSIC-S        : CLASSIC0 with reverse rotation and "Wall Only" wallkick. It can kick wall, but not the already placed blocks.
DTET             : That game was so good that the evil king had to kill it. This rule is a bit tricky. Has ARE/line clear canceling.
NINTENDO-L       : A classical rule that was bundled with a handheld gadget which was made by king of video game.
NINTENDO-L-FAST  : NINTENDO-L with faster sideways movement.
NINTENDO-R       : A classical rule that was appeared before or after NINTENDO-L. Best suitable for RETRO MARATHON mode.
NINTENDO-R-FAST  : NINTENDO-R with faster sideways movement.
PHYSICIAN        : A rule used to play PHYSICIAN type games.
SPF              : A rule used to play SPF type games.
SQUARE           : Rule designed to make it easier to build squares. Best suitable for SQUARE mode.
STANDARD         : Suitable for almost all kinds of players.
STANDARD-EXP     : Soft and hard drop behavior is reversed in this rule.
STANDARD-FAST    : Suitable for fast game play.
STANDARD-FAST-B  : Suitable for fast game play. Initial actions (initial rotation/hold) is less detected in this rule.
STANDARD-FRIENDS : Pieces will spawn one space lower than usual, unless that space is occupied.
STANDARD-GIZA    : hebo-MAI's rule. This rule is not too fast; giving you the opportunity to see the opponent's field in VS game.
STANDARD-HARD    : Difficult than normal STANDARD rule.
STANDARD-HARD128 : Slightly easier variant of STANDARD-HARD rule. You can move/rotate the piece 128 times.
STANDARD-HOLDNEXT: A rule created by holdnext. Enjoy the power of orange sticks.
STANDARD-J       : This variant has slow movements, nothing more than that.
STANDARD-PLUS    : A rule created by Blink. STANDARD-FAST with no line clear delay, and faster softdrop.
STANDARD-SUPER3  : A classical rule with the rotation system of STANDARD rules but no wallkicks. Has ARE canceling.
STANDARD-ZERO    : A rule created by Wojtek. STANDARD-PLUS with 20G Soft Drop and Instant DAS.

6. Game mode
MARATHON
	Mode for beginner players. The level increases by erasing every 10 lines.
	There are three game types: 150 lines, 200 lines, and endless.

MARATHON+
	This mode is similar to MARATHON mode (200 lines game), but has following differences:
	* Line clear speed is faster.
	* If you complete level 20, you'll enter the 21st level: the "Bonus Level".
	  This level never ends (until you die), but the playfield occasionally goes invisible in this level,
	  so it's better to remember the shape of your playfield.
	  You can directly start from the bonus level by setting starting level to 21.

EXTREME
	Mode for expert players. Gameplay is similar to marathon mode, but it's much faster.

LINE RACE
	Clear certain number of lines as fast as possible.
	Goal is selectable from 20, 40, and 100 lines.

SCORE RACE
	Get certain number of points as fast as possible.
	Goal is selectable from 10000, 25000, and 30000 points.

DIG RACE
	Clear all garbage lines as fast as possible.
	You win the game when you clear the bottommost line (the line with gem blocks).
	Amount of garbage lines is selectable from 5, 10, and 18.
	
COMBO RACE
	Try to clear all the lines in the well in one combo.
	Goal is selectable from 20, 40, and 100 lines.

ULTRA
	Score as many points as possible or clear as many lines as possible until the time limit.
	Duration is selectable from 1 through 5 minutes.

TECHNICIAN
	The main goal of this mode is to clear each level as fast as you can.
	When the "GOAL" counter reaches zero, the level increases.
	You can progress the game faster by erasing multiple lines.
	There are five different game types.
	LV15-EASY:  Reach level 16 as fast as you can.
	            There is 2-minute level timer, but it's just a bonus counter and there is no penalty for running out of time.
	LV15-HARD:  This is similar to LV15-EASY, but when the 2-minute level timer runs out, your game ends instantly.
	10MIN-EASY: See how far you can go and how many points you can get within 10 minutes.
	            When the 2-minute level timer runs out, the goal counter resets.
	10MIN-HARD: This is similar to 10MIN-EASY, but when the 2-minute level timer runs out, your game ends instantly.
	SPECIAL:    When the level increases, 30 seconds is added to your time limit. Survive as long as you can.
	
SQUARE
	Try placing your pieces in 4x4 squares to get more points.
	There are three different game types.
	MARATHON: 	Keep playing until you top out. Go for the most points!
	SPRINT:		Try to get 150 points as fast as you can. Can you do it in 8 lines?
	ULTRA:		Get as many points as you can in 3 minutes.
	Best effect can be achieved if you use "SQUARE" rule.

RETRO MARATHON
	A classic game that takes you to the nostalgic feeling.
	Best effect can be achieved if you use "NINTENDO-R" rule.
	
RETRO MASTERY
	A game based on the classics where efficiency is important.
	Best effect can be achieved if you use "NINTENDO-R" rule.

RETRO MANIA
	A classic game that many Japanese players played like a monkey.
	Best effect can be achieved if you use "CLASSIC0" rule.

GRADE MANIA
	You can earn "grade" by getting certain amount of score. Aim for highest grade!

GRADE MANIA 2
	If you beat GRADE MANIA mode, try this. It's much harder!

GRADE MANIA 3
	If you don't think GRADE MANIA 2 is so difficult, try this. The speed depends on your game play!

SCORE ATTACK
	Score as many points as possible before you reach level 300.
	This mode is designed for beginner players.

SPEED MANIA
	Well, it's not so fast as EXTREME mode, but it's very difficult to go through level 500 barrier.

SPEED MANIA 2
	Insane mode! Can you keep up with this crazy speed and some other dangerous things?

GARBAGE MANIA
	Speed is not fast, but garbage blocks will rise from bottom of the play field, so watch out.

PHANTOM MANIA
	This is mostly same as SPEED MANIA, but the playfield is "completely" invisible!
	Try to remember where you placed the piece.

FINAL
	This game mode is designed only for players who have super-fast-fingers and super-fast-brain.
	Try to correctly control the insane-fast pieces.

TIME ATTACK
	You have to complete each level within the time limit, or game will end in failure.
	However, the time limit is usually long, so you won't get a time over.
	The level increases by erasing every 10 lines. Time limit will be reset when the level increases.

	This mode features 11 game types.
	5 of them (NORMAL, HIGH SPEED 1, HIGH SPEED 2, ANOTHER, ANOTHER2) are easy games that ends at 150 lines.
	2 of them (NORMAL 200, ANOTHER 200) are 200 lines game but still easy.
	The rest of 4 (BASIC, HELL, HELL-X, VOID) is very difficult.
	Each level has extremely short time limit, and in the case of HELL and HELL-X, there will be more dangerous things.

PRACTICE
	You can practice various speed settings in this mode.

GEM MANIA
	This is a puzzle mode that requires different strategy than normal modes.
	Your goal is to erase all gem blocks from the playfield.
	This mode features two different types of time limit: "Stage Time" and "Limit Time".
	Stage Time is time limit for each stage. It starts from 1 minute for each stage, and if it reaches zero, the stage ends in failure.
	Limit Time is the main time limit. It starts from 3 minutes, and if it reaches zero, the game ends.
	Complete each stage within 20 seconds to increase the Limit Time.

TOOL-VS MAP EDIT
	Not really a "game" mode. This is a tool for creating maps for VS-BATTLE mode and NetPlay mode.
	
	Controls when you editing a map:
		Up/Down/Left/Right: Move cursor
		A: Put a block
		B: Exit
		C+Left/Right: Change color of block
		D: Delete a block

VS-BATTLE
	Battle against human or AI opponent. You can send garbage blocks by clearing 2 or more lines at the same time.
	
AVALANCHE 1P (RC1)
	This is a puzzle mode where the objective is to clear clusters of colors, not lines.
	Make chains to score as much as you can before you top out!
	Only for use with "AVALANCHE" rule.

AVALANCHE 1P FEVER MARATHON (RC1)
	Premade chains will drop down endlessly. Try to get the most points before time runs out!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS-BATTLE (RC1)
	Clear chains to send your opponent garbage!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS FEVER MARATHON (RC1)
	Premade chains will drop down endlessly. Detonate them to neutralize your garbage handicap, then send your opponent garbage!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS DIG RACE (RC1)
	Dig down to the flashing gem as fast as you can. The first player to clear it wins!
	Only for use with "AVALANCHE" rule.

PHYSICIAN (RC1)
	This is a puzzle mode where you clear gem blocks by lining up blocks of the same color, like throwing pills into a jar.
	Clear more viruses at once to get more points.
	Only for use with "PHYSICIAN" rule.

PHYSICIAN VS-BATTLE (RC1)
	Clear more than one gem block at a time to send your opponent garbage. Try to clear your gem blocks first!
	Only for use with "PHYSICIAN" rule.

SPF VS-BATTLE (BETA)
	A puzzle mode based on a fighting game. Use gems to clear blocks of the same color and send garbage.
	Only for use with "SPF" rule.

7. How to add BGM
Well, currently this game does not have any BGM by default.
However, if you want, you can add any (but must not too big) music file to the game by using MusicListEditor ("musiclisteditor.bat").
If you don't want the BGM to loop, enable the checkbox next to the filename.
Supported file formats: .ogg .wav .xm .mod .aif .aiff

8. NetPlay (BETA!)
[List of features]
List of what you can do:
	* Play against other players (up to 6 players can join)
	* Create a new room
	* Join an already existing room
	* Talk with other players
	* Spectate games
List of what you can't do & Known problems:
	* Replay can't be saved
	* No ID/Password system
	* No rating system
	* No password protected rooms
	* Does not completely keep track your amount of wins
	* No chat flooding protection
	* No ignorelist/banlist
	* It has bad lobby GUI
	* It's buggy!
	* Code is messy and chaos
	* Requires a lot of RAM

[Playing the game]
To enter the netplay mode:
	1. Launch the game as usual. Any versions can be used for netplay.
	2. For Swing version, click File->Netplay from the menubar.
	   For other versions, select "NETPLAY" from the main menu.
	3. The "NetLobby" GUI will appear. You are currently in the server select screen.

To add a new server to the list:
	1. In the server select screen, click "Add..." button.
	2. You are prompted to enter hostname (or IP address) and the port number (Optional).
	   Server address format is "Hostname:Port".
	   If the server is using default port 9200, you may omit ":9200" part.
	3. Click OK button if you are done.

	To test a netplay in the local, launch the netserver.bat and add "127.0.0.1" to the server list.

	harddrop.com is running a netplay server. Thanks harddrop.com members!
harddrop.com

To connect to a server:
	1. Click a server that you want to connect from the listbox.
	   (Alternately, you can just double click the server name from the listbox to connect)
	2. Click Connect button. You are currently in the lobby screen.

To create a room:
	1. Click "Create Room" button.
	2. Enter the room name (Optional) and number of max players.
	3. Click OK button if you are done.  You are currently in the room screen.

To enter an available room:
	Simply double click the room name from the table.
	If you want to spectate the game, but don't want to join as a player,
	right-click the room name and select "Watch" from the context menu.

To make "OK" signal to everyone:
	1. Click the game window (an window that you usually play single player games) to enable the input for game screen.
	2. Press A button to make "OK" signal to everyone.
	3. The game will start when everyone makes OK signal. Have fun!

[Starting a server]
	You can run a server by simply double-clicking "netserver.bat" if you are using Windows.
	But the port number is fixed to 9200, which is a default one.
	If you want to change the port number, or if you are using Linux or MacOS, you will need to manually use the following command:
	For Windows:
java -cp NullpoMino.jar;lib\log4j-1.2.15.jar mu.nu.nullpo.game.net.NetServer [PORT NUMBER]
	For Linux/MacOS:
java -cp NullpoMino.jar:lib/log4j-1.2.15.jar mu.nu.nullpo.game.net.NetServer [PORT NUMBER]

9. FAQ
Q: All pieces are gray in color and it has no wallkicks.
A: You are using "Default Rule" which has this behavior. Try switching to different one.

Q: My Joystick/Gamepads doesn't work correctly in Slick version.
A: Try changing "JOYSTICK METHOD" option (General Config screen) to LWGJL, then let's mess around "JOYSTICK SETTING" options.
   Joystick/Gamepads support in Slick is always a problem. Only a few devices will work with Slick version.

Q: Why NetPlay in SDL version eats too much RAM and crashes after few minutes?
A: Try using Swing or Slick version. I know it's a bug, but I don't have any solution yet.
   It seems large amount of RAM is eaten by SDL itself, not the Java code. If this bug is SDL itself or SDLJava, then it's out of my hand.

Q: I'm trying to run SDL version on 64bit systems but doesn't work.
A: Give up! The SDL library for Java is already abandoned years ago, thus does not support 64bit at all.

10. Credits/Thanks

NullpoMino created by:
	NullNoname !bzEQ7554bc (also known as pbomqlu910963, was known as Nanashi, No name, or noname) <EMAIL>
	Zircean
	Poochy
	Wojtek (aka dodd)
	olivier.vidal1 (better known as Spirale)
	kitaru2004
	Shrapnel.City (aka Pineapple)
	vic7070 (aka Digital)
	alight
	nightmareci
	johnwchadwick (aka nmn)
	prelude234 (aka awake)

	See also "People" section of Google Code project page:
	http://code.google.com/p/nullpomino/people/list

This game used the following tools, libraries and materials.
Thank you on this occasion.

Tools:
	Eclipse 3.5
	http://www.eclipse.org/
	PictBear SE
	http://www20.pos.to/~sleipnir/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww20.pos.to%2F%7Esleipnir%2F&wb_lp=JAEN&wb_dis=2)

Libraries:
	Slick - 2D Game Library based on LWJGL
	http://slick.cokeandcode.com/
	Lightweight Java Game Library (LWJGL)
	http://www.lwjgl.org/
	JOrbis -- Pure Java Ogg Vorbis Decoder
	http://www.jcraft.com/jorbis/
	IBXM Java MOD/S3M/XM Player
	http://www.geocities.com/sunet2000/
	sdljava - Java Binding to SDL
	http://sdljava.sourceforge.net/
	Simple DirectMedia Layer
	http://www.libsdl.org/
	Apache log4j 1.2.15
	http://logging.apache.org/log4j/1.2/index.html
	Crypt.java (Java-based implementation of the unix crypt(3) command)
	http://www.cacas.org/java/gnu/tools/
	Base64Coder
	http://www.source-code.biz/base64coder/java

Sound effects:
	ザ・マッチメイカァズ (The matchmakers)
	http://osabisi.sakura.ne.jp/m2/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fosabisi.sakura.ne.jp%2Fm2%2F&wb_lp=JAEN&wb_dis=2)

	TAM Music Factory
	http://www.tam-music.com/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww.tam%2Dmusic.com%2F&wb_lp=JAEN&wb_dis=2)

Background Images (res/graphics/oldbg):
	Yun Free Stock Photos
	http://www.yunphoto.net/

Font:
	オリジナルフォント【みかちゃん】 (Original Font "Mikachan")
	http://www001.upp.so-net.ne.jp/mikachan/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww001.upp.so%2Dnet.ne.jp%2Fmikachan%2F&wb_lp=JAEN&wb_dis=2)

Also thanks to:
	Lee
	Burbruee
	Steve
	Blink
	xlro (http://nullpo.nu.mu/)
	vicar (http://vicar.bob.buttobi.net/)
	SWR
	hebo-MAI
	tetrisconcept.net http://www.tetrisconcept.net/
	 (NullpoMino thread: http://www.tetrisconcept.net/forum/showthread.html?t=1381)
	Hard Drop http://harddrop.com/
	 (NullpoMino thread: http://harddrop.com/forums/index.php?showtopic=2035)
	Puyo Nexus http://www.puyonexus.net/

11. Project Page at Google code
http://code.google.com/p/nullpomino/

12. Update History (The date and time is in JST)
+ means new feature, - means bugfix, * means other updates, # means some extra notes.

Version 7.3.0 (????/??/??)
#This version is NO LONGER compatible with 7.2.0 netplay server.
+Swing/Slick/SDL: When saving replays, a replay folder will be created if one is not found.
+Swing/Slick/SDL: Fixed location of NEXT piece when spawn offset is non-zero.
+Swing/Slick/SDL: Added option to display NEXT pieces on side of playfield.
+Slick: Added PERFECT FPS option (uses more CPU, does not work in menus).
+Slick: LWJGL updated to version 2.5, Slick updated to build 274
+Added COMBO RACE, SQUARE, RETRO MASTERY, AVALANCHE 1P, AVALANCHE 1P FEVER MARATHON, AVALANCHE VS-BATTLE, AVALANCHE VS FEVER MARATHON, AVALANCHE VS DIG RACE, PHYSICIAN, PHYSICIAN VS-BATTLE, and SPF VS-BATTLE modes.
 Modes for other gametypes are either Release Candidate (AVALANCHE, PHYSICIAN) or Beta (SPF).
 Special thanks to Puyo Nexus for supplying Fever chain data.
+Added SQUARE, AVALANCHE, PHYSICIAN, and SPF rules
+Renamed CLASSIC MARATHON to RETRO MARATHON
+Randomizer: Randomizers have been replaced. This breaks all replays prior to this release.
+Sequencer: Added "Set piece enable" dialog.
+AI: Added "Defensive" and "No Prethink" versions of PoochyBot
+Engine: Added support for AVALANCHE, PHYSICIAN, and SPF type games
+Engine: Added rainbow blocks and rainbow gem blocks support
+Engine: Added delay canceling to properly simulate DTET and STANDARD-SUPER3 rules
+Engine: Added DAS charge on blocked move, neutral DAS store and DAS redirect in delays to properly simulate NINTENDO family rules
+Engine: Added Instant DAS and shift lock
+Engine: Added hard block and hard garbage support
+NetPlay/NetServer: Added more room creation options, separated options into tabs
 Garbage: B2B separation, hole change rate, toggle change rate per attack, combo block, garbage countering
 Bonus: Spin check type, all clear bonus
-NetPlay: Now correctly forces 60 FPS in SDL version
-NetPlay: Saves chat logs even when game window is closed or Java process is killed
-NetPlay: You can see opponent's HOLD/NEXT pieces in any-rule 2 players game now.
-NetServer: Fixed "ghost room" bug
-Slick/SDL: Fixed bug where replay screen could crash if replays were deleted.
+Added STANDARD-HOLDNEXT rule<commit_msg>+Adding changelog entry for r263 ~ r268<commit_after>﻿NullpoMino
Version 7.3.0

1. What is this?
A falling block puzzle game using Java.

2. How to run
This game needs Java Runtime Environment 1.5 or newer version to run. http://www.java.com/

Windows:
	Double-click "play_swing.bat", "play_slick.bat" or "play_sdl.bat".

	"play_swing.bat" starts Swing version of NullpoMino.
		(Does not use any OS-dependent libraries. However, performance and sound quality are poor.
		 There is no support for joysticks. BGM is also missing.)
	"play_slick.bat" starts Slick version of NullpoMino.
		(An OpenGL compatible video card required, some PCs may have problems with keyboard.
		 Has limited support of joysticks.)
	"play_sdl.bat" starts SDL version of NullpoMino.
		(Aside from random crashing bug which I can't fix it, it's most stable for 32bit PCs, I think.
		 Has best support of joysticks.
		 Won't work with 64bit PCs.)

	"ruleeditor.bat" runs Rule Editor, where you can create your own ruleset.
	"sequencer.bat" runs Sequence Viewer, which should be helpful for TASing. (Created by Zircean)
	"musiclisteditor.bat" runs MusicListEditor, where you can configure which music file to use.
	"netserver.bat" runs NetServer (ALPHA!), which is a server for netplay feature. More details later.

Linux:
	First, open a X-terminal emulator. Next, navigate to the folder where the archive was extracted.
	(Use "ls" and "cd" command to navigate the folder)

	Finally, enter the following commands:

	To start Swing version:
chmod +x play_swing
./play_swing

	To start Slick version:
chmod +x play_slick
./play_slick

	To start SDL version:
chmod +x play_sdl
./play_sdl

	To start rule editor:
chmod +x ruleeditor
./ruleeditor

	To start Sequence Viewer:
chmod +x sequencer
./sequencer

	To start MusicListEditor:
chmod +x musiclisteditor
./musiclisteditor

	To start NetServer:
chmod +x netserver
./netserver

	Note: You don't have to execute chmod command from 2nd time.

	Depending on your video card and Linux version, you might encounter small or big problems.

	Swing version problems:
		It's not working yet.
		The performance is under 3 FPS, and most SFX won't load.

	Slick version problems:
		Turn off 3D desktop (such as Beryl) to run smoother.
		In the "play_slick" shell script, "XMODIFIERS=@im=none" is not needed if your system don't have SCIM.

	SDL version problems:
		If you tried SDL version but it didn't work, you need to manually install libsdl.
		In Ubuntu 8.04, I think you can install it with following command:
sudo apt-get install libsdl1.2debian
		SDL version requires i386 architecture CPU and 32bit OS to run.

Mac OS X:
	Unfortunately I don't own any Mac OS X PC now :(
	Slick version does seem to work with Linux version commandline.
	SDL version does not work, because sdljava (Java SDL wrapper) doesn't support Mac OS X.
	I don't know anything about Swing version.

3. How to play
A piece made of blocks falls from top of the field.
You can do these actions to the piece until the piece lands on something: move, rotate, or drop.
When the piece lands on something (eg. floor or other blocks), the piece locks, then the new piece will appear from top of the field.
You can erase blocks by filling a horizontal line without gap (In other words, connect 10 blocks to horizontal).
The game ends when the pile of blocks reaches to top of the field.

4. Description of buttons
UP:Hard Drop (Drop current piece instantly) ; Move cursor up
DOWN:Soft Drop (Drop current piece faster) ; Move cursor down
LEFT:Move left ; Decrease current option's value
RIGHT:Move right ; Increase current option's value
A:Rotate
B:Reverse Rotate
C:Rotate
D:Hold (Keep a piece to use later)
E:180-Degree Rotate
F:Skip ending credits (SPEED MANIA and GARBAGE MANIA modes)
QUIT:Quit the game
PAUSE:Pause the game
GIVEUP:Return to the title screen
RETRY:Reset the game and restart from beginning
FRAME STEP:Frame step (pause screen)
SCREEN SHOT:Save screen shot to ss folder

You can change key mappings in CONFIG screen.

If you want to reset settings, delete the following file(s):
	Swing: config\setting\swing.cfg
	Slick: config\setting\slick.cfg
	SDL: config\setting\sdl.cfg
	Global settings: config\setting\global.cfg
	High-scores: config\setting\mode.cfg

5. Game rule
Depending on the game rule, the movement of pieces will be different.
You can select which rule to use in the CONFIG>RULE SELECT screen.
You can create your own rule by using Rule Editor.

(Default Rule)   : The default rule. It's not good for most players so I recommend you to select other rule.
AVALANCHE        : A rule used to play AVALANCHE type games.
CLASSIC0         : A classic rule that many Japanese players played like a monkey. Best suitable for RETRO MANIA mode.
CLASSIC0-68K     : CLASSIC0 with reverse rotation.
CLASSIC1         : Only 1 piece preview, no hold function, no hard drop function, less flexible wallkicks.
                   If you think standard rules are too easy, this rule might be suitable for you.
CLASSIC2         : If you want faster play but dislike standard rules, this rule can help you.
CLASSIC3         : If you dislike standard rules but classic 1-2 is too difficult, this rule is for you.
                   I and T shaped pieces has more flexible wallkicks.
CLASSIC-EASY-A   : It is much easier than other classic rules. Block colors are also different.
CLASSIC-EASY-A2  : Almost same as CLASSIC-EASY-A, but block colors are not different from others.
CLASSIC-EASY-B   : Soft and hard drop behavior is reversed in this rule.
CLASSIC-EASY-B2  : Almost same as CLASSIC-EASY-B, but block colors are not different from others.
CLASSIC-S        : CLASSIC0 with reverse rotation and "Wall Only" wallkick. It can kick wall, but not the already placed blocks.
DTET             : That game was so good that the evil king had to kill it. This rule is a bit tricky. Has ARE/line clear canceling.
NINTENDO-L       : A classical rule that was bundled with a handheld gadget which was made by king of video game.
NINTENDO-L-FAST  : NINTENDO-L with faster sideways movement.
NINTENDO-R       : A classical rule that was appeared before or after NINTENDO-L. Best suitable for RETRO MARATHON mode.
NINTENDO-R-FAST  : NINTENDO-R with faster sideways movement.
PHYSICIAN        : A rule used to play PHYSICIAN type games.
SPF              : A rule used to play SPF type games.
SQUARE           : Rule designed to make it easier to build squares. Best suitable for SQUARE mode.
STANDARD         : Suitable for almost all kinds of players.
STANDARD-EXP     : Soft and hard drop behavior is reversed in this rule.
STANDARD-FAST    : Suitable for fast game play.
STANDARD-FAST-B  : Suitable for fast game play. Initial actions (initial rotation/hold) is less detected in this rule.
STANDARD-FRIENDS : Pieces will spawn one space lower than usual, unless that space is occupied.
STANDARD-GIZA    : hebo-MAI's rule. This rule is not too fast; giving you the opportunity to see the opponent's field in VS game.
STANDARD-HARD    : Difficult than normal STANDARD rule.
STANDARD-HARD128 : Slightly easier variant of STANDARD-HARD rule. You can move/rotate the piece 128 times.
STANDARD-HOLDNEXT: A rule created by holdnext. Enjoy the power of orange sticks.
STANDARD-J       : This variant has slow movements, nothing more than that.
STANDARD-PLUS    : A rule created by Blink. STANDARD-FAST with no line clear delay, and faster softdrop.
STANDARD-SUPER3  : A classical rule with the rotation system of STANDARD rules but no wallkicks. Has ARE canceling.
STANDARD-ZERO    : A rule created by Wojtek. STANDARD-PLUS with 20G Soft Drop and Instant DAS.

6. Game mode
MARATHON
	Mode for beginner players. The level increases by erasing every 10 lines.
	There are three game types: 150 lines, 200 lines, and endless.

MARATHON+
	This mode is similar to MARATHON mode (200 lines game), but has following differences:
	* Line clear speed is faster.
	* If you complete level 20, you'll enter the 21st level: the "Bonus Level".
	  This level never ends (until you die), but the playfield occasionally goes invisible in this level,
	  so it's better to remember the shape of your playfield.
	  You can directly start from the bonus level by setting starting level to 21.

EXTREME
	Mode for expert players. Gameplay is similar to marathon mode, but it's much faster.

LINE RACE
	Clear certain number of lines as fast as possible.
	Goal is selectable from 20, 40, and 100 lines.

SCORE RACE
	Get certain number of points as fast as possible.
	Goal is selectable from 10000, 25000, and 30000 points.

DIG RACE
	Clear all garbage lines as fast as possible.
	You win the game when you clear the bottommost line (the line with gem blocks).
	Amount of garbage lines is selectable from 5, 10, and 18.
	
COMBO RACE
	Try to clear all the lines in the well in one combo.
	Goal is selectable from 20, 40, and 100 lines.

ULTRA
	Score as many points as possible or clear as many lines as possible until the time limit.
	Duration is selectable from 1 through 5 minutes.

TECHNICIAN
	The main goal of this mode is to clear each level as fast as you can.
	When the "GOAL" counter reaches zero, the level increases.
	You can progress the game faster by erasing multiple lines.
	There are five different game types.
	LV15-EASY:  Reach level 16 as fast as you can.
	            There is 2-minute level timer, but it's just a bonus counter and there is no penalty for running out of time.
	LV15-HARD:  This is similar to LV15-EASY, but when the 2-minute level timer runs out, your game ends instantly.
	10MIN-EASY: See how far you can go and how many points you can get within 10 minutes.
	            When the 2-minute level timer runs out, the goal counter resets.
	10MIN-HARD: This is similar to 10MIN-EASY, but when the 2-minute level timer runs out, your game ends instantly.
	SPECIAL:    When the level increases, 30 seconds is added to your time limit. Survive as long as you can.
	
SQUARE
	Try placing your pieces in 4x4 squares to get more points.
	There are three different game types.
	MARATHON: 	Keep playing until you top out. Go for the most points!
	SPRINT:		Try to get 150 points as fast as you can. Can you do it in 8 lines?
	ULTRA:		Get as many points as you can in 3 minutes.
	Best effect can be achieved if you use "SQUARE" rule.

RETRO MARATHON
	A classic game that takes you to the nostalgic feeling.
	Best effect can be achieved if you use "NINTENDO-R" rule.
	
RETRO MASTERY
	A game based on the classics where efficiency is important.
	Best effect can be achieved if you use "NINTENDO-R" rule.

RETRO MANIA
	A classic game that many Japanese players played like a monkey.
	Best effect can be achieved if you use "CLASSIC0" rule.

GRADE MANIA
	You can earn "grade" by getting certain amount of score. Aim for highest grade!

GRADE MANIA 2
	If you beat GRADE MANIA mode, try this. It's much harder!

GRADE MANIA 3
	If you don't think GRADE MANIA 2 is so difficult, try this. The speed depends on your game play!

SCORE ATTACK
	Score as many points as possible before you reach level 300.
	This mode is designed for beginner players.

SPEED MANIA
	Well, it's not so fast as EXTREME mode, but it's very difficult to go through level 500 barrier.

SPEED MANIA 2
	Insane mode! Can you keep up with this crazy speed and some other dangerous things?

GARBAGE MANIA
	Speed is not fast, but garbage blocks will rise from bottom of the play field, so watch out.

PHANTOM MANIA
	This is mostly same as SPEED MANIA, but the playfield is "completely" invisible!
	Try to remember where you placed the piece.

FINAL
	This game mode is designed only for players who have super-fast-fingers and super-fast-brain.
	Try to correctly control the insane-fast pieces.

TIME ATTACK
	You have to complete each level within the time limit, or game will end in failure.
	However, the time limit is usually long, so you won't get a time over.
	The level increases by erasing every 10 lines. Time limit will be reset when the level increases.

	This mode features 11 game types.
	5 of them (NORMAL, HIGH SPEED 1, HIGH SPEED 2, ANOTHER, ANOTHER2) are easy games that ends at 150 lines.
	2 of them (NORMAL 200, ANOTHER 200) are 200 lines game but still easy.
	The rest of 4 (BASIC, HELL, HELL-X, VOID) is very difficult.
	Each level has extremely short time limit, and in the case of HELL and HELL-X, there will be more dangerous things.

PRACTICE
	You can practice various speed settings in this mode.

GEM MANIA
	This is a puzzle mode that requires different strategy than normal modes.
	Your goal is to erase all gem blocks from the playfield.
	This mode features two different types of time limit: "Stage Time" and "Limit Time".
	Stage Time is time limit for each stage. It starts from 1 minute for each stage, and if it reaches zero, the stage ends in failure.
	Limit Time is the main time limit. It starts from 3 minutes, and if it reaches zero, the game ends.
	Complete each stage within 20 seconds to increase the Limit Time.

TOOL-VS MAP EDIT
	Not really a "game" mode. This is a tool for creating maps for VS-BATTLE mode and NetPlay mode.
	
	Controls when you editing a map:
		Up/Down/Left/Right: Move cursor
		A: Put a block
		B: Exit
		C+Left/Right: Change color of block
		D: Delete a block

VS-BATTLE
	Battle against human or AI opponent. You can send garbage blocks by clearing 2 or more lines at the same time.
	
AVALANCHE 1P (RC1)
	This is a puzzle mode where the objective is to clear clusters of colors, not lines.
	Make chains to score as much as you can before you top out!
	Only for use with "AVALANCHE" rule.

AVALANCHE 1P FEVER MARATHON (RC1)
	Premade chains will drop down endlessly. Try to get the most points before time runs out!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS-BATTLE (RC1)
	Clear chains to send your opponent garbage!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS FEVER MARATHON (RC1)
	Premade chains will drop down endlessly. Detonate them to neutralize your garbage handicap, then send your opponent garbage!
	Only for use with "AVALANCHE" rule.

AVALANCHE VS DIG RACE (RC1)
	Dig down to the flashing gem as fast as you can. The first player to clear it wins!
	Only for use with "AVALANCHE" rule.

PHYSICIAN (RC1)
	This is a puzzle mode where you clear gem blocks by lining up blocks of the same color, like throwing pills into a jar.
	Clear more viruses at once to get more points.
	Only for use with "PHYSICIAN" rule.

PHYSICIAN VS-BATTLE (RC1)
	Clear more than one gem block at a time to send your opponent garbage. Try to clear your gem blocks first!
	Only for use with "PHYSICIAN" rule.

SPF VS-BATTLE (BETA)
	A puzzle mode based on a fighting game. Use gems to clear blocks of the same color and send garbage.
	Only for use with "SPF" rule.

7. How to add BGM
Well, currently this game does not have any BGM by default.
However, if you want, you can add any (but must not too big) music file to the game by using MusicListEditor ("musiclisteditor.bat").
If you don't want the BGM to loop, enable the checkbox next to the filename.
Supported file formats: .ogg .wav .xm .mod .aif .aiff

8. NetPlay (BETA!)
[List of features]
List of what you can do:
	* Play against other players (up to 6 players can join)
	* Create a new room
	* Join an already existing room
	* Talk with other players
	* Spectate games
List of what you can't do & Known problems:
	* Replay can't be saved
	* No ID/Password system
	* No rating system
	* No password protected rooms
	* Does not completely keep track your amount of wins
	* No chat flooding protection
	* No ignorelist/banlist
	* It has bad lobby GUI
	* It's buggy!
	* Code is messy and chaos
	* Requires a lot of RAM

[Playing the game]
To enter the netplay mode:
	1. Launch the game as usual. Any versions can be used for netplay.
	2. For Swing version, click File->Netplay from the menubar.
	   For other versions, select "NETPLAY" from the main menu.
	3. The "NetLobby" GUI will appear. You are currently in the server select screen.

To add a new server to the list:
	1. In the server select screen, click "Add..." button.
	2. You are prompted to enter hostname (or IP address) and the port number (Optional).
	   Server address format is "Hostname:Port".
	   If the server is using default port 9200, you may omit ":9200" part.
	3. Click OK button if you are done.

	To test a netplay in the local, launch the netserver.bat and add "127.0.0.1" to the server list.

	harddrop.com is running a netplay server. Thanks harddrop.com members!
harddrop.com

To connect to a server:
	1. Click a server that you want to connect from the listbox.
	   (Alternately, you can just double click the server name from the listbox to connect)
	2. Click Connect button. You are currently in the lobby screen.

To create a room:
	1. Click "Create Room" button.
	2. Enter the room name (Optional) and number of max players.
	3. Click OK button if you are done.  You are currently in the room screen.

To enter an available room:
	Simply double click the room name from the table.
	If you want to spectate the game, but don't want to join as a player,
	right-click the room name and select "Watch" from the context menu.

To make "OK" signal to everyone:
	1. Click the game window (an window that you usually play single player games) to enable the input for game screen.
	2. Press A button to make "OK" signal to everyone.
	3. The game will start when everyone makes OK signal. Have fun!

[Starting a server]
	You can run a server by simply double-clicking "netserver.bat" if you are using Windows.
	But the port number is fixed to 9200, which is a default one.
	If you want to change the port number, or if you are using Linux or MacOS, you will need to manually use the following command:
	For Windows:
java -cp NullpoMino.jar;lib\log4j-1.2.15.jar mu.nu.nullpo.game.net.NetServer [PORT NUMBER]
	For Linux/MacOS:
java -cp NullpoMino.jar:lib/log4j-1.2.15.jar mu.nu.nullpo.game.net.NetServer [PORT NUMBER]

9. FAQ
Q: All pieces are gray in color and it has no wallkicks.
A: You are using "Default Rule" which has this behavior. Try switching to different one.

Q: My Joystick/Gamepads doesn't work correctly in Slick version.
A: Try changing "JOYSTICK METHOD" option (General Config screen) to LWGJL, then let's mess around "JOYSTICK SETTING" options.
   Joystick/Gamepads support in Slick is always a problem. Only a few devices will work with Slick version.

Q: Why NetPlay in SDL version eats too much RAM and crashes after few minutes?
A: Try using Swing or Slick version. I know it's a bug, but I don't have any solution yet.
   It seems large amount of RAM is eaten by SDL itself, not the Java code. If this bug is SDL itself or SDLJava, then it's out of my hand.

Q: I'm trying to run SDL version on 64bit systems but doesn't work.
A: Give up! The SDL library for Java is already abandoned years ago, thus does not support 64bit at all.

10. Credits/Thanks

NullpoMino created by:
	NullNoname !bzEQ7554bc (also known as pbomqlu910963, was known as Nanashi, No name, or noname) pbomqlu910963<EMAIL>
	Zircean
	Poochy
	Wojtek (aka dodd)
	olivier.vidal1 (better known as Spirale)
	kitaru2004
	Shrapnel.City (aka Pineapple)
	vic7070 (aka Digital)
	alight
	nightmareci
	johnwchadwick (aka nmn)
	prelude234 (aka awake)

	See also "People" section of Google Code project page:
	http://code.google.com/p/nullpomino/people/list

This game used the following tools, libraries and materials.
Thank you on this occasion.

Tools:
	Eclipse 3.5
	http://www.eclipse.org/
	PictBear SE
	http://www20.pos.to/~sleipnir/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww20.pos.to%2F%7Esleipnir%2F&wb_lp=JAEN&wb_dis=2)

Libraries:
	Slick - 2D Game Library based on LWJGL
	http://slick.cokeandcode.com/
	Lightweight Java Game Library (LWJGL)
	http://www.lwjgl.org/
	JOrbis -- Pure Java Ogg Vorbis Decoder
	http://www.jcraft.com/jorbis/
	IBXM Java MOD/S3M/XM Player
	http://www.geocities.com/sunet2000/
	sdljava - Java Binding to SDL
	http://sdljava.sourceforge.net/
	Simple DirectMedia Layer
	http://www.libsdl.org/
	Apache log4j 1.2.15
	http://logging.apache.org/log4j/1.2/index.html
	Crypt.java (Java-based implementation of the unix crypt(3) command)
	http://www.cacas.org/java/gnu/tools/
	Base64Coder
	http://www.source-code.biz/base64coder/java

Sound effects:
	ザ・マッチメイカァズ (The matchmakers)
	http://osabisi.sakura.ne.jp/m2/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fosabisi.sakura.ne.jp%2Fm2%2F&wb_lp=JAEN&wb_dis=2)

	TAM Music Factory
	http://www.tam-music.com/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww.tam%2Dmusic.com%2F&wb_lp=JAEN&wb_dis=2)

Background Images (res/graphics/oldbg):
	Yun Free Stock Photos
	http://www.yunphoto.net/

Font:
	オリジナルフォント【みかちゃん】 (Original Font "Mikachan")
	http://www001.upp.so-net.ne.jp/mikachan/
	(Excite translation: http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Fwww001.upp.so%2Dnet.ne.jp%2Fmikachan%2F&wb_lp=JAEN&wb_dis=2)

Also thanks to:
	Lee
	Burbruee
	Steve
	Blink
	xlro (http://nullpo.nu.mu/)
	vicar (http://vicar.bob.buttobi.net/)
	SWR
	hebo-MAI
	tetrisconcept.net http://www.tetrisconcept.net/
	 (NullpoMino thread: http://www.tetrisconcept.net/forum/showthread.html?t=1381)
	Hard Drop http://harddrop.com/
	 (NullpoMino thread: http://harddrop.com/forums/index.php?showtopic=2035)
	Puyo Nexus http://www.puyonexus.net/

11. Project Page at Google code
http://code.google.com/p/nullpomino/

12. Update History (The date and time is in JST)
+ means new feature, - means bugfix, * means other updates, # means some extra notes.

Version 7.3.0 (????/??/??)
#This version is NO LONGER compatible with 7.2.0 netplay server.
+Swing/Slick/SDL: When saving replays, a replay folder will be created if one is not found.
+Swing/Slick/SDL: Fixed location of NEXT piece when spawn offset is non-zero.
+Swing/Slick/SDL: Added option to display NEXT pieces on side of playfield.
+Slick/SDL: You can now use the mouse and dedicated navigation keys on the menus.
+Slick: Added PERFECT FPS option (uses more CPU, does not work in menus).
+Slick: LWJGL updated to version 2.5, Slick updated to build 274
+Added COMBO RACE, SQUARE, RETRO MASTERY, AVALANCHE 1P, AVALANCHE 1P FEVER MARATHON, AVALANCHE VS-BATTLE, AVALANCHE VS FEVER MARATHON, AVALANCHE VS DIG RACE, PHYSICIAN, PHYSICIAN VS-BATTLE, and SPF VS-BATTLE modes.
 Modes for other gametypes are either Release Candidate (AVALANCHE, PHYSICIAN) or Beta (SPF).
 Special thanks to Puyo Nexus for supplying Fever chain data.
+Added SQUARE, AVALANCHE, PHYSICIAN, and SPF rules
+Renamed CLASSIC MARATHON to RETRO MARATHON
+Randomizer: Randomizers have been replaced. This breaks all replays prior to this release.
+Sequencer: Added "Set piece enable" dialog.
+AI: Added "Defensive" and "No Prethink" versions of PoochyBot
+Engine: Added support for AVALANCHE, PHYSICIAN, and SPF type games
+Engine: Added rainbow blocks and rainbow gem blocks support
+Engine: Added delay canceling to properly simulate DTET and STANDARD-SUPER3 rules
+Engine: Added DAS charge on blocked move, neutral DAS store and DAS redirect in delays to properly simulate NINTENDO family rules
+Engine: Added Instant DAS and shift lock
+Engine: Added hard block and hard garbage support
+NetPlay/NetServer: Added more room creation options, separated options into tabs
 Garbage: B2B separation, hole change rate, toggle change rate per attack, combo block, garbage countering
 Bonus: Spin check type, all clear bonus
-NetPlay: Now correctly forces 60 FPS in SDL version
-NetPlay: Saves chat logs even when game window is closed or Java process is killed
-NetPlay: You can see opponent's HOLD/NEXT pieces in any-rule 2 players game now.
-NetServer: Fixed "ghost room" bug
-Slick/SDL: Fixed bug where replay screen could crash if replays were deleted.
+Added STANDARD-HOLDNEXT rule
{'fraction_non_alphanumeric': 0.061289171546712005, 'fraction_numerical': 0.01486052515584661, 'mean_word_length': 3.7820937468633944, 'pattern_counts': {'":': 2, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 44, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3894661', 'n_tokens_mistral': 15682, 'n_tokens_neox': 14448, 'n_words': 7218}