Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by AndyMt

  1. Added a Kernal/ROM version check. Will only run on R37 and R38, as well as on custom ROMs on your own risk. This is in preparation for the upcoming R39 on which the current game won't work.
  2. Turns out I have to wait for an updated version of cc65 and it's cx16 libs. I tried hard to compile it myself and then fix the .inc and .h files - but failed. Anyone working on this? I can support by updating all the VERA and VIA addresses etc. in the asminc and include files.
  3. Yes, I thought about this. I actually know what's supposed to be in some of the banks, so I could just do the check without modifying anything.
  4. Super, thanks! It's anyway just needed for a few weeks until the official release and the web-emulator are updated. So I will just assume a custom ROM is indicating the latest ROM and board revision. And maybe the releases happen before I have updated my stuff anyway .
  5. Ok, if I see this correctly, right now in the emulator looking at $FF80 shows -38, which means ROM version equals emulator version? Using the one posted further up (upcoming R39?) gets me $FF, so it's a custom ROM, but presumably will be -39 once the emulator and ROM is released? It occurs to me, that what I actually need is to detect the board revision - so I know which RAM banking address to use and all the other hardware memory mappings.
  6. I'm in the process of updating Brixx and Invaderz to the new emulator and ROM. I want them to be compatible with R38 and R39 - but how can I detect which version the PRG is running? I know I can detect if I'm running in the emulator: read $9FBE/$9FBF, must read 0x31 and 0x36 This doesn't seem to be the version, just an indicator that the software is running on the emulator. Is there an official way to detect ROM/emulator version? I found different solutions, but none seemed officially supportet. Like reading $FF80 or $FFFA etc. What's the best approach there?
  7. I do this in "Invaderz" and "Brixx" by changing the palette. Of course this changes the entire screen, on all layers, including sprites.
  8. Isn't it nice that the restrictions the X16 architecture imposes leads to unexpected solutions ?
  9. I'm actually not sure, I chose 3 As Matt already wrote: the LFN doesn't matter. The load address does. But "save" is not possible with the host file system and with the SD card neither does in the emulator. Oh - and the files you load need to have the 2 byte header with the target address in, or just 0x0000.
  10. I can give you a code snipped written in CC65: uint32_t loadMusic(char* fileName, uint8_t device, uint8_t bank) { uint16_t addr = 0xa000; uint32_t totalRead = 0; uint8_t lfn = 3; setHighBank(bank); // Use cc65 kernal wrappers directly cbm_k_setlfs(lfn,device,0); cbm_k_setnam(fileName); totalRead = cbm_k_load(0,addr) - addr; if (!totalRead) { ScreenRestore(); printf("BRIXX: Error loading music for [%s]", fileName); exit(0); } return totalRead; } The music files I load in Invaderz or Brixx are around 40 to 80 kBytes. And are loaded totally fine, starting with the active high-bank, wrapping into the following banks seamlessly.
  11. Do you already have a VGM parser then? Right now I'm using SteveC's vgmcleaner in his music-player: https://github.com/StewBC/music-player This is somewhat half-way towards a VGM parser/player.
  12. Oh sorry, I missed that point. And I'd be interested in loading VGZ, too. Right now I'm loading uncompressed VGM files for music.
    I'm really impressed with this! It looks very promising, so one day, you might actually achieve a full port of Wolfenstein 3D.
  13. That's actually not necessary. The Kernal does this for you, I've used this in my Brixx and Invaderz games. The Kernal is intelligent enough to switch banks when you load into 0xA000.
  14. Video on the X16... wow! I'm looking forward to your first demo .
  15. The 2 layers can have different tile-sets (or fonts). So yes - you could use the 2nd layer with even a custom-made tile set. It will just be a bit complicated to combine the 2 in a meaningful way. You can see this in my "Brixx" game where the graphics for the bicks, frame and background is one layer and the high-score numbers etc is the other one. Be aware that the Kernal functions will only work with one of the layers, I think it's always "layer 1".
  16. This is a demo I wanted to do for a long time. I set myself the challenge: Would it be possible to show all 4096 colors of the X16 on a screen? The answer is "yes" I'm cleaning up the code now, so I can upload it to GitHub. Maybe then someone finds an even better solution.
  17. 4096 Color Demo View File This demo shows the full 4096 color palette of the X16 by using the raster line interrupt. The matrix is 64x64 colors. Due to limitations of available CPU cycles I had to add black gaps in between the lines. But I still thought it to be nice to look at. And it works in the Web-Emulator. Submitter AndyMt Submitted 02/15/21 Category Demos  
  18. Version 0.1


    This demo shows the full 4096 color palette of the X16 by using the raster line interrupt. The matrix is 64x64 colors. Due to limitations of available CPU cycles I had to add black gaps in between the lines. But I still thought it to be nice to look at. And it works in the Web-Emulator.
  19. I remember those. Happens every 8 pixels, right? That's the beauty of the VERA design and it's interface to the bus: it's pretty independent.
  20. Yes, that's what I'm going for. And I'll have to change the entire palette over multiple scanlines. This makes the line IRQ not all too useful - I wonder how much you could do on the C64...
  21. I experimented with the raster line IRQ the last few days, too. I got it working, but there is very few cycles left you can use. Updating a (256) color palette seems almost impossible. I'll try to use the auto-increment feature of VERA, to improve this, by storing the 2nd palette in VRAM, too. And that's with the emulator- no idea if this will work on real hardware.
  22. New update: Different background patterns + colors 'pause game' function
  • Create New...

Important Information

Please review our Terms of Use