artrag Posted July 6, 2016 Author Share Posted July 6, 2016 (edited) This is one of the samples that I thought converted pretty well. See if you can improve on it. Thanks, these are my rom and player with 5 channels (so ECS only, do not work without it). I fixed a bug, so evaluate these new files. Press 4 to hear your sample intyLoFi_5channels.rar ecsLoFi5.bas Edited July 7, 2016 by artrag Quote Link to comment Share on other sites More sharing options...
freewheel Posted July 6, 2016 Share Posted July 6, 2016 Cool. They sound the same to me, maybe I'm crazy. I think I basically did the same thing with the player as you did. Quote Link to comment Share on other sites More sharing options...
artrag Posted July 6, 2016 Author Share Posted July 6, 2016 This version is using 6 channels BAS and ROM included intyLoFi_6channels.rar Quote Link to comment Share on other sites More sharing options...
artrag Posted July 6, 2016 Author Share Posted July 6, 2016 (edited) Cool. They sound the same to me, maybe I'm crazy. I think I basically did the same thing with the player as you did.I think I did an error, let me fix itI've changed the files in attach to the 5 channel version Basically 5 channels and 6 channels sound very close I would say that after having added 4/5 channels, the distortion is more due to the square wave and to the phase errors than to the missing tones Edited July 7, 2016 by artrag Quote Link to comment Share on other sites More sharing options...
artrag Posted July 6, 2016 Author Share Posted July 6, 2016 This version of the voice encoder can produce any number of channels Quote Link to comment Share on other sites More sharing options...
artrag Posted July 10, 2016 Author Share Posted July 10, 2016 (edited) I know it is not intellivision but I'm too proud of it to keep it for myself This is the first application if my new voice encoder: The voice patch to the original rom is only 8KB and works on a dedicated scc audio chip (5 channels). Needless to say, the original msx version of Salamander has no voice, the speech we added is borrowed from the arcade version. Edited July 10, 2016 by artrag 3 Quote Link to comment Share on other sites More sharing options...
artrag Posted July 10, 2016 Author Share Posted July 10, 2016 I was thinking about saving 1/2 of the room taken by the data by packing the volumes in the top 4 bits of the periods. Is there a good way to extract the 4 top bits and shift them in the lowest 4 bits in intybasic? Quote Link to comment Share on other sites More sharing options...
+nanochess Posted July 10, 2016 Share Posted July 10, 2016 I was thinking about saving 1/2 of the room taken by the data by packing the volumes in the top 4 bits of the periods. Is there a good way to extract the 4 top bits and shift them in the lowest 4 bits in intybasic? I would suggest: output = input / 16 IntyBASIC optimizes most power of 2 division operators. Quote Link to comment Share on other sites More sharing options...
artrag Posted July 10, 2016 Author Share Posted July 10, 2016 In this case I should do output = input /4096 Is it optimized as well? Quote Link to comment Share on other sites More sharing options...
+nanochess Posted July 10, 2016 Share Posted July 10, 2016 In this case I should do output = input /4096 Is it optimized as well? Not that constant but try "output = input / 256 / 16" Quote Link to comment Share on other sites More sharing options...
artrag Posted July 11, 2016 Author Share Posted July 11, 2016 (edited) Is there a way to allow a rom array of varptr x(0) where x is a rom array as well? If I do: Data varptr x(0) I get an error even if x() is an array of constant values in rom This could simplify the huge on (nsfx) goto ... I use now in the player I would do #frames = fsxpntr(nsfx) with fsxpntr: Data varptr voice0(0), varptr voice1(0)... etc Edited July 11, 2016 by artrag Quote Link to comment Share on other sites More sharing options...
+nanochess Posted July 11, 2016 Share Posted July 11, 2016 Is there a way to allow a rom array of varptr x(0) where x is a rom array as well? If I do: Data varptr x(0) I get an error even if x() is an array of constant values in rom This could simplify the huge on (nsfx) goto ... I use now in the player I would do #frames = fsxpntr(nsfx) with fsxpntr: Data varptr voice0(0), varptr voice1(0)... etc This is a very much requested feature, I'll try to put it into next version of IntyBASIC Quote Link to comment Share on other sites More sharing options...
artrag Posted July 11, 2016 Author Share Posted July 11, 2016 (edited) If the things are in the right order, the change would probably consist of adding an extra conditional test where now you generate the error. Edited July 11, 2016 by artrag Quote Link to comment Share on other sites More sharing options...
artrag Posted July 12, 2016 Author Share Posted July 12, 2016 (edited) In this version the data are packed volume+period, so now a channel takes a single word! In intybasic terms we have: DATA &VVVVPPPPPPPPPPPP,&VVVVPPPPPPPPPPPP,&VVVVPPPPPPPPPPPP, etc etc In attach the results for the ECS demo, where we use 6 words per frame, i.e. 360 bytes per second The ROM size passed from 31KB to about 18KB Not bad considered the context. PS Oscar this is the result of the compiler for the /256/16 thing ;[131] Sound 5,peek(#frames+0),(peek(#frames+0)/256)/16 SRCFILE "C:\Users\Ragozzini\Documents\IntyBASIC SDK\Projects\intyLoFi\ecsLoFi_compact.bas",131 MVI@ R1,R0 MVO R0,240 SWAP R0 MVO R0,244 MVI@ R1,R0 SWAP R0 ANDI #255,R0 SLR R0,2 SLR R0,2 NOP MVO R0,251 Is that the optimization you was referring to ? intyLoFi_compact.rar Edited July 12, 2016 by artrag 3 Quote Link to comment Share on other sites More sharing options...
artrag Posted July 12, 2016 Author Share Posted July 12, 2016 The encoder able to generate intybasic DATA files is this one Just take the files XXXX.wav_psg_cmpct.bas from the subdirectory \wavs that will be generated. In order to run the voicenc.exe you need Matlab 2012 or its free runtime libraries (read the readme.txt to install them) 2 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted July 24, 2016 Share Posted July 24, 2016 In this version the data are packed volume+period, so now a channel takes a single word! In intybasic terms we have: DATA &VVVVPPPPPPPPPPPP,&VVVVPPPPPPPPPPPP,&VVVVPPPPPPPPPPPP, etc etc In attach the results for the ECS demo, where we use 6 words per frame, i.e. 360 bytes per second The ROM size passed from 31KB to about 18KB Not bad considered the context. PS Oscar this is the result of the compiler for the /256/16 thing ;[131] Sound 5,peek(#frames+0),(peek(#frames+0)/256)/16 SRCFILE "C:\Users\Ragozzini\Documents\IntyBASIC SDK\Projects\intyLoFi\ecsLoFi_compact.bas",131 MVI@ R1,R0 MVO R0,240 SWAP R0 MVO R0,244 MVI@ R1,R0 SWAP R0 ANDI #255,R0 SLR R0,2 SLR R0,2 NOP MVO R0,251 Is that the optimization you was referring to ? That's right my friend 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.