Jump to content

playsoft

+AtariAge Subscriber
  • Posts

    658
  • Joined

  • Days Won

    3

Everything posted by playsoft

  1. Seeing as no one else took up the reins I have worked on it over the past week. The final A8 version was supposed to have the last little bugs fixed but there were still a few in there. Probably the worst one can be seen towards the end of the video that BIGHMW posted; on levels where the shields rotate the shield characters often end up appearing on screen where they shouldn't be. There were half a dozen or so issues and I am confident I've fixed most of them, but there were a couple of one-offs where all I've been able to do is tentatively make a change that might help. The intro screen is the drawing from here yars_strike.bin
  2. The explosions use player graphics and there are 2 players available in that portion of the screen. You don't want to be using software sprites for them, as that will consume more CPU time. As there are only 2 players available I kept the number of frames relatively small (5 frames) so they are unlikely to be cut off early. The way it works is that the first enemy you shoot uses one player for the explosion, the second enemy uses the other player; if you shoot a third enemy it will use the same player that was being used for the first one. So if the first enemy was still exploding it will be cut off short. Obviously more frames = more memory too. That said it may be that cutting the explosion short wouldn't happen that much and it might not look so bad if the frames were designed in a certain way.
  3. Yes Konstantinos that's correct. If you want to play around with anything then extract the build folder and run build from the command line. The software sprites are in the .bmp file, the formation graphics in the .a4 and the PM graphics are all .apl. When drawing the software sprite frames I tried to use as many pixels as possible to make them look bigger on-screen than they really are! build.zip
  4. I was happy with my multiplexer in AtariBlast and being an original game I was able to minimise the amount of flicker by designing the sprite paths around it, but even then there were complaints! Some of the paths in the challenging stages of Galaga have all 8 sprites in the same vertical space for a fair amount of time during which you'd only be able to display a single sprite once in every four frames if using multicolour sprites; once every other frame if single colour. I really don't think it would be greeted with much joy...
  5. Also I think there is a difference between what is acceptable on the two systems. There would be significant savings in both memory and CPU time if you went the sprite multiplexer route instead of character sprites, but I don't think the flicker would be well received on the 5200/A8; the VCS has always had flickering sprites, so it's more acceptable there (although I remember when my Uncle brought VCS Pac-Man we thought we'd got a dud cart!).
  6. Looks great, opens the door to using the 822 in games! (print maps etc...). Strange, my 822 seems to need the $4C in my test program; with Aux1 set to $00 there's no printer output at all, just farting noises; with it set to $4E I get normal text output, not bitmap. Paul
  7. I don't know if this will help but I disassembled the code from the owner's manual to see what it was doing. Basically if you send a SIO Put with Aux1 set to $4C ('L' for Line perhaps) then instead of printing the 40 bytes as characters it prints a single line of 240 pixels (the last 10 bytes are not used - although you do seem to have to send them). The attached test.s continually prints lines of random data out on the 822: The code in the owner's manual prints the screen out sideways; I attach the disassembly for that which I've commented but haven't done anything else with. Paul test.s test.xex commented.s
  8. Look forward to hearing them!
  9. Yes I've set the build up to generate two versions. I am working on something else at the minute, so will see if I get back to it after that.
  10. They are really good. Obviously it might be quite a while before they are used, but I've pulled them into the player alongside the start tune. I'll keep it organised with anything you post.
  11. I've not tried the other ones at 30Hz yet. I took the 60Hz SAP files and created new 30Hz ones from them by leaving out every other set of register values. They all sound much of a muchness to me and I didn't notice any difference resending the data again. I don't think I hear that glitch but it might be more noticeable with headphones - I don't have any but I will connect my A8 up to my hifi tomorrow and see if I can hear anything.
  12. Yes that sounds great. synth_5200.bin
  13. I've not tried resending the last data, will give it a go. What was going to be my final experiment was to take the 60Hz SAP, remove half the samples for 30Hz playback and spread the decoding effort over 2 frames (half the channels on the odd frames, the rest on the even). The start tune LZSS went from 751 bytes to 461. I'm probably not the best to compare how they sound as my hearing hasn't improved with age... Edit: both of these now repeat the last data when the registers aren't updated. jaden_5200_30.bin jaden_5200_50.bin
  14. I think I removed the right ones! It's now playing on just the 64K channels. synth_5200.bin
  15. 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
  16. ? I will rebuild the demo tomorrow with the updated file.
  17. 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.
  18. 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
  19. Yes interesting, a sort of harpsichord vibe to it. I think the 4 duration tables are the same, so more like 170!
  20. 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.
  21. Ah yes, blanking with DMACTL would be daring, I just put the blank scanline codes in the display list ($00..$70).
  22. 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
  23. 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... ?
  24. 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.
×
×
  • Create New...