Jump to content

mrk

Members
  • Posts

    49
  • Joined

  • Last visited

Everything posted by mrk

  1. @phaeron, @ilmenit I was playing a bit recently with remote debugging of 6502 with `lldb`(I have little draft PR for llvm-mos). I created very simple 6502 simulator https://github.com/mrk-its/sim6502 (compatible with `mos-sim` but with remote gdb support). Full source-level debugging is working (source / assembly listing, RW access to memory / registers / variables): This way emulator needs to expose only memory / registers via gdb remote protocol, ELF / DWARF parsing is done by lldb client. In my simulator I'm using rust gdbstub library, but there are similar C libraries too, like: https://github.com/mborgerson/gdbstub
  2. Ha, interesting, never noticed that. What browser / OS?
  3. 2-tone support and reset via SKCTL is still missing, I'll try to add it as needed I'm very glad to hear that, thanks again for help, tests and first contribution
  4. Sure. But please include only this Poly5 / Poly9 change in this PR - is always better to create few simpler PRs instead of single big one. Or I can simply cherry-pick your commit if everything looks sounds good
  5. Fixed (I hope I didn't break other things this time) Debugging it was quite fun. I started with creating rmt instrument with square, 50%-fill envelope and 2-element table changing in sync with envelope. This way I was able to instantly hear the difference between web-rmt and rmt And I think this is best way to simplify future debugging - let's create very simple rmt files clearly showing difference (unfortunately I'm tone deaf so I can easily miss difference in real tunes ) table_env_desync.rmt table_env_sync.rmt
  6. Ha, it is super helpful, thanks! I see you are starting mastering this JS thing, hehe I was really frustrated by these Poly4 and Poly5 generators (I copied / derived these formulas from Altirra Hardware Reference Manual, but they didn't sound good and I ended with copying them from Atari800 I think). Can you create PR for it? Poly9 / Poly17 looks the same after your changes (I think, taking a look again) BTW what time zone are you in? Cannot determine looking on posts timestamps :]
  7. First I'm going to mimic original RMT as well as possible (with all his bugs / weird vibrations) - to be able to play all these rmt tunes created by original RMT as close as possible (I was even thinking about comparing sapr streams, but probably your eyes ears guys will be enough This way we can also find bugs in Web Pokey itself. If it is done I'm open for implementing all these improvements / patches you made for RMT or extending this format in any direction.
  8. Your workaround will be definitely helpful in bughunting, thanks! And I'm really glad you like this toy :]
  9. Heh, thanks, It is possible I broke something recently, will take a look.
  10. Not sure if I understand what 'everything' above means - could you point me some rmt (for standard, not patched player) that sounds wrong after this commit (comparing to original, not patched rmt 1.28)? Maybe something included in 1.28 example songs? I can investigate it.
  11. Hmm, the bug is still there? I was sure I fixed it recently here: https://github.com/mrk-its/web-rmt/commit/98ecde40983615abf832702cf0a12013d705b612
  12. Something like: diff --git a/rmt.js b/rmt.js index 450e396..8641736 100644 --- a/rmt.js +++ b/rmt.js @@ -626,6 +626,8 @@ export class RMTPlayer { this.channelTone[i].postPlay(this, i < 4 ? prev_audctl : prev_audctl_r) } } + this.savedAudCtl = [this.getPokeyAudctl(0), this.getPokeyAudctl(1)] + this.sendRegs(this.pokeyRegs) } or for mono only simply: this.savedAudCtl = this.getPokeyAudctl(0) ??? This way it will be stored in player property and available all the time EDIT: or simply do your stuff at very begin of step() method, before Audctl is zeroed (this.getPokeyAudctl() should return correct value there)
  13. Ok, I took a look again on player assembly: rmt_play rmt_p0 // update pokey registers computed in previous frame (rmt_play call) jsr SetPokey // do the rmt stuff and compute pokey registers rmt_p4 lda trackn_audctl+0 ora trackn_audctl+1 ora trackn_audctl+2 ora trackn_audctl+3 tax stx v_audctl // apply filters / BASS16 stuff and update X register (audctl value) if necessary stx v_audctl ... rts SetPokey ldy #$ff v_audctl equ *-1 ... sty $d208 ret So you are right, there is a one frame delay - rmt_play starts with setting pokey registers to values computed in previous frame. And this is for a reason: this way pokey registers are always set in very precise points of time (exactly on start of each frame, independently of number of cycles of rmt_play routine). But audclt is always reseted in each frame (at rmt_p4 label), so I think I'm doing very similar thing in rmt.js. I'm sending pokey regs to pokey backend directly after computing all they values, but it should not matter because registers are timestamped and also will be applied (by pokey backend) in very precise point of time (after short latency period)
  14. Be patient, it will click finally My code is probably over-engineered a bit - maybe whole RMTTune object is not necessary and everything should be implemented directly in RMTPlayer.
  15. Ha, taking a look on it, on start I want to be 100% compatible with original RMT player, so I definitely want to mimic the same behavior. Great! Thanks, I'll also take a look on that, I probably forgot about implementing this +- mode EDIT: @tatqoo let me recently know that his song is played incorrectly: https://mrk.sed.pl/web-pokey/examples/rmt-player/#https://atari.ha.sed.pl/songs/tatqoo/oldschool.rmt (position 38 / 01 - pure tones played instead of drums) - and it seems it is because of lack of this += mode implementation, kudos for noticing that!
  16. Here it is: it works on the fly, without reloading
  17. changing this value to 60 https://github.com/mrk-its/web-rmt/blob/main/rmt.js#L459 should do the trick, I can add method `setFrameRate()` for changing fps `on the fly`
  18. Great! I would suggest making github fork of https://github.com/mrk-its/web-rmt and pushing your changes there - this way it will be easy to create PR and maybe merge changes upstream Why so exotic sampleRate? Some sync issues?
  19. Few RMT 1.28 example songs 30minutes.rmt ->link<- 4tk35.rmt ->link<- astrosphere.rmt ->link<- bazalt.rmt ->link<- hightide.rmt ->link<- ilusia.rmt ->link<- m4700rk4.rmt ->link<- naue.rmt ->link<- shorty_noises.rmt ->link<- sunset_on_the_moon.rmt ->link<- thrust.rmt ->link<- examples/audctl.rmt ->link<- examples/bassandnoise.rmt ->link<- examples/humblebee.rmt ->link<- examples/likeac64.rmt ->link<- examples/multiecho.rmt ->link<- examples/speedchanges.rmt ->link<- examples/trackloops.rmt ->link<- examples/volumeonly.rmt ->link<- kjmann/actrsr1-3ch.rmt ->link<- kjmann/actrsr1.rmt ->link<- kjmann/actrsr1-stereo.rmt ->link<- kjmann/AXELF.rmt ->link<- kjmann/axk8.rmt ->link<- kjmann/baby_elephant_walk.rmt ->link<- kjmann/battle_march.rmt ->link<- kjmann/Battle_Squadron.rmt ->link<- kjmann/Battle_Squadron-stereo.rmt ->link<- kjmann/BE_store.rmt ->link<- kjmann/bmaster1-4ch.rmt ->link<- kjmann/bmaster1.rmt ->link<- kjmann/bmaster1-stereo.rmt ->link<- kjmann/bubble_bobble.rmt ->link<- kjmann/crockett.rmt ->link<- kjmann/cybernoid_II.rmt ->link<- kjmann/Duke_Nuke'Em.rmt ->link<- kjmann/elite-mono1.rmt ->link<- kjmann/elite-stereo.rmt ->link<- kjmann/everybreath.rmt ->link<- kjmann/Final_Fantasy.rmt ->link<- kjmann/frogger.rmt ->link<- kjmann/Hybris.rmt ->link<- kjmann/mm3.rmt ->link<- kjmann/mm3-stereo.rmt ->link<- kjmann/mule-remix4ch.rmt ->link<- kjmann/mule.rmt ->link<- kjmann/obliterator-mono.rmt ->link<- kjmann/obliterator-stereo.rmt ->link<- kjmann/outrun/last_wave.rmt ->link<- kjmann/outrun/magi-mono.rmt ->link<- kjmann/outrun_medley.rmt ->link<- kjmann/outrun/OR_Magi-stereo.rmt ->link<- kjmann/outrun/passing_breeze-mono.rmt ->link<- kjmann/outrun/passing_breeze-stereo.rmt ->link<- kjmann/outrun/splash_wave-mono.rmt ->link<- kjmann/outrun/splash_wave-stereo.rmt ->link<- kjmann/popcorn2-16bit.rmt ->link<- kjmann/rtype.rmt ->link<- kjmann/Shadows.rmt ->link<- kjmann/shot.rmt ->link<- kjmann/skidrow.rmt ->link<- kjmann/smb2.rmt ->link<- kjmann/SPH_Main16.rmt ->link<- kjmann/stardust.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono3ch_Bonus.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono3ch_Sng1.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono3ch_Sng2.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono3ch_Sng3.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono4ch_Sng1.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Mono_Title.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Stereo_Sng1.rmt ->link<- kjmann/Tempest/Tempest_Xtrm-Stereo_Title.rmt ->link<- kjmann/toobin.rmt ->link<- kjmann/toobin_title.rmt ->link<- kjmann/trans_Atlantic.rmt ->link<- kjmann/unveiled.rmt ->link<- lisu/funny.rmt ->link<- lisu/gerappaa.rmt ->link<- lisu/kurczak.rmt ->link<- lisu/przyrada.rmt ->link<- lisu/wyjasnijmy_to_sobie.rmt ->link<- miker/7_gates_of_jambala.rmt ->link<- miker/acidjazzed_evening.rmt ->link<- miker/astaroth.rmt ->link<- miker/bomb_jack.rmt ->link<- miker/disturbance.rmt ->link<- miker/easter_chickens.rmt ->link<- miker/enchanted_lands.rmt ->link<- miker/flimbo.rmt ->link<- miker/flowers_mania.rmt ->link<- miker/ghosts_n_goblins.rmt ->link<- miker/jetboy.rmt ->link<- miker/logical_3.rmt ->link<- miker/menace_song.rmt ->link<- miker/my_first_one_in_rmt.rmt ->link<- miker/tempest2000_blue_level.rmt ->link<- miker/the_last_ninja_2_central_park.rmt ->link<- miker/torvak_level_2.rmt ->link<- miker/tyrian_zanac5.rmt ->link<- miker/wings_of_death_lv2.rmt ->link<- nilsfeske/delight.rmt ->link<- nilsfeske/nothing.rmt ->link<- nilsfeske/takeoff.rmt ->link<- nooly/amelie.rmt ->link<- nooly/aoki.rmt ->link<- nooly/summer.rmt ->link<- pg/against_time.rmt ->link<- pg/brainless.rmt ->link<- pg/deflektor.rmt ->link<- pg/devils.rmt ->link<- pg/gpc.rmt ->link<- pg/hammastahna.rmt ->link<- pg/happy_sundays.rmt ->link<- pg/jozin_z_bazin.rmt ->link<- pg/kaviar.rmt ->link<- pg/krakout.rmt ->link<- pg/lcd3cd3.rmt ->link<- pg/radixex.rmt ->link<- pg/somewhere.rmt ->link<- pg/stardust_memories.rmt ->link<- pg/strangled_mind.rmt ->link<- pg/summerdays.rmt ->link<- pg/vietnamska_mise.rmt ->link<- pg/xmasmix.rmt ->link<- raster/3d.rmt ->link<- raster/aspir332.rmt ->link<- raster/astro4road.rmt ->link<- raster/aurora_m.rmt ->link<- raster/aurora_s.rmt ->link<- raster/basix.rmt ->link<- raster/cervi2.rmt ->link<- raster/cubico.rmt ->link<- raster/delta.rmt ->link<- raster/first.rmt ->link<- raster/gearup.rmt ->link<- raster/gemx.rmt ->link<- raster/glu.rmt ->link<- raster/hexxagon.rmt ->link<- raster/horror.rmt ->link<- raster/imsure.rmt ->link<- raster/indianajones4.rmt ->link<- raster/itdoesnt.rmt ->link<- raster/l45tm1nut3.rmt ->link<- raster/mab.rmt ->link<- raster/nopromis.rmt ->link<- raster/paulthep.rmt ->link<- raster/satellit.rmt ->link<- raster/threeht.rmt ->link<- raster/timett.rmt ->link<- raster/turrican2_rev2m.rmt ->link<- raster/turrican2_rev2s.rmt ->link<- raster/whoknows.rmt ->link<- sack_cosine/commando.rmt ->link<- sack_cosine/freedom.rmt ->link<- sack_cosine/maynoaise.rmt ->link<- sack_cosine/monty.rmt ->link<- sack_cosine/parallax.rmt ->link<- sack_cosine/plasticpop.rmt ->link<- sack_cosine/smells.rmt ->link<- tatqoo/anmen3_stereo.rmt ->link<- tatqoo/byzex.rmt ->link<- tatqoo/deluxe8ch.rmt ->link<- tatqoo/forgotten_low.rmt ->link<- tatqoo/garydenise.rmt ->link<- tatqoo/grtfun.rmt ->link<- tatqoo/monday.rmt ->link<- tatqoo/ninjas.rmt ->link<- tatqoo/oldschool.rmt ->link<- tatqoo/ramaja.rmt ->link<- tatqoo/thermostat7.rmt ->link<- tatqoo/white_lamp.rmt ->link<-
  20. It is another web-pokey example - RMT song player (only vanilla v1.28 now, but supporting all these patches should also be possible)
  21. Another Web-Pokey example: https://mrk.sed.pl/web-pokey/examples/rmt-player/#https://atari.ha.sed.pl/songs/lisu/funny.rmt - it may be buggy yet, but already plays a lot of RMT 1.28 example songs surprisingly well (I've uploaded all example rmt songs to my server, you can simply change path in url)
  22. Update: sap-player plays stereo sap-r files now. Few examples: Flob_Intro.sap Flob_Escape_from_the_Lab.sap Yoomp.sap Flob_Intro.sap Flob_Escape_from_the_Lab.sap Yoomp.sap
×
×
  • Create New...