* ACTris! 2.1 by Hayden Doan - July 01, 2016 * Introduction: ============ Only a brief introduction is needed this time. I continued making refinements on ACTris! 2.1. One of the first priorities was to improve the Title Screen, again! I had to work out some programming challenges with the color gradients for the texts. Overall, I'm now pleased with the end result :) Also, I wanted to fix some Page Zero memory usage issues to make my program compatible with the Altirra OS. And since I was deep into the codes already, I implemented a few other refinements (and a major Random Generator change) listed in the What's New section below. Lastly, this is most likely the final version of ACTris! to be released in the GTIA 10 mode. In the distant future (I hope!), I would like to explore other sound and graphics techniques used in programs such as the excellent "Thetris" written by MaPa and combine them with some key features developed in ACTris! Thanks: ====== Thank you, phaeron for helping me to figure out the issues with my program not working correctly with your Altirra OS. Thanks for the feedback that I received from everyone who gave my program a try. Thanks to therealbountybob's feedback, I've adjusted the "Popcorn" song tempo to not be so fast and "annoying". The valuable feedbacks really help me to develop a more polished program. What's New in ACTris! 2.1: ========================= * "Rotated" the program version from 1.2 to 2.1 :) * Rewrote the Tetriminos Random Generator completely! - The previous random generator was just simply "random". I know that it's technically only pseudo-random. - The new random generator is a statistical tracking algorithm. Over a period of time, the total number of EVERY Tetriminos will be EVENLY DISTRIBUTED. - The new algorithm has been thoroughly tested and the random distribution tracked within +/-3 counts from the mean over thousands of test cycles which provides the effect of "randomness". - During testing, I found that the new random generator has greatly increased the playability of the game! - In my opinion, this is the most fair way to play Tetris. There have been many times that I would be waiting for a much needed Tetriminos to be available and it may never even come! Now, the player can have A LOT more playing strategy since he/she can actually "plan" for every Tetriminos to become available within a reasonable period of time. - Actris! may be the only existing Tetris program that has a statistical tracking random generator. * Reduced the "U Can't Touch This" celebration music playing from two loops to only one - With the new Tetriminos Random Generator AND a good playing strategy, the player can achieve a lot more four-line completions. Therefore, playing the music just once will keep the game interruptions to an acceptable level. * Improved the Title Screen - Improved color gradients for the texts - Added Tetriminos. Now it looks more like the Title Screen for a Tetris program * Improved the High Score Screen - Added Tetriminos to the "Hall of Fame" text * Added a new "Thud" sound for the Hard Drop and a new "Drop" sound for the Normal Drop -> Use the [M]usic keyboard command to toggle between the Music and the new Drop Sound effects * Balanced the volumes of the Music and the Sound Effects * Adjusted the "Popcorn" music tempo to not be so fast and annoying per therealbountybob's suggestion * Modified the Pause Screen Rainbow effect. Now it scrolls upward. * Fixed Page Zero memory usage to be compliant with the Atari OS memory map and compatible with the Altirra OS * Used TxtMsc ($294) to find the memory address of the Text Window as recommended by phaeron * Used VCount ($D40B) to detect NTSC/PAL video modes to work properly even with custom Atari hardware Have Fun! Hayden ------------------------------------------- * ACTris! 1.2 by Hayden Doan - May 31, 2016 * Introduction: ============ Wow! It has been quite a few years since I have been able to get back to programming on the beloved Atari 800. During a brief moment of inspiration, I continued working on my CTetris program. I think that the new name ACTris! 1.2 is the most appropriate for the program. It's short for Atari Tetris in Action! (my favorite Atari language). Since the program already has one of the best and most responsive gaming engine (IMHO) for the Atari 8-bit Computers, I concentrated on making the refinements that have been on my list for a long time now. There are quite a bit of history in the previous release notes below. But, I'll highlight the important points here for quick reference. So when you have the urge to get into some solid Classic Tetris action and stack endless falling Tetriminos to set a new high score, please give the new ACTris! 1.2 a spin for a fun and exciting challenge :) Thanks: ====== ACTris! 1.2 was developed on the excellent Altirra 2.80_test38_x64 Emulator which substantially improved compilation time with the CPU = 65C816 (21.48MHz) and other various acceleration options. Thank you, phaeron for your dedication to the Atari community and for your great support. You're the best! Thanks to pps for his suggestion to adjust the Game Speed to NTSC/PAL computer systems way back in 2009! http://atariage.com/forums/topic/147244-ctetris4d-release-pre-final-version/#entry1794690 And, thanks to flashjazzcat for his prompt help with my PAL detection questions. What's New in ACTris! 1.2: ========================= * Improved the Title Screen * Improved the High Score Screen * Muted the Bass Pedal Notes which can cause disharmonies with the Bass Lines * Two consecutive identical Tetriminos are now allowed by the improved Random Generator * Adjusted Joystick Auto-Repeat Delay and Repeat Rate for a faster response * Added some new Sound Effects for even a better gaming experience * 2x Draw Speed improvement of the Game Screen & the Atari Fuji Logo Segments - Nothing will slow the game down now! * NTSC/PAL computer detection for automatic Game Speed adjustment - It should work for standard build computers by reading the PAL Register at address $D014 - You must restart ACTris! for the program to recognize an NTSC/PAL system change - Speed adjustment is not perfect since PAL systems are by design 12% slower than NTSC - I learned from flashjazzcat and phaeron that a more robust method is to use VCOUNT - But, I'm not going further with the VCOUNT method at this time * The Atari Fuji Logo Segments can now only be completed with the exact number of Lines - For example, if there are three segments left on the Atari Fuji Logo, - exactly three lines of connected Tetriminos will be needed to complete the logo. - If Sound Effects are On, a "Chirp" alert will sound when the Atari Fuji Logo is four or less segments within completion - A Bonus of 500 points will be awarded for the completion of the Atari Fuji Logo - Once the Atari Fuji Logo is completed, the (P)ause command will display a "Rainbow" effect for the Atari Fuji Logo :) - If Sound Effects are On, a "Warble" sound that I borrowed from "Fill'Er Up" by Tom Hudson will also play - The "Rainbow" effect is one of my favorite graphic effects on the Atari - Also, the "Warble" sound is one of my favorite sound effects on the Atari * Fixed the memory reservation for the Custom Fonts which may have caused a program crash * Please experiment with the Color Palette Presets (on Emulators) for the best color results - I prefer the "Authentic NTSC" Palette Preset on the Altirra Emulator Key Features: ============ * Ultra Fast & Responsive program written mainly in OSS Action! with emphasis on game playability * Some graphics subroutines were written in OSS MAC65 Assembly for optimum speed and performance * Automatic High Scores Load & Save (Please leave disk in drive for updates) * Full Color with Sound Effects & Background Music * "Dissolve" graphics effect for connected line(s) in the color of the last played Tetriminos * Keyboard Commands for Program Options * Automatic Joystick recognition (by Joystick movement detection) for additional Joystick Configurations * Automatic NTSC/PAL computer detection for automatic speed compensation * Game Pause / Resume feature * Custom Fonts Minimum System Requirements: =========================== * 48KB RAM Atari Computer with GTIA Chip for Graphics Mode 10 support * Disk Drive for saving High Scores * Joystick (Recommended) Controls Summary: ================ Move Left - Keyboard: 'Left' | Joystick: Left Move Right - Keyboard: 'Right' | Joystick: Right Rotate - Keyboard: 'Up' | Joystick: Up SoftDrop - Keyboard: 'Down' | Joystick: Down (Configurable as 'Hard Drop' or 'Soft Drop') HardDrop - Keyboard: 'Space' | Joystick: Fire Button (configurable as 'Rotate' or 'Hard Drop') HardDrop - (Continued) | Joystick: (at the same time) Joystick "Rotate" is user configurable as 'Single' or 'Auto-Repeat' Pause - Keyboard: 'P' or 'Esc' (Toggles Pause / Resume) Next - Keyboard: 'N' (Toggles Next Block Display) Quit - Keyboard: 'Q' Drop Sound - Keyboard: 'D' (Toggles Object Drop Sound On/Off) Sound Effects - Keyboard: 'E' (Toggles Sound Effects On/Off. A 'Chirp' sound indicates Sound Effects are 'On'). Background Music - Keyboard: 'M' (Toggles Background Music On/Off.) Notes: ===== 1) The Default Sound settings are: Music ('On'), Sound Effects ('On'), and Drop Sound ('Off'). 2) Setting Music 'Off' will also turn both Drop Sound & Sound Effects back to 'On'. You can still use the "D" and "E" keys to individually set your sound effects preferences. 3) The user input cursor will wrap around from End to End (instead of remaining at the End positions). 4) The "Next" object window is defaulted to 'On'. Use the "N" key to toggle the "Next" object display window On/Off. 5) The High Score Screen will flash the "HALL OF FAME" text ONLY if the the player sets a new High Score. Scoring Summary: =============== Maximum possible points for the Tetriminos: ------------------------------------------ ---------------------------------------- |Levels | 0 1 2 3 4 5 6 7 8 9| |Points | 24 26 28 30 32 34 36 38 40 42| ---------------------------------------- One point is subtracted for each timed drop (Beep) and also for each SoftDrop. Therefore, the sooner you HardDrop the blocks into place, the more points you'll get for that block. Bonus Points: ------------ When three or four lines are connected at one time, you will hear chime sounds counting the number of connected lines and receive the following Bonus Points: Three Lines - 50+50+50 = 150 Bonus Points Four Lines - 50+50+50+100 = 250 Bonus Points Also, the completion of the Atari Fuji Logo will yield 500 Bonus Points. Level Changes: ------------- --------------------------------------- |Levels | 0 1 2 3 4 5 6 7 8 9| |Lines | 0 10 10 10 15 15 15 20 20 20| --------------------------------------- The number of connected lines needed for the next game level is displayed within the "[ ]" brackets. Have Fun! Hayden ------------------------------------------- * CTetris4g by Hayden Doan - January 11, 2011 * (Post-Final Version G - Gold Edition) INTRODUCTION: After completing the CTetris4f Final Version, I still had some ideas and improvements that I wanted to implement. So, I started working on this CTetris4g Post-Final version. THANKS: All of the AtariAge members who gave me great program suggestions and support. Special thanks to Fandal for his custom fonts and rotate auto-repeat suggestions and for sending me a copy of the Font Maker program, and to therealbountybob for his suggestion of the high scores (of course!) save feature. What's New in CTetris4g: > Added High Scores save feature. High scores will automatically be saved to disk once the player enter his/her initials for a new high score. > Added Custom fonts support. The font (.fnt) files are in the Font Maker format. > Added Atari Fuji logo on the game screen. Since Tetris is a puzzle game, I have a small challenge for you to recreate the scrolling rainbow effect as in the sample screen in the CTetris4g program. Kudos to the person who can post the solution first on this forum thread. Hint - It's not that hard. So think easy and no disassembly cheating please. > Added Ultra-Fast Hard Drop. You can check it out by slowing the emulator way down to see the hard drop difference compared to the previous versions. > Added joystick user configurable options (See CONTROLS below). If a joystick is used to select the game options, the program will automatically detect the joystick and prompt the user of additional joystick options. EMULATOR NOTES: (Recommended Atari800Win PLus 4.0 Settings) > Turn off Auto-Fire on joystick Fire Button. > Turn off "Allow using keyset keys also as regular keys" -> In the Advanced Joystick Options dialog box. CONTROLS : > Joystick "Fire" Button is now user configurable as 'Rotate' or 'Hard Drop' > Joystick "Down" is now user configurable as 'Hard Drop' or 'Soft Drop' > Joystick Object "Rotate" is now user configurable as 'Single' or 'Auto-Repeat' Controls Summary: Move Left - Keyboard: 'Left' | Joystick: Left Move Right - Keyboard: 'Right' | Joystick: Right Rotate - Keyboard: 'Up' | Joystick: Up SoftDrop - Keyboard: 'Down' | Joystick: Down (Configurable as 'Hard Drop' or 'Soft Drop') HardDrop - Keyboard: 'Space' | Joystick: Fire Button (configurable as 'Rotate' or 'Hard Drop') | Joystick: (at the same time) Pause - Keyboard: 'P', 'Esc' (Toggles Pause mode) Next - Keyboard: 'N' (Toggles display of next block) Quit - Keyboard: 'Q' Drop Sound - Keyboard: 'D' (Toggles Object Drop Sound on/off) Sound Effects - Keyboard: 'E' (Toggles Sound Effects on/off. A 'chirp' sound indicates Sound Effects are 'on'). Background Music - Keyboard: 'M' (Toggles Background Music on/off.) Notes (for Controls): 1) The Default Sound settings are: Music ('on'), Sound Effects ('on'), and Drop Sound ('off'). 2) Setting Music 'off' will also turn Drop Sound & Sound Effects back to 'on'. You can still use the "D" and "E" keys to set your sound effects preferences. 3) The user input cursor now will wrap around from end to end (instead of remaining at the end positions). 4) The "Next" object window is defaulted to 'on'. Use the "N" key to toggle the "Next" object display window on/off. Have Fun! Hayden ------------------------------------------- * CTetris4f by Hayden Doan - July 27, 2010 * (Final Version) INTRODUCTION: Wow! I finished a program. And to celebrate, I'm releasing the source code to hopefully inspire others to learn the excellent Atari Action! language as well as to make modifications and improvements to the CTetris4 program in areas such as graphics (NRV - Tetris graphics demo) and music (Raster - RMT). Taking my own challenge to task, I added a few modifications of my own to the Post-Final CTetris4g release. So, please also take a look and let me know what you think. THANKS: All of the AtariAge members who gave me great program suggestions and support. This release may never have happened if it weren't for Fandal who expressed his continued interest in CTetris4. What's New in CTetris4f: > Main loop has been optimized for even smoother response. > Added joystick user configurable options (See CONTROLS below). If a joystick is used to select the game options, the program will automatically detect the joystick and prompt the user of additional joystick options. > Action! source code released. EMULATOR NOTES: (Recommended Atari800Win PLus 4.0 Settings) > Turn off Auto-Fire on joystick Fire Button. > Turn off "Allow using keyset keys also as regular keys" -> In the Advanced Joystick Options dialog box. Have Fun! Hayden CONTROLS : > Joystick "Fire" Button is now user configurable as 'Rotate' or 'Hard Drop' > Joystick "Down" is now user configurable as 'Hard Drop' or 'Soft Drop' Controls Summary: Move Left - Keyboard: 'Left' | Joystick: Left Move Right - Keyboard: 'Right' | Joystick: Right Rotate - Keyboard: 'Up' | Joystick: Up SoftDrop - Keyboard: 'Down' | Joystick: Down (Configurable as 'Hard Drop' or 'Soft Drop') HardDrop - Keyboard: 'Space' | Joystick: Fire Button (configurable as 'Rotate' or 'Hard Drop') | Joystick: (at the same time) Pause - Keyboard: 'P', 'Esc' (Toggles Pause mode) Next - Keyboard: 'N' (Toggles display of next block) Quit - Keyboard: 'Q' Drop Sound - Keyboard: 'D' (Toggles Object Drop Sound on/off) Sound Effects - Keyboard: 'E' (Toggles Sound Effects on/off. A 'chirp' sound indicates Sound Effects are 'on'). Background Music - Keyboard: 'M' (Toggles Background Music on/off.) Notes (for Controls): 1) The Default Sound settings are: Music ('on'), Sound Effects ('on'), and Drop Sound ('off'). 2) Setting Music 'off' will also turn Drop Sound & Sound Effects back to 'on'. You can still use the "D" and "E" keys to set your sound effects preferences. 3) The user input cursor now will wrap around from end to end (instead of remaining at the end positions). 4) The "Next" object window is defaulted to 'on'. Use the "N" key to toggle the "Next" object display window on/off. Have Fun! Hayden ------------------------------------------- * CTetris4e by Hayden Doan - July 17, 2009 * (Pre-final Version - Auto_Repeat) What's New in CTetris4e: > Added Auto-Repeat for Left+Right Joystick control > Fixed minor bugs. > For NTSC/PAL play speed differences, please choose the Starting Level that suits your preference. Have Fun! Hayden ------------------------------------------- * CTetris4d by Hayden Doan - July 15, 2009 * (Pre-final Version) What's New in CTetris4d: INTRODUCTION: In CTetris4d, I'm going back to the basic concept that CTetris4 was originally founded on - high game-playing quality. With that in mind, I brought back the new "classic" play screen and greatly improved the joystick interface. The level-based movement delay has been replaced by an ultra responsive & high precision single-shot joystick action. The keyboard controls have also benefited from the new control algorithms. I have a few more new features that I would like to incorporate in the next and final version of CTetris4. However, it will be a while before I can complete the next version due to limited time availability. Therefore, I want to release what I have so far so that everyone can enjoy this pre-final version. Notes (for CONTROLS): 1) Joystick controls now are single-shot action. 2) All user selections are now activated upon the release of actuation to improve accuracy. EMULATOR NOTES (Atari800Win PLus 4.0): [Reminder] I noticed that the included color palettes for the A8WP Emulator seem to be inaccurate. I posted this question on AtariAge and CharlieChaplin (Andreas Koch) replied with some new palette files. I tried the "OlivierN.ACT" (N=NTSC) palette file and the colors seem to be much more accurate now. I recommend that you also give this new palette a try. Thanks, Andreas. Have Fun! Hayden ------------------------------------------- * CTetris4c by Hayden Doan - July 4, 2009 * (Independence Day Edition) What's New in CTetris4c: INTRODUCTION: CTetris4c is dedicated to all the brave soldiers who paid the highest price to free and to protect our beloved country, the United States of America. Freedom is not free. God bless our troops! The US Flag main screen is a patriotic tribute to my homeland and country. I'm thankful to be an American where at least I know I'm free. God bless the USA. This release also commemorates the 25th Anniversary of Tetris. ACKNOWLEDGEMENTS: Thanks to everyone who tried out CTetris4a and left me helpful feedback on AtariAge. I have (hopefully) incorporated the most requested changes in this revision. Thanks to the folks at AtariAge for hosting this awesome website. Thanks to Kemal Ezcan for sharing his excellent "Super Synthesizer" program with the Atari community. It ROCKS! Thanks to Glen Gutierrez and Antic Magazine (February 1985) for publishing an outstanding tutorial on getting the most realistic instrument sounds I've ever heard on the Atari computer. MUSIC: The "Popcorn Song" by Gershon Kingsley was selected for the background music. It has always been one of my favorite instrumental tunes. The Atari computer version was originally written by the multi-talented programmer and musician Kemal Ezcan in Atari BASIC circa 1984 and was released as a part of the "Super Synthesizer" diskette. The original four-part harmony is kept unmodified here. I personally do not prefer the sustained bass pedal note. Lastly, the song reminds me of popping popcorn that sounds like little firecrackers going off - the perfect sound for the Fourth of July :) SOUND EFFECTS: In addition to getting bonus points for connecting four consecutive lines, the program will also play the first two measures of "U Can't Touch This" by MC Hammer as a congratulations to you! {Please note that Sound Effects must be 'on' to hear this tune play}. (See CONTROLS below for more details). CONTROLS : Rotate - Up Arrow, Joystick: Up or HardDrop - Spacebar, Joystick: (at the same time) Drop Sound - (Toggles Object Drop Sound on/off) Sound Effects - (Toggles Sound Effects on/off. A 'chirp' sound indicates Sound Effects are 'on'). Background Music - (Toggles Background Music on/off.) Notes (for CONTROLS): 1) The Default Sound settings are: Music ('on'), Sound Effects ('on'), and Drop Sound ('off'). 2) Setting Music 'off' will also turn Drop Sound & Sound Effects back to 'on'. You can still use the "D" and "E" keys to set your sound effects preferences. 3) The user input cursor now will wrap around from end to end (instead of remaining at the end positions). 4) The "Next" object window is now defaulted to 'off'. Use the "N" key to turn "Next" object display window on/off. Be sure to give this command a try. GAME PLAY: The random object generator has been modified (improved?) to avoid two consecutive duplicate objects from being generated. EMULATOR NOTES (Atari800Win PLus 4.0): I noticed that the included color palettes for the A8WP Emulator seem to be inaccurate. I posted this question on AtariAge and CharlieChaplin (Andreas Koch) replied with some new palette files. I tried the "OlivierN.ACT" (N=NTSC) palette file and the colors seem to be much more accurate now. I recommend that you also give this new palette a try. Thanks, Andreas. PROGRAMMING NOTES: Please note that I am not comparing programming skills here as we know that Kemal is a well regarded professional programmer. The comparisons are between the Atari BASIC and the Assembly languages and how the VBI Music Player benefited from having been written in Assembly. The VBI subroutines for this release were completely rewritten in Assembly (Mac65) to add the background Music Player. I made some improvements to Kemal's original Atari BASIC program algorithms due to the fact that I have more speed and flexibility using Assembly language. The three most important differences are: 1) Atari BASIC is much too slow to be used in a VBI subroutine 2) More precise playback timing - Atari BASIC's interpretive code execution mode cannot maintain very accurate timing. 3) More consistent notes decay as speed of playback increases - Due to the limited speed of BASIC program execution, Kemal had to skip the notes decay loops to increase the speed of playback. In the Assembly version, the notes decay loops are fully executed regardless of the playback speed. Therefore, the musical quality remains consistent at all playback speeds. The VBI codes were designed to be fully relocatable so that it can easily be integrated and compiled with Action!. I had concerns about adding the VBI Music Player that it may adversely affect the game play quality because of the additional computer resource utilization. With this thought in mind, I carefully optimized the VBI codes to be as efficient as possible. The result is a 'happy ending' that the game play quality remained the unaffected with the background music playing. The Plot, DrawTo, & Fill functions in this release are custom subroutines that are optimized for speed. The previous CTetris4a version used the standard Atari graphics routines which are much slower and would have taken many seconds to draw the US Flag. Press and (HOLD) down the "OPTION" console button before the transition from the Title Screen to the Main Screen to watch the US Flag being drawn in Real Time. In the normal setup mode, the program will blank out the screen momentarily by disabling the ANTIC chip to allow the 6502 microprocessor to run without interruptions which is even ~30% faster. The screen is made up of 40x192=7680 Bytes of RAM. Have Fun! Hayden