Jump to content

Search the Community

Showing results for tags 'programming'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Atari Systems
    • Atari General
    • Atari 2600
    • Atari 5200
    • Atari 7800
    • Atari Lynx
    • Atari Jaguar
    • Atari VCS
    • Dedicated Systems
    • Atari 8-Bit Computers
    • Atari ST/TT/Falcon Computers
  • Classic Consoles
  • Classic Computing
  • Modern Consoles
  • Gaming General
  • Marketplace
  • Community
  • Community
  • Game Programming
  • Site
  • PC Gaming
  • The Club of Clubs's Discussion
  • I Hate Sauron's Topics
  • 1088 XEL/XLD Owners and Builders's Topics
  • Atari BBS Gurus's Community Chat
  • Atari BBS Gurus's BBS Callers
  • Atari BBS Gurus's BBS SysOps
  • Atari BBS Gurus's Resources
  • Atari Lynx Programmer Club's CC65
  • Atari Lynx Programmer Club's ASM
  • Atari Lynx Programmer Club's Lynx Programming
  • Atari Lynx Programmer Club's Music/Sound
  • Atari Lynx Programmer Club's Graphics
  • The Official AtariAge Shitpost Club's Shitty meme repository
  • The Official AtariAge Shitpost Club's Read this before you enter too deep
  • Arcade Gaming's Discussion
  • Tesla's Vehicles
  • Tesla's Solar
  • Tesla's PowerWall
  • Tesla's General
  • Harmony/Melody's CDFJ
  • Harmony/Melody's DPC+
  • Harmony/Melody's BUS
  • Harmony/Melody's General
  • ZeroPage Homebrew's Discussion
  • Furry Club's Chat/RP
  • PSPMinis.com's General PSP Minis Discussion and Questions
  • PSPMinis.com's Reviews
  • Atari Lynx 30th Birthday's 30th Birthday Programming Competition Games
  • 3D Printing Club's Chat
  • Drivers' Club's Members' Vehicles
  • Drivers' Club's Drives & Events
  • Drivers' Club's Wrenching
  • Drivers' Club's Found in the Wild
  • Drivers' Club's General Discussion
  • Dirtarians's General Discussion
  • Dirtarians's Members' Rigs
  • Dirtarians's Trail Runs & Reports
  • Dirtarians's Wrenching
  • The Green Herb's Discussions
  • Robin Gravel's new blog's My blog
  • Robin Gravel's new blog's Games released
  • Atari Video Club's Harmony Games
  • Atari Video Club's The Atari Gamer
  • Atari Video Club's Video Game Summit
  • Atari Video Club's Discsuuions
  • Star Wars - The Original Trilogy's Star Wars Talk
  • PlusCart User's Bug reports
  • PlusCart User's Discussion
  • DMGD Club's Incoming!
  • DASM's General
  • AtariVox's Topics
  • Gran Turismo's Gran Turismo
  • Gran Turismo's Misc.
  • Gran Turismo's Announcements
  • The Food Club's Food
  • The Food Club's Drinks
  • The Food Club's Read me first!
  • The (Not So) Official Arcade Archives Club's Rules (READ FIRST)
  • The (Not So) Official Arcade Archives Club's Feedback
  • The (Not So) Official Arcade Archives Club's Rumor Mill
  • The (Not So) Official Arcade Archives Club's Coming Soon
  • The (Not So) Official Arcade Archives Club's General Talk
  • The (Not So) Official Arcade Archives Club's High Score Arena
  • Adelaide South Australia Atari Chat's General Chat & Welcome
  • Adelaide South Australia Atari Chat's Meets
  • Adelaide South Australia Atari Chat's Trades & Swaps
  • KC-ACE Reboot's KC-ACE Reboot Forum
  • The Official Lost Gaming Club's Lost Gaming
  • The Official Lost Gaming Club's Undumped Games
  • The Official Lost Gaming Club's Tip Of My Tounge
  • The Official Lost Gaming Club's Lost Gaming Vault
  • The Official Lost Gaming Club's Club Info
  • GIMP Users's Discussion

Blogs

There are no results to display.

There are no results to display.

Calendars

  • AtariAge Calendar
  • The Club of Clubs's Events
  • Atari BBS Gurus's Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


Facebook


Twitter


Instagram


YouTube


eBay


GitHub


Custom Status


Location


Interests


Currently Playing


Playing Next

Found 130 results

  1. Hey! New here I have just started learning intybasic from Oscar's book, and I do have a basic understanding of Basic programming. In the examples folder for IntyBasic, I was trying to decipher how intyPak works. Just wondering if someone can break down for me what exactly this code is doing? IF dir = 0 THEN #c = PEEK($0201+X1/8+Y1/8*20):IF #c <> (BG06+FG_YELLOW) AND #c <> 0 THEN dir = 4 IF dir = 1 THEN #c = PEEK($01FF+X1/8+Y1/8*20):IF #c <> (BG06+FG_YELLOW) AND #c <> 0 THEN dir = 4 IF dir = 2 THEN #c = PEEK($01EC+X1/8+Y1/8*20):IF #c <> (BG06+FG_YELLOW) AND #c <> 0 THEN dir = 4 IF dir = 3 THEN #c = PEEK($0214+X1/8+Y1/8*20):IF #c <> (BG06+FG_YELLOW) AND #c <> 0 THEN dir = 4 Thanks for any help! Brian
  2. Hi everyone, Anyone can help me with this? I wanna use 3 or more sprites in same screen, using the system of flickering, something like in Adventure, I don't know how to create something like a "corroutine" in this, so if anyone can help me, thank u.
  3. If you didn't already know, the Retro Programming - Vectrex Academy 2021 course offered by Prof. Dr. rer. nat. Peer Johannsen through Pforzheim University (Hochschule Pforzheim) is well underway. Some students have posted work that could benefit from testing and your feedback. Below is the comment posted on by Peer on Vector Forums along with the link to the 2021 project gallery page. Make all replies to either the direct reply email link available on each project page, or by "Vectrex Academy 2021" post thread on Vector Forums. "Greetings everyone, here are the latest news of the Vectrex Academy 2021: All the projects are on track. Some have already reached what I would call a very early alpha status, which is quite amazing considering the fact that, just 7 weeks ago, none of the students had even heard of a Vectrex before. Two of the students are brave enough to have their alpha candidates already put out to the public for some very early alpha testing Alpha test binaries of projects "Frog Jump" and "Racetrex" are available for download by means of the gallery page. There are also links on the project pages for playing the games in Dr. Snuggles' online emulator in your web browser. It would be really really great if some of you guys out there find the time to take a look and try these games and voice your opinions and some early feedback here on the forum. This would be quite rewarding for the students and a great help for them while continuing their work on the projects. Many Cheers, Peer" Vectrex Academy 2021 Project Gallery Page: http://eitidaten.fh-pforzheim.de/daten/mitarbeiter/johannsen/vectrex_2021/gallery/vectrex_gallery_2021.htm Vector Gaming Forum thread about the 2021 projects General Information: https://vectorgaming.proboards.com/thread/2544/vectrex-academy-2021 Vectrex Academy 2021 Homepage: http://eitidaten.fh-pforzheim.de/daten/mitarbeiter/johannsen/vectrex_2-021/vectrex_academy_2021.htm
  4. A while back, I started a thread which was intended to be a place where interested programmers could go to find everything they needed to get started with assembly language programming on the Aquarius. Since then, with the popularity of batari Basic for the Atari 2600 and other homebrew-oriented languages, there has been some interest in developing games for the Aquarius in BASIC, so ... here's another Aquarius thread, just for BASIC programmers! Fortunately, the Aquarius already has its own version of BASIC, and it's built right in to the computer! When you turn on your Aquarius (without a cartridge inserted), or start your favorite Aquarius emulator, you'll be presented with a startup screen for Microsoft BASIC. This is the BASIC interpreter that is built in to the Aquarius OS ROM, and contrary to what you might have read elsewhere, it is a perfectly capable implementation of BASIC; it is not a "crippled" version that is missing such elementary features as the ability to do FOR-NEXT loops. The Extended BASIC cartridge (released in very limited quantities, and available today as part of the Aquaricart) did add a few "missing" features, such as the ability to edit previously entered lines of code, but you can easily live without most of them, and as we'll see, there are even better ways of editing BASIC programs using the tools available today. Speaking of tools, let me begin by posting a few. First is the most recent version of the Virtual Aquarius emulator for Windows, version 0.72a: VirtualAquarius.zip This distribution archive includes the emulator itself, the OS ROM, several cartridge and cassette images, and a few sample BASIC programs in ASCII text format to get you started (more on these later). This is the primary emulator that I will be writing my instructions for in this thread, since it has a few features which are especially useful for BASIC programming but which other Aquarius emulators (such as MESS) presently lack. (There is no "installer" for this emulator; just unpack the ZIP archive into a folder, move the folder to a convenient place, and open the "aquarius.exe" executable inside the folder to start the emulator. It's a few years old now, but I've used Virtual Aquarius under every version of Windows from XP through Windows 8 (in Desktop mode), and it appeared to function perfectly.) Next is a bootloader utility, generously provided by Martin v.d. Steenoven, which will convert completed BASIC programs of up to 16K into cartridge images. You can use these images in Virtual Aquarius like any other cartridge binary, or even burn them to a 16K cartridge ROM for use with a real Aquarius. In either case, your BASIC program will load and start automatically when the Aquarius is started; the users will not even see BASIC. Here is a link to the most recent version of the bootloader from the assembly thread, along with Martin's usage instructions: [AQUARIUS] Machine Language Programming on the Aquarius (Post #52) (Note that it is not necessary to use this bootloader utility until after you have completed your BASIC program. While you are writing your program, you would load it into BASIC for testing, using the procedure I will outline in my next post. If you are interested in putting your first completed program onto a real cartridge, send me a PM; I'll be offering a cartridge publishing service in the near future.) Finally, here is a dump of the original Aquarius Character Generator ROM, containing the default Aquarius character set. This replaces the "reconstructed" character set used by Virtual Aquarius: AquariusCharacterSet.zip To explain why this is important, and how to use the replacement ROM in Virtual Aquarius, I'll quote from the assembly thread: The only other tool you will need is a text editor. Note that a text editor is not the same thing as a word processor: both are writing tools, but the text editor saves your files as plain text, without any formatting information or metadata. Microsoft Windows comes with Notepad, but since this is a very simple editor, many developers choose to use editors which offer more features, such as macros and syntax highlighting. The editor that I usually use on Windows systems is VEDIT by Greenview Data, but just about any editor will do. Even plain old Notepad is a much better alternative than typing a lengthy BASIC program on a real Aquarius!
  5. Hello! After some searching for MADS highlighting for Vim, I haven't found nothing useful, so I decided to write something new… The only solution like this which I found was vim-xasm, the XASM highlighting, but it wouldn't enough good to use with MADS (lack of preprocesor directives and so on) So, here it is! Completely new plugin, suitable for every serious Atari coder with Vim as his main editor. (Note: If Vim isn't your primary editor yet, give it a try! But remember, some of your habits will be quickly broken :>) URL for GitHub Repository (aka "The Giant DOWNLOAD Button"): https://github.com/skrzyp/vim-mads (of course, if you're not familiar with Git, you can still grab this plugin as archive, but you'll lose the ability to update it when something new will be added/corrected) Installation Manually: Put folders syntax and ftdetect in your Vim configs directory: Windows: %USERPROFILE%\vimfiles Rest of world: ~/.vim Recommended: Using Pathogen Clone this repo into your Vim path: git clone https://github.com/skrzyp/vim-mads ~/.vim/bundle/vim-mads Of course, I'm fully open for any suggestions and comments, even if you found any bug or problem, tell me here or make a pull request. I'm also very interested about any feedback from users. Screenshot (sorry, I don't have a code which use a full potential of MADS, but if someone has, send me your pic, please)
  6. Hi everybody, Anyone knows if its possible to change the position of live bar? I wanna put it above the score. And if anyone can explain why its so deformed in right side: And for any reason, I'm trying to take out this black line in screen, but I can't, in other projects I tried, but it always had bugs impossibilating to recompile.
  7. Well, other consoles have such a thread. Since this is supposed to be an open console, it'll need one too. Put plans & progress here.
  8. #FujiNet #Atari8bit for anyone wanting to do some simple hacking on fujinet tools, here's an easy toe-dipper, add a PRESS ANY KEY TO CONTINUE message: https://github.com/FujiNetWIFI/fujinet-config-tools/issues/20
  9. #FujiNet #Atari8bit Now that libssh2 is embedded into the code and is compiling, I have added a ticket to add an SSH protocol adapter, if anyone wants to try their hand at it. https://github.com/FujiNetWIFI/fujinet-platformio/issues/439 I especially want someone else to do this, so that they can point out to me how incredibly brain damaged my approach is, and hopefully we can make it better.
  10. There have been many people asking how to create music on the Intellivision and each thread is addressed individually. There is some good information on the IntelliWiki, but the format of the tracker is not described in detail. This thread endeavors to describe the tracker format in all its gory detail. The information in this article was originally provided to me by Arnauld Chevallier, author of the tracker library for the Intellivision. I have adapted and expanded it for publication. I've attached to this article an archive containing the source code for the Intellivision Tracker library, along with the original demo song provided by Arnauld Chevallier. I've also included a simple song taken from the Christmas Carol game for further illustration. Intellivision Tracker Lib.zip Technical Overview The Intellivision Master Component includes a General Instruments AY-3-8914 sound chip, commonly referred to as the Programmable Sound Generator, or PSG. The PSG contains three separate square-wave tone generators, each of which can be programmed individually to control its frequency and volume. The chip also includes a noise generator, which can be mixed with any of the three tone channels. All three channels, potentially modulated by the noise generator, are then mixed and fed to the TV for output. The PSG also contains a hardware envelope generator to shape the output sound-wave. Any of the three channels can be processed through the envelope generator, but only one envelope is available to all channels at a given time. The inability to shape each tone individually reduces the versatility and usefulness of this feature, often forcing the programmer to generate and manage discrete envelopes in software. Programming the PSG manually is certainly possible, but requires a significant volume of insight into the technical details of the chip, and the mathematics involved in calculating musical tones and note periods from raw frequency counter values. For this reason, it is common to use library modules that abstract these properties. The Intellivision Music Tracker Intellivision games designer and programmer Arnauld Chevallier, has implemented a tracker library to play specially-crafted music files on the Intellivision. He has been gracious enough to donate his code to the public domain so that all Intellivision programmers may benefit from it. Because it is freely available--and because it is so exceptionally useful and easy to integrate--it has become the de facto method to play music on Intellivision home-brew games. Using the tracker in your own games is a matter of including the library, defining some needed variable labels, and adding a call to update the tracker state periodically from your game loop. You also need to create your own music files in the appropriate data format. Tracker Data Format The format used in Arnauld's tracker has a lot in common with the classic MOD format of old Amiga tracker modules: a song defines a series of patterns, which describe musical sections, and specifies in which order they are to be played. More precisely, the data layout is closer to the later XM format introduced by Fast Tracker II, which added the notion of instruments. The most notable difference, of course, is that no digital samples are used at all. All instruments in the Intellivision tracker are software-generated tones. Below is the general structure of the tracker data layout, which I'll describe in detail further on. Root | +-- Pitch Effect #1 (...) +-- Pitch Effect #N | +-- Envelope #1 (...) +-- Envelope #N | +-- Drum #1 (...) +-- Drum #N | +-- Song #1 | | | +-- Header | +-- Pattern Sequence | +-- Pattern #1 | | | | | +-- Length of pattern | | +-- Sub-pattern for channel A | | +-- Sub-pattern for channel B | | +-- Sub-pattern for channel C (...)(...) | +-- Pattern #N | | | +-- Instrument #1 | | | | | +-- Pitch | | +-- Vibrato | | +-- Envelope (...)(...) | +-- Instrument #N | | | +-- Sub-pattern #1 | | | | | +-- Notes (...)(...) | +-- Sub-pattern #N | +-- Song #N Root Objects defined in this section are common to all songs. This may include pitch effects, envelopes and even drum patterns for a rudimentary percussion track implementation. Pitch Effects Some rather simple pitch effects are supported by the tracker, such as tremolo or fast arpeggios. The format is as follows: DECLE D[0], D[1], D[2], D[3] Where D[x] values are expressed in half-tones and are added to the current standard pitch of the note, on every frame, with the following formula: FinalPitch = StandardPitch + D[frame % 4] A frame is every game cycle where the tracker state is updated. Presumably, this would be 60 times a second, on standard NTSC Intellivision consoles. The result is that the tone is modulated, four frames at a time, by the number of half-tones defined for each frame, producing a tremolo effect. For example, pitch01: DECLE 0, 0, 0, 0 ; No modulation: |_|_|_|_| pitch02: DECLE 0, 0, 12, 12 ; half-modulation: |_|_|-|-| pitch03: DECLE 0, 12, 0, 12 ; fast-modulation: |_|-|_|-| The first pitch effect will play the note at its standard pitch without modulation. The second one will play the standard pitch for two frames, then increase the pitch by an octave (12 semi-tones) for another two frames, and repeat this throughout the length of the note. Finally, the third one will alternate the note between its standard pitch and one octave higher on every frame. Envelopes The tracker library does not use the hardware envelopes of the PSG. Instead, it relies on software envelopes defined in this section. The format of the envelope definition is as follows: DECLE SPEED DECLE WORD_00, ..., WORD_15 Where SPEED is in the range of [0..3] with 0 being the slowest and 3 the fastest. Each WORD_xx value is a hexadecimal value in the form $ABCD, where each nibble describes the volume level to be output. The tracker does not currently support loops within an envelope. Consequently, they are applied only once on each note. Consider an envelope as a 64 x 16 matrix, where each point defines the volume to be applied to an instrument on a given frame. Below is an example of a rather exaggerated envelope, in order to illustrate its layout: ATTACK DECAY SUSTAIN RELEASE .--------|---------------------|-------------------------------------------------------|---------------------------------------| F -|. . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E -|. . . . # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D -|. . . . # . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C -|. . . . # . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B -|. . . # . . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V A -|. . . # . . . . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O 9 -|. . . # . . . . . . . . . . . # # # # # # # # # # # # # # # # # # # # # # # # # # # # # . . . . . . . . . . . . . . . . . . . . L 8 -|. . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . U 7 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . M 6 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . E 5 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . 4 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . 3 -|. # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # . . . . . . . . . . . . . . . 2 -|. # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . . . 1 -|# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # . . . . . . . 0 `+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 3 7 B F E E D D C C B B A A 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 7 5 4 3 3 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 ; Envelope definition DECLE 1 DECLE $137B, $FEED, $DCCB, $BAA9 DECLE $9999, $9999, $9999, $9999 DECLE $9999, $9999, $9999, $7543 DECLE $3222, $1111, $1000, $0000 The SPEED value influences how the tracker applies the envelope over time. For instance, a speed value of 0 will cycle through the matrix one point at a time. While a value of 1 will skip every other point, and so on. The envelope position for each frame is computed using the following formula: envelope_x = (frame / 2speed) Below is another, more common example. This one is for a simple envelope with a short attack, immediately followed by a linear decay in volume, all the way to zero. ATCK DECAY .----|---------------------------|---------------------------------------------------------------------------------------------- F -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E -|. # . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D -|# . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C -|. . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B -|. . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V A -|. . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O 9 -|. . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L 8 -|. . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . U 7 -|. . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M 6 -|. . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E 5 -|. . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 -|. . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 -|. . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 -|. . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 -|. . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 `+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | D E F E D C B A 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; Envelope definition DECLE 2 DECLE $DEFE, $DCBA, $9876, $5432 DECLE $1000, $0000, $0000, $0000 DECLE $0000, $0000, $0000, $0000 DECLE $0000, $0000, $0000, $0000 Drums Drums are a special kind of instrument that are defined globally. A drum is a short and fixed sequence of tones with optional noise modulation. No pitch effects, vibrato, or envelopes are applied to drums. The drums section includes the patterns for each drum instrument, along with the instrument definitions themselves. A drum instrument pattern is a series of eight instrument definitions that describe the sound of the drum over time. This allows the shaping of the drum sound with varying measures of tones and noise, resulting in a richer sound. The library includes the macro Drum() that facilitates the definition of drum sounds. The macro is used as follows: Drum(TONE_PERIOD, NOISE_PERIOD, TONE, NOISE, VOLUME) ; #1 Drum(TONE_PERIOD, NOISE_PERIOD, TONE, NOISE, VOLUME) ; #2 ... Drum(TONE_PERIOD, NOISE_PERIOD, TONE, NOISE, VOLUME) ; #8 TONE_PERIOD: Corresponds to a 16-bit value describing the period of the tone to use. NOISE_PERIOD: Corresponds to a 16-bit value describing the period of the noise to apply. TONE: Declares whether to use the tone generator for this drum instrument: 1 = On 0 = Off NOISE: Declares whether to use the noise generator for this drum instrument: 1 = On 0 = Off VOLUME: Corresponds to a value in the range [0..15] describing the volume of this drum. Below is an example of a simple hi-hat cymbal instrument definition: @@hithat DRUM($380, $04, 0, 1, $D) DRUM($380, $04, 0, 1, $6) DRUM(0, 0, 0, 0, 0) DRUM(0, 0, 0, 0, 0) DRUM(0, 0, 0, 0, 0) DRUM(0, 0, 0, 0, 0) DRUM(0, 0, 0, 0, 0) DRUM(0, 0, 0, 0, 0) Song A song is a collection of patterns describing the notes and instruments to be played. The song definition includes a header, the sequence of patterns to play, and the pattern definitions. Header The song header describes the overall definition of the song, and takes the following format: DECLE SPEED, PATTERNS, INSTRUMENTS SPEED: The playing speed, expressed in frames. It actually represents the number of frames that each row in a pattern will last. PATTERNS: A pointer to the pattern definitions table. INSTRUMENTS: A pointer to the instrument definitions table to be used. Pattern Sequence The pattern sequence describes the order in which the patterns will be played. The sequence is comprised of the definition index of each pattern in the sequence. The pattern sequence is the actual musical sequence of the song, so only those patterns included in it will be played. The sequence may be terminated by a negative value identifying a looping point. The tracker will then backtrack that many patterns and repeat the sequence from that point. If the song is to terminate without looping, the magic constant $F000 may be use to tell the tracker to stop playing and clear its registers. Below is an example of a pattern sequence: DECLE 0, 1, 0, 1, 2, 3, 2, 4, -4 The above will play the patterns listed in order, and loop indefinitely through the last four patterns. Replacing -4 with $F000 will instead cause the tracker to stop playing at the end of the song. Patterns A pattern is defined by its length, followed by pointers to sub-patterns for all three channels. The length of a pattern is expressed in rows, where a row represents a discrete musical event in time. (The speed of the song defined in the header corresponds to the number of frames between each pattern row.) It is important to think of patterns not in terms of beats and measures like a musical score, but as rows of tracker events that alter the output of a particular channel over time. The format of patterns is as follows: DECLE length, sub_pattern_a, sub_pattern_b, sub_pattern_c Where the length is the number of rows in the pattern, and sub_pattern_a, sub_pattern_b, and sub_pattern_c are pointers to sub-pattern definitions for channels A, B, and C, respectively. NOTE: The tracker assumes that all patterns have the same length. You are advised to ensure this is the case, or else Bad Things may happen during execution. Instruments This section holds all song instrument definitions. Each instrument includes information about pitch effects, optional amplitude modulation (vibrato), and an envelope. The instrument definition takes on the following format: DECLE PITCH, VIBRATO, ENVELOPE PITCH: A pointer to a pitch effect object previously defined in the global header. VIBRATO: The amount of vibrato effect to apply, in the range of [0..3]: 0 = no vibrato 1 = low 2 = medium 3 = high ENVELOPE: A pointer to an envelope object previously defined in the global header. Up to 15 different instruments can be defined. Sub-Patterns A sub-pattern indicates the actual notes to be played in a pattern, the instrument to be used for each note, and its volume. A note in this context describes a discrete tracker event which alters the output produced by a channel over a series of rows. The tracker library includes the macro NOTE() to define notes. For standard instruments (i.e., not drums), the macro takes as argument a string in the form: NOTE("NnO IVL") N = Musical note (from A to G) n = # for sharp; - for regular O = Octave (from 1 to 7) I = Instrument (from 1 to F, with '0' meaning no change) V = Volume (from 0 to F) L = Length, in rows (from 0 to F) The length is the number of rows to wait before the next event, and corresponds to the length of the note minus 1. For instance, a length of 7 corresponds to a note lasting for eight rows: the tracker will apply the note event on the current row, and wait for seven more until the next event. For drum instruments, the "NnO" parameter is replaced by the "DRM" keyword: NOTE("DRM IVL") I = Drum instrument (from 1 to F) V = Volume (from 0 to F) L = Length, in rows (from 0 to F) The library also includes the macro NOTES(), which defines four notes at a time. Any unused arguments can be padded with empty strings. For example: @@p003 NOTES("A-5 3F7", "G-5 3F7", "E-5 3F7", "F-5 3F1") NOTES("E-5 3F5", "", "", "") The "NnO" parameter may also be replaced by the "NUL" keyword, which means that no note change has occurred for this event. This makes it possible to define notes with a length greater than 15. EDIT: Corrected typos and edited for clarity.
  11. My attempt to System Off in Millfork: java -jar $HOME/Programs/Millfork/millfork.jar -Xr -t a8 your_code.mfk // ================================================ // // antic_nmien = $40 // // %01000000 $40 VBI // %10000000 $80 DLI // %11000000 $c0 VBI + DLI // // ================================================ // // pia_portb = $fe // // PORTB_BASIC_OFF + PORTB_SELFTEST_OFF + %01111100 // // PORTB_SELFTEST_OFF = %10000000; portb bit value to turn Self-Test off // PORTB_BASIC_OFF = %00000010; portb bit value to turn Basic off // PORTB_SYSTEM_ON = %00000001; portb bit value to turn System on // // ================================================ byte nmien = $c0 byte rti @ $15 // default routine for VBI & DLI word vbivec @ $10 // vector for VBI word vdslst @ $16 // vector for DLI // simple display list; LMS = $e000 const array(byte) dl align(32) = [ $70,$70,$70, $42,$00,$e0,2,2,$f0,2,2,2,$f0,2,2,2, $41,@word[dl.addr] ] // init procedure void system_off(){ asm { sei } // turn off IRQ antic_nmien = 0 // turn off NMI pia_portb = $fe // turn off ROM rti = $40 // set RTI opcode vbivec = rti.addr // set address for VBI routine vdslst = rti.addr // set address for DLI routine os_NMIVEC = nmi.addr // set address for custom NMI handler antic_nmien = nmien } // custom NMI handler asm void nmi(){ bit antic_nmist // test nmist bpl .vblclock // if 7-bit not set handle VBI jmp (vdslst) // indirect jump to DLI routine .vblclock: // RTCLOK maintainer inc os_RTCLOK.b2 bne .tickend inc os_RTCLOK.b1 bne .tickend inc os_RTCLOK.b0 .tickend: jmp (vbivec) // indirect jump to VBI routine } // example dli interrupt asm void dli_first(){ pha lda #$2a sta gtia_colpf2 sta antic_wsync lda #<dli_second.addr sta vdslst.lo lda #>dli_second.addr sta vdslst.hi pla rti } // example dli interrupt void dli_second(){ gtia_colpf2 = $de antic_wsync = $de vdslst = dli_first.addr } // wait for VBLANK asm void pause() { lda os_RTCLOK.b2 .rt_check: cmp os_RTCLOK.b2 beq .rt_check rts } // wait 0-255 frames noinline asm void wait(byte register(a) f) { clc adc os_RTCLOK.b2 .rt_check: cmp os_RTCLOK.b2 bne .rt_check rts } // example vbi interrupt void vbi(){ gtia_colpf2 = os_RTCLOK.b2 } // main procedure void main(){ system_off() // turn off OS wait(100) // waint 2 sec on PAL for fun antic_dlist = dl.addr // set custom display list wait(100) // waint 2 sec on PAL for the lulz vbivec = vbi.addr // set custom VBI wait(100) // waint 2 sec on PAL because we can vdslst = dli_first.addr // set custom DLI while(true){ wait(100) nmien ^= %10000000 // toggle DLI antic_nmien = nmien } } systemoff-example.mfk systemoff-example.xex EDIT: My repository with examples https://github.com/zbyti/a8-millfork-playground
  12. #Atari8bit #FujiNet shown here is an HTTP GET example in BASIC, that uses aux1=12, to be able to do things like get/set headers, in this case, to manually set an HTTP Authorization header, and to get back the requested data. These changes are in master, and will be in the next release. -Thom
  13. An #Atari8bit IRC client in...#BASIC? With #FujiNet, this is possible thanks to the N: device providing an easy interface to the network outside. This IRC program has been in development for roughly a week, and it's amazing!
  14. Can someone recommend a relatively simple, easy to learn & use, yet powerful enough to do what I want, imperative programming language like BASIC or Visual Basic, for making Atari VCS and 8-bit type games for the Windows desktop (or maybe Linux but prefer Windows)? I would mainly be making 2-D games - stuff like Pong or Combat up to 8-bit Atari or Commodore era games, but probably nothing more complex. Maybe remake Pinball Construction Set or classic Ultima. Some features that would help relatively self contained (not 1,000,000 libraries you have to go through) free or not too expensive (this would be just for fun) easy to find lots of sample code for how to do things, and strong active community to ask questions built in IDE (preferably a visual IDE) and most importantly: currently supported and should continue to keep working for some time developed with a backwards-compatible philosophy so your programs will still work after a couple years! I have dabbled in various languages / systems over the years and made some games or partial games: Commodore 64 / BASIC - easy but games ran too slow, compiler helped speed games up, used some simple assembly for speeding up little routines (hard!) Commodore 64 / Gamemaker - easy but too limited (plus I missed being able to type code) Mac Classic / Pascal - limited to black & white graphics, couldn't find any info on making sounds (pre-Web so it was very hard to find docs or examples) Windows / QuickBasic - nice and easy but obsolete & couldn't figure out anything past text graphics and simple beeps Windows / VB6 - I liked the language and IDE but limited graphics support (bitblt, kind of confusing), and I never figured out playing >1 sounds at a time, just playing back WAV files one at a time; eventually VB6 became obsolete so I had to start over Windows / VB.NET 1.1 and some C# - the .NET language kept changing and got too complicated with the enterprise OO features JavaScript / HTML5 - figured out canvas graphics, Javascript syntax is easy but I am not crazy about HTML and CSS, and parts of language were too complicated and ugly (prototype stuff, too many libraries & frameworks, no types, etc.) Python / Pygame - mainly playing around with other people's code from pygame.org, still not comfortable with Python, not crazy about certain things like the indentation, no types, too many libraries / choices, dependencies and things changing too much that can break your code, etc. After all these years and languages I still prefer BASIC or VB6 syntax (JavaScript/C syntax is OK, Pascal is OK) and a visual editor. Mainly I don't have a ton of time to invest in learning stuff and if I get busy (which is often the case!), I might put a project down for months at a time, or even a couple years, and by the time I get back to it, the language I wrote it in has updated/changed or become totally obsolete, and I have to go back and fix my code or start over from scratch. I know computers change and all that but come on So anyway, if anyone has any advice or recommendations that would be grand. And hey, if it doesn't exist, it doesn't exist, but I thought I would ask! PS here are some pages I was looking at, in no particular order - if anyone can share any opinions on these, please: SDLBasic XBASIC BASIC Compiler (Windows, Linux) QB64 (Windows, Mac OS X, Linux), QB64 Just BASIC (Windows) SmallBASIC (Windows, Linux, N770/N800, PalmOS, eBookMan) ThinBasic Basic Interpreter (Windows) ElectronJS How to create a 2D game with Python and the Arcade library | Opensource.com FUZE4: Bringing BASIC to Switch — Wireframe Magazine I am really looking for Windows, but this caught my eye! Construct 2 – The Windows favourite Clickteam Fusion 2.5 – The veteran RPG Maker – The RPG specialist Microsoft Small Basic (wikipedia) Unity (probably not what I am looking for) Microsoft MakeCode Arcade (info) Atari Dev Studio A way to make games for the 2600 using BASIC? Hmm... DarkBasic GLBasic Liberty BASIC PureBasic RapidQ REALbasic (Xojo) XBasic Free BASIC Compilers and Interpreters (thefreecountry.com) https://www.gamedesigning.org/career/software/ https://www.websitetooltester.com/en/blog/best-game-engine/#GameSalad_The_Educators_Choice What is the easiest programming language to make games with? - Quora App Development - Infinite Runner - CodaKid Action! is an Atari-specific programming language written by Clinton Parker and sold by Optimized Systems Software (OSS) in ROM cartridge form starting in August 1983. It is the only language other than BASIC and assembler) that had real popularity on the platform and saw any significant coverage in the Atari press; type-in programs and various technical articles were found in most magazines. In comparison, languages like Forth and Logo saw much less use and almost no press coverage. Processing Tutorial: Building a Simple Game | Toptal Much appreciated
  15. Hello Everyone, I took the liberty of opening a new topic on the tutorial series. The main reason (besides my big ego) is that the notifications on new parts and potential discussion is now scattered throughout the Atari Lynx and Programming forum and multiple topics. Also, it gives a single, easy to find location for the source code that goes with the tutorials. So, for your convenience, here is the list of tutorial parts: Part 1: Getting started Part 2: Development environment for Windows Part 3: Analyzing Hello World Part 4: Creating a project Part 5: Exploring TGI Part 6: Colors Part 7: Basics of sprites Part 8: Changing appearances Part 9: Advanced sprites Part 10: Collisions Part 11: Pens and more collisions Part 12: Memory mapping Part 13: UART Part 14: Timers Part 15: Memory and segments Part 16: Cartridges Part 17: Interrupts Part 18: Files Let me know if you find things unclear, wrong, have suggestions for topics, see room for improvement or anything else. I hope you will find it useful and take up the programming challenge. You can take my word for it, or that of Karri, ninjabba, Matashen, sage, GadgetUK, vince, obschan, TailChao, Sebastian, Wookie, Shawn Jefferson, toyamigo, or any of the other developers: it is a lot of fun. I've added the sources, tools and documentation for the CC65 2.13.9 SVN 5944 which is a known stable build. Remove the .txt extension for the sources archive. cc65-snapshot-win32-2.13.9.20121203-1.zip cc65-snapshot-doc-2.13.9.20121203-1.zip cc65-snapshot-lynx-2.13.9.20121203-1.zip cc65-snapshot-sources-2.13.9.20121203.tar.bz2.txt Tutorials26082016.zip
  16. This may be out there somewhere but if not, here is the TI logotype (c) for TEXT mode (40 columns as opposed to 32 columns). If you have pics like this to share I'd love to see them. TI Logo CHAR data for TEXT mode.pdf
  17. A project I have been working on for the last two years is nearing completion i.e. my next book called 'Programming Games for the Colecovision and Adam in Assembler'. It includes a tutorial section working through the steps of creating a game, with a Z80 assembler primer and information on how to set up a cross development environment (similar but extended from my Let's Make a Retro Game series). It also includes a complete Colecovision BIOS reference guide, covering ALL of the jump table BIOS calls with explanations and examples for using each call. There are extensive memory and port maps, also with explanations etc. It will have a dedicated web site section where you can download the code (for lazy typers :)). The early pre-order link for the Kindle edition is available here. Cover is still a draft. Shortly after I have released the Kindle Edition, there will also be a physical print edition available on Amazon's print to order service, which I used for my last book and has been received well. It does have some colour screen shots and pictures in it, let me know how many people would be interested in a full colour edition, rather than a colour cover with black and white interior. The book is currently 90% complete, with the majority of the content completed, but I have about ten quality read through passes to do and need to tidy-up/check all the source code etc. I am aiming for a 1st August 2020 release date at this stage.
  18. Greetings folks, Just an FYI for anyone looking for reprinted out of print programming books to try Lulu.com I have used Lulu before but this time I found a book I have been desperately looking for years. I have been wanting the Compute! published books Programming the 64 and Programming the Vic by West and was able to find the 64 on Ebay, but the Vic one appears to some rare air to find. I love West's two books for the C64 and Vic and have been wanting them for many years. I even went as far to email libraries in Texas once I found out they had the Vic book to offer them to buy it, however all of them could not sell the book to me.. I visited lulu and it looks like someone just recently uploaded the PDF and Lulu has made Programming the Vic for reproduction. I am just passing this on to anyone who may be looking for this awesome Vic 20 book! The printing is done well and it is the same size of the 64 original one and the binding is excellent. I also bought another copy (I have the original) of the Butterfields Machine Language for the C64, 128 expanded editions. The Butterflied book is printed much smaller but still looks good, I was surprised they went with the small size when it should be the same size of the West book. In any case I am not connected to Lulu and do not make any money or get anything from them.. I just wanted to pass on a place for anyone who was looking for these tough to find books and do not mind a reprint. The books were very reasonable priced. I put a few screenshots here for anyone who might be interested. I hope anyone who is interested in Assembly Commodore programming can find this knowledge useful for them. If anyone here is looking for these
  19. Hey guys, so I've started on a set of bindings for ACTION! and they almost work(tm). https://github.com/FujiNetWIFI/fujinet-apps/tree/master/netcat-action What does not work: * Write doesn't work. * Interrupt routine isn't being called, even though I vector it in, and toggle PACTL's PROCEED interrupt enable. Anybody want to peer at this and give some insight?
  20. Well known to Atari 2600 programmers K65 compiler for 6502 by @KK/Altair Sources: https://github.com/Krzysiek-K/k65 Docs: https://zbyti.github.io/k65-mkdocs/ K65 Language Support for Visual Studio Code Playground: https://github.com/zbyti/a8-k65-playground How to run: $HOME/Programs/k65/bin/k65 @your_program.conf First example: main { { COLPF2=a=VCOUNT WSYNC=a } always } rainbow.k65 rainbow.conf rainbow.xex
  21. @Savetz did a #FujiNet chat program in Turbo BASIC XL using the N: handler. It is in /Networking/fujichat v01 dd.atr.
  22. #FujiNet #Atari8bit I have made a cheat sheet showing how to use the N: device in BASIC to open, close, send, receive, etc. The page is here: https://github.com/FujiNetWIFI/fujinet-platformio/wiki/N%3A-Game-Developer-Cheat-Sheet
  23. #Atari8bit Any assembler coders? Anyone want to help out with #FujiNet's CIO handler? There are three issues that I need help with as I work on the firmware (ESP32) side. Add Binary Load File support https://github.com/FujiNetWIFI/fujinet-nhandler/issues/1 Add NOTE/POINT support https://github.com/FujiNetWIFI/fujinet-nhandler/issues/2 Make code relocatable again. https://github.com/FujiNetWIFI/fujinet-nhandler/issues/3 Add burst mode I/O https://github.com/FujiNetWIFI/fujinet-nhandler/issues/4
  24. I have put a together MAME/MESS emulation package that emulates the MyArc Extended BASIC II & TI P-Card for the Ti99. MyarcXBII: MyArc was a company that made peripherals for the TI-99 line. There most famous peripheral (if you want to call it that) was the Geneve. The Geneve was a complete TMS 9995 computer that fit in the TI-99 PEB as a card. Another peripheral that was lesser known, but just as revolutionary, was the MyArc Extended BASIC II. The MyXBII consisted of the 128k or 512k Memory card, a set of disk and a cartridge. When running the MYXBII had 3 times the memory of TIXB, was up to twice as fast as TIXB and was able to access all the graphic capability of the TI graphics card including the hi-rez. If a MyArc HD disk card was added the software could even boot from the MyArc hard drive. It turned the TI99 into a real power house. Unfortunately because of it's expense and the fact that you needed a PEB to run it, the MyArcXBII never really caught on. Now, though, with emulation it cost nothing so through the power of MAME/MESS the power is being released. Start the MyArcXBII at the TI99 main menu by choosing 3-128k BASIC and this will boot the MyArcXBII from the hard drive. P-Card: The P-Card was a card for the PEB that was, more or less, a complete operating system apart from the TI99. It's a virtual machine processor on a card that ran P-Code. It was written totally in software and was based on Pascal and was able to run on other computers that also conformed to the P-Code specifications. It is nothing like a standard TI-99 and when booted takes over the TI-99 and even has a specially formatted disk it uses. There is a complete suite of software and if you can figure it out, kinda nice. To run the P-Card in MAME/MESS click under OPTIONS-DIP SWITCHES then turn on the P-CARD. Hard reboot the machine and the TI-99 will start in the P-Card mode (after a few seconds of beeping and blank pages). To go back to MyArcXBII just turn the P-CARd switch OFF then hard reset the machine. The MAME/MESS package works with any versions of MAME/MESS past version 222. Just merge your version of MAME/MESS into the MESSxxx directory and point the already created batch file in the root to that directory. Package includes manuals, software, batch files and everything you need except MAME/MESS itself. Enjoy. Download from my https://ti99resources.wordpress.com/software/ At the bottom of the page is MAME package, click on MyArc Extended BASIC II to show download files. I have both a package with and without the P-Card. (a truly nice tripped out Ti-99 from mainbyte.com)
  25. #Atari8bit In this video, I show how to write the core logic for a light cycle game. The result is a simple racing against opponent barrier game that is controlled by two joysticks, and will be modified for network in part 2.
×
×
  • Create New...