Jump to content

Xuel

Members
  • Posts

    849
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Xuel

  1. Here's a quick hack of my previous hack to add a simple missile sound: inv-add-missile-sound.zip Not a very faithful rendition of the original sound I'm afraid. If someone can make an instrument in a tracker like RMT or create any kind of program to play the sound, I can try to incorporate it.
  2. Here's one way to fix it: 10 REM ASSEMBLY CODE FROM HTTPS://WWW.ATARIARCHIVES.ORG/ALP/CHAPTER_8.PHP 15 REM SEE LISTING 8.2 20 GRAPHICS 0:POKE 752,1 30 SETCOLOR 1,0,0 40 DL=PEEK(560)+PEEK(561)*256 45 REM READ IN ASSEMBLY CODE 50 FOR I=0 TO 49:READ B:POKE 1536+I,B:NEXT I 60 DATA 72,152,72,172,0,4,185,2,4,141 70 DATA 10,212,141,24,208,238,0,4,173,0 80 DATA 4,205,1,4,144,5,169,0,141,0 90 DATA 4,104,168,104,64 91 DATA 165,20,197,20,240,252,169,192,141,14,212,104,104,104,96 95 REM MODIFY DIPLAY LIST FOR INTERRUPT 100 FOR I=6 TO 27:POKE DL+I,PEEK(DL+I)+128:NEXT I 110 FOR I=2 TO 3:POKE DL+I,PEEK(DL+I)+128:NEXT I 195 REM READ IN BACKGROUND COLOR DATA 200 POKE 1024,0:POKE 1025,24 210 FOR I=0 TO 23:READ B:POKE 1026+I,B:NEXT I 220 DATA 25,20,25,20,25,20,25,20,25,20,25,20 230 DATA 25,20,25,20,25,20,25,20,25,20,25,15 235 REM POINT TO DLI ON PAGE 6 AND ENABLE INTERRUPT 240 POKE 512,0:POKE 513,6 245 X=USR(1571) 250 GOTO 250 Result: Line 91 adds a new assembly routine to set NMIEN to $C0 right after a vertical blank. This insures that the first DLI fires at the top of the screen instead of some random line. Line 50 adds 15 to the loop to account for the extra assembly code. Line 100 subtracts 2 from the loop to avoid setting the DLI flag on the Jump and Wait for Veritical Blank instruction. Line 110 adds another loop to set the DLI flag on the last blank line in the top margin and the LMS mode 2 instruction. The final display list looks like this: Altirra> .dumpdlist 9C20: x2 blank 8 9C22: blank.i 8 9C23: mode.i 2 @ 9C40 9C26: x22 mode.i 2 9C3C: mode 2 9C3D: waitvbl 9C20 Note that the DLI fires on the last line of the lines implied by the modeline. That's why you want to put the first DLI on the last blank line, not the first mode 2 line. Line 230 uses 15 as the last color to demonstrate that the table is now properly synced to the screen. You can change it back to 20. Line 240 no longer POKES NMIEN. Line 245 calls the new assembly routine to set NMIEN=$C0 (192) after the vertical blank.
  3. In this version, when I set View -> Overscan mode -> Extended PAL Height, the bottom extended area is rendered as black. Simple test program: bg-colors.xex 3.20-test3: 3.20-test1:
  4. Cool! I found that the PAL version of Cavern10 works both in PAL And NTSC under ATXBasic. It exceeded the frame time under TBXL so I had to make a trimmed down NTSC version. So ATXBasic appears to be faster than TBXL at least in this case.
  5. Not sure if it's my program behaving badly or a bug in ATXBasic but I'm seeing corruption when typing "LIST". Steps: ENTER "D2:CAV10AXB.LST LIST (OK Here) RUN Hit RESET LIST (Some corruption. Several hearts in listing.) RUN Hit RESET LIST (Major corruption) After step 2: After step 5: After step 8:
  6. Very nice! I was able to get my ten-liners to work just by adjusting memory locations to avoid the A000-BFFF range. CAV10AXB.LST JUMPAXB.LST Cavern10 needs temp space to assemble the compressed data. I was able to move this from $A000 to $9000. This new version works on TBXL and AXB. Jump foolishly assumes the display list and screen are at fixed locations. So this new version only works on AXB and the original only works on TBXL.
  7. Sad news. Enjoying this nice collection of his tunes now:
  8. On Mac, you should be able to run it from the shell. You don't need Wine. You may need to add execute permissions with "chmod +x dis". Then just type "dis".
  9. Yeah, you're not looking for the sequence 82EA but rather looking the byte at that address. In the ROM it will be at location 2EA since the ROM starts at $8000. The sequence A9 11 is broken down as: A9 = LDA IMMEDIATE 11 = VALUE And 8D 1B D0 breaks down as: 8D = STA ABSOLUTE 1B = Low byte of absolute address D0 = High byte of absolute address Here you can see that PRIOR is located at address $D01B. You can kinda break down the instruction bytes like you showed since generally all opcodes that start with A are some kind of LD instruction, e.g. LDA, LDX, etc. and all opcodes that start with 8 are some kind of ST instruction. But that's doesn't fully generalize. For example $A8 is TAY, i.e. transfer register A to register Y. This is a single-byte, 2 cycle instruction whereas LD instructions are all at least 2 bytes and 3 cycles. The Altirra Hardware Reference Manual is the definitive guide. Trevin's page is a decent quick reference. To get the players to blend you need to set bit 6 of PRIOR but note players 1&2 blend only with each other and likewise for players 3&4.
  10. Here's a quick disassembly of your ROM using my disassembler, dis: moon-dis.zip Looks like PRIOR is set at 82E9: lda #$11 ; 82E9: A9 11 sta PRIOR ; 82EB: 8D 1B D0 So you can edit location 82EA to change the PRIOR setting.
  11. Wow, that works really well indeed. Thanks for the tip. You can also view and edit Atari fonts using Graph2Font.
  12. How far into Windy Mind does the pause occur? I'm not hearing an obvious pause in the XEX that I get from asapconv: Windy_Mind.xex
  13. OK, the "out of memory" error strongly suggests a memory leak. Closing Firefox and restarting every so often should be sufficient. No need to clear cache as this is purely a RAM issue.
  14. OK, I see. I suspect that there might be memory leak involving javascript Blobs. I suggest reloading the page after you've saved the mono 44kHz version and then converting to stereo 22kHz using "Browse..." again. In other words, avoid the "Reconvert" button when converting large files. BTW, the version of Java shouldn't matter since FujiConvert only uses Javascript (which is totally different than Java).
  15. If that message happens again, can you open up the console and see what file and line number it says the code failed on? When exactly does it occur? When you click on "choose file" or "reconvert"? During the conversion? During page loading? Maybe the javascript didn't finish downloading when you tried it. There's a 6MB json file, players.js, that contains all of the player code. Or maybe the browser ran out of memory. Closing the tab and reopening might help. BTW, all of the conversion happens on your local machine. So github's server is only busy while you're downloading the page. From that point on, everything is running in the browser.
  16. This already exists: Tools -> Keyboard Shortcuts Select Audio.ToggleMute from the Available commands list Click on the text input box above the "Key up" box Press the key that you want to bind (for example I use Page Down) Click on Add
  17. FujiConvert 0.2.4: Fixed issues found by Microsoft Edge It works for me in Chrome, Firefox and Edge on Windows 10. Are you using the github.io site or running a local copy? If running locally, Chrome doesn't allow web workers when using the file:// interface so you'll need to use an HTTP server or run Chrome with --disable-web-security. If it still doesn't work for you, can you open the developer console and see if it reported an error?
  18. Some quick fixes: FujiConvert 0.2.3: Fixed PCM4+4 initialization after pause/resume Removed CSS-animated progress bars that slowed down the browser Fixed 7800Hz on Firefox
  19. Correct. The 400/800 OS initializes AUDCTL to 0.
  20. Fixed: inv-fix-audctl.rom The problem is that the code doesn't initialize AUDCTL so it ends up being 00 after a cassette load and 28 after cart load. So I added code to initialize AUDCTL to 0.
  21. The PAL files should work on NTSC. They'll just sound slightly higher pitched than they should. Vice versa going from NTSC to PAL.
  22. A fine idea but I'm not sure how to do it efficiently in the browser. I may have to make an electron App version to support batch conversion.
  23. FujiConvert 0.2.2: Added sinc resampling (super slow) Added SIC! cart support Added preview wave file (always 8-bit regardless of method) I'm using Ron Nicholson's Quick & Dirty Simple Slow ReSampling technique which is indeed brute-force and slow as advertised. Set resampling effort to "None" to disable. Using "High" effort is enough to get a pretty clean chirp with a pretty clean cutoff. "Ultra" does a bit better. I'm using the sample from the Chirp Wikipedia page. Linchirp.ogg.zip Linchirp pcm4+4 mono 7800Hz sic pal high.zip Linchirp pcm4+4 mono 7800Hz sic pal ultra.zip The resampling effort just determines the window size for the sinc convolution: Low = 16 Medium = 128 High = 256 Ultra = 1024 The cutoff frequency is hard-coded at 0.45 * output sample rate. I would love (easy) suggestions for how to speed this up. I added the preview wave file download to verify that the resampling was working. Playing the result in the browser via WebAudio ("Play" and "Stop" buttons) doesn't give a true picture because WebAudio doesn't resample so you get artifacts. That's the whole reason that I added explicit resampling in the first place. See also this post.
  24. I suspect two things are happening for soft clear tones like this: 1) 8-bits is not enough dynamic range and 2) The imperfections of PDM are accentuated. Even Covox has some noise. Compare these stereo conversions: imm-trim pcm4+4 stereo 31200Hz atarimax pal.zip imm-trim covox stereo 31200Hz atarimax pal.zip
  25. You can use the bx command. For example, this will log all writes to ANTIC: bx "write>=$D400 and write<=$D4FF" "r; g" Example output during Self-Test: (200:105, 17) A=20 X=2C Y=00 S=FA P=35 ( I C) 50E6: 8E 0A D4 L50E6 STX WSYNC [$D40A] (200:112, 79) A=00 X=7A Y=00 S=FA P=37 ( IZC) 50E6: 8E 0A D4 L50E6 STX WSYNC [$D40A] (200:128, 74) A=00 X=7A Y=00 S=FA P=37 ( IZC) 50E6: 8E 0A D4 L50E6 STX WSYNC [$D40A] (200:144, 75) A=00 X=7A Y=00 S=FA P=37 ( IZC) 50E6: 8E 0A D4 L50E6 STX WSYNC [$D40A] (200:248, 51) A=00 X=00 Y=00 S=F9 P=76 ( V IZ ) C026: 8D 0F D4 STA NMIRES [$D40F] (200:249, 73) A=51 X=F9 Y=00 S=F9 P=75 ( V I C) C13A: 8D 03 D4 STA DLISTH [$D403] (200:249, 81) A=34 X=F9 Y=00 S=F9 P=75 ( V I C) C140: 8D 02 D4 STA DLISTL [$D402] (200:249, 89) A=21 X=F9 Y=00 S=F9 P=75 ( V I C) C146: 8D 00 D4 STA DMACTL [$D400] (200:251,105) A=E0 X=FF Y=00 S=F9 P=F1 (NV C) C178: 8D 09 D4 STA CHBASE [$D409] (200:251,113) A=02 X=FF Y=00 S=F9 P=71 ( V C) C17E: 8D 01 D4 STA CHACTL [$D401] Type ".help bx" for more info.
×
×
  • Create New...