THE HACKER'S VIEW OF THE COMMODORE 64

Sep 1, 2009

First Release of ICU64 and Frodo Redpill

After the first public preview of ICU64, the hacking tool that provides real-time view and edit of the C64 internals, here is the first public version: 
You can now experience the hacker's view of the Commodore 64!


(the above video is also available at vimeo)

Requirements:
- a fast PC with Windows XP and .NET Framework 2.0
- the Frodo v4.1 emulator

NOTE
It is still a prototype, and it is missing a lot of functionality and user guidance. This software is intended for advanced users.

28 comments:

  1. Woah, it's definetely the best looking C64 hacking tool ever! Will do some extensive testing on the WE and then come back with a huge wishlist (-;

    BTW, it works fine here both with Win-XP and 98SE (and probably other Win9x derivates supported by the NET 2.0 package, too)

    Great job, keep up the good work!

    ReplyDelete
  2. Holy crap! That is frekin amazing! GREAT JOB x 100000!

    Not too familiar w/ mathematica. How did you get it to work w/ frodo memory?

    Nice job. Excellent!

    ReplyDelete
  3. [[anonymous]]
    Thanks. I'm waiting for this wishlist to merge it with my TODO list. As a start, to incite your imagination, play with the 'step mode'. Here is how:

    [space] Switch between real-time/break-time
    At break-time, you can step forward to the:
    [PgDn] next frame
    [Down] next rasterline
    [Right] next clock cycle
    [>] next cpu instruction

    [[5k3105]]
    Mathematica can easily link to .NET applications. In the video, I use a special version of icu64 as a .NET library via which Mathematica has full access to the emulator. This could be achived also via the normal version which is a .NET application too. (and this is something that included in my TODO list).

    ReplyDelete
  4. Hello thanks for this amazing software but i have a problem :/ my problem is when i start (Frodo Redpill.exe) an error occurs that says "Frodo Error"
    Cant "find basic ROM "
    Press OK to Quit.
    'OK' 'Cancel '

    ReplyDelete
  5. See the requirements on the post and read the 'readme.txt' inside the zip file (you should first install 'Frodo v4.1' and then copy the 'Frodo Redpill.exe' to the Frodo's folder).

    ReplyDelete
  6. Please port this awesome tool to VICE

    Impressive, really!!!

    WE WANT MORE!

    ReplyDelete
  7. The VICE version will be available in about a week, but with LESS features (MORE features on following versions and even more for Frodo).

    ReplyDelete
  8. OH MY GOD, this is fucking AMAZING. I *_wish_* there was a debugger like this for virtual PC machines like VMWARE or QEMU. Can you....? :-)

    ReplyDelete
  9. For VMware it is easy to see the whole memory (the state) without the memory accesses (the events). I suppose that the same is valid for Virtual PC and all these 'isolated PC environments'.

    A pure virtual machine of PC (a PC emulator), is 'Bochs'. Theoretical, you can do anything with it modifying its source code. But I don't have examine it, so I can't tell how easy or difficult it is.

    (BTW: I wish too, to have -FULL CONTROL- over MY PC or any digital machine that I OWNED)

    ReplyDelete
  10. Simply awesome! Great tool.
    A nice addition would be the usage of the scroll wheel or mouse movement in a kind of Jog/Shuttle, where you can position/track the execution of the machine forward & _backwards_ (e.g. for a tracked/logged sequence).

    Thank you!

    ReplyDelete
  11. Here is a small patch that fixes the wrongly reported CHARROM accesses by the VIC.
    (Use a hex editor)

    File: "Frodo Redpill.exe"
    File offset: 0001C15E
    Old value: 02
    New value: 01

    To verify:
    Start Frodo Redpill and ICU64.
    Open the Memory View, press TAB to switch to 'CPU/VIC events', and re-size the window to see the whole memory. On the top of the right side you should see the CHARROM accesses that performs the VIC for every PETSCII character shown on the screen.

    ReplyDelete
  12. To eliminate some flickering artifacts in Windows Vista go to Frodo's Tools> Preferences> WIN32 and check the "Always Copy" item inside the "Video" group.

    ReplyDelete
  13. can you consider releasing the source? I'm interested in working on this and porting it to linux and osx

    ReplyDelete
  14. video not available due to copyright restrictions (germany)

    ReplyDelete
  15. OK dude I like that idea. Makes sense to me dude!

    RT
    www.online-privacy.at.tc

    ReplyDelete
  16. Really nice work! Quite nice alternative for memory inspecting/editing in a "live way" :) I just hope it will be available for vice in Linux/other unices, probably posting it to the vice team for inclusion would be an awesome thing from you! Then it can be available for all platforms in the next vice version, I guess.

    ReplyDelete
  17. The source code of ICU64 is in prototype phase (and I don't know how much it will last), so I can't make it public yet.

    The VICE is an excellent emulator. What I expect from the VICE team (or any emulator developer) is an programmatic interface (API), that would expose as much as possible from the internals of the emulator. Then any programmer could develop tools and applications on the host that would handle the virtual machine.

    It's not about a new software but about a new era of software. And I think that this is the way that should be started.

    ReplyDelete
  18. This is beautiful. I often daydream and imagine the memory blocks working together. Quite meta.

    ReplyDelete
  19. A useful feature would be to be able to see the contents of the Program Counter stack (which goes from 100h to 200h), and pop up (so you pop up from a 'Print Char' subroutine to its caller: 'Print Word').

    ReplyDelete
  20. To Jason Fletcher:

    The visualization frees the imagination for superior things...

    ReplyDelete
  21. I would love for you to release that memory visualization control to the public for use.

    ReplyDelete
  22. Can you upload file for Mathematica?

    ReplyDelete
  23. Can this work with Win7 x64 ?
    Nice work :)

    ReplyDelete
  24. @Mikhail: It is not currently a control (it's a messy code).

    @Anonymous: Mathematica works with a special version of ICU64 as a .NET library. This version of ICU64 (with its full source code) and examples of using it with Mathematica will be available, probably next summer.

    @doggBG: ICU64 crash in Win7-64bit (during zoom-out in a big memory view window). It works fine with Vista-32bit (to fix the flickering that Frodo cause, read above my comment of "OCTOBER 4"). Not tested yet in Vista-64bit or Win7-32bit.

    ReplyDelete
  25. Great tool! I'm very impressed. The current version is already a ground-breaking and epoch-making! Great respect and congratulations to the author.

    I had a few years ago such an idea (about visualisation memory), but I am too weak a C++. I will Write my wish list by e-mail to the author.

    Meanwhile, I did some testing and I recognized the colors in the memory visualization window. This can be useful for users, I hope.

    CPU mode:
    turquoise: execute (and read). It is about 1 byte command (no argument).
    Green: read cell (both as a carried agument command and reading a memory)
    red: entry to the memory cell
    yellow: there is a read and write in any order (since last reset).
    White: execute, and record. This means modifying the code, or use of this cell in different contexts (eg, first unpacked the program, then made this command).

    VIC / CPU mode:
    Green: read it by VIC
    red: entry by the CPU
    blue: execute CPU
    Magenta: execute and store

    In the upper left corner, you can see the adress of context that appealed to the cell!

    The argument made the command, points to the code of this command (1 or 2 bytes back).

    Command code indicates the command performed previously (in chronological terms). You can trace the place from which there was a jump.

    Any memory cell that read or write the processor indicates the address of the command, its argument was.
    For example: if any cell contains a life counter, you can see where is code that changes (or read) it.

    I will do additional testing with preincremented and postincremented addressing mode (via pointers).

    Please correct if I made a mistake. I hope that this shortcut will help.

    ReplyDelete
  26. @Piotr Malaga: Thank you! You are absolutely correct! I just want to summarize and complement:
    ------------
    In "Memory View" window:

    LIGHT color = NEW EVENT
    DARK color = OLD EVENT (history)

    In "Memory - CPU Events":
    RED = CPU WRITE
    GREEN = CPU READ
    BLUE = CPU EXECUTE

    In "Memory - CPU/VIC Events":
    RED = CPU WRITE
    GREEN = VIC READ
    BLUE = CPU EXECUTE

    Any other color is a combination of (R,G,B)x(DARK,LIGHT).
    For proper interpretation of the possible colors, you need to know about color synthesis (e.g: YELLOW=R+G, CYAN=G+B, MAGENTA=B+R, WHITE=R+G+B, etc)

    Example:
    LIGHT YELLOW (LIGHT RED + LIGHT GREEN) means that the byte has just read and written (note: you can't know the order or how many times before the last screen update).
    ------------
    In "Raster - VIC Events" window, where a pixel corresponds to a clock cycle (or 8 horizontal pixels of the C64 display):

    RED = VIC STATE changed
    GREEN = BAD LINE condition is true
    BLUE = RASTER LINE IRQ is enabled
    GRAY = BORDER is ON
    WHITE = VIC BANK changed

    Here, a combination is the overlay of the above five layers.

    ReplyDelete
  27. Full screen 64, never thought it would be possible, but I've always wanted that. Pretty impressive. The hacking tools look sleek. I remember doing some hacking and poking around long ago (monitor/hexdec), also Final Cartdridge 3 with the sprite collision on/off modes to get through the games.

    ReplyDelete