Giter VIP home page Giter VIP logo

vkhandybug's Introduction

VkHandybug

Debugger for the Atari Lynx emulator Handy.

Based on ImGui, GLFW/Vulkan, reasonably cross platform (Linux - GCC 12.1, Windows - Visual Studio 2022, macOS - Xcode 14.2).

Binaries

Latest Windows binaries and Linux Flatpak can be found on the releases page.

Usage

First run

You will first need to set the Lynx ROM image path, please use the MAIN -> Settings... menu to do so.

Breakpoint condition

The breakpoint condition uses Lua, please refer to Lua's documentation for more information on the syntax. You can access the Lynx memory by using the different accessors RAM, ROM, MIKEY, SUZY, CPU, CART, EEPROM by simply using them as arrays, for example RAM[0x0012], MIKEY[0xFD02]. You can also access the CPU state by using the REGS accessor, it has the following properties: A, X, Y, PC, PS, SP, for example REGS.X.

The condition can be edited by simply clicking on the condition cell of the corresponding breakpoint.

RAM[0x50FD] > 12 and REGS.X ~= 0

If you need the breakpoint condition to be able to trigger at any PC, use a breakpoint address of 0.

Symbols

To load symbols create a file with the same name as the cart but with the .lbl extension. The lbl file can be a Vice label file (generated by cl65 -Ln option) or simply be a list of "addr label".

  0034 here
  4ADE andhere

Building

Dependencies

Compiling

Linux

git clone https://github.com/LLeny/VkHandybug.git
cd VkHandybug
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

AppImage

cmake --build . --target=vkhandybug.AppImage

The binary should be created in the folder ./bin

OSX

git clone https://github.com/LLeny/VkHandybug.git
cd VkHandybug
mkdir build
cd build
cmake -G Xcode -DCMAKE_BUILD_TYPE=Release ..

Open the generated vkhandybug.xcodeproj with XCode
Select vkhandybug scheme
Run / build

Dependencies

vkhandybug's People

Contributors

42bastian avatar kanedafr avatar lleny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

vkhandybug's Issues

FetchContent fails

Dependencies are fetched using FetchContent_Declare on tools/dependencies.cmake
When dependency is fetched from a git repo, if GIT_TAG is a commit hash, you can't set GIT_SHALLOW to TRUE

From https://cmake.org/cmake/help/latest/module/ExternalProject.html

If GIT_SHALLOW is enabled then GIT_TAG works only with branch names and tags. A commit hash is not allowed.

which is totally a nonsense since, several lines later, you'll find

GIT_SHALLOW
New in version 3.6.

When this option is enabled, the git clone operation will be given the --depth 1 option. This performs a shallow clone, which avoids downloading the whole history and instead retrieves just the commit ๐Ÿ˜ฑ denoted by the GIT_TAG option.

With OSX cmake 3.28.+, I had to edit dependencies.cmake to disable GIT_SHALLOW on depencies with commit hashes to build

clean delete lynx_render.comp.spv

If you call cmake --build . --target clean, it will delete frontend/resources/shaders/lynx_render.comp.spv and so you won't be able to build again

Memory dump with 'history'

Commercial debugger Trace32 has a feature called SPOTLIGHT. This feature highlights registers/memory contents which has been modified since last break. The highlight fades away after every new stop.
So for example first light red, then red, then dark red and then the normal text color.
This helps much to detect memory which has changed.

Of course, no issue ;-)

Illegal opcodes

The 65c02 has no illegal opcodes. Opcodes not mapped act as NOP. With different number of bytes and cycles.

Add "rollback"

Travel through a stack of states automatically saved at each PC change

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.