Author Topic: Possible enhancements/fixes for MV firmware  (Read 19596 times)

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Possible enhancements/fixes for MV firmware
« on: July 06, 2019, 02:07:53 pm »
Hey MV-Nation!

I'm a fairly new MV owner and have made a few posts hinting about making some
changes to the MV software.  I've been working on this for a few months now
and thought I would share my ideas and progress so far.  I'll try not to get
too technical.   :)

I think the MV is an amazing platform (still!) and already does so much, but I
wanted to see if things could be improved, for instance loading times, or maybe
allowing a 2nd MFX.

So far I've been able to reverse engineer the boot program which has taken
about 2 months or so.  The processor is an SuperH-3 7706 and I've taught
myself the instruction set and what I needed to know to understand code that runs on it.
I got to the point where I determined the main program was embedded in the
.PRG as a compressed image as well as its exact location, so the next step was to
figure out how to unpack it.  Here's some pics of the annotated disassembly.

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Unfortunately, the compression type was an undocumented variant of the
LZSS compression algorithm, called LZ98.  Thankfully, the admin over at
encode.ru was able to take my disassembly and notes and generate a program to unpack it
and it does work.  I believe he is currently working on a packer, which I will need
to put back the binary with any changes I make.  Without that it will be much
more difficult to continue.  I would have to resort to using a different
compression algorithm to ensure the entire image can fit on flash.  This would
take some time.

[As a side note, the MC-909, FP-30, and other systems also use this
compression, so it's possible it will allow other similar projects to start.
The MC-909 also uses the same processor as the MV, so it's possible code could be
pulled out of there and put into the MV.]

I'm currently now going through the 7+ megabytes of code and it is quite slow
going as I have to mark regions as code and data by eye.  I am doing about
10k of code/hr so it will be some time before I have it all done.  Once that
process is done, I can start to see how much work is involved in making changes.
There should be enough room on flash to allow for a good amount of changes.

I also want to note that I own an MV-8800, but there is nothing stopping me
from making changes to the MV-8000 firmware as well, everything I've done so
far applies.  The only hurdles are fully disassembling the main MV-8000
program, which as I mentioned will take a LONG time, and getting a MV-8000 for
testing.  So if anyone has a beat up one they'd like to donate (I would return it when
done) or sell, please PM me.

Next steps for me are to find a beat up MV-8800 I can use for testing as I
will need to make HW modifications to it, like soldering in an H-UDI header so
I can program flash in the event I brick it and it allows for low level
debugging.  And I need to do a lot more reversing of the main program.  Also, the compression
program will be necessary before I can run anything new.  If and when I get to
the point of having actual changes MV users can install, I'll need to find
some web hosting for a forum, etc.

Some interesting findings so far in the unpacked firmware

- The code name of the project, or the GUI library was called "Miami"
- The string "cher" appears a few times and seems to be actually used   :P
- The code is written in C++, which makes things a LOT more difficult

I have no idea how far I will get with this, but I feel like I've come very
far already and have no desire to stop.  I'm so excited about this project!

I am open to hearing ideas about what you'd like to see added,
and also about any bugs you've encountered running the latest firmware.
Oh, and any changes I make will be free, I'm not going to charge or anything
like that.

I'm open to help as well, but due to this being proprietary code from Roland,
I don't think putting it up on github etc would be a good idea, so I'm open to
ideas on collaboration.  I had tried contacting Roland and their lawyers about
licensing the source code, but never heard back, so this was my next option.

If you got this far, thanks for reading!  And if anyone is interested in the
code or Ghidra project for disassembling, PM me and I can share.   I'll
post updates to this thread as I hit new milestones.

~hangnef
« Last Edit: November 15, 2019, 01:26:20 pm by hangnef »

mvstudio

  • Guest
Re: Possible enhancements/fixes for MV firmware
« Reply #1 on: July 07, 2019, 08:27:22 am »
That sounds like a great project.

Some ideas:
-Lots of folks would love to see some sort side-chaining support in the MV. (Maybe you could route the audio of a channel to an MFX ?)
-Some people tried to use a 1GB dimm ram in the MV8800 and it got recognised by the MV but the machine became unstable, maybe that can be fixed in the software (haven tried a 1gb dimm myself yet).

Ayways, nice job man, keep us posted!

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #2 on: July 07, 2019, 09:48:20 am »
Great suggestions, thank you.

The 1G could be a very easy change if it ends up being some software limitation.  I've been studying the HW and there doesn't seem to be anything precluding the use of 1G of RAM, it's more about how the software utilizes it for audio.

Sidechaining is already on my list!   :)

Also, another milestone today... picked up a brand new MV8800, so my current one will be my "sacrificial" one.   :)

mvstudio

  • Guest
Re: Possible enhancements/fixes for MV firmware
« Reply #3 on: July 07, 2019, 10:53:13 am »
You are not allowed to view links. Register or Login
Also, another milestone today... picked up a brand new MV8800, so my current one will be my "sacrificial" one.   :)

Thats great news, very promising !
I could take care of the website/forum/webhosting for the project if you like.

Also, I am porting some popular VST synth patches to the MV (like the Serum VST). It would be great if you can get your new software working, we also ship some great new MV patches and demo songs.


Offline JUKE179r

  • OG Status
  • *****
  • Posts: 49
  • Go make some music!
    • View Profile
    • Instagram - JUKE179r
Re: Possible enhancements/fixes for MV firmware
« Reply #4 on: July 07, 2019, 02:10:23 pm »
Thanks @hangnef for looking into this!!!!!!
Good luck and please keep us posted on what you get on with. Cheers!

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #5 on: July 07, 2019, 02:32:00 pm »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Also, another milestone today... picked up a brand new MV8800, so my current one will be my "sacrificial" one.   :)

Thats great news, very promising !
I could take care of the website/forum/webhosting for the project if you like.

Also, I am porting some popular VST synth patches to the MV (like the Serum VST). It would be great if you can get your new software working, we also ship some great new MV patches and demo songs.

Wow, that sounds excellent.  I haven't dived into making patches yet, but I need to.  I want to make some chiptune synth patches.  :)

And thank you for the webhosting offer!  Once I get to that point, I will definitely PM you.

~hangnef

Offline Waxdat

  • Moderator
  • Full Member
  • *****
  • Posts: 134
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #6 on: July 07, 2019, 08:02:04 pm »
 :o

Offline DJFLEX-mk2

  • *
  • Posts: 30
  • Roland MV-8800 Production Studio w/Roland MV8-OP1
    • View Profile
    • https://www.facebook.com/djflexmk2
Re: Possible enhancements/fixes for MV firmware
« Reply #7 on: July 07, 2019, 09:04:43 pm »
"OH WOW" !!! :o
~ **HE MAY HAVE THE TECHNOLOGY - TO RE-ENGINEER IT - MUCH BETTER, MUCH FASTER, MUCH STRONGER**!

You are not allowed to view links. Register or Login You are not allowed to view links. Register or Login
« Last Edit: July 07, 2019, 09:12:47 pm by DJFLEX-mk2 »
Roland MC-909 sampling groovebox OS: v1.23, w/SRX-05 Supreme Dance Expansion Board Card
Roland MV-8800 Production Studio OS: v1.01, w/MV8-OP1(Audio I/O Expansion Card Module), w/MMP-2 Mic Modeling Preamp 24-bit/96kHz
Roland DS-90A 24-BIT DIGITAL Bi-AMP MONITOR
"PLANET ROCK! ~ yO gEt FuNkY"

Offline X2Zero

  • *
  • Posts: 34
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #8 on: July 08, 2019, 04:14:31 am »
I would like to request another 8 song audio tracks making a total of 16 (+1 existing pattern audio track).
With one more song mixing page for tracks 9-16.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Currently using MV8-OP1 R-BUS to DIF-AT24 ADAT interface to run with plugins like iZotope Nectar and Vocal Synth hosted by Cantabile 3.0.

Offline Benjah

  • *
  • Posts: 6
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #9 on: July 08, 2019, 04:28:02 am »
One thing I really miss on the MV8800 is an arpeggiator like the one in JJOS for the MPC. Just a simple up, down, up then down  would be a good start.

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #10 on: July 08, 2019, 10:36:07 am »
You are not allowed to view links. Register or Login
One thing I really miss on the MV8800 is an arpeggiator like the one in JJOS for the MPC. Just a simple up, down, up then down  would be a good start.

I really would like an arpeggiator too, it's probably my #1 feature I'd like to add.  I did get an Arpie not too long ago, but having one integrated into the MV would be awesome.  MIDI effects in general would be cool.  Shift + MFX and have a nice list of them to apply per track.   :)

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #11 on: July 08, 2019, 10:39:15 am »
You are not allowed to view links. Register or Login
I would like to request another 8 song audio tracks making a total of 16 (+1 existing pattern audio track).
With one more song mixing page for tracks 9-16.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Currently using MV8-OP1 R-BUS to DIF-AT24 ADAT interface to run with plugins like iZotope Nectar and Vocal Synth hosted by Cantabile 3.0.

I do mostly rock, etc so I want more audio tracks also.  My guess is that the processor can only handle that many at a time, but once I know where that code is I can try bumping the limit from 8 to see how it behaves.  It's possible Roland made these limitations due to resources (the processor only runs at 133Mhz!, a chip from 1998), or they are artificial limits to give some headroom or avoid potential hiccups.

Offline Waxdat

  • Moderator
  • Full Member
  • *****
  • Posts: 134
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #12 on: July 08, 2019, 11:50:48 am »

Offline hangnef

  • Full Member
  • ***
  • Posts: 127
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #13 on: July 08, 2019, 03:52:52 pm »
You are not allowed to view links. Register or Login

That makes a lot of sense.  There are bottlenecks for sure - the IDE bus, the CPU, memory bus, etc.  I will know more as I dig deeper.  And yep, the 133Mhz CPU was made around 1998.   :o

Offline Benjah

  • *
  • Posts: 6
    • View Profile
Re: Possible enhancements/fixes for MV firmware
« Reply #14 on: July 08, 2019, 10:33:29 pm »
You are not allowed to view links. Register or Login

I really respect Mike Acosta but I don't think he has a technical engineering perspective and as such so I don't take his comments too seriously. An arpeggiator could be treated like an additional quantiser ie grid, swing, groove OR arpeggiator. That would be one way to do it.

"The code is written in C++, which makes things a LOT more difficult"

Why does C++ make it more difficult?