paulo@0: 0.46a (2008-11-09) paulo@0: * Preview at top is copied correctly from the back buffer paulo@0: (0.45a regression, reported by rednefed). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.46 (2008-11-08) paulo@0: * Tracks number of 4x4 squares that the player forms paulo@0: (TOD parity; requested by Ghett0). paulo@0: * Added T-Party randomizer (requested by Lardarse). paulo@0: * Default lock delay for Zero set to 40 frames, even if it is paulo@0: played first (0.45 regression, reported by rck). paulo@0: * "[TC]" removed from scenario names (requested by caffeine). paulo@0: * PC: Uses fourCCs for option values in lj.ini. paulo@0: * PC: Uses double buffer for entire background (bug 0021). paulo@0: * PC: Can disable sound effects by deleting or renaming sound.dat paulo@0: (requested by moxie101). paulo@0: * PC: More of the code is 2-player-clean. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.45 (2008-04-20) paulo@0: * New unified speed curve system: less code, more tables, for paulo@0: future loading from a file (bug 0040). paulo@0: * All speed curves except Rhythm and Rhythm Zero have been ported paulo@0: to the new system. Notably, Master has been rewritten based on paulo@0: the tables from the wiki, and Exponential uses sections. The paulo@0: lock delay speeds up as brutally after 600 pieces as always. paulo@0: * Added kludge in the basic makefile that allows building on *BSD paulo@0: and GNU/Linux: 'make linux' (patch by kesiev). paulo@0: * ljpath: Fixed a couple misspellings in the non-Windows code path paulo@0: (reported by kesiev). paulo@0: * ljpath: Supports libfat when running on Nintendo DS. paulo@0: * A few descriptions of options have been shortened to fit into paulo@0: the new GBA/DS look (reported by Bloodstar; patch by caffeine). paulo@0: * Writes result and options text to standard output as well as to paulo@0: lj-scores.txt. This allows you to do 'lj | postprocessor' even paulo@0: if you can't do 'tail -f lj-scores.txt' (requested by kesiev). paulo@0: * DS: Writes result and options to /data/lockjaw/lj-scores.txt. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.44 (2008-02-20) paulo@0: * Computes the preview and hold offset of all pieces (was paulo@0: wkNextMove in <= 0.43) from the entry position of the I paulo@0: tetromino (was wkSpawnMove in <= 0.43). paulo@0: * Kick tables have been inverted to a single struct per rotation paulo@0: system, for future loading from a file (bug 0016). paulo@0: * SKIP_IF system for handling J/L/T exceptions in Arika is replaced paulo@0: with IF_NOT_CENTER: wall kicks are allowed if the free-space paulo@0: orientation overlaps any blocks other than in the center column. paulo@0: * Options DAS doesn't repeat too fast, even on those systems where paulo@0: vsync() is a no-op (0.43 regression, reported by caffeine). paulo@0: This has the same cause as 0022: Windows Vista ignores vsync(). paulo@0: * Options DAS doesn't continue across page boundaries. paulo@0: * GBA/DS: Options has new look. paulo@0: * DS: Reads the touch screen and the X and Y buttons. Right now, paulo@0: touch isn't mapped to anything, but X and Y are Far Right and paulo@0: Far Left. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.43a (2008-02-11) paulo@0: * Arika modified to use SKIP_IF3 after (not before) the basic paulo@0: position. This restores ability to rotate J, L, and T with paulo@0: kicks turned off, such as in IRS (reported by Lion). paulo@0: * PC: Uses shfolder.dll so that installability works even on paulo@0: Windows 98 (0.43 regression, reported by Rich Nagel). paulo@0: * PC: Key bindings to J, M, and Z are correctly saved (0.43 paulo@0: regression, reported by DIGITAL). paulo@0: * PC: In Game Keys, the names of Up and Down key bindings are paulo@0: clearer (requested by 4matsy). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.43 (2008-02-10) paulo@0: * Player can initial-rotate out of block out (bug 0090). paulo@0: * Initial rotation doesn't use wall kick (bug 0059). paulo@0: * Names for values in Drop scoring and Shadow fixed paulo@0: (0.42 regression, reported by Lardarse). paulo@0: * Number of line clears in DS debrief should be cut off at the paulo@0: right side less often (bug 0089; fix based on a patch by kesiev). paulo@0: * Fixed line clear gravity in cascade preset (reported by 4matsy). paulo@0: * Fixed Fibonacci scoring with more than 8 lines per piece paulo@0: (reported by 4matsy). paulo@0: * Debrief is more compact, allowing GBA to use debrief (bug 0031; paulo@0: fix based on a patch by kesiev). paulo@0: * Debrief: Zigzag secret grade requires the hole in the top row to paulo@0: be covered (reported by Kitaru). paulo@0: * PC: If installed.txt is in the same folder as the program, paulo@0: ignores the current directory and stores all writable files paulo@0: to the user's application data folder (bug 0091). paulo@0: * PC: When loading skins, searches for files in the folder with paulo@0: the .skin file instead of the current directory (bug 0033). paulo@0: * PC: Replay sets up playback gimmick (0.42 regression, paulo@0: reported by DIGITAL). paulo@0: * PC: LJVorbis doesn't double-fclose the .ogg file paulo@0: (reported by kesiev). paulo@0: * PC: Mouse drops to bottom after skin or replay selection paulo@0: (requested by jujube). paulo@0: * PC: Options is separated into pages, like on GBA/DS (bug 0082). paulo@0: This frees up room for larger type (requested by jujube). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.42 (2008-02-03) aka LOCKJAW XLII paulo@0: * Docs: Most of TODO.txt has been converted to a numbered list paulo@0: of bugs (bug 0100). paulo@0: * An off-by-1/65536 error in enter below ceiling was fixed. paulo@0: This means it doesn't give one extra row of room to slide on paulo@0: at the top of the well (reported by Caithness and Kukuunen). paulo@0: * In case of a block out, draws the offending piece in the well paulo@0: before entering game over animation. paulo@0: * Extra 5-frame cascade delay removed. paulo@0: * With Lockdown set to Step reset, lock delay resets on the paulo@0: first floor kick. paulo@0: * Tengen rotation system tries kicking one space to the left paulo@0: (requested by zaphod77). paulo@0: * Options' names and values are looked up from fourCCs for future paulo@0: localizability. paulo@0: * Options: Names of speeds in fractions of 1G are computed. paulo@0: * Options skips unpacking options with a value of 255. paulo@0: This allows multiple pref structures to be unpacked on top paulo@0: of each other, and each overrides the ones before it. paulo@0: * Debrief displays options on a second page. paulo@0: * Debrief correctly displays soft drop speed as a fraction (0.41 paulo@0: regression, reported by Lardarse). paulo@0: * Debrief: PC specific parts moved to separate source code file. paulo@0: * Debrief uses a lower-level function to format ISO 8601 date paulo@0: and time so as not to bring in the floating-point library's paulo@0: space overhead on platforms without an FPU. paulo@0: * Debrief plays a sound when turning the page. paulo@0: * PC: Delay for holding Esc to quit no longer depends on paulo@0: display refresh rate. Instead, it uses the global 60 Hz paulo@0: timer (reported by Sara). paulo@0: * PC: Draws speedometer even when preview is at right, paulo@0: as long as there is room, that is, 3 or fewer next pieces paulo@0: (requested by Cubicz). paulo@0: * PC: Gimmick choice moved to Options to match GBA/DS. paulo@0: * PC: Select scenario before starting game (bug 0041). paulo@0: * PC options uses standardized GBA names (OPTIONS_*) instead of paulo@0: PC names (LJPREFS_*). paulo@0: * PC options Shift sound scale, Side, and Next position moved to paulo@0: skin. paulo@0: * PC options sets initial options using initOptions() from GBA/DS. paulo@0: Incidentally, this restores the initial randomizer to bag paulo@0: (0.41 regression and may make similar regressions less likely. paulo@0: * PC options uses unpackOptions() from GBA/DS. paulo@0: * PC options sound is also routed through the cross-platform paulo@0: sound manager. paulo@0: * PC: lj.ini uses fourCCs as names for easier saving and loading. paulo@0: * PC: Switching between windowed and full screen in Options paulo@0: no longer needs the user to restart the program. paulo@0: * PC: LJVorbis doesn't crash if polled while the music is stopped. paulo@0: This can happen when cross-platform code plays sound effects paulo@0: during debrief. paulo@0: * PC: Skin controls window size, or full screen resolution paulo@0: (bug 0017). paulo@0: * PC/DS: Displays a description of some option values in addition paulo@0: to descriptions of options themselves. paulo@0: * GBA/DS: Options disabled on the PC are disabled here. paulo@0: * GBA: Menus are faster now that part of the text engine has been paulo@0: moved to fast RAM. paulo@0: * DS: Plays sound for game over (bug 0064). paulo@0: * DS: Options displayed on touch screen for future touch operation. paulo@0: * DS: Displays debrief after game ends (bug 0031). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.41 (2007-12-18) paulo@0: * Piece set and randomizer are decoupled (requested by Lardarse paulo@0: and Dood77). paulo@0: * New piece set: iCheat(tm) deals only I tetrominoes, like an paulo@0: infamous cheat code for some other game (requested by DIGITAL). paulo@0: * New garbage style "Preload zigzag", which preloads a zigzag paulo@0: pattern of holes. paulo@0: * At debrief time, if at least two rows of the zigzag pattern paulo@0: or at least four rows of a rectum (1-block-wide opening) are paulo@0: formed, shows a secret grade based on the number of pattern paulo@0: rows instead of the number of blocks left in the playfield. paulo@0: * Debrief options section sorted by position in options menu. paulo@0: * Debrief allows for multiple pages of reports. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.40a (2007-11-30) paulo@0: * Does not attempt to create a ghost piece before the first paulo@0: falling piece. This may fix a crash on some systems if the paulo@0: first game played during a session has deep drop turned on paulo@0: (reported by Rich Nagel on Windows 98 Second Edition). paulo@0: * Deep drop ghost piece code stops checking at the ceiling. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.40 (2007-11-27) paulo@0: * Split out speed curves and randomizers to separate files called paulo@0: speed.c and random.c. paulo@0: * Adjusted master delays to be closer to TAP; 600-999 no longer paulo@0: overlap Death 000-399. paulo@0: * Displays short description of each option (requested by AXYPB). paulo@0: * Drill gimmick is back, with the new goal of clearing the bottom paulo@0: row (requested by DIGITAL). paulo@0: * Begin to add code for explosive line clear gimmick; not yet paulo@0: integrated (requested by Joshua). paulo@0: * Debrief shows number of floor kicks. paulo@0: * Bottom blocks is called Deep drop to match recent Multiblocks. paulo@0: * PC: Close box works in Options and Game Keys. paulo@0: * PC: Does not redraw title screen if close box is clicked. paulo@0: * PC: If skin sets transparentPF=1, hotlines and line clear paulo@0: animations are drawn transparent (requested by Rich Nagel). paulo@0: * GBA/DS: Can quit game from pause screen (requested by AXYPB). paulo@0: * GBA/DS: Copyright notice and options screen drawn with paulo@0: proportional font for readability. paulo@0: * GBA/DS: Menu uses the same sound manager that the game play paulo@0: uses, not the platform-specific sound manager. paulo@0: * GBA: Sound for end of game (requested by Lardarse). paulo@0: * DS: Closing the lid pauses the game and turns off the screens paulo@0: (requested by AXYPB). paulo@0: * DS: Unavailable hold piece is really grayed out. paulo@0: * DS: Real music and sound effects engine (requested by paulo@0: bob_fossil). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.39 (2007-10-24) paulo@0: * Does not double line clear delay (unknown regression). paulo@0: * Source code includes new files options.h and old_pc_options.c paulo@0: which were mistakenly left out of 0.38 (reported by tr3). paulo@0: * Draws "hotline" symbol on lines being cleared (requested by paulo@0: Rosti LFC and kiwibonga). paulo@0: * Debrief no longer counts a zero line T-spin as a home run paulo@0: (0.28 regression; reported by Lardarse). paulo@0: * New randomizer 7+1-piece Bag adds one randomly selected paulo@0: tetromino to each bag (requested by colour_thief). paulo@0: * Refactored speed curve state information for pseudo-OO paulo@0: refactoring. paulo@0: * New option: Bottom blocks allows the falling piece to fall past paulo@0: blocks into an appropriately shaped hole (requested by mar). paulo@0: * Added bottom blocks and well size to debrief. paulo@0: * New gluing options Sticky and Sticky by color. paulo@0: * PC: Skin specifies the loop point and whether the music starts paulo@0: before or after the "Ready, Go" animation. paulo@0: * PC: Skin specifies music volume (requested by DIGITAL). paulo@0: * PC: Fixed off-by-one in sideways delay (reported by Lardarse). paulo@0: * PC: Fields with blkH > 24, especially blkH == 48 and Well height paulo@0: 10, are more likely to fit on screen (reported by Needle). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.38 (2007-09-11) paulo@0: * Plays a .ljm specified at the command line (requested by paulo@0: Rich Nagel). paulo@0: * More refactoring for multiplayer. paulo@0: * Added wall kick opcode SKIP_IF3, similar to SKIP_IF except it paulo@0: also checks the two cells above the specified cell. paulo@0: * L, J, and T in Arika use SKIP_IF3 to check the entire center paulo@0: column when rotating to vertical (requested by edo). paulo@0: * Moves new tetrominoes to be between the walls (fixing Tengen in paulo@0: width 4) and, if "Enter above playfield" is off, down far enough paulo@0: so that they're within the playfield (requested by Caithness). paulo@0: * New rotation system: Climbing, based on Tetris DX. (No, you paulo@0: can't wall-climb yet because the sub-block behavior differs.) paulo@0: * Option "4x4 squares" is called "Gluing". Other gluing options paulo@0: are planned. paulo@0: * In Square gluing, formation of a square adds a delay paulo@0: equal to line clear delay. paulo@0: * PC: Refactored to share some of the GBA/DS options logic. paulo@0: * PC: Moved most sound effect code into pcsound.c. paulo@0: * PC: Sound for 4x4 square formation (cribbed from TOD). paulo@0: * PC: Reloads the default skin's configuration before loading paulo@0: the skin, so that skins always inherit from the default skin paulo@0: and not the last chosen skin (requested by Rich Nagel). paulo@0: * GBA: Uses duration as priority for square wave sound effects, paulo@0: which should prevent the section up sound from getting paulo@0: interrupted as often. paulo@0: * GBA/DS: Draws real-time speedometer. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.37 (2007-07-09) paulo@0: * Requires "Up" and "Alt firm drop" to be pressed again when paulo@0: lock delay is turned off or less than DAS delay paulo@0: (requested by reivilo). paulo@0: * Keypress count is reset to 0 even in "Play .ljm" (reported by paulo@0: jujube). paulo@0: * Playing a broken .ljm from the gimmick menu gives an informative paulo@0: error message instead of crashing (0.32a regression; reported by paulo@0: Rosti LFC). paulo@0: * Rhythm section-up logic waits for 64 beats at L bpm, not L+1 bpm. paulo@0: * Fixed a potential buffer overflow in shuffleColumns (the "banana" paulo@0: item), brought on by the expansion of the playfield to 12 columns paulo@0: (0.33 regression). paulo@0: * Better comments in source code about wall kick entry macros paulo@0: WK(x, y), WKX(wk), WKY(wk) in lj.h (requested by Lardarse). paulo@0: * PC: Reinstate Bach music while investing a trademark claim. paulo@0: * PC: Separate music for Rhythm speed curves. paulo@0: * PC: Does not use stretch blitter when drawing the blocks of paulo@0: sprite pieces at full size (e.g. falling piece). paulo@0: * PC: blitField() blits adjacent rows in one call, which is paulo@0: faster on slow machines (requested by Matthew). paulo@0: * PC: Size of hold piece respects blkW and blkH. paulo@0: * README describes build instructions for GBA and DS. paulo@0: * For user convenience, the Allegro DLL is included with the paulo@0: executable, and the source code is in a separate archive. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.36 (2007-05-21) paulo@0: * Allows DAS delay up to 400 ms (requested by Rich Nagel). paulo@0: * Option for entry within or above ceiling (requested by DIGITAL paulo@0: and Cubicz). paulo@0: * Option for hold piece behavior (requested by Lardarse). paulo@0: * PC: User can change individual game keys, like in StepMania paulo@0: (requested by DIGITAL and Rosti LFC). paulo@0: * PC: Minor changes to included background music. paulo@0: * PC: Option for playing a scale during sideways motion paulo@0: (requested by herc). paulo@0: * PC: Selecting a skin saves options (reported by Rich Nagel). paulo@0: * PC: When loading saved options, treats 16 ms DAS delay as valid paulo@0: (reported by jujube). paulo@0: * PC: Skin setting for a transparent background (requested by paulo@0: cdsboy and Bloodstar). paulo@0: * PC: Demo recording uses "Rec" and "Play" in addition to icons. paulo@0: * PC: Reallocates back buffer after each skin switch, avoiding paulo@0: problems related to changes in blkW and blkH (reported by paulo@0: Rich Nagel). paulo@0: * GBA/DS: Fixed line clear options (0.34 regression). paulo@0: * GBA/DS: Press Start after lose, rather than timing out to options paulo@0: (requested by Webby). paulo@0: * "Default" means not to pay back a loan. Manual uses "initial" paulo@0: or "preset" instead (requested by Bruce Tognazzini). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.35 (2007-04-25) paulo@0: * New speed curve Game Boy Heart. paulo@0: * New speed curve Death 300+, which starts three sections into paulo@0: Death just like cgwg's cheat for TAP (requested by Amnesia). paulo@0: * New randomizer 10-piece Memoryless. paulo@0: * First garbage line takes into account well width (reported by paulo@0: Lardarse). paulo@0: * Displays section number for NES, Game Boy, and Game Boy Heart paulo@0: speed curves (requested by Rich Nagel). paulo@0: * Debrief displays Quadra-style pieces per active minute paulo@0: (requested by Cubicz). paulo@0: * Debrief calls pieces "pieces" instead of "tetrominoes" in paulo@0: 10-piece randomizers because I2, I3, L3 are not tetrominoes. paulo@0: * PC: Gimmick and level are displayed in skin foreground color paulo@0: (missed in 0.30; reported by Rich Nagel). paulo@0: * PC: Skin file name suffix is now .skin not .ini, so that skin.ini paulo@0: cannot be confused with lj.ini. The default skin is called paulo@0: default.skin not skin.ini. paulo@0: * PC: Title screen has option to select skin (requested by paulo@0: cdsboy). paulo@0: * PC: Block size is no longer hard-coded at 24x24 pixels. paulo@0: The new .skin commands blkW= and blkH= control their size paulo@0: (requested by Bloodstar). paulo@0: * PC: Source code comes with new installation guide written by paulo@0: Lardarse in "docs/Compiling_on_Windows.txt". paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.34a (2007-03-27) paulo@0: * PC: Fixed hidden level in Next at right mode (0.33 regression). paulo@0: * DS: Fixed hidden sprites due to bug in devkitARM R20 libnds paulo@0: (0.34 regression). paulo@0: * DS: New touch screen code should eliminate erroneous low notes paulo@0: played upon pen-up. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.34 (2007-03-23) paulo@0: * Fixed Move to Back piece set (0.14 regression: dang!). paulo@0: * Separate options for number of previewed pieces above shadow and paulo@0: outside field (requested by kiwibonga, caffeine, and Cubicz). paulo@0: * Option to disable IRS (requested by DIGITAL). paulo@0: * Garbage gimmicks (vs., drill 40, hr derby) replaced with new paulo@0: garbage option (requested by Cubicz). paulo@0: * In garbage style "Vs.", player can choose difficulty 1 through 4 paulo@0: (requested by Caithness). paulo@0: * Option for line clear delay, independent of entry delay paulo@0: (requested by kiwibonga). paulo@0: * Garbage style Drill no longer automatically tops out on paulo@0: short playfields. paulo@0: * Garbage style Vs. generates garbage with SZSZ randomizer. paulo@0: * Frequency of Vs. w/Items bananas is independent of randomizer. paulo@0: * Fixed self-clearing garbage (0.33 regression). paulo@0: * GBA/DS: Fixed pause button hiding left and right walls paulo@0: (0.33 regression). paulo@0: * GBA/DS: R button also works as hold piece (requested by paulo@0: PetitPrince). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.33 (2007-03-08) paulo@0: * New speed curve Rhythm Zero is identical to Rhythm except it paulo@0: operates at 0G instead of 20G (requested by Cubicz and caffeine). paulo@0: * Speed curves that do not use level reset level to 0. paulo@0: Therefore, playing a game of Death then a game of Exponential paulo@0: on GBA/DS no longer shows the level that the player finished paulo@0: Death on as the level during Exponential. paulo@0: * Maximum well width increased to 12 (requested by Zed0). paulo@0: * Hold piece does not reset floor kicks, lock delay time in entry paulo@0: reset, or Rhythm's placement timer. paulo@0: * GBA/DS: More shared code moved to file "ljgbads.inc". paulo@0: * PC: Stops end-of-section sound when game is over paulo@0: (requested by Bloodstar). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.32a (2007-02-25) paulo@0: * PC: Fixed demo recording (0.32 regression; reported by Rosti LFC) paulo@0: * PC: Option to record all games from the start paulo@0: (requested by cdsboy, DIGITAL, Cubicz, and colour_thief). paulo@0: * PC: Added Play .ljm gimmick: paulo@0: Allegro file selector pops up, and the player can choose the paulo@0: filename of a demo to play back (requested by Lardarse). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.32 (2007-02-13) paulo@0: * Changed a CPU yield behavior that was affecting battery paulo@0: efficiency on the GBA and DS front ends (reported by Mighty Max). paulo@0: * Removed Low Rider gimmick in favor of option for well height paulo@0: (requested by Matthew). paulo@0: * Option for well width, like Shimizu's Tetris Semipro-68k. paulo@0: Combine this with a low well height to simulate BIG mode of paulo@0: TGM and Heboris (requested by Matthew). paulo@0: * Options for entry delay and sideways delay have "max" added to paulo@0: their description to clarify things (requested by kotetsu213 and paulo@0: Ezzelin). paulo@0: * All speed options given in Hz or G are given in both. paulo@0: * PC: Next above shadow works in all playfield positions (reported paulo@0: by caffeine). paulo@0: * GBA/DS: Added option for soft drop speed (requested by Ezzelin). paulo@0: * GBA/DS: Some shared code moved to file "ljgbads.inc". paulo@0: * GBA: Unavailable hold piece is grayed out. paulo@0: * GBA/DS: Lock delay = no lock works (reported by Ezzelin). paulo@0: * GBA/DS: Fixed frames/ms display of delays (reported by Ezzelin). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.31 (2007-02-03) paulo@0: * Draws the score and next pieces before blitting the playfield paulo@0: in case a front-end draws the score or next pieces inside the paulo@0: playfield. paulo@0: * In Baboo!, speed curve Zero sets the level to the number of paulo@0: keypresses so far. paulo@0: * PC, GBA: Plays sound effect for end of section in speed curves paulo@0: that use sections (Master, Death, NES, Game Boy). paulo@0: * PC: Option to draw next pieces inside the playfield, above the paulo@0: shadow (requested by caffeine, cdsboy, and Cubicz). paulo@0: * GBA, DS: Blocks within a piece are drawn connected once they lock paulo@0: (TOD parity, requested by Lardarse and Bloodstar). paulo@0: * GBA, DS: Baboo! no longer double-counts console buttons passed paulo@0: through the joypad reading code. paulo@0: * README: "color=image" clone-and-hack error fixed (reported by paulo@0: Bloodstar). paulo@0: * README: Explains black rectangle in upper left corner as an paulo@0: icon for stop (requested by herc). paulo@0: * README: Explains controls on GBA and DS. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.30 (2007-02-01) paulo@0: * Fixed ARE display in debrief, which could cause a crash in some paulo@0: situations (0.26 regression?). paulo@0: * Garbage no longer self-clears in Cascade gravity (reported by paulo@0: Bloodstar). paulo@0: * In high gravity, land a T with one block over an overhang and paulo@0: rotate it once so that it falls and clears a line. This is no paulo@0: longer counted as a T-spin. paulo@0: * During a replay, counts keypresses by the replay player. paulo@0: * PC: Scales undersized background images to the size of the window paulo@0: (requested by Bloodstar). paulo@0: * PC: If a piece enters during a skipped frame, a second upward paulo@0: trail is no longer drawn (reported by Bloodstar and caffeine). paulo@0: * PC: "Next at top" layout draws speedometer (requested by paulo@0: matt_hatter83). paulo@0: * PC: Trails option is saved properly (reported by caffeine). paulo@0: * PC: User can customize the game's text and background colors paulo@0: using skin.ini (requested by Bloodstar). paulo@0: * Added rudimentary port to Nintendo DS for people with MAX Media paulo@0: Dock, M3 Pro, SuperCard Rumble, or SLOT-1 cards, which can run paulo@0: DS homebrew but not GBA homebrew. paulo@0: * Moscow Nights removed from lj-contrib due to research into the paulo@0: copyright term extensions enacted by Russian Federation during paulo@0: the 1990s. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.29 (2007-01-17) paulo@0: * TDS scoring recognizes chains properly (reported by Lardarse). paulo@0: * TDS scoring section factor stops increasing after 190 lines. paulo@0: * Added NES scoring method. paulo@0: * Added scoring for soft and hard drops to options and debrief. paulo@0: * Cascade no longer deletes the bottom row when lines high on the paulo@0: playfield are cleared (reported by Lardarse). paulo@0: * PC: Draws trails when a tetromino goes up or down rapidly. paulo@0: (Option to turn them off.) paulo@0: * PC: Handles dirty rectangles for next pieces and score paulo@0: separately. paulo@0: * Scoring section of README describes all scoring methods. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.28 (2007-01-04) paulo@0: * Added Cascade gravity, as seen in Quadra, Tetris Worlds Cascade, paulo@0: and Tetris DS Touch. paulo@0: * Master/Death: Level starts at -1, so that the first piece is paulo@0: played at level 0 (requested by Lardarse). paulo@0: * Changed T-spin detection to save whether or not a rotation paulo@0: involved a kick (0: move; 1: rotate; 2: rotate with kick) so paulo@0: that scoring methods such as TDS can score T-spins with and paulo@0: without kicks differently. paulo@0: * Added TDS scoring method (line clears only). paulo@0: * New, more general, possibly easier to understand reshuffle code paulo@0: in bag randomizer (requested by Lardarse) paulo@0: * GBA: Gold and silver square colors added (requested by Lardarse). paulo@0: * PC: Game over in low ceiling no longer fades the area outside the paulo@0: playfield (reported by Lardarse). paulo@0: * PC: Close box interrupts starting and game over animations. paulo@0: * README warns that 4x4 squares mode needs ljconn. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.27 (2006-12-20) paulo@0: * GBA version includes a valid header (requested by Ezzelin). paulo@0: * Fixed incorrect spawn orientations for Game Boy rotation system paulo@0: (0.25? regression, reported by Lardarse). paulo@0: * Fixed incorrect win/loss sound early in 180 seconds (0.25 paulo@0: regression). paulo@0: * New randomizer 10-piece Bag, including the domino and both paulo@0: trominoes. paulo@0: * GBA version now reports entry and lock delays in both frames paulo@0: and milliseconds. paulo@0: * Possibly fixed off-by-one in Game Boy speed curve section paulo@0: computation, which caused an incorrect slowdown in 210-219 paulo@0: section (reported by Ezzelin). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.26 (2006-12-15) paulo@0: * Option to allow game to proceed in the background (requested by paulo@0: Ezzelin). However, Windows doesn't appear to pass joystick paulo@0: presses to the game running in the background. FCE Ultra has paulo@0: what appears to be exactly the same problem. paulo@0: * Added Game Boy and NES speed curves. paulo@0: * Options and Game Keys are accessed through title screen, not paulo@0: gimmick selection. paulo@0: * Option to hide playfield without changing the skin. paulo@0: * Rearranged rules section of options to correspond more closely to paulo@0: the sequence of operations for each tetromino. paulo@0: * Soft or hard drop set to "lock on release" no longer produces paulo@0: double locks at 20G. paulo@0: * Disable initial hard drop when set to "lock" and entry delay is paulo@0: greater than 0 but less than DAS delay. paulo@0: * Checks for 4x4 squares top to bottom per comparison with The New paulo@0: Tetris (N64). paulo@0: * Finer grained selections in entry delay (requested by paulo@0: matt_hatter83) and lock delay (requested by caffeine). paulo@0: They now are at 50ms increments at the low end. paulo@0: * Expanded TGM speed curve to 12 sections. One comparatively slow paulo@0: section at 20G was added to Master before Death-equivalent starts paulo@0: (now Death 0 is equivalent to Master 600, not 500), and one paulo@0: faster section was added to the end of Death based on info posted paulo@0: to wiki by colour_thief. paulo@0: * Added H.R. Derby gimmick: paulo@0: Like Marathon, but every line you clear other than with a paulo@0: home run or a T-spin gives you garbage. paulo@0: * Ready Go animation is 1.2 seconds, not 2.0 seconds. paulo@0: * Preliminary support for Game Boy Advance, with experimental paulo@0: paged options replacing scrolling options. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.25 (2006-11-28) paulo@0: * Fixed History 6 Rolls deciding between the first piece algorithm paulo@0: and the subsequent pieces algorithm (reported by Lardarse). paulo@0: * Fixed a signedness issue that broke 180 seconds gimmick in the paulo@0: case that a tetromino was kept active between 3:00 and 3:01 (0.24 paulo@0: regression; reported by caffeine). paulo@0: * Allows ending the game with a piece in mid-air (0.24 regression). paulo@0: * Removed Arika and renamed Arika+TI to Arika. For the old paulo@0: Arika behavior, set Options:Floor kicks to 0. paulo@0: * Options screen allows DAS, allowing future versions to make more paulo@0: options and more values for each option available in a less paulo@0: cumbersome way. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.24 (2006-11-16) paulo@0: * Added Score style to options and debrief. paulo@0: * Choice of LJ or TNT64 scoring is based on chosen score style, not paulo@0: whether 4x4 squares are turned on. paulo@0: * Added Hotline scoring method, where only lines cleared on paulo@0: specific rows count toward scoring. When enabled, draws white paulo@0: lines through empty spaces in these rows. paulo@0: * New soft drop and hard drop lock setting: Lock on release. It's paulo@0: a spring-loaded system: When you press the button, it doesn't paulo@0: lock, but when you let go, it locks (requested by colour_thief). paulo@0: * Option to override lock delay time (requested by caffeine). paulo@0: * Option to limit upward kicks (requested by Needle). This may paulo@0: obviate the difference between Arika and Arika+TI. paulo@0: * Sped up line clear in Master 300-499 to make less of a jarring paulo@0: transition to "death" style timings. paulo@0: * LJM loading fails even more gracefully on wrong format version, paulo@0: properly treating an LJM of the wrong version as not existing. paulo@0: * Fixed bug in 0.23's application switch pausing where switching paulo@0: away while already paused would require two Esc presses to paulo@0: continue (reported by caffeine). paulo@0: * Does not stop play until after the line clear animation finishes. paulo@0: This allows the game to properly update the single, double, paulo@0: triple, etc. counts for the last line that completes the goal paulo@0: (0.19 scoring regression?; reported by caffeine). paulo@0: * Refactored duplicated option loading code. paulo@0: * Options: Ditched parallel struct and array in favor of a paulo@0: single list of named indices. paulo@0: * Corrected Moscow Nights and Kalinka in lj-contrib for greater paulo@0: compatibility with obscure s3m players that can't handle odd paulo@0: numbers of channels (requested by Lardarse). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.23 (2006-11-04) paulo@0: * Fixed S and Z in Sega 1988. paulo@0: * DUMB has been wrapped in a library called LJMusic and can be paulo@0: turned off at compile time (edit ljmusic.c and makefile) if you paulo@0: don't want to install DUMB. paulo@0: * Added support for Xiph.org's OggVorbis codec to LJMusic paulo@0: (requested by Needle). paulo@0: * Option to ignore sideways movement on first frame (like TGM paulo@0: series) (requested by Needle, seconded by caffeine). paulo@0: * Properly pauses the game when the player switches away from the paulo@0: window (requested by Lardarse). paulo@0: * Fails gracefully (does nothing) instead of crashing when loading paulo@0: replay files of a different format version. paulo@0: * Moved as much as possible below setting display mode so that paulo@0: people porting LJ to other platforms can toss up working alert() paulo@0: boxes earlier (requested by cdsboy). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.22 (2006-10-23) paulo@0: * Fixed color system change after reloading (0.20 regression?, paulo@0: reported by lardarse). Should always unpack options just before paulo@0: loading skin. paulo@0: * All numbers in saved states are stored big-endian, making movies paulo@0: compatible between 0.22 for Windows and Intel Mac and 0.22 for paulo@0: PowerPC Mac (requested by cdsboy). paulo@0: * Sega rotation systems renamed to Arika for less confusion with paulo@0: the rotation systems in Sega's Tetris games from 1988 and 1998 paulo@0: (requested by Needle). paulo@0: * Added Sega 1988 rotation system (like Arika without wall kicks). paulo@0: * Preliminary Vorbis playback code is included in the source code paulo@0: distribution but has not been activated in the program. paulo@0: (The keys to compiling OggVorbis on MinGW+MSYS are 1. set the paulo@0: prefix to match the MINGDIR you used to build Allegro, and paulo@0: 2. disable creation of the shared library.) paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.21 (2006-10-21) paulo@0: * Added new T-spin detection rule "3-corner T no kick", identical paulo@0: to 3-corner T except that a wallkick is not counted as a rotation paulo@0: (requested by kotetsu213). paulo@0: * Options that don't apply because of how another option is set paulo@0: are grayed out with an explanation (requested by Needle). paulo@0: * Debrief tells number of blocks left in the playfield and whether paulo@0: saved state was used (requested by caffeine). paulo@0: * Debrief tells what level the player stopped on. paulo@0: * Added support for saving input stream ("demo" or "movie") to file paulo@0: "demo.ljm". Press [ to start/stop recording and ] to start/stop paulo@0: playback (requested by caffeine). paulo@0: * Pieces are actually random again (0.20 regression). paulo@0: * New lockdown mode: Entry reset. Instead of resetting, the lock paulo@0: timer pauses while the piece is falling (requested by caffeine). paulo@0: * No +20 for banking more than 5 beats (requested by caffeine). paulo@0: * 250 ms entry delay option (requested by matt_hatter83). paulo@0: * Entry and sideways delays in Master and Death use the shorter of paulo@0: the speed curve's delay and the user's delay. paulo@0: * Added soft drop speed to options. paulo@0: * Added settings 8.6 Hz through 6.7 Hz to Sideways speed. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.20 (2006-10-15) paulo@0: * Fixed color system change after options (0.19 regression). paulo@0: * Restored ability to hold first piece (0.17 regression?). paulo@0: * Requires down to be re-pressed only when entry delay is less paulo@0: than sideways delay. paulo@0: * In modes with ARE, allow initial hard drop even on first piece paulo@0: (requested by caffeine). paulo@0: * Visual refresh in Game Keys. paulo@0: * Game Keys ignores keypresses for 1/4 second after each key is paulo@0: set, which should fix problems with GameCube to USB adapters paulo@0: (requested by Caithness). paulo@0: * All platforms use a single randomizer, whose state is associated paulo@0: with the playfield. paulo@0: * ARE is a binary option again, as several speed curves ignored the paulo@0: old version's difference between constant and decreasing. paulo@0: * Moved version display to title screen. paulo@0: * Sound effect for win differs from that for game over. paulo@0: * Sound effect for rotating a piece on its first active frame. paulo@0: * Begun to add assertions, causing game over if they fail. paulo@0: * Added support for saving the state of the playfield. paulo@0: Press [ to save or ] to load. Movies might be next. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.19 (2006-09-28): paulo@0: * Use of SRS or Sega colors is determined by a flag set for each paulo@0: rotation system. The rule is that rotation systems that use paulo@0: bounding box rotation should use SRS colors. paulo@0: * Added TOD M4 rotation system (face up entry + bounding box paulo@0: rotation + roughly TGM style compensation). paulo@0: * List items in Options flicker much less. paulo@0: * Beginning of an actual title screen. paulo@0: * Removed Rhythm gimmick in favor of speed curve option. paulo@0: * Added Master and Death speed curves (requested by Needle). paulo@0: Death hasn't been tested thoroughly because the developer paulo@0: sucks at death. paulo@0: * Blits only those playfield rows that have changed, making paulo@0: animation smoother on old, cheap, or mobile video cards paulo@0: (requested by cosmonaut). paulo@0: * Rhythm speed curve no longer has what feels like a big elbow paulo@0: (requested by caffeine). Specifically it gives 20 points paulo@0: instead of banking more than 5 pieces' worth of time. paulo@0: * Doesn't draw the state after the tetromino spawns but before paulo@0: initial rotation has taken effect (requested by Needle). paulo@0: * Added sound effect for hold piece (requested by Needle). paulo@0: * Land and lock sound much better (requested by Needle). paulo@0: * Shuffle columns (seen only in Vs. w/ Items) correctly disconnects paulo@0: blocks horizontally. paulo@0: * In Square mode, T-spins cause avalanches. paulo@0: * In Square mode, lines containing a piece of a 4x4 block are worth paulo@0: more, and homers are worth less. paulo@0: * Fixed ignoring diagonal presses (0.17 regression). paulo@0: * Created a new struct "LJPrefs" to hold preferences set by the paulo@0: player in the Options menu separately from the parameters paulo@0: that the game actually uses. This allows gimmicks to override paulo@0: preferences more cleanly. paulo@0: * Added support for future scoring methods where the score per line paulo@0: at a given point in the chain is based on a formula. paulo@0: * Created a union that combines the new struct with the array that paulo@0: the Options menu edits to improve maintainability of Options. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.18 (2006-09-16): paulo@0: * Fixed Classic lock reset (unknown regression). paulo@0: * Fixed misbehavior when hold is pressed after a piece paulo@0: lands but before it locks (0.17 regression). paulo@0: * Shadow is drawn using the piece's color, at 25% opacity, paulo@0: from rows 4 and 5 of ljblocks. paulo@0: * Fixed shadow option saving (0.17a regression). paulo@0: * Added option to hide shadow color or change shadow opacity. paulo@0: * Split Sega rotation system into one with and one without paulo@0: TGM3's upward kicks. paulo@0: * Added NES and Game Boy rotation systems. paulo@0: * README: Illustration of game play has an image map. The reader paulo@0: can select (hover over) a region of the screenshot, and the paulo@0: browser will show the title of the region as a tooltip. paulo@0: * BPM is now called speed level in preparation for other paulo@0: speed curves (including TGM and TA Death). paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.17 (2006-09-13): paulo@0: * Option for sticky gravity per color, as seen in The Next Tetris. paulo@0: * "Ready, Go" is centered, even in low ceiling gimmicks. paulo@0: * Added TGM3's upward kick to Sega T rotations. paulo@0: * Added Tengen rotation system. paulo@0: * Removed TGM gimmick in favor of entry delay option. paulo@0: * Initial hold works at any time. The key can be pressed and paulo@0: released during entry delay or even during line clear delay. paulo@0: * Initial actions do not inflate keypress count paulo@0: (helpful in Baboo! with entry delay). paulo@0: * Draws hold piece in garbage colors when it is not available. paulo@0: * Options scroll. paulo@0: * Option to draw next pieces to right in constant size or above. paulo@0: * Better looking scroll bar in options. paulo@0: * Debrief: In naive gravity, reports T-spin singles, doubles, paulo@0: and triples separately from non-T-spins. In other line paulo@0: clear gravity modes, "home run" is now called "quad". paulo@0: * Fixed a buffer overflow bug in sticky: fillCLoop() no longer paulo@0: treats the right side of one row and the left side of the paulo@0: row above it as one region. paulo@0: * Clarified manual as to the purpose of the Vs. gimmicks. paulo@0: * Separated platform specific stuff into a separate struct. paulo@0: * Refactored scoring into a separate function for future movement paulo@0: to gimmick and option control. paulo@0: * Debrief formats the report into a string and then writes it paulo@0: to a file and the screen all at once. paulo@0: * Refactored play() to move everything in the game loop that is paulo@0: not platform specific out of ljpc.c into new file ljplay.c. paulo@0: * Wall kick table is no longer flipped, making it easier to add paulo@0: new rotation systems. paulo@0: * Unified counterclockwise and clockwise rotation code. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.16 (2006-09-03): paulo@0: * Fixed instant sideways speed (0.15 regression). paulo@0: * In countdown modes, debrief screen displays whether clear was paulo@0: successful. paulo@0: * 6-piece Bag no longer makes Vs. ridiculously easy. paulo@0: * Counts score and garbage separately for future shift to paulo@0: gimmick-controlled scoring. paulo@0: * Displays score instead of garbage on the play screen. paulo@0: * Counts singles, doubles, triples, and homers, and displays them paulo@0: in debrief. paulo@0: * Option to hide falling piece in addition to shadow. paulo@0: * Can load mod, xm, or it music in addition to s3m. paulo@0: * Moved skin description from lj.ini to skin.ini, and the name of paulo@0: this skin description file name can be changed with the Skin= paulo@0: command in lj.ini. paulo@0: * Closes lj.ini when reading it. paulo@0: * All vkey->action game key handling code moved to macro.c for paulo@0: future refactoring. paulo@0: * Build process uses automatic generation of C files' dependencies paulo@0: for future refactoring of header files. paulo@0: * Added two versions of NES-style blocks to lj-contrib: paulo@0: one by tepples and one by deepdorp. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.15 (2006-08-27): paulo@0: * Options for DAS delay, number of next pieces, and window vs. paulo@0: full screen. paulo@0: * Options scrolling doesn't cause the dialog's title and paulo@0: instructions to flicker. paulo@0: * Small font's 5 glyph is the same width as other digits. paulo@0: * Fixed O shape table. paulo@0: * Macros (vkey->action mappings past the first 8) are in a paulo@0: lookup table in the new file macro.c. This paves the way paulo@0: for a future macro editor. paulo@0: * Added macros Alt. Firm Drop and Alt. Hold. paulo@0: * Game Keys displays names for all keys, not just printable keys. paulo@0: * In Sega rotation mode, reads block images from ljblocks-sega.bmp paulo@0: and ljconn-sega.bmp if available. paulo@0: * If ljbg.jpg is not available, uses a plain white backdrop. paulo@0: * Reads file names for block images, background image, and music paulo@0: from lj.ini, which the player can edit with a text editor. paulo@0: * New "6-piece Bag" randomizer is one stick short of a bundle. paulo@0: * Added an arrangement of the minuet from JS Bach's French Suite paulo@0: in B minor (BWV 814) to lj-contrib. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.14 (2006-08-18): paulo@0: * pause() renamed to pauseGame() to fix namespace collision on paulo@0: platforms with unistd.h (Linux, BSD, Mac). paulo@0: * Gimmick settings for initial gravity, ARE, and ceiling height paulo@0: are initialized from a lookup table. paulo@0: * History 6 Rolls randomizer uses correct initial history (ZSZS) paulo@0: and correct selection for the first piece (I, J, L, or T). paulo@0: * Blocks are drawn connected within each tetromino if ljconn.bmp paulo@0: is present. paulo@0: * Corrected connection table for O tetromino. paulo@0: * Rhythm's BPM counter increases after every 64 beats, not every paulo@0: 64 tetrominoes. paulo@0: * Added Low Vs. gimmick: paulo@0: Like Vs. CPU with a low ceiling. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.13 (2006-08-15): paulo@0: * Hard drop lock option "Zangi" renamed to "Slide". paulo@0: * Added soft drop lock option. paulo@0: * Ignores diagonal presses differently: instead of pretending the paulo@0: keys are up, it pretends that they haven't changed from the last paulo@0: frame. UP, UP+RIGHT, UP no longer makes a double hard drop. paulo@0: * Esc pauses the game and music instead of immediately quitting. paulo@0: * Added contributions from cdsboy to lj-contrib. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.12 (2006-08-13): paulo@0: * Creates lj.ini if it doesn't exist, instead of crashing on paulo@0: startup. paulo@0: * Added half-size Aver16 font. paulo@0: * Zero gravity (as in Baboo!) + Zangi hard drop = land and lock, paulo@0: instead of just sit there paulo@0: * Option to use classic (Game Boy style) or step-reset (TGM style) paulo@0: lockdown instead of move-reset (SRS style) lockdown. paulo@0: * Contains connection tables for all pieces. Not used yet, paulo@0: but will be used for Cascade (where gravity is based on shapes paulo@0: of pieces), Square (which forms big squares only out of whole paulo@0: tetrominoes), and Bombliss (which doesn't place a bomb in a block paulo@0: that has blocks on opposite sides of it within the piece, such as paulo@0: the middle of an I, J, L, or T). paulo@0: * Pieces can carry bomb blocks within them. Not used yet, paulo@0: but will be used for Bombliss. paulo@0: * Option for sticky gravity. This will also be used for Bombliss. paulo@0: * Options rearranged: game on top, control in middle, paulo@0: view on bottom. paulo@0: * Options menu uses a smaller font and scrolls if necessary (but paulo@0: it's not necessary just yet). paulo@0: * Zero isn't wider than other digits in the large or small font. paulo@0: * Split debrief screen into debrief.c. paulo@0: * Debrief displays lockdown and line clear gravity type. paulo@0: * List of options in debrief is written with smaller font. paulo@0: * Config screen does a better job of ignoring simultaneous presses paulo@0: on USB joystick adapters that map the Control Pad to both axes paulo@0: and buttons (such as EMS USB2). paulo@0: * Main menu and options always respond to the arrow keys (in paulo@0: addition to the keys set in Game Keys), allowing players to paulo@0: reset Game Keys even when the keys have become corrupted. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.11 (2006-08-01): paulo@0: * Added Instant, 20 Hz, 15 Hz, and 12 Hz sideways speeds. paulo@0: * Added randomizer History 6 Rolls, very similar to Move to Back paulo@0: but sometimes repeating recent tetrominoes. paulo@0: * Allows separate wall kick tables for clockwise and anticlockwise paulo@0: rotation. paulo@0: * New "theta=default" in piece->block expansion reflects the paulo@0: rotation system's initial orientations for new pieces, next paulo@0: pieces, and the hold piece. paulo@0: * Option to use Sega rotations instead of SRS rotations. paulo@0: * Option for ignoring diagonal presses. paulo@0: * Option for locking or not when using hard drop (Up). paulo@0: * Option to turn off smooth gravity animation. paulo@0: * Option to use TNT style T-spin detection instead of TDS style. paulo@0: * Debrief displays rotation system and T-spin detection. paulo@0: * Saves options to lj.ini. paulo@0: * Split options screen and wall kick table into separate source paulo@0: code files. paulo@0: * Plays music in stereo. paulo@0: * Site distributes contributed graphics and music files to paulo@0: replace the defaults. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.10 (2006-07-27): paulo@0: * Set default full screen color depth to 16-bit which may be more paulo@0: compatible than 15-bit. paulo@0: * Press Print Screen to save the current screen as ljsnap.bmp. paulo@0: * Plays next piece sound whenever the next column moves up. paulo@0: 0.08-0.09 didn't do so for the first hold in a game. paulo@0: * No longer tries rotating right when rotating left fails. paulo@0: * Handles DirectDraw amnesia (screen corruption in Alt+Tab) paulo@0: correctly in menu, game play, and debrief screens. paulo@0: * Asset and video buffer cleanup consolidated into one function. paulo@0: * Gravity speeds up 50% faster. paulo@0: * Added options menu for selecting sideways movement speed and paulo@0: randomizer. paulo@0: * Added more randomizers: 14-piece bag, move-to-back (TGM style), paulo@0: memoryless (classic), and SZSZ (used in the well-known proof paulo@0: that memoryless cannot be played indefinitely). paulo@0: * Debrief screen displays date and time of report generation as paulo@0: well as randomizer and sideways speed, and logs what it displays paulo@0: to lj-scores.txt. paulo@0: * Moved all gimmick-specific code from lj.c to new file gimmicks.c. paulo@0: * Built against Allegro 4.2.0. (Users of previous versions will paulo@0: need the new DLL.) paulo@0: * Countdown based gimmicks (40 lines, 180 seconds, Baboo!, paulo@0: TGM World, Drill 40) use the same countdown variable for paulo@0: end state detection that they had used for countdown sound. paulo@0: * Support for tracked music using DUMB. paulo@0: * Manual is HTML. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.09 (2006-07-16): paulo@0: * Reverted sideways kicks of I tetromino rotating from horizontal paulo@0: to vertical based on testing I-I interactions in Tetris DS. paulo@0: * Key pretending is more consistent. paulo@0: * TGM World stops at 290 lines, more like Tetris The Grand Master. paulo@0: * In gimmicks with ARE (currently TGM World), allows initial paulo@0: hard drop. paulo@0: * Licensed as free software under GNU General Public License. paulo@0: * Fixed incomplete first bag (0.08 regression). paulo@0: * Has its own icon instead of the wall kick editor's icon. paulo@0: * No double initial rotation when using initial hold in TGM World. paulo@0: * Input actions are a 32-bit record for future recording. paulo@0: * Hidden next piece is a separate variable, which next piece paulo@0: sound also respects, fixing Items. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.08 (2006-07-08): paulo@0: * Plays sounds for the next piece like TGM. paulo@0: * No longer allows 800x552 window now that 0.08 displays the paulo@0: gimmick name. paulo@0: * Supports spawn delay and line delay. paulo@0: * Supports initial hold and rotation. paulo@0: * Supports variable garbage randomness. paulo@0: * Begun to move gimmick code out of core. paulo@0: * Added TGM World gimmick: paulo@0: Standard S.M.G., except there's a half-second delay before each paulo@0: tetromino, and a half-second delay after each tetromino that paulo@0: forms at least one line. So if you want fast play, make more paulo@0: lines at once. paulo@0: * Added Drill 40 gimmick: paulo@0: Like 40 lines, but the screen starts with 18 rows of garbage. paulo@0: Be prepared to rely on SRS infinite spin for the first few paulo@0: lines until your skill improves. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.07 (2006-06-30): paulo@0: * Added Baboo gimmick: paulo@0: Standard S.M.G., except there is no gravity, and the game paulo@0: ends after 300 keypresses. paulo@0: * Cleaned up the font a bit. paulo@0: * Corrected wall kicks for I tetromino to match an updated paulo@0: description provided by nicholas. Specifically, I tetromino paulo@0: prefers kick-down to kick-up. paulo@0: * Removed sound-not-found debug message. paulo@0: * Plays "ready, go!" like TGM. paulo@0: * Bigger font for lines and time. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.06 (2006-06-25): paulo@0: * Gimmicks are sorted into columns. paulo@0: * Debrief responds to controller mapping. paulo@0: * Debrief shows keypresses per tetromino and garbage per minute. paulo@0: * Loads/saves vkey configuration from/to disk instead of paulo@0: prompting the user every time the program starts. paulo@0: * Build system switched to GNU Make. paulo@0: * Terminal window ("DOS box") hidden. paulo@0: * Responds to window system's close button. paulo@0: * Counts down 5-4-3-2-1 in line or time limited gimmicks. paulo@0: * Icon in the top left corner of the window is customized. paulo@0: * Displays ljbg.jpg in the window's blank space. paulo@0: * Displays blocks from ljblocks.bmp. paulo@0: * Releases the CPU for 5ms per frame when possible, so that paulo@0: background tasks such as a music player can keep up. paulo@0: * Increased sound effects' volume so that music players do not paulo@0: completely overpower them. paulo@0: * Added macros for rotate twice, move far left, and move far right. paulo@0: * Corrected fix to alternation between falling and landed states paulo@0: that occurred especially when sliding a tetromino to the right paulo@0: under high gravity. paulo@0: * Added Items gimmick: paulo@0: Standard S.M.G., except after the first 7 pieces you get paulo@0: random starting orientations, no rotation, and hidden next paulo@0: pieces, and the speed goes to 1G. Every time you are given an paulo@0: I piece, either you get 2 lines of garbage or the columns of paulo@0: blocks in the well are shuffled. paulo@0: * Fixed scoring tables in README.txt. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.05 (2006-06-23): paulo@0: * Included readme.txt. paulo@0: * Debrief report shows more decimal places in time and PPM. paulo@0: * Game over plays a simple animation and sound. paulo@0: * Playfield can be resized (with a recompile). paulo@0: * Removed hardcoded key binding help text. paulo@0: * Window is bigger in preparation for wallpaper. paulo@0: * Display mode is 15/16/24/32-bit in preparation for wallpaper. paulo@0: * Added Low Rider gimmick: paulo@0: Standard S.M.G. with an 8-block-tall visible playfield. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.04 (2006-06-22): paulo@0: * Uses an OS-native bitmap rather than an Allegro bitmap, paulo@0: which may allow faster drawing with some video cards. paulo@0: * Allows play from a keyboard or a joystick. paulo@0: * Presents a key configuration screen when the program starts. paulo@0: * A 500ms delay after the game ends. Drama will come soon to this paulo@0: space. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.03 (2006-06-21): paulo@0: * Debriefing responds only to Esc, Enter, and keypad Enter. paulo@0: * Compensates for refresh rates other than 60 Hz. paulo@0: * Change log included with program. paulo@0: * Plays sound effects for shift, rotate, land, lock, line, b2b. paulo@0: * Bigger text using the "Aver" font. paulo@0: * Lock delay in Marathon decreases gradually after gravity paulo@0: surpasses 20G. paulo@0: * Reads keys through a bitfield, allowing for custom key->vkey paulo@0: bindings to be implemented in the future. paulo@0: * (Internal) Does not alternate between "falling" and "landed" paulo@0: states when resetting lock delay on slide. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.02 (2006-06-19): paulo@0: * Speed level progresses 1/3 as fast. paulo@0: * Added menu for selecting a gimmick (game mode) to play. paulo@0: * Added Marathon gimmick: paulo@0: Like Vs. but no garbage. paulo@0: * Added 40 lines gimmick: paulo@0: Like Marathon but ends after 40 lines. paulo@0: * Added 3 minutes gimmick (like Marathon but ends after 10800 paulo@0: frames). paulo@0: * Added Rhythm gimmick: paulo@0: 20G, and if you fall below the minimum PPM, it automatically paulo@0: locks the tetromino, and the minimum PPM increases by 10 every paulo@0: 64 tetrominoes. paulo@0: * Debriefing computes PPM and score. paulo@0: * Debriefing returns to gimmick selection instead of exiting paulo@0: the program. paulo@0: paulo@0: _____________________________________________________________________ paulo@0: 0.01 (2006-06-14): paulo@0: * initial release paulo@0: * full SRS implemented paulo@0: * 7-piece bag randomizer paulo@0: * 1G DAS paulo@0: * smooth falling animation paulo@0: * playfield size: 10w x 24h; pieces start above row 20 paulo@0: * 8 next pieces and 1 hold piece paulo@0: * Vs. gimmick: paulo@0: Standard S.M.G., except before every I tetromino after the first, paulo@0: you get 4 garbage lines. paulo@0: