Jump to content


Popular Content

Showing content with the highest reputation since 04/26/20 in Files

  1. 15 points

    Version 1.0.0


    This is a shareware version of Petscii Robots. It only includes 2 maps. It also lacks SNES controls and the cheat-code. It is also only presented in "color PETSCII" mode, as there hasn't been a version made yet with custom graphics and sound. The music routine is a direct port from the PET, which only uses 1 square-wave voice. PETFONT.PRG
  2. 14 points

    Version 1.3.0


    Raycaster demo (written in c and assembly) This version is a big improvement in performance: it now runs at 10+ fps! I am quite happy with the speed. The demo plays quite nicely now. See below description of version 1.3.0 for details. --- This is a raycaster demo written in c and assembly for the Commander x16. I've been trying out the x16 and thought it would be a cool idea to start working on a raycaster. Ultimately it would be great if "Wolfenstein 3D" can somehow be ported to the x16. That would be a BIG challenge though! This is how it looks now: Speed improvements in 1.3.0: Now running at 10+ fps! - Using zero page addresses for pretty much all my variables - Using fast multipliers that use "square" tables: https://codebase64.org/doku.php?id=base:seriously_fast_multiplication - Inlined the fast multipliers, so less copying of values, no jsr and rts - Re-using the somewhat "static" parts of the multiplications, so it won't be re-loaded/calculate each ray (this was harder than it sounds, quite of bit of refactoring done) - Cosine and Sine fractions are player-related, and even though they are negated sometimes, they (that is their squares) could be reused for (almost) each ray - The (square of the) fraction of the tile the player is standing in -to be used for calculating the initial x/y interception for each ray- could be reused - Cleaned up the main loop and several other parts - Replaced the 16-bit slow divider with a 512-entry table: distance2height (major improvement!!) New in this version 1.2.0: - draw functions have been ported to assembly. Much faster! - dda casting functions have been ported to assembly. Much faster! - drawing textures! - automatic generation of routine to draw ceiling and floor (only 4 cycles per plain pixel) - automatic generation of around 512 routines for drawing textures (only 8 cycles per textures pixel) - using joystick controls (you can use arrow keys and alt to control, you can hold down keys) - a few textures from Wolfenstein 3D (shareware version) have been added (loaded at startup) - changed the map to look like the first level in Wolfenstein 3D - added a border around the render area, just like Wolfenstein 3D Usage Unpack the zip. Make sure you have the .BIN files in the same folder as the source files. To compile: (this assumes cc65 is installed) cl65 -t cx16 -o RAY.PRG ray.c ray_asm.asm -O3 To run: x16emu.exe -prg RAY.PRG -run To play: up - move forwards down - move backwards left - turn left right - turn right alt-left - strafe left alt-right - strafe right To debug: p - turn on log screen o - turn off log screen t - turn on test ray l - rotate test ray left j - rotate test ray right Known issues (1.2.0) - Sometimes there is a corner of a wall not drawn correctly - Since there is no real V-sync you get "shearing" in the screen (requires double buffering) Next up: - Lots of speed improvements - Lots of cleanup of code (its messy now) - Add a time-per-frame indicator (using a vsync interrupt counter) - Mooaarr wall-textures! - Double buffer to prevent shearing - Show a map on the screen - Bigger map (limit is now 16x16) - Opening doors - Add (scaled) "sprites" - Lamps (scaled) hanging from ceiling - Stats in lower part, gun visible - AI, enemies Having fun! Jeffrey
  3. 11 points

    Version 1.0.1


    This is a simple voxel demo written in 65c02 assembly. It has been tested in the r38 emulator. Press W A S D to move around. Press SPACE to quit.
  4. 9 points

    Version 0.3.5


    X16 Edit is a text editor for the Commander X16 platform. Design goals: Use plain text files Store text buffer in banked RAM (512KB to 2 MB) Handle large texts efficiently Simple modeless user interface inspired by GNU Nano Implement basic editing functions well - refrain from making the program too feature-rich Support both ISO and PETSCII modes Tested with emulator version r38. Run with the following command: x16emu -sdcard sdcard.img -prg X16EDIT-x.x.x.PRG -run where x.x.x is the program version. You can also run the program with the "Try it now" button. There is, however, no attached disk in the online emulator, and consequently you cannot save or open files. Also, some of the Ctrl+key sequences are not working in the online emulator. To fully test the program you still need to download and run it locally. Please read the attached file romnotes.pdf if you want to try the ROM version. Source files available at https://github.com/stefan-b-jakobsson/x16-edit Released under GNU General Public License v 3 or later. romnotes.pdf manual.pdf
  5. 8 points

    Version 1.0.0


    This weekend, I decided to play with X16 BASIC using the emulator and wound up making an X16 adaptation/extension of a short program for the Plus/4 that appeared in 'The Transactor' journal decades ago. The program uses three parameters: "S" (squiggles/spokes/segments), "W" (wave factor), and "A" (amplitude). Using X16 BASIC's extensions in terms of bitmap drawing commands, it outputs a neat design with lots of color and a surprising amount of visual variety. The original Plus/4 program just plotted in black and white and had some built in limitations (and at least two bugs), but I decided to extend the program, add a menu, and upload it after I added color and decided these were fairly cool looking results from such a short simple BASIC routine. It strikes me as a cool demo because with just three core parameters, you can get an astonishing range of outputs. Of course, like many graphics demos based on stacking transcendental functions, there are combos of inputs where the functions will sort of fall apart and produce something akin to a kiddo scribbling with crayons , but there are also weird "islands" in the domain of possible parameter combinations where order re-asserts itself, both in terms of what gets drawn and how the colors play out. There are 4 'modes' of operation you can pick from the menu. You can specify inputs for S, W and A manually; the program can run a sequence with fixed S and A while incrementing W; there is a mode that tries to picks random parameters within several domains where the program produces nice outputs; and there's one that just reads the inputs from some "presets" in DATA statements. (You can of course add your own 'best of' examples by adding data statements between lines 432 and 499). I always considered myself a passable BASIC programmer, but this weekend showed me I'm really sort of rusty so please go easy on me if I did something inefficiently or especially 'dumb' in my implementation. The main output routine is extremely crunched (sorry, not sorry) and I did some further things to optimize from the original program for purposes of getting a bit more performance out of the main routine. Although it absolutely crawled on the Plus4, I think its fairly impressive on the X16 especially if you look at the sheer amount of sines, cosines, multiplications, and variable fetches /updates that occur during an entire cycle through the primary output drawing loops. The X16's 40 column mode (SCREEN $00) was used to key this in and format it, so its probably best if listed/ displayed/reviewed in that mode, Tested on emulator r.38, and I don't see anything in the pending updates for the next emulator release that would break anything here. If there are questions about why/how I did something I'll be happy to answer. In fact, if there's any interest in a more detailed write-up of this short and fairly simple program (e.g., section by section, and line-by-line), I would be happy to give it a shot, especially if there are folks new to Commodore BASIC that might find it useful. It seems to me there are many highly advanced programmers for the X16 posting on this site who are using assembly, C, and even languages they are developing themselves. Its amazing! However, its surely the case that part of the mission of the X16 is to get some newbies involved, and from where I sit, that really does mean getting some more content up here written in BASIC. Keeping that in mind, I'll probably be diving back into more old issues of The Transactor to do more conversions for the X16 and will continue to upload as long as I'm still having fun with BASIC. Cheers.
  6. 8 points

    Version 0.7.1


    This is a space invaders inspired game. Use the mouse or joystick to control the player ship. The shield segments can take 2 hits each. If enemies get too close you retreat back to the last level. You lose when all your lives are gone or you fall back to earth level again. Now with 7 playable levels Requires emulator R38! Roadmap: more diverse enemy formations enemy attack raids over the sides power ups (shields, double cannon, disruptors etc.) boss enemy joystick control done music done Different enemy sprites. done Sprite animations. done for player sprite and enemies fade in/out of palettes and backgrounds. done more levels with more backgrounds (all planets of the solar system), done sound effects basics done title screen How to use with the local emulator: Unpack ZIP file into the same directory as the emulator. Start the emulator, then enter LOAD"INVADERZ.PRG" RUN
  7. 8 points

    Version r38 ("Kyoto")


    Precompiled emulators for Windows, Mac, and Linux. This is the latest version. Older versions can be downloaded from the GitHub releases page. (Note: To run on Mac use "Ctrl-click/Right-click > Open" instead of "Double-click" due to security protocols)
  8. 7 points

    Version 1.0.0


    I played this game with my friends in grade school on the PET. Though unable to find the original, I found a stripped-down VIC-20 version -- which showed me the program's essential structure -- and the later 1986 version by Commodore, mainly designed for the Commodore 64. I used both to create this version, which retains the original algorithms, and tries to emulate the older PET version. It uses very little X16-specific code -- exactly, SCREEN and COLOR. It relies on the 40 x 25 screen, and it uses just about all 25 of those rows. The rest is all PETSCII and BASIC 2.
  9. 7 points

    Version 1.0.0


    This is an early concept based upon the ideas and code shown here https://www.8bitcoding.com/p/tiles-in-assembly-ii-line-interrupt-for.html ============================================================ The PARA.PRG is my first attempt recreating the psudo parallax seen in games from the 16bit and 8 bit era. This is all on the same layer the same as in the above mentioned blog. The difference here was to make the background reactive to the foreground movement. Although this is hardcoded to move 1 pixel per frame forward all the slower sections are all based on how fast the foreground is moving. I'm hoping to expand upon this to also support vertical perspective tricks. ============================================================ Instructions: copy the PARA.PRG file to your emulator location or run the x16emu from the files location. run x16emu and type the following commands LOAD"PARA.PRG" RUN
  10. 7 points

    Version 1.0.0


    Vertical "raster" bars, also known as "kefren bars" from the old school demo scene. Written in Prog8. No sprites used, it's bitmap graphics (with a trick...). Source is here https://github.com/irmen/prog8/blob/master/examples/cx16/kefrenbars.p8
  11. 7 points

    Version 1.2.1


    This is a Breakout/Blockout/Arkanoid inspired game. . It is my very first try on the X16. You have to use a mouse or a joystick (cursor keys + enter on the emulator) It's only tested it on the emulator (R37, R38), so if anyone of the few with real hardware can give it a go, I'm eager to know the result. Available power ups (no keycodes, you have to catch the dropping badges): [L]: adds one live to player [M]: paddle is magnetic for 30 seconds. Can only hold one ball at a time. [C]: twin laser cannon for 15 seconds, 16 rounds in a row (if you are quick). [D]: Duplicates ball, so now you can have fun with 2... Keyboard commands: 's': sound on/off. 'p': pause game 'q': quit game. How to use with the local emulator: Unpack ZIP file into the same directory as the emulator. Start the emulator, then enter LOAD"BRIXX.PRG" RUN Or use the "Try now" button. Let me know what you think...
  12. 7 points

    Version 0.6b


    Chase Vault: a game for the Commander X16 by Matt Heffernan You are a pith-helmeted adventurer trying to collect artifacts from an ancient Caribbean crypt, haunted by the ghosts that want to keep their secrets. Collect all the artifacts in each room and try to make it to the end. There are many locked doors, so make sure to pick up any keys you find! If you collect each kind of native fruit, you will have more lives, so be on the lookout for them in each room. Also, the ghosts are vulnerable for a short amount of time after you collect each voodoo talisman, so you can chase them for a change. To play, load CHASVALT.PRG and run. You can use joystick 1 or the keyboard (cursor keys to move) if no joystick/controller is connected. Keep up to date with future releases on GitHub: https://github.com/SlithyMatt/x16-chasevault Enjoy and good luck!
  13. 6 points

    Version 1.0.0


    Another small intro. Sadly still no audio. If only it wasn't so painful to debug audio and if I had any sort of musical talent... Thanks for looking!
  14. 6 points

    Version 0.5


    A game where you have to visit all fields in a maze with your "block". For the latest version and to see the source, go to https://github.com/JimmyDansbo/cx16-maze
  15. 6 points

    Version 1.1.1


    This is a shoot'em up game in progress. Gradually I'll update this game as it progresses, but currently this is a non-playable game. This demo for the moment documents the tile engine. This lava planet is under attack! The player will defend the planet using an evolving ship configuration, and will need to use various landing stations on the background for repaing, refuelling and recharging weapons. The background will also contain various defense capabilities but will also contain enemy attack sites deployed on the planet! I use various softwares to create the graphics of the game myself (which is a lot of work!). But to speed-up the work, and to make the graphics modular, this method is the way to go! The base software for graphics modelling is Blender (blender.org - Home of the Blender project - Free and Open 3D Creation Software). This allows me to create 3D models and to generate the graphics in retro style, pixel perfect! Tiling is done using Pyxel Edit (Pyxel Edit: pixel art and tileset creation tool) to create the tiles used for the background, based on the generated background from Blender. Sprite animations and graphics fine tuning (like palette creation and remapping), using done using Aseprite (Aseprite - Animated sprite editor & pixel art tool). The background tile engine generates a random generated background, which will result in the player needing to be tactical or strategical in his choices as time evolves. The placement of the tiles is dynamic, based on a weighted system, so the randomness can still be "tuned" over time. The idea is that on this background, through further weighted randomness, more and more enemy installations will appear, (and less friendly installations) and that the player will need to be careful when to recharge, repair or refluel! Different levels will of course make this game more difficult, but that is the future ... You can find the complete code of this game here: X16_Code/cx16-tileengine at main · FlightControl-User/X16_Code (github.com) This program MUST be started from an sdcard, as it uses proprietary loadroutines that only work on the emulator using an sdcard configuration. These load routines are necessary to have complete control of the memory in the X16! Download the files into a folder, Unzip the x16.zip file, which creates an x16.vhd file. Run x16emu -sdcard x16.vhd -prg tileengine.prg -run to run the demo. Please try it out and let me know if you think this start and concept has potential and what I would need to be careful of or change.
  16. 6 points

    Version 0.8


    VTUI (Vera Text User Interface) library Can be used to create text user interfaces using VERA instead of relying on the KERNAL functions for writing to screen. The library is less than 1KB which means it can be loaded into Golden RAM at $400. As an alternative, include files are provided for Acme and CA65 assemblers. See https://github.com/JimmyDansbo/VTUIlib for documentation, examples and include files.
  17. 6 points

    Version 1.0.0


    Just a fun small intro put together to play around with the X16 emulator. I'm looking forward to the next iteration of the hardware and emulation, especially around the audio. Thanks for looking!
  18. 6 points

    Version 0.1.0-alpha


    If you have problems with the audio quality in the "Try it now", download and run in the offline emulator with the command line option "-abufs 12" or more. The CONCERTO synthesizer is what I intend to be the sound generating side of a music making software for the Commander X16. It uses the 16 voices of the PSG and aims to get the very maximum out of them. It is not quite there yet but has a lot of strengths already. The main features: 32 synth patches 16 monophonic channels, each playing a dynamically assigned synth patch up to 6 oscillators per voice up to 3 envelopes and 1 LFO per voice pitch, volume and pulse width modulation volume control per voice ("velocity") save and load presets (currently 1 slot - yee!) Features that are planned (for the sound engine): wavetables (à la MSSIAH) pitch bend dynamically assignable modulation (e.g. for influencing vibrato depth while playback) snappier envelope option somehow include the YM2151 multi step envelope generator (MSEG) I wanted to put this out here so that people can work with it, even though it is still far from finished. The reason is simple: I don't know if I will finish it and even if yes, I don't know when. What can you do with it right now? You can use the sound engine independently from the GUI, e.g. for playing music and/or sound effects in your game. You need to provide your own player at the moment, but the sounds are ready to be used by it. You could also use the GUI and reprogram it to do something completely different, i.e. use it as a template for your own application. For more information, look into the README and the source files and/or send me a PM. If you find bugs, please let me know, or post an issue on GitHub. https://github.com/biermanncarl/cx16-concerto
  19. 6 points

    Version 1.0.2b


    This program is written using kickc of Jesper Gravgaard. I'm helping him to create a framework encapsulating the CX16 vera in order to be able to quickly create graphical effects for games. This is a short demo and I hope you like it. This program uses the keyboard to progress through the program! So be sure to run this from the desktop, since the emulator on mobile phones do not have a keyboard!
  20. 6 points

    Version 1.0.0


    3d animated Cobra MK3 ship from Elite! Uses 16 bits integer math and has hidden-line removal.. This is an almost 1-to-1 conversion of the same program I wrote for the C64, but it runs a lot faster on the CommanderX16 Here is the (prog8) source code https://github.com/irmen/prog8/blob/master/examples/cx16/cobramk3-gfx.p8 I haven't figured out how to wait for the Vertical blank yet, to reduce the flickering perhaps...
  21. 6 points

    Version 1.0.0


    Written in "C", in 2014 for the Commodore 64 and ported to CX16 in 2020. I wanted to know how hard it would be to make a chess AI. I am not a great chess player, nor did I research chess engines, so I made things up as I went. The end result is this chess which by any standards of chess, is not a good AI opponent. However, it's there and it's playable. Use and keys The user controls an on-screen cursor. The cursor changes color to indicate a state. The colors for selection are: Green - the piece can be selected Red - The piece cannot be selected as it doesn't have valid moves Purple - Empty tile or piece on the other side Blue - The currently selected piece Cyan - A valid destination for the currently selected piece To move the cursor, use the cursor keys. To select a piece, press the RETURN key while the piece is selected. To deselect the piece, press RETURN on the same piece again, or press ESC. To bring up the menu, press the M key, or the ESC key when no piece is selected. Pressing ESC in a menu backs out of the menu, to the previous menu or back to the game. Press RETURN to select a menu item and use the up and down cursor keys to change the selection. While a side is under human control, there are a few more options. Press B to toggle on/off a state showing on every tile how many of both black and white's pieces can attack that tile. Pressing A will toggle a highlight of all of the pieces on the opposing side that attack the selected tile. Pressing D will toggle a highlight of all the pieces on the side currently playing's side that can defend the selected tile. All three of these options basically give a visual representation of the Game Database. The colors are: For attackers Cyan and for defenders Red. Lastly, the game has an Undo/Redo stack that tracks the last 254 moves. Pressing U will undo the last move and R will redo the last move. In an AI/Human game, the undo will undo the last AI and human player move, so the human player can make a different move.
  22. 5 points

    Version 1.0.1


    How many sprites does the Commander X16 have? Let's find out, shall we! Written in Prog8. Source code is here: https://github.com/irmen/prog8/blob/master/examples/cx16/bobs.p8
  23. 5 points

    Version 1.0.0


    A Sokoban clone for the Commander x16. This started out, mainly to see if I could grasp the concepts behind the x16. No sounds or music, since this is a pure puzzle game. I have put in a fun level set called 'Sasquatch IV', publicly available at http://sneezingtiger.com/sokoban/levels.html. The code for this game can be found at https://github.com/envenomator/x16Sokoban.git Have fun!
  24. 5 points

    Version 1.0.0


    Variation of the quick sort demo, but this one using the 320x240x8bpp mode, which uses double the memory, and is that much cooler to watch Tap any key to progress from: Random Slowed down sort Random Full speed sort Back to Basic Note: that band of "non random" pixels below the middle of the screen is the default location of character tiles at $0f800 = $0ffff. This gets moved to right after screen memory at $04000 - $047ff (which is probably where it *should* default to, if you ask me :))
  25. 5 points

    Version (Video Demo)


    This is a demo of 26 different encodings for PCM audio playback, from the maximum bitrate (48.828 kHz, 16-bit stereo) the minimum (381 Hz, 8-bit mono) using the same non-copyright music track and fitting as much data as possible into 63 RAM banks (504 kB). Just press different letters to hear different samples. As seen on YouTube:
  26. 5 points

    Version 1.1.0


    This is a minesweeper clone for the Commander X16. It allows custom minefield sizes up to 38x24, with almost any amount of mines. To start, load and run MINEX16.PRG. Controls: Main Game Left click to reveal a tile Right click to flag a tile Click on the face to reset Press space to open the configuration screen (will reset the minefield) To exit, reset the machine (Ctrl-R on the emulator) Configuration Space to open and close Use the + and - buttons next to each digit to change the width, height, and number of mines Numbers are capped to a specific range; attempting to select an invalid value will set the number to its maximum or minimum value Click any of the presets to set all of the numbers at once Note: The game uses kernal functions to handle the mouse, so any weirdness is most likely caused by the emulator.
  27. 5 points

    Version 0.0.0


    I've since removed the external file dependencies for building the UI which means folks can finally try Command Tracker out more directly in the emulator. A very basic song exists to start. There is no loading and saving yet and, as noted in the dev log on the forums, it's buggy and, as of yet, no real sound engine (rather a very very basic one) but it does work and demonstrates what I'm trying to work towards in a full featured tracker. It is modeled loosely after Impulse Tracker on PC.
  28. 5 points

    Version 1.0.0


    Commander X16 Sprite Editor This is a screen snapshot and the executable file of a Commander X16 Sprite Editor which is built from "C" source files I’ve been developing that currently runs on Release 37 of the emulator. Features The sprite editor supports all combinations of sprite height and width dimensions up to 64x64. The sprite editor is currently limited to 4 color bits per pixel, but provides the ability to edit the RGB values of the first 16 entries of the color palette. The sprite editor supports a pen mode which reduces the keystrokes required to assign colors to sprite pixels, and the ability to shift the design of the sprite to make more room near the edge of the sprite. The sprite editor provides the ability to export color palette data as well as sprite data to the terminal in a BASIC program format and also in a format more amenable to importing into a C program. The BASIC program allows the sprite to be rendered and moved around a bit using the W/A/S/D keys. This export capability requires the -echo option when starting the emulator. Operation Cursor Movement The arrow keys are used to move the cursor around the sprite pixel edit grid. When width=64 the edit grid can be paged left and right using the less-than and greater-than keys ("<" and ">"), and when height=64 the edit grid can be paged up and down using the comma and period keys ("," and "."). Assigning Colors to Sprite Pixels The 0-9/A-F keys are used to assign a color to the sprite bit corresponding to the current edit grid cursor position. When pen mode is turned on using the P key, the color at the current edit grid cursor position is assigned to the pen, and this color is automatically assigned to pixels as the edit cursor is moved. The pen color can be changed by selecting a new color via the 0-9/A-F keys. Pen mode is manually turned off by pressing the P key a second time, and is automatically turned off when the cursor is moved past the edge of the edit grid and when the edit grid is paged when height=64 or width=64. The fill command (F5 key) fills the entire sprite with the color at the current edit grid cursor position. RGB Edit Mode RGB edit mode provides the ability to edit the RGB values of the first 16 entries of the color palette. RGB edit mode is entered and exited by pressing the F6 key. In RGB edit mode, a right arrow appears to the left of the selected color, and selected color is changed by using the up/down cursor keys. The red, green, and blue components of the selected color are changed by using the R/shift-R, G/shift-G, and B/shift-B keys. Sprite Design Shifting The sprite design can be shifted up or down one pixel row using the U and shift-U keys, and can be shifted right or left one pixel column using the R and shift-R keys. This feature is useful when a sprite design is not centered correctly when started and one runs out of space near an edge. The sprite design can be shifted to make more room near the edge which avoids having to start the sprite design over again at a new location. Sprite Options V-flip and H-flip (V and H keys) affect the display of the actual sprite but not the sprite edit grid. The palette offset (+/- keys) also only affects the display of the actual sprite (the edit grid colors and remainder of the screen colors are not affected). Screen Options The BG and FG options (F3 and F4 keys) provide the ability to change the screen background color and the color of the text on the screen. There's an anomaly associated with color 0 which is black in the standard color palette. Color 0 is shown as black on the screen and edit grid but is transparent when used in sprites, so the edit grid doesn't match the sprite with respect to color 0. Exported BASIC Program The exported BASIC program between line 10 and the DATA statements is constant. Line 10 varies with the height and width of the sprite and the DATA statements vary with the color palette data and design of the sprite. The SA7 value is based on the enumerated values of the height and width dimensions (0 for 8, 1 for 16, 2 for 32, and 3 for 64) and places these values into the proper position to be populated in the most significant nibble of the last sprite attribute register which has an offset of 7. The least significant nibble of this register is the palette offset which I assumed to be 0. The SA7 value is computed in the C program, but it could have been computed in the BASIC program since the enumerated values can be determined from the height and width which are exported on line 10 and palette offset is assumed to be 0. I deferred support for saving/loading palette and sprite data because I'm under the impression the emulator currently doesn't support file I/O, but the BASIC program provides a near-term workaround. The palette and sprite data exported in the BASIC program format can be reloaded into the sprite editor via the following steps: (1) start the emulator using the -echo option; (2) paste the BASIC program into the emulator; (3) execute the RUN command; (4) push the Esc key to quit the running program; (5) execute the NEW command; (6) load the sprite editor; and (7) execute the RUN command. The sprite editor will then pick up the palette data that was loaded into the color palette and sprite data that was loaded into the VERA sprite attribute registers and VRAM by the BASIC program. The following two steps are an alternative to step (2) above: (2a) paste the BASIC program into a text file; and (2b) use the emulator -bas option to load the program from the text file when starting the emulator. This alternative approach is recommended if you're having problems with the emulator corrupting lines when pasting the BASIC program directly into the emulator. The palette and sprite data are automatically exported when exiting the sprite editor to avoid accidental loss of data. The exported data can be recovered before reloading and restarting the sprite editor as described above. Potential Future Enhancements I'm considering enhancements including support for 8 color bits per pixel, saving/loading of palette and sprite data, rotation of sprites, and undo/redo of changes to the sprite graphics data in VRAM.
  29. 5 points

    Version 0.0.4


    This is a quick demo of a 2D graphics library I've been working on recently. It's written in assembler, and aims to make life a bit easier when it comes to drawing vector graphics. You can define individual polygons which can be moved about and rotated. The source code looks fairly daunting, but when it comes down to it, building, transforming and rendering the polygons is very straightforward. Hopefully this will form the basis of a game at some point soon. (Perhaps an Asteroids clone?) Once I sink my teeth into interrupt handling, I should be able to "vsync" everything so it's flicker-free. All comments and suggestions welcome! Short screen capture of this demo on YouTube (featuring my tunez!!): Commander X16 Demo - Vector Graphics in 6502 Assembly - YouTube WARNING: For those who are sensitive to flickering/strobing, please be aware that this may cause problems for you. -- See below for a quick preview of the game I'm working on, retro flickering and all!
  30. 5 points

    Version 0.1


    ux16vt is a UTF-8 and somewhat ANSI compatible terminal emulator for Commander X16. Currently the only useable "serial" port uses LOAD & SAVE to communicate between the X16 emulator and a glue process that moves data in and out of a POSIX pseudo-terminal. In the emulator LOAD "UX16VT.PRG" & RUN. On the host, compile and run emulator_glue.c. ## Unicode Support ux16vt supports up to 4096 1-bit 8x16 pixel glyphs selected at compile time from the Unicode Basic Multilingual Plane. Unknown characters are displayed as blank. Currently 672 of these glyphs are used covering 862 different code points. The following blocks are mapped: - Basic Latin (00-7f) - Latin-1 Supplement (80-ff) - Greek & Coptic (370-3ff) - Cyrillic (400-4ff) - Box Drawing (2500-257f) - Block Elements (2580-259f) Limitations: - no support for right-to-left text - characters are represented internally as 16-bit values, making any characters outside the basic multilingual plane complete inaccessible - completely mono-spaced text. full-width glyphs are not available ## ANSI Support Only sequences beginning with ^[[ are supported (Control Sequence Introducer). Only numeric parameters are read. A control sequence with more than four parameters will cause an unchecked buffer overflow. The following functions are available: A CUU Cursor Up B CUD Cursor Down C CUF Cursor Forward D CUB Cursor Back E CNL Cursor Next Line F CPL Cursor Previous Line G CHA Cursor Character Absolute [column] H CUP Cursor Position J ED Erase in Display K EL Erase in Line S SU Scroll Up T SD Scroll Down d VPA Vertical Position Absolute [row] f HVP Horizontal Vertical Position m SGR Select Graphics Rendition The only available modes for SGR are 31 to set foreground colour to red and 30,32-39 set the foreground colour to black.
  31. 5 points

    Version 1.1.0


    Usage Because of its simplicity the library can be stored in a 1K space below basic programs, starting at $0400. Save the EFFECTS.PRG program in the directory where your BASIC program is stored, which would typically be in the same directory from where you are running the emulator. Load library with LOAD command: LOAD”EFFECTS.PRG”,8,1,$0400 Since this routine after the first run adds a new interrupt handler it is good practice to only load it once. It is therefore recommended to do a simple check: IF PEEK($400)=0 THEN LOAD”EFFECTS.PRG”,8,1,$0400 And that is it. Now you only need to call the needed sound effect from the BASIC program with a simple SYS command. We have four different effects so four different addresses can be called: SYS $400 PING Is designed for events like picking coins or rewards. SYS $403 SHOOT Effect that can be used for shooting the gun or other weapon. SYS $406 ZAP Electricity zapping or perhaps a laser gun sound. SYS $409 EXPLODE Long explosion for when we successfully blow something up Alternative binary named EFFECTSHI.PRG that loads into memory at $9000 can be downloaded. Of course calls are then $9000 for PING, $9003 for SHOOT, $9006 for ZAP and $9009 for EXPLODE. Full source code and walk through is available at my blog: https://www.8bitcoding.com/p/simplest-sound-effects-library-for.html Demo video:
  32. 5 points

    Version 1.0.0


    A small intro/demo type thingy as the result of me trying to "dust off" and re-learn some 30 year old assembly. This took most of my Christmas break. Starting out I was really stumped by some of the VERA stuff: The registers, the layers, loading data, 4bpp colors, high bit addressing. But, eventually it started to make sense a bit. All this would have been impossible for me without the very helpful blogs at https://www.8bitcoding.com/ and https://justinbaldock.wordpress.com/category/retrocomputing/commander-x16/. The Vera Graphics Convertor was also very useful. I used KickAssembler for the code. I've uploaded the .asm file as well, just in case it's useful for anyone else learning this stuff. dust.asm
  33. 5 points

    Version 1.1


    This is a simple Tetris clone, originally written in BASIC, then reimplemented in assembly. Comments welcome. Have fun!
  34. 5 points

    Version 0.0.1


    Remake of Sega's classic game Columns. Currently plays a basic game. Source code is available at https://github.com/kcowolf/x16-columns.
  35. 5 points

    Version 0.8b


    XCI is a graphical adventure game engine for the Commander X16. It is inspired by past engines such as SCI and SCUMM, but designed to maximize the potential of the X16 and keep the games just small enough to run, and allow developers to create games without having to program in BASIC or Assembly. Learn more about XCI on the official GitHub page: https://github.com/SlithyMatt/x16-xci There you will find all the source code, documentation, and example code and templates. There is also a tutorial series currently in production on YouTube: In the downloadable ZIP file you will find the engine executable binary for the X16 (XCI.PRG) and two embedded archives of the Windows and Linux software development kits (xci.exe). The SDK is written in standard C and can be compiled to pretty much any modern platform, including Mac and Raspberry Pi. Stay up to date by watching the GitHub, and occasional builds will also be uploaded here.
  36. 4 points

    Version 1.0.0


    What is double PETSCII? What is PETSCII you may ask first. PETSCII is the extended commodore text character set. This character set has been designed in such a way that it would enable simple graphics on the screen. Which would make it easy for would be programmers on the system, to make card games and so on. However easy to use, it is not easy to create very nice graphics with it.... But... This has changed somewhat. If you search for PETSCII art, you see people are trying to get cooler and cooler graphics out of PETSCII. Double Petscii is using the Commander 16's native graphics modes to overlay two layers of PETSCII graphics. This demo is an experiment in how that may be used. Tech info: -It was made with the cc65, in C. -The PETSCII mode used is lores text mode, with two layers. (40x30 chars) -All colors are standard colors. -1 Color is used as a color to be sacrificed for non black transparency, so there are 15 colors to work with, not 16. -Pictures drawn in hyperpetscii petscii online drawing program. https://hyperpyxel.com/?p=229
  37. 4 points

    Version 0.8.0


    The project : https://github.com/VincentFoulon80/vixx Vixx: A bullet-hell game for the X16 Story: Your Commander X16 got a virus ! Thankfully you have an antivirus called Vix that'll get rid of the evil software. You play as the Vix Antivirus, scanning the computer trying to locate and destroy the virus. How to play : Joystick / Arrow keys : move the player Start / Enter : start the game, pause B button / Ctrl key : Panic! Your score increase over time, and also when you move near the bullets. You score points when defeating bosses and also when panicking ( 100 points per bullets on panics) Project status : The game is still in its alpha phase. I'm implementing new features and do not focus on the content. The first level is not final, and the second is just an infinite loop. It's more to give an idea of how the game will look. Devlog :
  38. 4 points

    Version 1.0.0


    It's a stopwatch. S to start/stop, R to reset, Q to quit to BASIC. As seen on YouTube: Source available on GitHub: https://github.com/SlithyMatt/x16-assembly-tutorial/tree/main/Lesson10
  39. 4 points

    Version 1.0.0


    After seeing others post conversions of classic basic programs, I remembered this one where the computer plays an animal guessing game with you. It tries to guess your secret animal by asking questions about it, and if it doesn't know the animal, it asks about your chosen animal so it knows about it the next round! (It's basically building a binary search tree) note: all knowledge is lost when the program exits. (maybe I'll make a future version where it can save/load the animals and questions) Source code is here: https://github.com/irmen/prog8/blob/master/examples/animals.p8
  40. 4 points

    Version 1.0.0


    This is a Commander X16 remake of the ZX Spectrum game "Penetrator" by Phillip Mitchell and published by Beam Software in 1982. This, version 1, does not have any audio.
  41. 4 points

    Version 1.0.0


    Matriculate was my first demo written for the X16 emulator, and an early version of it was featured in Dave's Building My Dream Computer - Part 2 video. It uses the default font, and emulates the Matrix rain of code. The source code for this can be found here: https://github.com/indigodarkwolf/x16-matriculate-text x16-matriculate-text.7z x16-matriculate-text.zip
  42. 4 points

    Version 1.0.0


    I needed a test program for the graphics routines in Prog8 that now also work in highres 4 color screen mode. I thought it would be fun to replicate a classic Amiga Workbench desktop screen, using just the graphics drawing commands. Note that the text font is actually the built-in iso charset. It is fairly similar to the Amiga's topaz font, so I just went with it and didn't bother to replicate the font pixel-perfect. Also I didn't bother to make a nice white/red sprite mouse cursor, maybe I'll try to add this in a later version. Here is a screenshot of a real Amiga workbench that I used as inspiration https://patric-sokoll.de/Museum/Computermuseum/Amiga_Kickstart/Amiga_Workbench_3.1_Vorschau.jpg
  43. 4 points

    Version 0.6


    Here is the Mandelbrot version of my Julia Set program, coded in assembly. Again, many thanks to the forum users here for their guidance, as well as the many YouTubers with their excellent tutorials on 6502 assembly language. It's a lot faster than the BASIC version, but nevertheless, benefits from being run in warp mode. Now in colour, with thanks to: VERA Overview (8bitcoding.com) NEW VERSION NOW WITH MOUSE CONTROLS! When the image has finished rendering, click the left mouse on the area of the screen you wish to zoom in to. To change the detail settings (cycle between Low, Med, High) click the right mouse button. Poke around in the old version... Try copying and pasting the following groups of POKEs to explore further (not all at once, just each paragraph in turn!): POKE $D6B,$19:POKE $D6A,$64:REM FX=6500 POKE $D6D,$13:POKE $D6C,$54:REM FY=4948 POKE $D6E,$00:POKE $D6F,$FF:REM FX=POS,FY=NEG POKE $D7B,$00:POKE $D7A,$01:REM STEP=1 POKE $D7C,$FF:REM ITERATIONS=255 SYS2061 POKE $D6B,$0F:POKE $D6A,$A0:REM FX=4000 POKE $D6D,$00:POKE $D6C,$00:REM FY=0 POKE $D6E,$FF:POKE $D6F,$FF:REM FX=NEG,FY=NEG POKE $D7B,$01:POKE $D7A,$F4:REM STEP=500 POKE $D7C,$FF:REM ITERATIONS=255 SYS2061 POKE $D6B,$0F:POKE $D6A,$878:REM FX=3960 POKE $D6D,$03:POKE $D6C,$E8:REM FY=1000 POKE $D6E,$FF:POKE $D6F,$FF:REM FX=NEG,FY=NEG POKE $D7B,$00:POKE $D7A,$32:REM STEP=50 POKE $D7C,$FF:REM ITERATIONS=255 SYS2061 To use the POKES above in the web emulator, first click the X in the top right corner of the web emulator. Paste the POKES above that you want to use in to the text field to the left, replacing what's already in there, then click the Run button. Individual addresses that can be poked: $D6A 30 75 .word 30000 ; FX $D6C A8 61 .word 25000 ; FY $D6E FF .byte $ff ; FX SIGN ff = negative $D6F FF .byte $ff ; FY SIGN ff = negative $D7A A8 61 .word 25000 ; STEP (lower=higher zoom) $D7C 10 .byte $10 ; ITERATIONS Old poke codes for the colour PETSCII version: step: POKE $0D3D e.g. 50 for a step of 0.05 (smaller number, higher zoom) iterations: POKE $0D3F e.g. 30 iterations about right, higher = slower start x: POKE $0D2F, normally 8 (for -0.8) - nicely centred at low zoom start y: POKE $0D31, normally 12 (for -1.2) - again centred at low zoom Old poke codes for the PETSCII version: step: POKE $0cff e.g. 50 for a step of 0.05 (smaller number, higher zoom) iterations: POKE $0d01 e.g. 30 iterations about right, higher = slower start x: POKE $0cf1, normally 8 (for -0.8) - nicely centred at low zoom start y: POKE $0cf3, normally 12 (for -1.2) - again centred at low zoom You Tube video of this in action: Commander X16 - 6502 assembly demo - Mandelbrot set - YouTube Commander X16 - Fractal Zoom Demo - 6502 Assembly - YouTube
  44. 4 points

    Version 0.9


    This is a work in progress, which means there's lots of missing functionality, the UI is rough, there are unfinished bits, and there's no "win" or "lose" condition, yet. The map is revealed as you explore. There are two kinds of treasures -- weapons and armor -- and one special treasure: the Amulet of Yendor. The goal of the game *will* be to find the Amulet of Yendor and exit the forest with it. There are 31 monsters in the forest. They (currently) are not differentiated, except by name. Movement is via the cursor keys. Trees are impassable. "Bump" a monster to attack it. There are no special commands, yet. I will add some sound effects before promoting it to 1.0
  45. 4 points

    Version 0.1.1


    Version 0.1 This software converts indexed and RGBA images in the formats PNG, JPG or GIF into binary data suitable for the VERA chip in the upcoming 8-Bit Computer Commander X16. Basic usage: Open an image file using File/Open... Configure the settings according to your needs. Export the image using File/Export Bitmap/Tiles/Sprites... Image Modes: You can open either an indexed image with an embedded palette or a regular RGBA image. Depending on the image mode, the software behaves slightly differently. RGBA: In RGBA mode, VGC needs to match the pixel colors to the colors in the palette. This can be done by comparing color similarity in RGB (Red, Green, Blue), HSL (Hue, Saturation, Lightness) or HSV (Hue, Saturation, Brightness) mode. Select the conversion strategy that works best for your image. Ideally load a palette that matches all colors in the image. You can specify the bit depth of the image by changing the pixel mode. 1 Bit per Pixel results in 2 colors, 2 Bits per Pixel result in 4 colors, 4 Bits per Pixel result in 16 colors and 8 Bits per Pixel uses the whole palette of 256 colors. The colors usable by the image depend on the palette offset. Indexed: In indexed mode VGC assumes that all pixels in the image have the correct index. It is still necessary to select the correct palette offset to give a correct export. On export the palette offset is subtracted and the index value capped on the selected pixel mode. Transparency Any pixel in the image that has an alpha value of 255 is set to the index selected in "Transparent Color Index". The minimum value is the palette offset. Image Mode: The VERA Graphic chip has three modes. Bitmap, tiled with a tile dimension of 8 * 8 pixels and tiled with a tile dimension of 16 * 16 pixels. Both tile modes split the image in separate tiles and limit their number to 256, since the VERA chip cannot address more than 256 tiles. It is also possible to limit their number even further. To use a tile mode the width and height of your image must be divisible by 8 or 16. The VERA chips supports 4 different resolutions: 640x480, 320x480, 640x240 and 320x240. VGC does not enforce these resolutions. It is also possible to generate sprite maps. In sprite mode the tiles can have 8, 16, 32 or 64 pixels in width or height. They are however limited to 128 tiles, and similarly, the source images dimensions have to be divisible by the tile dimensions. Sprites can only have a color depth of 4 or 8 Bits per Pixel. PRG File Header It is possible to save the exported binary file with 2 leading bytes. This is necessary for some load routines in the Commander X16 Kernal. Splitting files The exported files can be saved in chunks of a given size. The VERA Video RAM is paged in pages of 2048 bytes. Files can be split at any page, depending on how you want to store or load your data. The PRG File Header is saved to every individual file. The Palette You can load and save the color palette in the Format used by the Gnu Image Manipulation Program (GIMP) Other software like Aseprite can read and save this format too. You can also export the palette in the format used by the VERA chip. The PRG Header option is applied to this as well. The file splitting is not. Analyzing the image. You can double click on colors in the palette to change them. When you hold the left mouse button on a color in the palette, the parts of the image using this color are highlighted. Similarly, when you click on the image the color in the palette is also highlighted.
  46. 4 points

    Version 1.0.0


    A basic PDF template for a 320x240 screen so you can print up and draw your ideas the old fashioned way.
  47. 4 points

    Version 0.1.6


    NOTE: v0.1.4 seems to have fixed or reduced the severity of the corrupted dictionary in v1.3. Known Bugs: .S may give spurious results. DOES> is broken, do not attempt to use it. ________________________________________________________________ I just uploaded this to see if it runs in the try it now box. It appears to run fine, including the words that operate programmatically based on the width of the display. With some work with an effective in system Monitor program, it would be possible to save a copy of xForth including words you have defined on the console, but for practical purposes, this still requires a SAVE word to be able to save an image of the file after extending, and an INCLUDE word to load a script from a .SEQ file. Once those are written, I will be able to test to see how close to American National Standards Forth (ANS Forth) compliance this system actually comes. While it runs, it is not fully exercised, so I would be very surprised if there were not bugs. "Alpha" in the title means that there ARE bugs, though I fixed two substantial ones since the last release. Bug reports & suggested bug fixes both accepted, the first dutifully and the second gleefully. About upper and lower case: there is NO ASCII CONVERSION in this system. ANS Forth requires that ANS standard words be recognized in upper case, and its up to the individual Forth what they do about lower case. Most modern Forths are not case sensitive. This one is. So if you are in Graphics mode, do EVERYTHING in upper case. If you switch to Upper/Lower case mode, do EVERYTHING in lower case. If you enter the command WORDS to see all of the words in the dictionary, you will note some that look like /FORTH/ which is what I did when eForth had lower case words that were "platform" words that the standard Forth word in upper case was built upon. You will also see /DO/ /?DO/ and /LOOP/ as the "platform" words that DO ?DO and LOOP are built upon. No conversion also means the the line comment word \ is entered and shown as the English Pound Sterling, aka GBP, sign, _ is backarrow, and ^ is up arrow. On the command line, any character from $00 to space is treated as whitespace, as is any character from $80 to Non-Break-Space ($A0). For some brief usage examples and pointer to more about the Forth programming language, see the discussion forum posts attached to this upload.
  48. 4 points

    Version 1.0.0


    Simple snake game in Basic. Just testing the forum but game should still work in last few versions of Emulator. Have fun More details about the game and full walkthrough the source code can be found at: https://www.8bitcoding.com/p/crazysnake.html Cheers, Dusan
  49. 4 points

    Version 0.1.1


    This is an early build of my engine for side-scrolling shooters in the style of the original Mega Man games. Running the game: Load the file SSE.PRG into the commander X16 emulator. On windows, the easiest way to run it is the copy the emulator files into the game's directory and run the rungame_controller.bat or rungame_keyboard.bat files It currently contains only three levels and placeholder graphics. There is some basic sound support, but it is not used much. The game is played with Joystick 1 or the keyboard. If using an SNES controller, the L/R buttons may be used to quick switch between sections of the first level and the A-button may be used as a secondary attack. There is an experimental 2-player mode, that can be activated by pressing start on joystick 2 at the title screen, but it does not handle screen transitions so is not really usable at the moment. I have been keeping track of progress of the game on youtube. Here is the latest video showing gameplay. Changing levels: The json files in the tilemaps directory can be opened in the Tiled Map editor (https://www.mapeditor.org/) levels.cfg can also be changed to add or remove levels and change the overworld navigation data. After changes are made, run buildlevel.exe or buildlevel.py to rebuild the binary files from the json files. Player sprite by: sylvius fischer https://opengameart.org/content/fumiko-complete-charset
  50. 3 points

    Version Alpha Demo 2


    Alpha demo of Cavy's Quest - a point-and-click adventure game created using the XCI game engine. The current graphics are placeholders while the final graphics are created for the first beta release of the demo. Simply load and run XCI.PRG from BASIC, and all controls are done through the mouse. Premise: You are a guinea pig named Penelope who yearns for something more than a life in a cage. Explore your environment and solve puzzles to make your dreams of freedom come true.
  • Create New...

Important Information

Please review our Terms of Use