Jump to content

karri

+AtariAge Subscriber
  • Posts

    5,041
  • Joined

  • Last visited

  • Days Won

    1

Blog Entries posted by karri

  1. karri
    I assume that the Soundtool is the most developer-oriented piece of software on the MegaPak cart. But it can be entertaining for others too.
     
    The MegaPak orchestra consist of 5 instruments.
    2puck.zip
     
    The Lynx has 4 channels that it can play at the same time. For some tunes like the Mozart Sonata I have one channel for the right hand and one for the left. Both hands play the Piano-instrument, of course.
     
    Some other tunes have Drums, Saxophone, Trumpet and Bass.
     
    For the MegaPak I converted several Midi-tunes to a format called ABCmusic. The simplest tune Suzuki Guitar on the MegaPak cart looks like this in ABC-format:

    #define STR_BASS "I2" #define TEMPO "T20" char suzuki[] = { STR_BASS TEMPO "|2:CDEEDEFFEFGEFDGGCDEEDEFFEFGEFDCC" "cBAABAGGAGFFEDEEcBAABAGGAGFFEDCC" "ECDDFDEEGEFGABccECDDFDEEGEFGABcc" "CDEEDEFFEFGEFDGGCDEEDEFFEFGEFDCC:" };
     
    These tunes use the instruments the Soundtool controls.
     
    2puck.zip
     
    This means that you can listen to the music and change the Piano to sound like a xylophone or a flute using the Soundtool.
     
    There are two sections in the Soundtool. The first is the sound engine. You can press Opt2 to start a tune and flip through different waveforms by pressing joypad Left/Right. Then just use your ears to see which sound is best.
     
    2puck.zip
     
    The Pitch is the height of a tone.
     
    The Waveform is a sound generated by the Lynx. There are 6185 different waveforms available. The Lynx hardware cannot produce more waveforms than 6185.
     
    Integrate can be on or off. If it is off then the Lynx produces a square wave - only 1's and 0'1. But if integrate is on then it calculates a smooth waveform. If the bit to output is a 1 it adds Amplitude to the output. If it is 0 it subtracts Amplitude from the signal. So to make sense the Amplitude needs to be small. Otherwise the sound will clip and sound distorted.
     
    The text Symmetric waveform means that in this particular waveform there is an equal number of 1's and 0's. So the sound will not drift to the maximum and start popping.
     
    The funny looking numbers in green are what values you need to program into the Lynx registers to get this sound.
     
    FD20 40 - amplitude
    FD21 1F
    FD22 3F - DAC output (this is what really gets to the speaker. It changes all the time.)
    FD23 2C
    FD24 8D - pitch
    FD25 00
    FD26 6E - count register (it also changes by itself all the time)
    FD27 B2
     
    After this programming the Lynx will sound like this forever without any need for the CPU to do anything about this. So if you are making a new Pong game or Elite clone you can try out the perfect sound for the engines, lasers, paddles or whatever using Soundtool.
     
    Listening to a beep goes on your nerves in no time. So it is time to move on.
     
    The second section is the Envelope.
     

     
    The Attack speed tells you how many steps you increase the volume during every 13 ms. The Hold * 13 ms is the time you keep the volume steady before it dies out by Decay steps every 13 ms.
     
    Changing of the volume is actively done by the CPU.
     
    You can search for new and better sounds using the music on the cart and the Soundtool. If you find better instruments you can save the settings on the EEPROM and your new instruments get saved there even after you power off your Lynx.
  2. karri
    Although not really Mozart's first piano sonata, it is the earliest that survives. The opening Allegro is rather dispassionate exercise; although it's still a very good example of that gracefulness for its own sake which the period's produced in sometimes quite disgraceful overabundance. In contrast to this, the Andante is a sober, almost bittersweet moment of personal reflection.
     
    Imagine. Mozart was only 19 years old when he produced this masterpiece in 1775. I just realized that Mozart is exactly 200 years older than me. To honour this I have just included the 1st movement of Piano Sonata no 1 in the Lynx Multicart. So now I will lean back, pour myself a glass of fine wine and fully enjoy the opening Allegro that is unstinting in its enthusiasm throughout, and certainly already hints at a master's self-confidence.

  3. karri
    Hooray!
     
    Today, 15 minutes ago I created the first complete cart build for our nice testers. The feature freeze was a success and now we have eight completed, polished applications on the cart. The names of the applications is still a closely guarded secret known only by me, Carl, lots of developers, their girlfriends and anybody who cares to read through my blogs or AtariAge newsgroups
     
    For the next few days we collect bug lists and then we divide the fixing work to the developers.
     
    Hopefully we can have a fully working polished product by the 1st of June!
     
    And then it is time to enjoy the Summer.


  4. karri
    Here is a small picture of me at the beach of Abel Tasman in January.
     

     
    My plan is to make a public release of Lynx Solitare at the Lynx 20 years event.
     

     
    This solitare will have Klondike, Freecell and perhaps Spider as available card games. In addition to that I will sit down on my arranger and fill the cart with cool midi backgrounds you can buy with your credits in the game.
  5. karri
    So what is the status of MegaPak?
     
    Well... To put it out short. DONE!!!
     
    The final release candidate was number 16. My kids have been playing it at home and it seems to be stable, playable, fun, great, absolutely Wonderful and definitely worth to be found in your collection of great entertainment for the Lynx.
     
    So now we are done with the playtesting and fixing bugs.
     
    The next step is the user manual. Yes, unfortunately some programs require explanations to get the most out of it. Basically the important things to know are:
     
    Reset (Opt1 + Pause) takes you back to the title screen if you are in a game. Or back to the Main menu if you are on a Title screen.
     
    Flip (Opt2 + Pause) flips the screen upside down. Nice feature for gamers from Australia.
     
    Pause pauses the game.
     
    Opt2 toggles background music on/off/next tune.
     
    -----------------------------
    In the main menu:
     
    (Opt1 + Opt2) opens an EEPROM erase screen from where you can reset the EEPROM on board to empty. This will erase all high scores, lose your progress in all games and set all instruments back to default settings. So don't do this if you don't want to start all over from square zero.
     
    In the Music menu:
    B toggles a tune on the playlist and also stops the music from playing
    A plays a single tune
     
    In the Toolbox menu:
    There are radiobuttons for setting the uploader speed to none, 9600, 62500 bauds. You can connect a ComLynx cable to another Lynx or another computer for uploading games from a computer to the Lynx RAM. You need a special cable that converts the data to TTL-levels.
     
    -----------------------------
    There are also TONS of info like this for individual games and utilities. But they are still to be written. Before the manual is there Carl cannot sell the cart. I also hope to set up a pdf version of the manual somewhere so that you can get a good idea of all the features on the cart before you decide to buy it.
     
    --
    Cheers,
     
    Karri
  6. karri
    The MegaPak cart is now pretty much filled up with bytes. As a matter of fact a bit too full from Xmas stuff so I have to put it on diet. Around 331 bytes needs to come off to be of the ideal weight (256k).
     
    I try to create release candidate 6 on the 31st of December. If this succeeds and the cart is error-free you will see some fireworks around midnight on the 31st.
     


  7. karri
    The title says it all. The X-mas is approaching at an alarming rate but the MegaPak has halted to complete standstill.
    The last cart build is stable and nice in my opinion. Carl wants to have an intensive bug hunt in January before the cart goes into production.
     
    --
    Merry X-mas, Seasons Greetings, Happy New Year and so on,
     
    Karri
  8. karri
    Time flows at an alarming rate. Is it possible to release multicart 2006 in the year 2006?
     
    The fine tuning goes on all the time but as this is a hobby project I get a few fixes per week from some developers. But this is good news for the MegaPak cart as now we have ChopperX high scores saved in the eeprom. And the cart is really quite playable.
     
    I had MegaPak with me on the plane on my trip to France last weekend. As the Lynx is a bit bulky (it does not fit into my shirt pocket) I played it on my PSP instead. I had to update my PSP to 2.71 to run Lego Star Wars II. Fortunately Handy runs nicely with the 2.71 firmware on the 0.99 eloader using the newly found tiff-exploit. Handy seems to run better on the 2.71 than it did on the 2.00 firmware.
     
    There is now a new set of backgrounds in the works and some polishing of the sounds.
     
    vidco.zip
     
    the themes are no longer by primary colors. They are now easier to read on the Lynx screen.
     
    I hope I have some extra time in the evening for producing the release candidate number 4 for testing.
     
    --
    Karri
  9. karri
    This bug has bugged me for over a year now. And now I found it
     
    A few years ago I started to play around with the Lynx sound engine. It sucks.
     
    Anyway, I decided to find out if there is any decent sound available in that hardware and wrote a piece of code that produced every sound the Lynx is capable of producing. After that I started to remove duplicates and after around 20 hours of math on a modern PC it finally spit out a set of unique waveforms.
     
    I found out that the Lynx can only produce 6185 different waveforms. But these waveforms can be produced by lots of different register settings.
     
    Still too many to listen to manually. So I sorted these waveforms according to the number of bits in them. The shortest waveform has only 2 bits in it (a one and a zero). The longest waveform has 4095 bits in it.
     
    For some reason it did not sound right on a real Lynx and I thought, well, perhaps there is a bug in the Lynx hardware. But now I found the bug - it was in my music driver. I fixed it in MegaPak and suddenly everything makes sense!
     
    The latest Soundtool works like a dream. Now I have full control over the sound hardware and I can now change the Mozart Sonata to sound like it was played on a piano or a xylophone or anything else the Lynx can produce.
     
    And the nice thing is that all my research in the sound area is now included in Soundtool so that you can easily find instrument sounds that go together to form some great music on the Lynx.
     
    So what is so cool about this? Well, this technique uses almost no CPU power for playing the sound! So it works perfectly with games. And the music is packed to a very small space compared to other techniques. It is easy to include 2 minutes of polyphonic music in around 4kB of memory.
     
    You will see how it works when MegaPak is out.
     
    --
    Karri
    - This is a small step for a man, but a huge leap for the Atari Lynx background music
  10. karri
    Wow. After lots of work the final build of the MegaPak is here.

    My impression is that the LOL operating system makes the Atari Lynx feel very much like a modern console. It is fun just to move around the menus, listen to the tunes and fine-tune the preferences.
    2600palgames_retrofan.zip
     
    So the next question is what games are on the cart? Well, I let the screenshots speak for the content - enjoy
     
     
    2600palgames_retrofan.zip 8kha2_20_21.zip
     
    8kha2_20_21.zip wolfenstein_label.zip
     
    wolfenstein_2600.zip wolf_doc.zip
     
    invader_x_label_2.zip invader_x_final.zip
     
    alien_menace.zip alien_menace_label.zip
     
    pesco_pacman_v1.zip pesco_uncommented.zip
     
    pesco_pacman_v2.zip
     
    Actually there is still Pontiac, which is pretty difficult to get a decent screen shot from as it uses some special hardware tricks on the Lynx. And there is also - oh no, I have to go, later...
     
    --
    Karri
  11. karri
    Riding on the scandies in Norway is like being part of the Fellowship of the Ring.
     
    No roads or houses to be seen anywhere, just vaste green hills and crystal clear cold rivers to wade in.
     
     
    The summer has been exceptionally hot so we even arranged some foam-dancing to cool down in the evening.

    You should try it - it is great clean fun
    Hmm.. Natalias and Leru's make-up did not seem to survive it.
     
    The cart is getting better all the time and I hope we can get the final build together soon.
     
    But the title says it all. It is time to get back to work and stop daydreaming.
    --
    Cheers,
     
    Karri
  12. karri
    There is an old saying that when you code a game you get 80% done in 20% of the time. The last 20% of the game then takes up 80% of your time.
     
    This seems to be the case also with MegaPak. We are now fine-tuning the playability of the cart, adding new graphics and fixing tons of small nasty details that our beloved testers don't like.

     
    My other project is also going well. It is a love story on stage
    The premiere went well and despite my terrible singing we got nice reviews.

    I am the guy in the background with a grim look on his face.
  13. karri
    The project is getting on quite well. Despite the crew of practically perfect programmers in this project we have found some bugs. They must have been introduced late at night when I spilled some coke on the keyboard and tried to wipe it away with my T-shirt. Anyway here is a simulated screenshot of what the LCD looks like on a real Lynx and also on the Handy emulator.
     
    wantlist.zip
     
    Enjoy the screenshot. The release date is real close now...
  14. karri
    Today I started to fix all the broken instrument files and added a feature to run background music with lower volume levels in the background.
     

     
    To control the music you use Opt 2 on any screen. It will cycle through the playlist like:
     
    play_next_tune -> stop music -> play_next_tune -> stop music ...
     
    In the software where you want to be able to use background music you just need to call a routine called play_next_tune() every time you press Opt 2.
     
    PS. In case you wonder how much I could code in Vienna the answer is nothing. But instead I had a good time
  15. karri
    The title says it all. Renya Iizuka really cheered up my day by sending me TWO entries for the multicart. I started by browsing through his code and it is a joy to read it. I wish I had innovative coders like this to work with during my real daytime job also. I work for a Japanese company with headquarters in Osaka nowadays so if I get a chance to go to Japan during the summer I just have to meet him.
     
    So now we have entries from all over the World - Japan, US, France, Finland, Germany...
     
    I still don't know exactly which entries will be accepted to the final cart build. But I hope to have at least one entry from every continent to show the international flavour of the entries.
     
    I am still missing the entries from Tony and Cooper. Plus Chris, Frédéric & Sebastien have a bit large binaries that I would like to recompile to make them fit better.
     
    As screenshots go I have a slight problem. Renya Iizuka decided to show his talents and Handy is just not capable of showing the results. So you need to run this on a real Lynx. But I have a screenshot of his other entry. It really does not give credit to the smooth animation of the cards or the accompanying music and sound effects of the game. But anyway here it is:

     
    Thanks guys. Feature freeze is completed. Now I start the cart build and try to finalize the integration of the sources I already have - Parafly, ChopperX, my own stuff and Exceeds both entries. Once I know how many bytes each entry needs I may create a poll for voting which entries to put on the cart.
     
    The standard of these entries exceed my expectations. There will only be high quality, polished entries on the cart. So start saving for Multicart 2006.

  16. karri
    Now it is less than two weeks to Vappu or the 1st of May - the Biggest Celebration of the Year - at least where I live. It is the time to dress up in graduation hats, sing about love and the spring, drink champagne to the tunes of a marching band and stroll around the streets with balloons.

    It is also the recommended deadline for preliminary submissions to the Multicart 2006. The real drop-dead line is on the 1st of June. Unfortunately my theater season will also start on the 1st of June which actually means that I will be on stage almost every evening for a month instead of coding the details.

    So HURRY UP with the submissions please. I would prefer to put the cart together in May. Or at least most of it.
     
    --
    Captain Hook
  17. karri
    I have been awfully lazy lately. But fortunately the power of teamwork keep things going. Jum has again updated his wonderful ChopperX. Now there is new sounds, music and animation. The first level used to be full of balloons. Now there seems to be pine trees, hang-gliders and zeppelins.

    Now I have a dilemma. Should I start coding again or just compile Jums game and play. That decision was not hard to make
  18. karri
    The Atari Lynx software scene is very much alive. It is like a living language evolving from day to day. The limits of our beloved console has not been found yet. To show the life of the beast I decided to give it a visual heart beat. It was easy to do with just tickling the scaling engine a bit.

    Its alive...
     
    I also changed the playlist selection user interface a bit. With the A button you can start a tune. With the B button you stop the tune AND also toggle the selection in the playlist.
     
    The tune started with Opt 2 will now continue playing while you load in a game and also just continue when you exit a game. So it is handled at a separate level from the actual game engine. Super cool...
  19. karri
    The Lynx Multicart needs radio buttons. I don't mean web radio or FM reception but those round things that cause exclusive choices.

    So now you have a tool to set the Multicart ComLynx in a mode to listen to incoming data streams. Usually you only have a choice to listen at 9600 bauds. But as I recently bought an USB-ComLynx dongle that can work at higher speeds I want to have the option to do this. This interface can be used to download data for running it in RAM or perhaps even to drop in small data snippets for the EEPROM
  20. karri
    Today I did small improvements in the Images display. Now I have more backgrounds to choose from and I also implemented a menu-toggle button B so you can get rid of the menu while you browse through the bitmaps on the cart. Pressing A automatically advance you to the next image.
     
    While I was playing around with the menus I also created a both-way scrolling list system for all submenus and used the button B for turning the music off in the Music menu. You turn it on my pressing A in the music menu
     
    It is also possible to press Opt 2 but it behaves differently. The Opt 2 starts/advances songs in the playlist while in the music menu you can listen to just one tune.
  21. karri
    Today I integrated the French Multicart entry. I cannot make up my mind if it is easier or more difficult to play Tetris with a ball smashing things to pieces all the time.

    The name and graphics is still going to change. Fadest has coded a very playable thing but I have not yet got the touch for using the ball to my benefit. Right now the ball just breaks lines that I have managed to put together.
     
    The movements of the ball is very predictable and it moves slowly. You can use your dropping pieces as a paddle and direct the ball where you want. Once the piece falls into place it becomes a breakable wall.
     
    The graphics is very much alive all the time and there is some kind of magical mood in the game. I cannot really say where it comes from. But this entry is definitely going to be one of the pearls on the cart.
  22. karri
    Chris created a nice entry in a competition loooong ago. It was a simple simulation of a toy called Etch-A-Sketch that most of us probably had as a kid.

    Chris has written it using lyxass. I hope to get the sources when he has finished fine-tuning the application. To integrate it fully with the LOL system I just need to add hooks for the Opt 2 key to allow background music and also to separate the background sprite into a separate RODATA-segment. Then I can use the background picture as a background for the main menu also. Now I just hope that 42Bastians macro-package for the new compiler works with Chris code out of the box... (fingers crossed)...
    mspac.zip
    Unfortunately there is no way to save the beautiful pictures you draw. In this way it fully emulates the real thing
     
    If any of you developers get into space problems drop me a line. I can temporarily disable these binary-blob things and my own creations to make more space for you.
     
    The cart runs at a 75Hz framerate for all applications. The reason for speeding things up has to do with instrument sounds and better response for the player. The drawback is that you have less time for doing your stuff as Mikey wants the bus all the time.
     
    I did some calculations to see how things slow down. And if we compare 50 Hz, 60 Hz and 75 Hz the framerates goes like this when things start going slower:
     

    Frames/second 75Hz 75 38 25 19 15 13 11 9 8 7 6 6 5 5 60Hz 60 30 20 15 12 10 9 8 6 6 5 5 50Hz 50 25 17 13 10 8 7 6 5 5
     
    This means that when the calculation of one frame exceeds the time we have for displaying one frame then we have more points to hook on to the display if the rate is higher. You can also design the application from the start that you want to refresh the content just 13 times/second. That gives you 5 frames time to calculate the stuff and display it on the 6th frame. Then the application appears that it never slows down.
  23. karri
    Today I finally managed to include a binary blob into the cart design.
     
    Chris coded Picross in lyxass and he sent me the binary only. So here it is - tadaa - integrated into the mcart structure as a binary blob.

     
    The funny thing is that when I first received it I wondered what it is. Some kind of icon painting program? But then Carl started to talk about that he has lived under a rock and had no clue about these new puzzles like Sudoku and Picross.
     
    It took me about 10 minutes to solve Picross. It was fun!
×
×
  • Create New...