| My small subsite of 99er.net presents small demos programmed in assembler for use with the TI-99/4A Home Computer. You can download a demo as a cartridge (typically one binary file) and almost instantaneously use it with a free emulator like MESS, Classic99 or Win994a. All carts are available in this one zip file: carts.zip. You are welcome to comments etc. My mail address is sometimes99er@hotmail.com. Items on this non-commercial subsite are presented for reference, nostalgia and/or educational purposes only. Some graphic, code, music, sound, speech, text, font, design, brand, logo, name, idea etc. may not be of my own original creation. If you are an author or owner of an item reproduced on this subsite, and wish to be creditted or have it removed, please contact me. Main rendezvous for TI-99/4A users: http://tech.groups.yahoo.com/group/ti99-4a
|
| Titles | Downloads | Closeup snapshots | Notes | Remarks |
| Windy city 2008.05.03 - 2008.05.05 | windyc.bin |
| cart | This is a tribute to the ChicagoTIUsersGroup’s-show (UStream.tv), which I hope to catch later today. The demo draws a sign with a fat pen. Next this drawing is shown with only the controlpoints plotted. And finally the drawing is shown with the dots connected. After this the demo loops. Hitting QUIT at anytime resets the demo. Technically it’s bitmap mode. There’s the plot routine from my Shapes demo, and then there’s a new line drawing routine. I plan for optimizing both routines, but for this demo with built-in delays (waiting for a frame after each dot/line) it works fine. Just added a bit of color. |
| TrueType 2008.04.27 | ti994a.ttf |
| font | This TrueType font shows off the characters available in TI Basic. The characters are also known as "small capital" and "lower case" character sets, though "lower case" is actually just even smaller capitals. The font can be used in wordprocessors, 3D packages and much more ... |
| Oh yeah 2008.04.15 - 2008.04.23 | ohyc.bin |
| cart | This one will be based on games like Canyon Bomber, Air Attack, Blitz, City Bomber etc. Even though we work in bitmap mode, we have to support the logo with a few double sized sprites. Take a closer look here. Actually we need 5 sprites for 5 of the 6 letters. Originally I had the letters aligned vertically, but then 5 sprites would have patterns stacked horizontal. The graphic chip only supports 4 sprites horizontal, hence I opted for some vertical adjustment of the letters. The letters now appear to jump up and down a bit, but then give room for the display of the 5th sprite. A well known spaceship has been added. The spaceship now moves across the screen and slides in and out of the border using the early clock attributes. The position and early clock for the 2 sprites are updated just after the start of vertical blank. MESS handles this fine. Classic99 occasionally displays the exhaust in front of the spaceship. Win994a apparently does not support early clock. Oh, the E/A-manual (page 339 paragraph 2) is perhaps not too precise on this early clock matter: The last bit of the four most-significant bits in the fourth byte control the early clock of the sprite. A bit tricky, since it’s important to know if you have to look at the bits from the left or the right. Bottomline, Win994a uses another bit. If we look at the bits from the left, MESS and Classic99 uses the 1st bit as early clock, and Win994a uses the 4th. Apparently it’s fine with all the emulators if we use both bits at the same time. Dripstones added.
|
| Sudoku 2 2007.12.17 - 2008.04.20 | sud2c.bin |
| cart | The idea was to produce a real life cartridge with manual and all. Here’s a link to the blog. |
| Manic Miner 2008.03.12 | manic.bin |
| cart | Loading and title screen of the old blockbuster Manic Miner originally for the ZX Spectrum. Here’s a video at YouTube about the computer, the game and the author. |
| Daffy Duck 2008.02.26 | daffc.bin |
| cart | Just a bit of diversion ... |
| Grapefruit 2006.12.02 - 2008.02.04 | grapefruit.zip |
| utility | This utility for Windows lets you convert graphics to text (programming language data statements) to be included in your programs (basic, extended basic or assembler). Supports double sized sprites. Includes code to demo character or sprite design. Includes examples to work with. Has a built-in character editor, but still the idea is to work with your graphics in your favourite graphic package (eg. Photoshop). Turn on an 8x8 grid in your graphic software to assist you. This utility needs the .NET framework available for free at Microsoft. |
| Chestnut 2008.02.03 | chestnut.zip |
| utility | This utility for Windows lets you rip and hack the graphics in the TI-99/4A. The utility has 4 menu items. "Load GROM" rips the graphics from the file (often seen as 994agrom.bin). "Save image as" saves the graphics for you to change with your favourite graphic package (eg. Photoshop). "Load image" loads your changed graphics or loads one of the included graphic files, that I have prepared for you. "Update GROM" changes the graphics in the TI-99/4A (use the 994agrom.bin or a copy). This utility needs the .NET framework available for free at Microsoft. |
| Streaky Bacon 2008.01.29 | strec.bin |
| cart | Follow the on screen instructions ... |
| R5D4 blows a fuse 2008.01.08 | R5D4c.bin
R5D4g.bin |
| cart | This demo has two purposes. One is to use GROM. The other is to display bitmap pictures with high detail. The cart detects if GROM is missing. Two pictures are shown. Both pictures are original Star Wars photo releases. |
| Trichromatic 2008.01.02 | tric.bin |
| cart | This one is trying to increase then number of colors from 15 to 120 by swicthing colors rapidly. The effect is not overwhelming on emulators, but might turn out nice on the real hardware with an old tube television. Win994a comes out on top, Classic99 follows and MESS is the one having most problems with the rapid changes to the SIT/colors - unless you go to the advanced properties and select sync to monitor refresh, then you get a steady screen. |
| Secret Scroll 2007.12.28 | secrc.bin |
| cart | This one scrolls the entire screen one pixel once every frame. Technically the demo scrolls the character set one pixel every frame (reading from ROM everytime). Also it uses double buffering: The screen image table (SIT) is switched between >1800 and >1C00 every 8th frame. The "backbuffer" is prepared with 1/8th of the screen (768 characters / 8 = 96 characters) every frame. I have MESS and Win994a running the demo extremely smooth. Classic99 however is having some problems. Use advanced properties in MESS to sync with monitor to get super smooth scroll. |
| Workaroundbench 2007.12.15 | workc.bin |
| cart | Actually just a bit of exercise in sprite movement ... |
| Pictures 2007.12.13 | pic1c.bin pic2c.bin |
| cart | Again I used C# to modify, convert and compress (RLE) to make a picture fit within an 8k cartridge. I will have to get better compression if I want pictures with greater detail to fit. There are two different demos. |
| Sonic Interlude 2007.10.28 | sonic.bin |
| cart | Yet another quickie just because I think it looks nice. Nothing much happens here, except for a bit of scrolling. Use advanced properties in MESS to sync with monitor to get super smooth scroll. |
| Tic Tac 2007.10.03 | ticc.bin |
| cart | Press N for new game. Merely a test for a user interface. |
| Marbles 2007.09.27 | marbc.bin |
| cart | Some beautiful marbles with outline, spotlight and reflection. Press and hold joystick to go a bit faster. |
| Snake Plissken 2007.09.07 | snakc.bin |
| cart | Just paint all you can with the joystick ! |
| Level code 2007.06.09 | codec.bin |
| cart | Yet another routine for my library. This time I want to let the user enter a code. This could be a code to let the user start at a certain level in a game cartridge without having to deal with any tape or disk operations. The input field(s) could of course have other purposes. You may enter any digit, space and move the cursor forth and back. And as it says on the screen, hitting Enter will proceed – in this demo, it will just terminate. |
| Binary 2007.06.06 | binc.bin |
| cart | Yeah, the end of a trilogy ! This time I want to display a 16 bit register as binary (base 2). The individual bits are presented. I’m using the routines for score, hexadecimal and then the new binary all in one. I’ve added a header and therefore there’s actually only 15 random values per screen. But then each random value is shown both as a score (using the odd system of decimal in steps of 5), hexadecimal and binary. Again, if you hold down the spacebar, you’ll get a new screen every frame. |
| Hexadecimal 2007.06.05 | hexc.bin |
| cart | Here’s another quickie for my library. This routine will probably only be used for debugging purposes. Take a register and show it on the screen in hexadecimal (base 16). If you do not know hexadecimal, take a tour on Google. You may recognise hexadecimals from working with graphics in TI Basic. The benefits from using hexadecimal representation are:
|
| Know the score 2007.06.04 | scorc.bin |
| cart | Okay, so I’m building some sort of a library. This time I want a routine to take a value and show it on the screen. The value resides in a register and has 16 bits. This gives a range from 0 to 65,535. To make the range appear wider, I’ve decided to have the last digit take only the value of 0 and 5. This approach gives a range from 0 to 327,675 (65,535*5) in steps of 5, which to me looks nicer as a score in a game. The demo produces 64 random 16 bit values and displays them. Then there is a small pause, before the process is repeated. The trick in using this routine, is to "know the score" ... If I want to add 75 points to the score, I should actually only add 15 (75/5) to get the desired effect. If I would want to add an extra life, when the score gets to (or above) 20,000, I will have to compare the register (the score) with 4,000 (20,000/5). One byte changed, and it will show values with leading zeroes, eg. 001234 instead of just 1234. |
| The Castle 2007.05.31 | castc.bin |
| cart | A few screenshots reproduced in an 8k cartridge. To my knowledge this one appeared on the Sega Game 1000, which used the same graphic chip. |
| Cockroach 2007.05.05 - 2007.05.14 | cockrc.bin |
| cart | Added a few soundeffects. The three emulators mentioned at the top sound rather different. Should however be valid soundlists. |
| Windows 2007.04.12 | winc.bin |
| cart | This one draws windows of different sizes to the screen. Press "C" to clear the screen. |
| More fonts 2007.03.07 | morefc.bin |
| cart | Daniel Bienvenu has some 22 fonts on his ColecoVision website. There’s quite a few with lower case and "descenders". I’ve used a few of those in this demo. |
| Poisonous Prison 2006.12.28 - 2007.02.14 | pri01c.bin pri02c.bin pri03c.bin pri04c.bin |
| cart speech | 0.1 Preliminary title screen with speech. 0.2 New title screen, color cycling and playfield. 0.3 Yet another new title, and a "Star Wars" sweep. 0.4 And another title. |
| Shapes 2006.12.07 | shapc.bin |
| cart | This time I wanted to plot pixels in full blown bitmap. I tested the bitmap layout. Constructed a plot routine. I know this routine is not optimized, but I made it quickly from scratch, and understand what’s happening. I know I should swap it with the one in the E/A-manual. My first intentions was plotting and clearing within a frame or so. Preferably some spinning sine waves. I was then looking for algorithms on the net for this. I then fell over this about producing circles. I tried to implement it, but it would only produce diamonds. I loosely scanned my code for errors. Thought about replacing the logic with some "homebrew" with acceleration on pixel speed like what I used in the "Heartbreak today" demo. Well, I continued my search on the net, and found this one. Now, I was getting squares and diamonds. Then I found this one. Now, I was getting curved edges. I fiddled around with some of the values, and ended up with this. There are some perfect circles there. |
| Lightbulbs 2006.11.01 | lightc.bin |
| cart 32kB | Wanted somekinda LED display. Implemented some commands with parameters. The commands are restart, wait, on, off, clear, frame, scroll, row and column. Then put up a small stream of commands. Well, this last part lacks in the department of design, and could have been much longer, but I wanted to move on to some other projects. |
| Title with fuel 2006.10.19 | titlc.bin tifuc.bin |
| cart | A preliminary title screen for inspiration only. Then updated graphics for fuel and combined the two. Graphics at center removed. |
| Fuel of Parsec 2006.10.16 | fuelc.bin |
| cart | Proposals for new fuel graphics in a tribute to Parsec. |
| Covergirl 2006.10.11 | Removed
| cart | Reengineered a title screen for the TI. | |
| Intruder 2006.09.24 | intruc.bin |
| cart | Splash the title all over the place. I quickly and randomly place a 3 by 11 character title on the screen. 10 titles are put to the screen, and then the image is enabled. Then there is a pause for the user, and then the image is disabled. The screen is then cleared and the process starts over. Titles are only placed on an empty area of the screen. From time to time you might see a longer pause - it’s the random routine trying to find an empty area. |
| Television 2006.09.08 | telec.bin |
| cart | Adjust your television. |
| Heartbreak today 2006.08.15 | heartc.bin |
| cart | Pixels jumping out of the screen. |
| Maze 2006.06.05 | mazec.bin |
| cart | Almost some amazing mazes |
| Asteroids 2006.05.06 - 2006.05.12 | ast1c.bin
ast2c.bin |
| cart | Some very initial graphics for another Atari VCS 2600 classic. Added some movement and spinning (use arrow keys). |
| Adventure 2006.04.26 | advc.bin |
| cart | An Atari VCS 2600 classic. |
| Waters edge 2006.03.26 | waterc.bin |
| cart | The sunshine and the ocean. |
| SqRxZ 2006.03.17 | sqrxzc.bin |
| cart | Tried to put a GameBoy multicolored logo up in a masked bitmap. |
| Sudoku 2006.03.05 | sudoc.bin |
| cart | This one uses the timer in the TMS9901. There are already different functionalities available here, and lastly I was caught up in pulling out soundlists from a few other cartridges. |
| Own up 2005.12.22 | ownc.bin |
| cart | Merry Christmas and happy new year. |
| Randomizer 2005.12.20 | randc.bin |
| cart | Just putting my random routine to a test. |
| Fingertips 2005.12.19 | fingc.bin |
| cart | This is upon request. A demo that reads the joysticks and keyboard. |
| Halffull 2005.11.03 | halfc.bin |
| cart | Snow is falling. Partly logo of the game Halflife from Sierra and Valve. |
| Ballroom Blitz 2005.09.28 | ballc.bin |
| cart | Reflection of scroll. |
| Level headed 2005.08.08 | levelc.bin |
| cart | Flashy. |
| Sixties man 2005.06.15 - 2005.08.12 | six01c.bin six02c.bin six03c.bin six04c.bin six05c.bin |
| cart | First shot at a racing game. |
| Fontsets 2005.05.23 | fontsc.bin |
| cart | A slideshow of 21 marvellous fontsets. There are a few original designs and the rest are named by reference. |
| Lego 2005.04.30 | legoc.bin |
| cart | Watch those beautiful bricks falling from out of nowhere. |
| Hellraiser 2005.04.16 | hellrc.bin |
| cart 32kB | Wanted to scroll some text one pixel per frame update. And then made a title screen for a snake game. Added a few graphics of snake, flowers and stones. |
| Poppa Joe 2005.03.24 | poppac.bin |
| cart | 4 pictures (smurf) in 6 frames of animation (1,2,1,3,4,3). Added background. |
| Space invaders 2005.03.19 | spa01c.bin |
| cart | Patterns 8x10 from Atari 2600. Added some explosions. |
| California nights 2005.02.27 | califc.bin |
| cart | Just another quickie. |
| Turn it down 2005.02.08 | turnc.bin |
| cart 32kB | Found myself playing more than testing, so I think this will turn out nice someday. Characterset on splash from Atari 800. |
| No signal 2004.12.29 | nosignc.bin |
| cart | Stupid idea, but quickly implemented. Then added sound. |
| Spin 2004.12.17 | spinc.bin |
| cart | Again I used C# for converting 64x32-pixels image-files. 6 frames was used and are all visable at any given time. |
| Face 2004.12.04 | facec.bin |
| cart | Used C# for converting a 256x192-pixel image-file (bmp) into 768 characters. If a byte is repeated to often, it’s compressed somewhat. The cartridge then decompresses before displaying in bitmap-mode. The image (monochrome) should take 6k (768 characters each with 8 bytes), but now takes less than 2k. The standard cartridge (8k) should then allow for 3 different fullscreen images. |
| Bitmap 2004.11.26 | bitmapc.bin |
| cart | Tried the bitmap-mode before and failed. This time I spotted an error in the documentation. So I played around with the registers. Hold fire (or ctrl) to freeze the action. |
| Galaga 2004.11.25 | galagac.bin |
| cart | This looked impressive on the Coleco, so I had to try it out. |
| Lunar Lander 2004.11.15 | lunarc.bin |
| cart | Again the C# mentioned below for the logo. And then just had a little fun. |
| Action 2004.10.30 | actionc.bin |
| cart | Then I used C# for converting a 64x32-pixel image-file (bmp) into 8 double-sized sprites. The landscape was done by hand. |
| Coleco 2004.09.22 | colecoc.bin |
| cart | This time I used C# to extract and convert the graphical bits. |
| Commodore 64 2004.08.27 | c64sc.bin |
| cart | Would like to try the text-mode. So I opted for a small emulation of the Commodore 64. You can move the cursor around and use enter - it will actually scroll the screen, when the cursor hits the bottom. The characterset had to be squeezed pixelwise from 8x8 to 6x8 - all of this done by hand. |
| Starfield 2004.07.23 - 2004.08.23 | sf01c.bin sf02c.bin sf03c.bin sf04c.bin sf05c.bin sf06c.bin sf07c.bin sf08c.bin |
| cart | Got around to play with sound. There’s an independent sound of the laser, and in the background there’s a little tune. The original characterset is just shifted one pixel and masked making it appear fat. The O for both the letter and the digit has been replaced. Use the joystick (or ctrl and arrowkeys) to launch the laser and move the ship. Some handling of the score has been implemented. Plans for a nice background of flashing and moving stars. Test for one star has been done in Extended Basic. |
| Coke 2004.07.17 | cokec.bin |
| cart | Wanted some more impressive graphics. Again the conversion from picture to code was made by hand. No action. |
| The Project 2004.07.12 | projc.bin |
| cart | My first attempt. I wanted impressive graphics. So the logo was designed and converted by hand. The background is made up of only one single character and it scrolls. Never got around to make the background consist of more characters. Also the scroll should have gone in all directions. Perhaps someday. |
| For various reasons, my main TI-99/4A (PC) development environment consists of this cycle:
1) Text editor I switch between these using Alt+Tabulator. The main purpose here is Assembler to Cartridge in split seconds. The editor could very well have been Notepad, but it’s UltraEdit. I make changes and press CTRL+S to save. The compiler is TIAsm. I’ve put this in a command file: TIAsm source.txt ax testc.bin. I then execute the command (compile) and watch for errors (can be done from and within UltraEdit). You will find TIAsm here: ftp://ftp.whtech.com/cross assemblers
The emulator is MESS. The cursor is already on my standard output cartridge, testc.bin, so I just press enter, hit 2 twice, and my work is up there. If I make changes to the source and compile, MESS will take the latest version of testc.bin.
|
| I bought my TI-99/4A at Poulsens Boghandel, City 2, Denmark. It must have been 1982. Danish crowns 2495 ~ US dollars 440 ~ Euro 330. Prior I had purchased TI-59 and PC100C (printer) also the Atari VCS 2600 and about 30 cartridges incl. the awful "Basic Programming". And then also a Sinclair ZX81 (Timex) with a 16K RAM Expansion. This is when I learned machinecode (Z80A). Apart from using cassettes (tapes), I got a converter for Atari-type joysticks (US dollars 17) and TI Invaders. Later I had Speech Synthesizer, Parsec, Munch Man and Extended Basic. Then I got Mini Memory and went for a used 32K RAM Expansion (US dollars 265). And finally some cartridges like ZeroZap, Burgertime and Donkey Kong. I did some Mini Memory code for the store and got free cartridges. Bought and skipped a VIC-20. Then I had a C64. When I got the Amiga 2000 (1986), I sold the C64, and gave away the TI to some neighbours (teachers) with 3 kids and no computer. Rediscovered the TI-99 and used the V9T9 emulator for a few months. Later, in 2004, I found MESS and a few months later, I launched my subsite of 99er.net ...
|
| Items on this non-commercial subsite are presented for reference, nostalgia and/or educational purposes only. Some graphic, code, music, sound, speech, text, font, design, brand, logo, name, idea etc. may not be of my own original creation. If you are an author or owner of an item reproduced on this subsite, and wish to be creditted or have it removed, please contact me. |