+DrVenkman Posted October 2, 2020 Share Posted October 2, 2020 30 minutes ago, mozzwald said: Heh, whoops.. they shift the other direction, sorry Thank goodness! Whew! 30 minutes ago, mozzwald said: the problem with swapping empty slots is that you would always have to swap 8 slots even if you only have 2 disk inserted. Lots of wasted button presses. I agree with this 100%. For instance, if I’m playing a 2-disk Infocom adventure, I’ll put a 3rd ATR in D3: as a save disk. So if I’m playing the game, disk 2 of the set is generally rotated down to the D1: slot for the game to read data. When it’s time to save, one press of the A button will move the save disk to D1:, and disk 2 of the game back to the D3: slot. When the save is complete and it’s time to play again, it’s only two presses to move the game’s disk 2 back the D1: slot. It’s not at all desirable from my perspective to have to rotate through a bunch of empty slots and try to remember whether I’ve pressed the button 5 times or that 6th or 7th press registered correctly ... If some WANTS to rotate through empty slots and comes up with a really good reason to do it that way, I’d suggest the CONFIG utility come with a way to turn unused, empty slots off before booting the Atari to avoid that behavior for those of us who don’t need or want to rotate through empty slots. Quote Link to comment Share on other sites More sharing options...
Wrathchild Posted October 2, 2020 Share Posted October 2, 2020 One of the reasons why I'm keen on patching multi-disk titles into single ATRs (with save areas where necc.) 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 Just tested: For Infocom games, the Atari ZIP seems to have an interesting bug. It does status for drives and stops at the first one it doesn't find. It does this silently during boot. If you try to e.g. load Deadline into D1 and D2, and put your save disk into D4, the game will gladly accept your user input for drive 4 (As it says, 1-8), but it will for some reason try to access SIO device $30 (D0: which does not exist), which of course, fails. This seems to happen on every infocom disk I've tested. grrr... Quote Link to comment Share on other sites More sharing options...
Wrathchild Posted October 2, 2020 Share Posted October 2, 2020 (edited) Yep, there's a mistake in the code as its AND'ing the selected drive with 3 when it should be 7 (edit: although that would excluded 8 as well ) So a patch could be to NOP that out LDX #$11 JSR out_string ; Insert SAVE disk, JSR flush_buffer LDA #$12 STA SaveMenuNum JSR ShowSaveOption STA DefaultSavePos JSR char_to_buf LDA #0 STA SaveMenuNum JSR ShowSaveOption TAX AND #3 STA CurrentDrive TXA STA SelectedDrive JSR char_to_buf JSR flush_buffer LDA #<str_PressReturn STA ptr1 LDA #>str_PressReturn STA ptr1+1 LDX #$18 JSR loc_0_23BB ; Press RETURN to continue Edited October 2, 2020 by Wrathchild 1 Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 2, 2020 Share Posted October 2, 2020 2 hours ago, DrVenkman said: I agree with this 100%. For instance, if I’m playing a 2-disk Infocom adventure, I’ll put a 3rd ATR in D3: as a save disk. So if I’m playing the game, disk 2 of the set is generally rotated down to the D1: slot for the game to read data. When it’s time to save, one press of the A button will move the save disk to D1:, and disk 2 of the game back to the D3: slot. When the save is complete and it’s time to play again, it’s only two presses to move the game’s disk 2 back the D1: slot. It’s not at all desirable from my perspective to have to rotate through a bunch of empty slots and try to remember whether I’ve pressed the button 5 times or that 6th or 7th press registered correctly It's only an issue with one way rotation. Having theoretically both left and right would allow to keep consistency and rotate full set to get very image to D1, not only ones left from the "gap" drive. There are two issues, yours and one I mentioned, which can't be addressed both with oneway rotation. With A and B it would be logical to use for rotations, with printing function (or what it was) with both pressed or sth else. It's more natural to handle printing stuff via www than managing drives. In the end you need to enable PC to print it anyway. But I understand the authors have their own philosophy and sometimes it's hard to change it. FujiNet rocks in each case ? Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 59 minutes ago, Wrathchild said: Yep, there's a mistake in the code as its AND'ing the selected drive with 3 when it should be 7 (edit: although that would excluded 8 as well ) So a patch could be to NOP that out LDX #$11 JSR out_string ; Insert SAVE disk, JSR flush_buffer LDA #$12 STA SaveMenuNum JSR ShowSaveOption STA DefaultSavePos JSR char_to_buf LDA #0 STA SaveMenuNum JSR ShowSaveOption TAX AND #3 STA CurrentDrive TXA STA SelectedDrive JSR char_to_buf JSR flush_buffer LDA #<str_PressReturn STA ptr1 LDA #>str_PressReturn STA ptr1+1 LDX #$18 JSR loc_0_23BB ; Press RETURN to continue Yup, once again bitten by legacy brain damage. Basically, it only works for drives 1-3. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 and I think I actually need to make something very clear. (Don't worry, I'll repeat it, ad nauseum) I have my opinions on how things should go in this project. But it's not my project. It belongs to all of us. If anybody wants to passionately bring forth a point, do it. And if anybody contributes code, it meant you gave a shit about it enough to provide working code. We will fold it in. There is no one true way in this project. It's why we built the damned thing so open ended. I have NO idea what other people will do with it; what they will come up with, nor should I _ever_ explicitly limit what can be done with it. Who am I to do so? I am one of you. -Thom 3 1 Quote Link to comment Share on other sites More sharing options...
Fierodoug5 Posted October 2, 2020 Share Posted October 2, 2020 Somebody just started a Fujinet user group on facebook. 28 members so far https://m.facebook.com/groups/2822283394719985?group_view_referrer=profile_browser 3 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 Yup I saw. Gave me a big smile. 1 Quote Link to comment Share on other sites More sharing options...
Kyle22 Posted October 3, 2020 Share Posted October 3, 2020 (edited) Since there is control of audio line, simply beep count the active drive number or have SAM say it. Edited October 3, 2020 by Kyle22 clarity 2 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 4 minutes ago, Kyle22 said: Since there is control of audio line, simply beep count the active drive number or have SAM say it. ....................................................... *blink* dude seriously that is fucking brilliant! -Thom 1 Quote Link to comment Share on other sites More sharing options...
Kyle22 Posted October 3, 2020 Share Posted October 3, 2020 1 minute ago, tschak909 said: ....................................................... *blink* dude seriously that is fucking brilliant! -Thom ThanQ Quote Link to comment Share on other sites More sharing options...
Mathy Posted October 3, 2020 Share Posted October 3, 2020 Hello guys Just a thought: You could either skip empty slots or skip the first empty slot in a row. Skip empty slots: D1, D2, D4 -> D2, D4, D1 -> D4, D1, D2 -> D1, D2, D4 Skip first empty slot in a row of empty slots: D1, empty slot, D4, D5 -> empty slot, D4, D5, D1 -> D5, D1, empty slot, D4 -> D1, empty slot, D4, D5 I can't come up with a reason to do so, other than being able to rotate through all the assigned slots without going through all the slots. But I have never used software that needed more than one drive at the same time either. Sincerely Mathy 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 1 minute ago, Mathy said: Hello guys Just a thought: You could either skip empty slots or skip the first empty slot in a row. Skip empty slots: D1, D2, D4 -> D2, D4, D1 -> D4, D1, D2 -> D1, D2, D4 Skip first empty slot in a row of empty slots: D1, empty slot, D4, D5 -> empty slot, D4, D5, D1 -> D5, D1, empty slot, D4 -> D1, empty slot, D4, D5 I can't come up with a reason to do so, other than being able to rotate through all the assigned slots without going through all the slots. But I have never used software that needed more than one drive at the same time either. Sincerely Mathy I'm gonna let my brain chew on that. 2 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 4 hours ago, Kyle22 said: Since there is control of audio line, simply beep count the active drive number or have SAM say it. #Atari8bit #FujiNet - I think we've come up with a rather novel solution to indicate which disk is active in D1: after a disk swap, what do you think? (special thanks to kyle22 for the idea) 6 Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 3, 2020 Share Posted October 3, 2020 Good idea! It would say respective number to the FujiNet's power-on state? It would be nice to have that feature configurable (on/off) in the www admin. Quote Link to comment Share on other sites More sharing options...
Mathy Posted October 3, 2020 Share Posted October 3, 2020 Hello Thom At the moment SAM says "2", which is pretty short. How about "D2" or maybe even "Disk 2"? Sincerely Mathy 5 Quote Link to comment Share on other sites More sharing options...
Fierodoug5 Posted October 3, 2020 Share Posted October 3, 2020 Love it. I never know what disc I have rotated into slot 1. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 So, rather than try to scramble to try every little possibility, I've decided to take a different approach: Community involvement! Anybody who wants to tweak and tune this? have at the code. I'll bend over backwards to help you set up so you can. I have extended the function in the firmware to enable/disable SAM features, specifically phonetic mode, speed, and pitch, and allow access to internal values that normally nobody can touch, namely the mouth, and throat values which drastically change SAM's timbre: https://github.com/FujiNetWIFI/fujinet-platformio/blob/master/lib/utils/utils.cpp#L446 And the relevant code which does the actual talking is here: https://github.com/FujiNetWIFI/fujinet-platformio/blob/master/lib/sio/fuji.cpp#L372 If you e.g. want to set phonetic mode: util_sam_say("<phonetic phrase>",true); A good reference for the phonetic mode (including a large phonetic dictionary complete with numbers) is here: https://github.com/FujiNetWIFI/fujinet-platformio/wiki/Using-SAM-(Voice-Synthesizer) --- Now my thoughts on why I chose what I chose. (1) It's currently in reciter mode, which sets some pretty bland values for things. I did this just to prove a point. Phonetic output would be better. e.g. a function that says the numbers 1-8 in the inflection we want. (2) I deliberately chose the smallest piece of vocal information to impart as much as possible, given the context. "Which slot is now drive 1?" A common failing of voice interfaces is to repeat extra phrasings that are already implied by the context. If a user knows that he's pressing the disk swap button, does SAM really need to say, "Swapped disk to D1." "Swapped Disk to D2." "Swapped disk to D3." over and over? Each of those phrasings takes up to a second each, and they add up. Now, you could of course, time the phrasings and only say the extra bits if the button has been pressed within a certain amount of time, but these are the various things that one has to take into account when designing a voice interface (I have..a lot...of real world experience on this!) Since this was literally a spur of the moment thing out of left field from a user suggestion, I deliberately reduced both the intended consequence and the amount of code needed to implement it to prove the point. --- So yes, What I am TRYING to say here, is that it would be awesome if somebody jumped on this and really messed with it. 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 I added some bits of code in fuji.cpp, the prompts are now processed phonetically. /** * Say the numbers 1-8 using phonetic tweaks. * @param n The number to say. */ void say_number(unsigned char n) { switch (n) { case 1: util_sam_say("WAH7NQ",true); break; case 2: util_sam_say("TUW7",true); break; case 3: util_sam_say("THRIY7Q",true); break; case 4: util_sam_say("FOH7R",true); break; case 5: util_sam_say("FAY7V",true); break; case 6: util_sam_say("SIH7KSQ",true); break; case 7: util_sam_say("SEH7VIXN",true); break; case 8: util_sam_say("EY7TQ",true); break; default: Debug_printf("say_number() - Uncaught number %d",n); } } And... /** * Say swap label */ void say_swap_label() { // DISK util_sam_say("DIH3SKQ ",true); } @Mr Robot had the great idea of using the Q glottal stop to enforce a slight pause. Now sounds like: WIN_20201003_13_35_07_Pro.mp4 -Thom 9 2 Quote Link to comment Share on other sites More sharing options...
Fierodoug5 Posted October 3, 2020 Share Posted October 3, 2020 Nice! Quote Link to comment Share on other sites More sharing options...
+mytek Posted October 3, 2020 Share Posted October 3, 2020 Much nicer ? . Way more understandable. 2 Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 3, 2020 Share Posted October 3, 2020 I tuned all the words in the end using a sam on my macsam.wav For contrast, here is the mac's built in speech synth kate.wav How far we have come! 2 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 3, 2020 Author Share Posted October 3, 2020 Kate is put together using real sounds, combined using a _very_ complex probability model. Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 3, 2020 Share Posted October 3, 2020 It's amazing isn't it, really uncanny valley, you almost can't tell its fake any more, they are so close. 1 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.