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.
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 (-;
ReplyDeleteBTW, 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!
Holy crap! That is frekin amazing! GREAT JOB x 100000!
ReplyDeleteNot too familiar w/ mathematica. How did you get it to work w/ frodo memory?
Nice job. Excellent!
[[anonymous]]
ReplyDeleteThanks. 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).
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"
ReplyDeleteCant "find basic ROM "
Press OK to Quit.
'OK' 'Cancel '
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).
ReplyDeletePlease port this awesome tool to VICE
ReplyDeleteImpressive, really!!!
WE WANT MORE!
The VICE version will be available in about a week, but with LESS features (MORE features on following versions and even more for Frodo).
ReplyDeleteOH MY GOD, this is fucking AMAZING. I *_wish_* there was a debugger like this for virtual PC machines like VMWARE or QEMU. Can you....? :-)
ReplyDeleteFor 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'.
ReplyDeleteA 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)
Simply awesome! Great tool.
ReplyDeleteA 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!
Here is a small patch that fixes the wrongly reported CHARROM accesses by the VIC.
ReplyDelete(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.
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.
ReplyDeleteCazzo, grandioso! Complimenti!
ReplyDeletecan you consider releasing the source? I'm interested in working on this and porting it to linux and osx
ReplyDeletevideo not available due to copyright restrictions (germany)
ReplyDeleteOK dude I like that idea. Makes sense to me dude!
ReplyDeleteRT
www.online-privacy.at.tc
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.
ReplyDeleteThe 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.
ReplyDeleteThe 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.
This is beautiful. I often daydream and imagine the memory blocks working together. Quite meta.
ReplyDeleteA 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').
ReplyDeleteTo Jason Fletcher:
ReplyDeleteThe visualization frees the imagination for superior things...
I would love for you to release that memory visualization control to the public for use.
ReplyDeleteCan you upload file for Mathematica?
ReplyDeleteCan this work with Win7 x64 ?
ReplyDeleteNice work :)
@Mikhail: It is not currently a control (it's a messy code).
ReplyDelete@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.
Great tool! I'm very impressed. The current version is already a ground-breaking and epoch-making! Great respect and congratulations to the author.
ReplyDeleteI 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.
@Piotr Malaga: Thank you! You are absolutely correct! I just want to summarize and complement:
ReplyDelete------------
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.
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