Regenerator 1.5

Es gibt 8 Antworten in diesem Thema, welches 2.561 mal aufgerufen wurde. Der letzte Beitrag (21. Mai 2016 um 12:22) ist von ZAK256.

  • Hi.

    A new version of Regenerator, the interactive disasembler, has been released.

    Whats new in version 1.5:

    - Restructured the GUI so it fits on smaller screen. Also restructured the context menu (right click). Added buttons for Label, Parameter and Comment (Line and Side) creation.
    - Added HI/LO and LO/HI LOOKUP tables. You need to select both tables (they need to be one after another) and then click the button to make this type of lookup table. You can also make tables that reference pointers-1 if "stack" checkbox is checked, this is for return values put on stack!
    - Added LOAD OFFSET option and loading of .bin and .rom files which are pure binary files (you can rename any binary file to .bin or .rom and load it into Regenerator now). When it is loaded its Address will be $0000 but with the Offset: option you can change it to anything you want. Code Start and End will change accordingly... you can still use them that way.
    - Added labels.txt file which includes predefined labels for C64 Kernal routines. You can edit this file and change/add new labels as you wish. A new option "Use Predefined file" is used to enable or disable usage of these labels.
    - "Add/Edit User Parameter Label" added to context menu (right mouse click). This will add (or edit) the label of the Parameter of the operant on the selected line. Very usefull to quickly add variable names!
    - Improved keyboard handling a bit. If you use Regenerator with the keybord it will not jump to the start of the assembly when you generate a Data Block anymore. You can press U and P to add labels for the address (or parameter) you are currently on.

    Bitte melde dich an, um diesen Link zu sehen.

    Enjoy!

  • Thank you. I missed even the 1.4, but I see now, it has been only a few days ago :D

    ___________________________________________________________
    Meine Kreationen: Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki

  • After 1.4 there were quite some reasonable feature requests that I thought would be nice to add and while everything is still in my head. So 1.5 came quicker than expected. Also a lot of bug fixes all around ...

  • Thank you, for this new version.

    If you should go the ideas for new functions, because I had still a feature idea.
    A sidebar with jump arrows (similar to Bitte melde dich an, um diesen Link zu sehen.) would be really great.

    An export as an image file would then, of course, good.

    Bitte melde dich an, um diesen Anhang zu sehen.

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<
    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

  • That is a good idea, what would be the criteria to show the jump arrow ? I.e. if I would show every jump arrow in the disasembly it would just become unusable... also it is not possible to just display the jump arrow for the selected line since I would have to rebuild the list (because of the way it is coded)...

  • Hi Tom-Cat,

    all internal jumps to get an arrow. External jumps don’t get an arrow (for example, ROM routines). All Jumps (JMP JSR) get a solid line for the arrow. All Branch (BNE, BEQ, etc.) get a dashed line for the arrow. The arrow which of the active line starts are can be highlighted (color itself as changes to red or yellow). If the arrows are all over each other, is the very unreadable (see picture "Without Swim Lanes.png").
    The trick is adjacently represent the arrows (see picture "With Hidden Swim Lanes.png"). The proper arrangement is a major challenge. I imagine it like Swim Lines (see image "With Swim Lanes.png").

    A simple assignment to the Swim Lines could be done as follows:

    • The "length" is calculated from all the arrows. The length corresponding to the bytes which are jumped over.
    • The shortest arrows are first distributed to the Swim Lines. Most can be drawn on Swim Line 1. Then always Longer arrows on the Swim Lines are distributed.
    • In determining a Swim Line is crucial that no other arrow is on the way to the goal already on the swim line. Should another arrow on the Line Swim be, so a higher Swim Line must be used. As a swimmer on a Swim Line which meets another swimmer and evades.

    please excuse my bad English
    greeting
    Hans

  • The images were unfortunately heavily scaled.
    Therefore, here again as a zip archive.

  • No, this won't go... tried to do something but the ListBox control doesn't represent the arrows well, so this is unfortunetly out :(

  • Here is a simple solution proposal:

    • The arrows are simply represented by character set. ┌ ─ ► └ │
    • The swim lanes can be easily imaged by more listbox elements.
    • The vertical scolling of all list box elements is synced to the main list box element.
    • Ok, the creation of the texts for the swim line listbox elements is somewhat complicated.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Possible help:

    • Bitte melde dich an, um diesen Link zu sehen.

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<
    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

    Einmal editiert, zuletzt von ZAK256 (21. Mai 2016 um 12:31)