Jump to content


+AtariAge Subscriber
  • Content Count

  • Joined

  • Last visited

  • Days Won


playsoft last won the day on August 7 2018

playsoft had the most liked content!

Community Reputation

689 Excellent

About playsoft

  • Rank

Profile Information

  • Gender
  • Location

Recent Profile Visitors

10,298 profile views
  1. I think I removed the right ones! It's now playing on just the 64K channels. synth_5200.bin
  2. To convert from RMT to SAP-R I export the RMT to a XEX and then record the SAP-R in Altirra. When doing this it makes a difference whether Altirra is configured for PAL or NTSC; in PAL it records the audio registers 50 times a second but in NTSC it's 60 times resulting in a bigger file. I did this for all of Jaden's RMT files, making PAL and NTSC versions of the SAP-R files and then compressing them with LZSS -8: RMT FILES LZSS PAL FILES LZSS NTSC FILES 205 Galaga - Challenging Stage.rmt 96 challenging_pal.lzss 102 challenging_ntsc.lzss 144 Galaga - Extra Life.rmt 74 extra_life_pal.lzss 87 extra_life_ntsc.lzss 292 Galaga - High Score.rmt 291 high_score_pal.lzss 372 high_score_ntsc.lzss 147 Galaga - Insert Coin.rmt 37 insert_coin_pal.lzss 42 insert_coin_ntsc.lzss 670 Galaga - Perfect!.rmt 319 perfect_pal.lzss 570 perfect_ntsc.lzss 309 Galaga - Results.rmt 283 results_pal.lzss 356 results_ntsc.lzss 366 Galaga - Start.rmt 598 start_pal.lzss 751 start_ntsc.lzss 2,133 bytes 1,698 bytes 2,280 bytes I generated 2 versions of the build with the start tune - the 60 version uses the NTSC data, the 50 version uses the PAL data but skips the playback routine 1 frame in every 6 to correct the speed for NTSC. The advantage of the 50 version is that the data is smaller but I think you can hear a slight difference between the two. jaden_50.xex jaden_60.xex
  3. 👍 I will rebuild the demo tomorrow with the updated file.
  4. Haha I thought you intended that distortion! If you play your file in RMT there's no distortion but if you export it as an Atari executable you get the distortion (you can try it, just select "file -> export as" and choose XEX). I think the distortion is caused by having the volume too high in the instrument envelope. I changed it from FEDC to 7654, exported it to a XEX and it sounded fine.
  5. I generated builds using the two tunes. There's not really much in it, Synthpopalooza's is slightly smaller and requires less cpu cycles although it is not as consistent. I did try the sap/lzss process on Synthpopalooza's but it did not compress as well as Jaden's, presumably because of the 16-bit values. jaden_5200.bin synth_5200.bin
  6. Yes interesting, a sort of harpsichord vibe to it. I think the 4 duration tables are the same, so more like 170!
  7. I much prefer your RMT one over the midi (plus that was the only midi file I could find, so the other tunes would be missing) and with the LZSS compression it's much more viable to include them. I really don't know if the remaining functionality will fit in a 32K cart anyway - and if I do target a bigger cart I can turn the other sprite drawing optimisations on.
  8. Ah yes, blanking with DMACTL would be daring, I just put the blank scanline codes in the display list ($00..$70).
  9. Thanks, that's fantastic, it certainly makes a difference to the cpu and memory overhead. As a comparison I tried 3 different versions of the start tune; the 7800 one, a midi file conversion and Jaden's RMT using LZSS (I used the 12 bit one for this). In terms of what they sound like, Jaden's is obviously by far the best. In terms of cpu cost, the 7800 is cheapest, then midi, then LZSS - appears to be a little over double the 7800 cost. In terms of song size, the 7800 is 100 bytes, midi is 180 bytes, LZSS is 344 bytes. In terms of player size, LZSS is the smallest although the 7800 does have other things in there for sound effects which are not used by this tune. I can't say there would be the resources available for it in a 32K cart but it definitely makes it more viable. vcs.xex midi.xex jaden_start_lzss.xex
  10. No nothing daring - both the screen map and the display list are double buffered, so with the off-screen buffer erase the old sprites, draw the new ones and create the display list so that it only has ANTIC 4 rows for those on which sprites were drawn. You are right, there are single line incoming waves where there may only be a couple of ANTIC 4 rows empty but I think that's enough to cover the overhead of doing this. I roughly estimate there are 100 cpu cycles available on a blank scanline and 50 available (averaged) on a scanline that is part of an ANTIC 4 row. So each one omitted claws back around 400 cycles (minus the overhead). In this case where the sprites are spread out vertically the other optimisation kicks in; because of that spread they tend not to overlap much, so the blank character optimisation gets used a lot. The opposite scenario is when they are all grouped together moving to their formation positions. Here the blank character optimisation isn't used much but removing the ANTIC 4 rows is. The two optimisations work so well together I could probably convince people it was all planned out like this in advance... 😀
  11. Thanks, being a space game I was able to make a couple of good optimisations with the sprites; (a) when drawing over a blank character just write the new data straight out, (b) replace any ANTIC 4 display list entries with blanks if nothing is drawn on those rows. I haven't picked this back up yet and I'm not sure I will (a bit too much pressure for me). I was aiming for a 32K cart - and there is about 8K ROM free and about 4K RAM free. There are times when it can't maintain 60Hz so I flicker one of the sprites. It's barely noticeable as it's 1 sprite in 10 and doesn't happen very often or for very long. I can speed up the sprite drawing but that costs another 5K ROM. I don't know if the remaining 8K ROM/4K RAM would be enough for everything else. It probably is a bit tight, so if it did need a bigger cart that might be the time to consider a more sophisticated music player, although to my non-musician ears I'm not sure the music in Galaga needs it - like Synthpopalooza says above, it might be more a case of mimicking the Namco sound chip.
  12. Plus there are platform and puzzle elements too... I loved the snake puzzle.
  13. The bank switching scheme is described here:
  14. It looks like a bug to me as you now have it crashing at the same point in 2 different scenarios. In Altirra with collision detection disabled the ROM image is unchanged, the collision detection registers simply don't report collisions. The hack tested on real hardware simply loads a 0 instead of reading the collision register.
  15. I hacked the 5200 ROM image from Atarimania to stop it reading the PM collision registers and it still crashes at the same point (the phoenix, not the spaceship) on real h/w: As there's no warp speed available on real h/w it does take over 11 minutes to get there, so maybe no one's ever got that far. Or perhaps there's a version of the prototype out there without this issue. I see you can buy a 5200 cart of it from the AA store, does anyone know if the ROM image used here was made publicly available? From the debug log in Altirra it's going out of bounds in a jump table. I imagine it will be tricky to fix given it's OK the first time round. Xevious_hack.bin
  • Create New...