foft Posted May 24, 2018 Share Posted May 24, 2018 (edited) Had several Polish hardware projects not fallen off the earth, I would probably have a PBI driver already written which drives SD carts via SPI, but as it stands the performance is a bit of an unknown quantity. That's why I'm hedging my bets on IDE emulation on some of these newer MCU-based, SD card multi-carts. If you can do IDE emulation in accordance with the ATA specs, then that would be ideal. The only ATA commands used are Identify Device, Set Features, Read Sector and Write Sector (plus device reset). Any IDE emulation need not worry about Atari partitions (the standard being APT), since all partition and logical drive stuff is handled by the 6502 (this is also true of the XEX loader on which the PDM player is based). Yeah I'll try doing a minimal IDE->SPI bridge. How should this be exposed to the Atari (register use)? I think doing a full ATA implementation looks complicated but I'm sure the Atari interface must be pretty simple. I mean an 'Atari reg's to SPI bridge is probably easier then Atari regs->ATA->SPI bridge:-) Edited May 24, 2018 by foft 1 Quote Link to comment Share on other sites More sharing options...
tomsmart1 Posted May 24, 2018 Share Posted May 24, 2018 If you can crash the loader by invoking a search, I'd be interested to know how to reproduce the issue here, since this is the first I heard of any issue. Even a screenshot of the crash would be useful, since I'm not aware of any problem. If it's the player crashing, then I would not be in the least surprised, meanwhile. I test again with the version i downloaded yesterday. Same result pdm.exe loader screen get overwritten in parts over the only part thats still is ok is the upper part with "PDM PLAYER". during the search you can see that the clock symbol get updated. I am not able to select a entry and it not matter if i start it form the SIDE2 loader or the Ultimate1MB loader. Sorry at the moment i am not able to make a screenshot. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 24, 2018 Share Posted May 24, 2018 I need to prepare a document outlining the minimum requirements of IDE emulation since I'm explaining the same thing in multiple locations at the moment. Absolute minimum requirement is the 8 basic IDE registers, and it's useful to be able to reset the device. These are the SIDE2 registers as an example: IDE_DATA equ $D5f0 IDE_ERR equ $D5f1 IDE_SCNT equ $D5f2 IDE_SNUM equ $D5f3 ; LBA 0 IDE_CYLL equ $D5f4 ; LBA 1 IDE_CYLH equ $D5f5 ; LBA 2 IDE_HEAD equ $D5f6 ; LBA 3 ($Ex) IDE_STAT equ $D5f7 IDE_CTRL equ $D5f8 ; Device control (used for device reset) One could implement a latched sixteen bit data register to do away with the need for 8-bit PIO mode, but I'm not sure off the top of my head how that would work with the PDM Player (since I didn't code up an IDE Plus 2.0 version yet). Bare minimum required commands are read (0x20), write (0x30), Indentify device (0xEC) and Set Features (0xEF, if no sixteen bit data bus is provided). Only the following information from the Identify Device buffer is employed by APT tools: 1 Number of logical cylinders 3 Number of logical heads 5 Number of logical sectors per track 10-19 Serial number (20 ASCII characters) 23-26 Firware revision (8 ASCII characters) 27-46 Model number (40 ASCII characters) 60-61 Total number of user addressable sectors (LBA mode only) CHS data is used by the partition editor when laying out the MBR. The three strings can be populated with generic place-holder information if necessary. Of course I'm not delving into the entire APT implementation here, which ideally requires a PBI device ROM. 3 Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 24, 2018 Share Posted May 24, 2018 I test again with the version i downloaded yesterday. Same result pdm.exe loader screen get overwritten in parts over the only part thats still is ok is the upper part with "PDM PLAYER". during the search you can see that the clock symbol get updated. I am not able to select a entry and it not matter if i start it form the SIDE2 loader or the Ultimate1MB loader. Sorry at the moment i am not able to make a screenshot. OK - as long as it's not the loader's search function that's crashing, I'm not over concerned at this moment in time. Likely some issues with the display code, which was subject to aggressive modification during adaptation from the SIDE loader. Workaround would be not to invoke the search function if it's causing you problems. Since the player only lists PDM files (and folders) and there is to the best of my knowledge only one PDM file currently in existence, hopefully issues with the search facility aren't too much of an impedance. Quote Link to comment Share on other sites More sharing options...
Xuel Posted May 24, 2018 Share Posted May 24, 2018 A long time, probably. I'd have to read up on the SCSI protocol and invest time I don't currently have in testing it. U1MB_Xuel.zip Go to System->Configure System->Firmware->Firmware Manager, then "Add", navigate to U1MB.ROM, and set the type to Ultimate 1MB, making sure you "Set as default". Your VHD should be formatted FAT16 or FAT32, without or without MBR partition table, and should have the player and the sample file in it. Boot the emulated machine, pressing 'L' to start the loader. Go to the Options menu in the loader and turn off internal BASIC, then in the launcher menu (rocket), hit enter on PDM.XEX and then use a very similar interface inside the player to do the same thing with the sample file. I think I followed these instructions and verified BASIC is disabled but I'm still getting a corrupted screen: Probably doing something silly. Maybe I'll PM you for remedial education. Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted May 24, 2018 Share Posted May 24, 2018 This is where I turn off basic.. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 24, 2018 Share Posted May 24, 2018 (edited) I think I followed these instructions and verified BASIC is disabled but I'm still getting a corrupted screen: I can achieve the exact same result by going to System->Console Switches and enabling "Cart SDX", which would explain the ROM where the screen data should be. If you disable the aforementioned setting, all should be well, although output it not optimised for Altirra's POKEY emulation. As well as disabling SIDE's SDX ROM, by the way, you might enable the PBI HDD which suppresses the external loader ROM and allows proper access to the hard disk via the OS. Edited May 24, 2018 by flashjazzcat 1 Quote Link to comment Share on other sites More sharing options...
a8isa1 Posted May 24, 2018 Share Posted May 24, 2018 (edited) I believe I'm having the same issue as Xuel but my screen corruption is different. I'm sure my environment is different. linux (Knoppix live)/wine/Altirra/real CF card (2GB). Edited May 24, 2018 by a8isa1 Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 24, 2018 Share Posted May 24, 2018 Looks like ROM again. Quote Link to comment Share on other sites More sharing options...
a8isa1 Posted May 24, 2018 Share Posted May 24, 2018 (edited) No joy with SIDE 2 + U1MB but without U1MB I can run PDM.XEX from an ATR (D1:) I'm not a SIDE 2 or U1MB owner. Probably doing some silly n00b thing. Edited May 24, 2018 by a8isa1 Quote Link to comment Share on other sites More sharing options...
Brentarian Posted May 25, 2018 Share Posted May 25, 2018 PDM Stereo: Is this a possibility? I asked this question a while back, and didn't see a reply. Could this be implemented for Stereo Pokey boards, and if so what would get compromised if anything? PDM Stereo would be even more incredible! 2 Quote Link to comment Share on other sites More sharing options...
Xuel Posted May 25, 2018 Share Posted May 25, 2018 I can achieve the exact same result by going to System->Console Switches and enabling "Cart SDX", which would explain the ROM where the screen data should be. If you disable the aforementioned setting, all should be well, although output it not optimised for Altirra's POKEY emulation. That was it! Thanks! Sounds good in Altirra with the following hacks: "e 44df d" "e 44e4 c". 2 Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 25, 2018 Share Posted May 25, 2018 No joy with SIDE 2 + U1MB but without U1MB I can run PDM.XEX from an ATR (D1:) I'm not a SIDE 2 or U1MB owner. Probably doing some silly n00b thing. Yes: PDM.XEX is a standard binary which works from DOS but it has rather an obnoxious load address at the moment ($1000). The salient point here which I should probably have underlined is that it simply needs to run with internal BASIC off and no cartridge ROM present, but since SIDE2 is a cart, SIDE2's ROM must also be disabled. You can do so by enabling the PBI HDD on an U1MB/SIDE setup, since the PBI BIOS will then suppress the SIDE loader ROM at all times. But you could also run the player from the loader on the SIDE cart itself on a stock 64K machine with no U1MB present. This would also guarantee that BASIC and the SIDE ROM are disabled (since the SIDE loader turns its own ROM off when it loads an XEX). That was it! Thanks! Sounds good in Altirra with the following hacks: "e 44df d" "e 44e4 c". I should probably add an emulation on/off option. I'm thinking of storing options in a plain text config file on the FAT. The user would simply need to create an empty file and the player would then update it on the fly. PDM Stereo would be even more incredible! To jog this discussion along a bit: I wondered how bad things would sound if we simply interleaved left and right channel data and drove both at half the bitrate. It takes 20 machine cycles to play eight bits of sample data, and each iteration must not exceed 37 cycles at the currently implemented bitrate. Most of the other 17 cycles are already consumed by the IDE buffering mechanism required to maintain uninterrupted playback. 3 Quote Link to comment Share on other sites More sharing options...
NRV Posted May 26, 2018 Share Posted May 26, 2018 (edited) I did a quick test with the same song playing in both channels (left / right) and at least in emulation it seems alright. So, can someone test the "_rh" versions in real hardware (1 MB carts for NTSC or PAL)? Probably would try to do a real stereo test later (is a little more complicated, but should not be much more). The "_emu" versions sound good in Altirra with the stereo configuration (and louder than mono). monox2.zip Edited May 26, 2018 by NRV 5 Quote Link to comment Share on other sites More sharing options...
NRV Posted May 27, 2018 Share Posted May 27, 2018 Well, this is real stereo, but the effect is kind of subtle. Will try a better sample later and with less noise. stereo.zip 5 Quote Link to comment Share on other sites More sharing options...
NRV Posted May 27, 2018 Share Posted May 27, 2018 Those wonderful moments where you are finishing your code and try a final improvement, that just move your critical path code over the 105 cycles per line. Then you cannot live with the imperfection.. so you end moving all the code to page 0 just for 6 extra cycles. First, the pal version of the previous file, that I forgot: stereo.zip Then a new sample (from Marble Madness arcade), that clearly shows the stereo effect. Check the ntsc version in the emulator if you can, the wave visualization is nice stereo2.zip I tried to have the smaller delay between changing the left and right channels, but I really don't know if that delay could produce some kind of audio artifact or not. 5 Quote Link to comment Share on other sites More sharing options...
Rybags Posted May 27, 2018 Share Posted May 27, 2018 Request - Roadblasters music. Atari did some great arcade music and effects with the higher end Yamaha chips in the late 80s. I downloaded from this video and used Mediacoder to rip the relevant section. Of course unlikely the whole thing will fit in. The includeds section are part of Goal 1 and Goal 2 - YT original here www.youtube.com/watch?v=X02VJO67cQg ROAD BLASTERS Sound Track 360p.wav 1 Quote Link to comment Share on other sites More sharing options...
thorfdbg Posted May 27, 2018 Share Posted May 27, 2018 I'm not sure if this technique is ever actually used in existing games or demos, but using 2 POKEY channels and two timers, it should be possible to get 8-bit linear PCM output through POKEY. Set one timer to the desired sample rate and set one 4-bit volume level for the upper 4 bits of a sample while the lower 4 bits go to the other channel. The second channel gets its volume then cut again to 1/16 by using the second timer to set the duration of the pulse to 1/16 of a sample period. Yes you'd get noise at low sample rates (more and more audible below 11 kHz) but that's true to some extent for harmonics of low sample rate PCM in general. (and not the same sort of squeal and noise as 1-bit PDM/PWM on a PC speaker or beeper or whatnot) The problem here is that you (wrongly) assume that the output amplitude of Pokey would depend linearly on the volume setting. It does not. If it would, tricks like the "triangle wave" (which isn't really a triangle) wouldn't work. In order to keep distortions low, you would need to carefully calibrate the process to individual chips. Quote Link to comment Share on other sites More sharing options...
emkay Posted May 27, 2018 Share Posted May 27, 2018 (edited) The problem here is that you (wrongly) assume that the output amplitude of Pokey would depend linearly on the volume setting. It does not. If it would, tricks like the "triangle wave" (which isn't really a triangle) wouldn't work. In order to keep distortions low, you would need to carefully calibrate the process to individual chips. A total mixup of different things. The resolution isn't really built on the bits, it's also built on the pulse width/Pulse Density. The resulting power package is the clue here. Also. The volume problem of the Generators is not the same. As the waves of different channel add physically together on the generated wave (phase , shift... positive negative signal addition) ... OK just some imagination helper... The short "phaser FX" before the tune changes after 0:33 , is showing that POKEY is able to do manipulations that influences the analog output to create "analog signals" without any digitizing noise.... The way to a solution for the best "sound" is to get the channels 100% in co-relation. Edited May 27, 2018 by emkay 1 Quote Link to comment Share on other sites More sharing options...
Mathy Posted May 27, 2018 Share Posted May 27, 2018 Hello guys How do I turn .bin into .car? My Ultimate Cart doesn't show .bin files. Sincerely Mathy Quote Link to comment Share on other sites More sharing options...
pseudografx Posted May 27, 2018 Share Posted May 27, 2018 Just rename, I guess Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 27, 2018 Share Posted May 27, 2018 How do I turn .bin into .car? My Ultimate Cart doesn't show .bin files. You can mount a BIN file as a cart in Altirra and save it as a CAR file, although I assume many other stand-alone tools exist which will do the same job. Renaming the file won't work since CAR files include a 16 byte header which contains a cart type descriptor. BIN files don't have this header. Quote Link to comment Share on other sites More sharing options...
NRV Posted May 27, 2018 Share Posted May 27, 2018 Yes, in the case of my examples first you need to mount the bin in Altirra as a cart type "42*: MaxFlash 1M .. (bank 127)". After that you go to "Save Firmware / Save Cartridge" and save it as a ".car" file. You can also mount my examples in Altirra as type "*MaxFlash 1M .. (bank 0)", but then you cannot save them as a ".car" later. 1 Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted May 27, 2018 Share Posted May 27, 2018 mmlv6_pal_rh sounds pretty impressive on real hardware: just tested it on the 1088XEL using my Ultimate Cart. I'll try to record it through the capture dongle if I get time, since the camera hasn't really been doing these things justice. Background noise is pretty low. Any chance of some raw stereo files for the IDE player or some code samples? I doubt I can do better than 44KHz per channel, so stereo on the IDE player may require the bitrate to be chopped in half on each channel. Quote Link to comment Share on other sites More sharing options...
Mathy Posted May 27, 2018 Share Posted May 27, 2018 Hello guys How do I load a file into Altirra? I'm running a bottled version on my iMac. Sincerely Mathy Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.