Sep 12, 2009

ICU64 for VICE 2.1

It was asked by many, so here it is:

ICU64 for VICE 2.1 
- a PC with Windows XP and .NET Framework 2.0
- the WinVICE 2.1 emulator

Have fun! 
(Read the included README.TXT for the installation instructions)

In this version ICU64 operates as a common debugger over the x64 process. This approach reduces the features that can be supported, in comparison to the Frodo Redpill version. But since it is slightly newer, it has some more functionality and some bugs are fixed. The notable addition is a simple 'memory scanner'.

Also, this version can be connected with other C64 emulators. However, the procedure to do this is a little hard, for safety reasons.

The included file 'x64mm.exe' comes from a recompilation of the VICE 2.1 source code with the -memmap option. (The source code is NOT altered this time, in contrast to the Frodo version). With this option, the x64 tracks the memory accesses made by the CPU (unfortunately with some issues: some RAM accesses reported incorrectly by the x64 as ROM accesses).

I hope that the VICE team will notice the possibilities, so that one day they fully expose the C64 virtual machine to the external applications.


    1. I like this.
      I like this a lot.

    2. Very very cool. Thanks for taking the time to develop this.

    3. A-W-E-S-O-M-E !!!

      no better word describes your work the most! keep the good coding-vibe on!

    4. There is an issue with the Turkish regional settings.

      To solve it, open the 'icu64.ini' with Notepad and retype the two 'i' in capital.
      -old words: 'filepath' and 'filemd5'
      -new words: 'fIlepath' and 'fIlemd5'
      Save the file and start icu64.

      (Thanks to the anonymous user who solved this issue)

    5. Unfuckingbelieveable! I love this idea, wish I had it in 1993... I am on the Mac though, wondering if that would be easy to port it to Cocoa's objective C and make it work with MacVice?

      Keep your awesome work going!

    6. I've played with this version and I am absolutely stunned with this! I've watched a few demos including Parts/Oxyron and it was so interesting to "see" how some effects work (ie. the spherize part reads bytes from the memory in a "spherical" way!)

      Is it possible to view the 256x256 grayscale memory value dump (as in the Mathematica example) in addition to other modes? Would you add this feature?

      Also, I've seen on the video that you're zooming in and out, what are the key shortcuts?

    7. To Digger/Agony:

      The grayscale values will be available in the next version. Zooming is done with the mouse wheel (there is no key shortcut). For other key shortcuts press F1 in the memory view or the graphics view.

      I don't have plans to port this program to other platforms, because I want to evolve it for some time.

    8. Mathfigure, is there any chance you could make this work in Linux? I'm sure you are aware that both Frodo and VICE have Linux versions. Surely it wouldn't be too hard? Well what do you think? Using Frodo in WINE, ICU64 just grinds to a halt when looking at the memory up close. Myself and the other Linux users out there would be really grateful!!

    9. To Borat:
      Unfortunately, I don't have programmatic experience in Linux and it will much time consuming to port it there. ICU64 uses a lot of Windows API and .NET Library and is very depended by these. Besides, the program has not clear architecture (I'm testing different internal structures, yet).

      My suggestion to the Linux users is to use VMware to run Windows. (I think that all Windows applications have much better performance in VMware than in WINE)

    10. Hey this is great! But could you consider allowing to pan the memory window with say holding down left mouse button. It's very akward to use the middle button as some mice with mouse wheel require quite amount of force on the wheel.

    11. Hi mathfigure it's Borat again! I have been doing some reading about .NET and Linux. There is an open source equivalent to .NET, called Mono. It is cross-platform and would allow .NET apps to run on Linux and Mac. My questions: would you be able to port this to Linux/Mac using Mono? If not, is your code open source so perhaps someone else could try to port it? Thanks again for all that you have done! BTW I used ICU64 on Linux using VirtualBox and it works, albeit with very high CPU usage.

    12. @Borat:
      ICU64 makes system calls about shared memory and debugging. These functions are system depended (different in Windows, Linux, Mac, etc).
      In a short test with "mono", ICU64 failed to start because of these calls. Also, a graphical application that I tested, even it worked, it had some graphical and input problems. So there are issues both in low-level (system calls) and high-level (graphics/input).
      About the code, I plan to make public the source code of Frodo Redpill and a version of ICU64 as a .NET library.
      (BTW, this period the project is almost suspended)

    13. Thanks mathfigure! I wish I knew something about programming so I could help but unfortunately I am only learning :( I'll keep trying to learn Mono and C#, maybe that will help in the future. Let us know when you decide to release your code. It is very much appreciated and your work is excellent!

    14. I'd also very much appreciate if the sources of ICU64 were released.
      I'm still DREAMING about a similar powerful debugger for hacking a VMWARE-PC (not "just" a c-64).

    15. Sorry, the source code of ICU64 (which contains the user interface) will not released (at least not soon). But the source code of "Frodo Redpill" (which is most important for the programmers) will be released. Also the source code of ICU64lib (a .NET interface for Frodo Redpill) will be released too. Both releases will occur at the end of this summer (since I need full free time to program).

    16. ... hope to see an updated ICU64 VICE supporting the same features as FRODO REDPILL... cheers and... keep up the good work!

    17. Hey Mathfigure,

      How are you? Are you still planning to work on ICU64 and release the sources? There's been some active development on MacVice (now it includes memory debugger – Maybe ICU64 could also run on a Mac now?


    18. Hi Tomek,

      To be honest, the FULL source code of ICU64 may never be published. Mostly because it's not in a publishable form (and I don't know if ever will take one). Another problem is that the user interface of ICU64 (dynamic, interactive, zoomable), except that is handy, it also has commercial value (it can't released just like that yet). However, some of its basic aspects will be presented in time with sample code that will manipulate the Frodo Redpill.
      The FULL source code only of Frodo Redpill will be published, as a paradigm of an emulator that provides full access to its virtual machine (which is the basic idea that I want to spread). ICU64 is just an application over Frodo Redpill that demonstrates the possibilities with such an emulator.
      Porting is not my goal; new tools and emulators is my goal; many new tools that will be created from many other programmers for a few good emulators that will give such a possibility.

      MacVICE is VICE with some good extras (unfortunately I can't test it because I don't have a Mac). I just hope that every view is dynamic and editable (because that's the features that I like and any modern computer can do), and I hope that a programmatistic interface will also be embeded (because here is the real power). Of course, if the last thing is implemented from the VICE team then all the VICE ports will take the benefit and much more programmers could create new tools.

    19. Hi Mathfigure! :) Hope you're well. How's things? Have you got further plans regarding ICU64? I've just discovered the Memory CPU events also shows ROM read/write when you resize the window. Nice! I was wondering how long it would take you to add the memory view in 256x256 grayscale.


    20. @Digger
      The ICU64 v0.2 for Frodo that I'm working on, includes the grayscale view. The ICU64 for VICE has no any progress, because I want to finish the Frodo version first.
      In the summer (where I'll have free-time), I will try to fix the bugs of v0.2, and in parallel, I will update the older versions. So, even if I fail (once again) to release the v0.2, at least I will release the older versions, bug-fixed and updated.

      PS: My intuition says that things will go well this summer.

    21. :) Good news. I'm glad you haven't gave up :)


    22. I like this very much. I tried it a year ago for my network game, SpaceCommand. I was looking for another debugger and found yours. I had some other glitches in the game code back then and continued on using the Monitor in VICE. I had some difficulty trying to find the commands for this, in a readme or help file. Since then, I made a lot more progress with my network game and I like to try this again. Where could I find the command for this ?

    23. I see now, it depends which window I'm currently using. Sort of like a context-sensitive help. I can see the diff commands now if I press F1 while in the Memory window, or the Graphics window, etc. Before I was only looking in the Toolbar window

      1. Yes, almost every window you open has a help via F1. BTW, If your code can run on the Frodo emulator, I suggest you to use the Frodo version of icu64, since it has much more features currently.