Jump to content

foft

Members
  • Posts

    1,582
  • Joined

  • Last visited

  • Days Won

    4

foft last won the day on April 17

foft had the most liked content!

4 Followers

Profile Information

  • Gender
    Male
  • Location
    Nyon, Switzerland

Recent Profile Visitors

23,738 profile views

foft's Achievements

Stargunner

Stargunner (7/9)

1.9k

Reputation

  1. Awesome, I'll have a read of that. Many thanks again for your amazing work on the hardware manual and of course Altirra.
  2. So the ‘serial port reset’ on page 99 of the altirra hardware reference manual looks like what I read, although it says bits 3-5 and I did 4-6 thinking that is the clock selection bits. What part of the serial port does writing here actually reset?
  3. I should fix it in pokeymax, it sounds like @phaeron figured out what I did wrong in the vhdl - many thanks again!
  4. Do you have any more info on this? e.g. a register isn't behaving properly, there is a delay to such and such etc?
  5. Yeah it needs powering. Happy to build a specific core if you let me know which fpga, what you want in it + any specific pins. BTW another pokey replacement to try from @candle https://www.pcbway.com/project/shareproject/SimpleStereo_v4_8ec8e9eb.html I think the core for that is not currently open but there will be a Jed file published soon.
  6. From a software perspective pokeymax 1-4 are the same. There are some flags to show which features are enabled. So the plugin will work on any of them I think.
  7. Look at this to see the settings: http://www.64kib.com/atarixlfpga_svn/trunk/atari_800xl/atari_chips/pokeyv2/build.sh Then look at this post which describes them: Anyway iirc those others were special builds for: u1mb: manual switch for before there was a plugin xel: chip select changes since the xel has built in stereo logic and outputs. Linear: No non linear mixing, ie just add pokey volumes No right detect: mono music plays on one channel only, no attempt to detect it and play on both.
  8. Yeah definitely needs a cleanup, better error handling etc. Anywhere here is a newer build: http://www.64kib.com/pokeymax_files/1.28_20240905_beta/ Changes: i) Some names clashed which led to a bunch of missing builds, added another layer to build.sh maps to avoid that. ii) Pad core.bin files to the standard length iii) Slow the i2c clock on the pokeymax v1 iox mux, was getting some communication errors/spurious key presses. iv) v4 full stereo build fits again v) Corrected version code vi) Only patch in sid wave data when we have sid vii) If we do not have sid generate the pof with compression properly viii) Between rc1 and rc2 (yesterday's): Generic parameters not set in qsf so all builds were with the defaults! There is also a new version of the config tool: http://www.64kib.com/pokeymax_files/pokeycfg_1_4.xex Changes: i) Remove write protection after each sector clear. On the 10M16 (only) it seems to reset the write protection! ii) Clear sector 5 when doing a full refresh, in case the device has one. iii) Make it handle sidmax as well as pokeymax (build flag) @MADRAFi - Just checking you don't have the same bug in your tool as I had in (i) Its a bank holiday here today, so I spent the rare work free, family free day for testing this a bit and fixing things up.
  9. Doing more testing. Uff, lots of things to fix... more related to upgrades and changing build scripts than core changes. Anyway another alpha incoming later!
  10. That is uploaded now. One of the v4 M08 builds no longer fits, added a register or two and pushed it over the edge, gah!
  11. Completely messed that up, in that none of the core options were passed to each build. Uploading rc2 shortly... http://www.64kib.com/pokeymax_files/1.28_20240904_alpha/
  12. Regarding the tools: init.c -> Write some static data and default configuration 0x0 : Config 0x80: ADPCM compression step table 0x400: PSG volume tables (ym2149, ay3, official ym2149 from data sheet, linear) 0x600: Pokey volume table (non-linear mixing, linear) 0x800: sid q table - part of filter (8580/6581) 0x1000: sid frequency tables - part of filter (8580/6581) Two files are written, just to scale down volume when Sid is used (due to saturation issues on output) sidwavedata.c -> Mixed waves (e.g. pulse + triangle etc) (8580/6581) find_offset.c -> Find location of a chunk of one file in another. Used for patching .pof swapbits.c -> pof files have low->high bits flipped and also are long word endian swapped. This tools flips them.
  13. Some notes on the build process: i) The build.sh perl script wraps the quartus command line tools. I have only tried it under Linux. a) Before running it you need an appropriate version of Quartus Lite from Intel installed with the max10 device support (I'm using 23.1 now) b) Quartus should be added to the path. c) ./build_tools should be run to compile some small tools d) ./makehexfiles should be run to generate some static data ii) The script essentially copies the vhdl/verilog files to a sub directory then runs quartus_sh with --flow compile to synthesise it and make a .sof file (can be programmed to the MAX10 to run until power off). iii) After making the .sof file, it manually runs quartus_cpf to put that .sof along with some static data into a .pof file (for storing to the FPGA). a) The .sof is compressed and set up to be stored into the CFM (config flash memory). b) The static data is set up to be stored in the UFM (user flash memory). v) I need to store some Sid wave data for the mixed waves. This is too big to fit into UFM, so I patch it into the CFM. a) Convert the .pof to a .svf (standard flash format) so I can extract the CFM and UFM data b) Find the offset of the CFM and UFM data in the .pof, so I can work out where to patch it c) Patch in the Sid wave data d) Generate a new checksum using rehashr and pop it on the end vi) Generate the core.bin for flashing a) Convert the patched .pof to a .svf b) Extract the CFM and UFM data c) Cat them together to make core.bin d) Write the version code to the start of core.bin There are a lot of settings and variants that the script can be run for. I put them all in a dictionary at the top of the file. They set some generic options which change how the vidl is synthesized. The first dict key specifies $boardtype_$version, where $boardtype is pokeymax or sidmax. Then follows a human readable description. Inside the hash are some settings: fpga: Which FPGA to build for. I always build for the slowest version C8G. There are four sizes of fpga 02, 04, 08 and 16. After the very earliest we started using 04 and up since it has room for the flash controller. ext_bits: How many extra io pins there are. This is actually a board setting so should be put somewhere else... a*_bit: Which pin is used for the address. If not set then the address line is fed to the core as low. gtia_audio_bit: Digital input from gtia to mix in gtia audio. cs1_bit: Disconnects chip select 1, so that the io pin can be used for something else. Then the io pin is available as ext pin 19! fancy_switch_bit: Allow switching to mono/full featured. ps2clk_bit/ps2dat_bit: For PS2 keyboard spdif_bit: For spdif output (Only recommended on models with a 49.152MHz crystal) irq_bit (sidmax only): IRQ_N output (Sid has no irq line) flash_addr_bits: Set to 17 on 10M16 size fpga sid_wave_base: Where Sid data starts. Set to 79872 on 10M16 size fpga pokeys: How many pokey chips: 1-4 enable_auto_stereo: If a4 never toggles run in mono mode. You should have this on usually. enable_sid: Use 2 sids if set to 1 enable_psg: Use 2 psg if set to 1 enable_covox: Enable 4 channel covox dac if set to 1 enable_sample: Use block ram for sound samples with dma engine to write them to the covox dac. Supports ADPCM compression. enable_flash: Allow saving settings and upgrading the core in software. enable_audout2: Save space if not using the 2nd channel enable_adc: sio audio in for pokeymax 4 enable_config: Enable configuration region paddle_lvds/paddle_comp/enable_iox: Settings for keyboard and paddle input - board specific. pll_v2: Disable for v3 and v4 t use external oscillator instead of internal oscillator detect_right_on_by_default: Turn off automatic single channel->both speaker support if 0 optimisearea: Try harder to make it fit saturate_on_by_default: Use linear mixing for pokey Happy to answer questions on any of these... So you can make a fair number of combinations. e.g. you could possibly turn off flash to fit everything in a 10M08 etc. I like to turn it all on with a 10M16 on a v4 🙂
  14. I posted an alpha of 1.28 cores here: http://www.64kib.com/pokeymax_files/1.28_20240903_alpha/ So far I only tested sidmax to be honest, so please only try if you have a usb blaster. I'll upload a final version of 1.28 at the end of the week. Known issues so far: i) Folder names have the name and version in twice! Since the 1.27 based pre-release there are not many fixes, mostly a quartus upgrade and bumping the version code. This is just about doing an 'official' release that supports v4.
  15. Wow that’s awesome! I am not ignoring the question about how to build cores by the way, just finishing up the next core version and tidying it up a bit first…
×
×
  • Create New...