Giter Site home page Giter Site logo

slajerek / retrodebugger Goto Github PK

View Code? Open in Web Editor NEW
171.0 171.0 18.0 34.74 MB

Retro Debugger is a multiplatform debugger APIs host for retro computers: C64 (Vice), Atari800 and NES (NestopiaUE).

CMake 0.22% Shell 0.01% C 84.92% C++ 14.40% Assembly 0.26% SWIG 0.12% Ruby 0.08%

retrodebugger's Introduction

OooSLAJEREKooO

retrodebugger's People

Contributors

microtopstarion avatar singlecopy avatar slajerek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retrodebugger's Issues

Enhancement: Zoom Memory, Disassembly, CPU Windows

Like most c64 sceners I am old and I cannot read this tiny font on a 2k or 4k monitor. It would be great if you could zoom the views of the c64 memory and c64 disassembly views as well as the CPU window.

Support FDS (Famicom Disk System) files for NES

At least as of Nestopia v1.15.1, FDS (Famicom Disk System) files are supported. However, Retro Debugger does not recognize when I attempt to load one.

Conventional emulators like Nestopia and FCEUX require supplying the FDS BIOS ROM that is expected to be named disksys.rom. So Settings->NES->Select NES ROMs folder will be necessary. As well as the instructions in this repo's README.md to supply the aforementioned ROM file.

Being the disk system introduces a disk drive, menu options to Open, Detach, and swap disks for the NES will be necessary. Drive related utilities would also be nice but obviously not required and should be addressed in a separate issue.

0.64.62 does not run on Win 8.1 X64

Describe the bug
0.64.62 won't start on Windows 8.1 X64. Gives error "Entry Point Not Found". "The procedure entry point SetThreadDescription could not be located in the dynamic link library RetroDebugger.exe"

To Reproduce
Steps to reproduce the behavior:

  1. Download 0.64.60.04E and run it. Works fine.
  2. Download 0.64.62 and run it. Will not start.

Expected behavior
0.64.62 to run on Windows 8.1 X64.

Docking reenabled on every app restart

I really like new customizable UI! But on every restart of RetroDebugger, docking is re-enabled, causing immediate mayhem when moving panels and destroying workspace (as that is automatically saved without question).

I found out I can disable window docking by unticking Help-ImGuiDemo-Configuration-Configuration-io.ConfigFlags:DockingEnable but that option is re-enabled on every app restart. Can this change be permanent?

image

Clean build fails due to linking errors (undefined reference to ...)

Describe the bug

If the executable is built from scratch via CMake, the build fails at the linking step due to lots of undefined reference errors.

To Reproduce

With MTEngineSDL checked out and built in a sibling directory:

mkdir -p build
cd build
cmake ..
make

Expected behavior

Builds artifact without errors.

Desktop (please complete the following information):

OS: Arch Linux
Version: latest Git HEAD (0.64.66)

Additional context

I could fix the build by applying the following patch:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 827dd91..a651337 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1246,8 +1246,8 @@ add_executable(retrodebugger
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugSymbolsSegment.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugAsmSource.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugSymbols.cpp"
-    "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugMemoryMapCell.cpp"
-    "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugMemoryMap.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugMemory.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/Symbols/CDebugMemoryCell.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/C64/CDebugInterfaceC64.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/C64/CDiskImageD64.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/MenuItems/CDebugInterfaceMenuItem.cpp"
@@ -1256,13 +1256,18 @@ add_executable(retrodebugger
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/CDebugDataAdapter.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/CDebuggerEmulatorPlugin.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/CDebugInterface.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/DebugInterface/CDebugEventsHistory.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Screens/CViewC64.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Screens/CViewMainMenu.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewMemoryMap.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewEmulationState.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewEmulationCounters.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewFileBrowser.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDataDump.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDataMonitor.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDataPlot.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDataWatch.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDebugEventsHistory.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewMonitorConsole.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewDisassembly.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/CViewSourceCode.cpp"
@@ -1338,11 +1343,12 @@ add_executable(retrodebugger
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64ColorRamScreen.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64StateSID.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64Disassembly.cpp"
-    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541FileD64.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64SidTrackerHistory.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541StateCPU.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541StateVIA.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541Led.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541Browser.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewDrive1541DiskData.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64StateVIC.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64SidPianoKeyboard.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Views/C64/CViewC64EmulationCounters.cpp"
@@ -1410,6 +1416,7 @@ add_executable(retrodebugger
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/libpsid64/libpsid-reloc65.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/libpsid64/libpsid-theme.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/libpsid64/libpsid-screen.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/C64SIDDump.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/C64SIDFrequencies.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Tools/CGuiLockableList.cpp"
 
@@ -1430,7 +1437,7 @@ target_link_libraries(retrodebugger
     gobject-2.0
     gio-2.0
     dbus-1
-    /usr/lib/x86_64-linux-gnu/libsndio.so
+    sndio
     dl
     m
     pthread

Crash when moving mouse cursor down file menu

Describe the bug
On macOS 13.4.1 moving the mouse cursor down from "Open Most Recent" to "Open Recent" causes a crash. This was first reported and discussed a bit last December in the Facebook group.

To Reproduce
Steps to reproduce the behavior:

  1. Tap on File menu
  2. Move cursor down until crash

Expected behavior
no crash

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: macOS
  • Version 13.4.1

Additional context
first noticed in version v0.64.62

Linux build: undefined reference to symbol 'XSynchronize'

Describe the bug
Compilation fails on Debian 5.14.9-2 (2021-10-03) x86_64 GNU/Linux .
MTEngineSDL was built beforehand. It is in ../.. as it should be.

Console output
/usr/bin/ld: ../../MTEngineSDL/build/libMTEngineSDL.a(SYS_Platform.cpp.o): undefined reference to symbol 'XSynchronize'
/usr/bin/ld: /lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Desktop (please complete the following information):

  • OS: Linux
  • Version Debian 5.14.9-2 (2021-10-03) x86_64 GNU/Linux

Additional context

Monitor console shows wrong Glyphs for some Characters/Symbols

This probably happens when using RetroDebugger on a different locale than US/EN (german here) - open monitor console and its immediately visible, in the help text where it should be [ or ] its Ä and Ö instead. Also when typing [ or ] it turns into Ä or Ö :)

Still have linking failure due to "undefined reference" errors.

Describe the bug
Build succeeds til 100%, at which point the linking fails.

To Reproduce
Steps to reproduce the behavior:

  1. Checkout retrodebugger and MTEngineSDL
  2. cd RetroDebugger; mkdir build; cmake ./../; make
  3. Wait for errors

Expected behavior
Retrodebugger should build successfully.

Screenshots
[100%] Linking CXX executable retrodebugger
/usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_float() const': /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const'
/usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_int() const': /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:671: undefined reference to internalJSONNode::operator long() const'
/usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_float() const': /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const'
/usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const' /usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_int() const':
/home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:671: undefined reference to internalJSONNode::operator long() const' /usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_float() const':
/home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const' /usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const'
/usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const' /usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const'
/usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:676: undefined reference to internalJSONNode::operator double() const' /usr/bin/ld: CMakeFiles/retrodebugger.dir/src/Views/JukeboxPlaylist/CJukeboxPlaylist.cpp.o: in function JSONNode::as_int() const':
/home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:671: undefined reference to internalJSONNode::operator long() const' /usr/bin/ld: /home/simon/dev/c64/RetroDebugger/../MTEngineSDL/src/Engine/Libs/libjson/_internal/Source/JSONNode.h:671: undefined reference to internalJSONNode::operator long() const'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/retrodebugger.dir/build.make:3032: retrodebugger] Error 1
make[1]: *** [CMakeFiles/Makefile2:198: CMakeFiles/retrodebugger.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Desktop (please complete the following information):

  • Ubuntu 22.04

GUI blank frames + offset

Describe the bug
Each window has got a black frame at the top and at the right of it. There is an offset of the mouse-pointer exactly the size of this frame. If you click on an item, another area of the window is activated. You can see it in the screenshots when trying to close a window (first screenshot) or when accessing the pull-down menu (second screenshot).

Desktop (please complete the following information):

  • OS: Linux
  • Version Debian 5.15.5-2 (2021-12-18) x86_64 GNU/Linux
    retrodebugger-01
    retrodebugger-02

"$" input in C64 Data watch causes crash

Describe the bug
C64 Data watch will crash the Retro Debugger if, when adding a new watch point, I start by typing "$"

To Reproduce
Steps to reproduce the behavior:

  1. "C64"->"C64 Data watch"
  2. In C64 Data Watch window, click "+"
  3. In "Add watch point" text area, begin address by typing "$" for an immediate crash (and program quits)

Expected behavior
To either block "$" characters (as they're not needed) or to tolerate addresses that start with "$"

Desktop

  • OS: Windows 11 Home
  • Retro Debugger v0.64.66

Missing file C64DebuggerPluginShowPic.h

Latest commit (v0.64.64) seems to be missing a file "C64DebuggerPluginShowPic.h"

[  0%] Building CXX object CMakeFiles/Plugins.dir/src/Plugins/C64D_InitPlugins.cpp.o
/tmp/RetroDebugger.git/src/Plugins/C64D_InitPlugins.cpp:10:10: fatal error: C64DebuggerPluginShowPic.h: No such file or directory
   10 | #include "C64DebuggerPluginShowPic.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

1541 Disk directory and 1541 Disk contents unsupported for .g64 images?

Describe the bug
1541 Disk directory and 1541 Disk contents views seem to work with .d64 images, but not .g64 images.

To Reproduce
Steps to reproduce the behavior:

  1. File->Open a .g64 image
  2. open C64->1541 Drive->1541 Disk directory
  3. open C64->1541 Drive->1541 Disk contents

Expected behavior
To function as they do with d64 files.

Screenshots
Behavior with a .d64 file:
image

Behavior with a .g64 file:
image

Desktop (please complete the following information):

  • OS: Windows 11 Home 23H2
  • Retro Debugger v0.64.68

Window position is not correctly restored on restart on MS Windows

Describe the bug
After restarting app, the window position is not correctly restored on MS Windows. Each time app is restarted the app window moves slightly up, causing it to finally leave screen.

Expected behavior
App window should appear with the same position as when app was closed.

Desktop (please complete the following information):

  • MS Windows

Additional context
This looks to be a bug in SDL2 related to WinAPI and specifically SDL_GetWindowPosition. It is noted also in SDL2 docs. I was not able to find a solution that is reliable and portable between various MS Windows versions, to get window position x,y and then set a new position on startup using the same x,y. It looks that position needs to be adjusted by some theme metrics like SM_CYCAPTION or something on some MS Windows versions, but on some others not.

The problem is exposed in src.Windows/SYS_Platform.cpp and VID_StoreMainWindowPosition, VID_GetStartupMainWindowPosition

Possible workaround is to move window to a new position after it is spawned, not on startup - that worked in old C64 Debugger.

VIC Editor does not respect VIC Border mode

Describe the bug
When VIC border mode is selected different than Default the grid is not aligned.
This is a regression bug, as that was already working in older commits.

To Reproduce

  1. Select Settings/C64/VIC/VIC Border mode to Full
  2. Check VIC Editor's grid

Screenshots
Screenshot 2024-06-04 at 12 00 20

Shows up "Assertion failed!" dialog upon start

Describe the bug
After I have rearanged the layout of the app (I moved C64 CPU status to the very top of the screen), I no longer can run RetroDebugger without this error (see screen shot). It is an assert fail on node->TabBar == 0 (imgui.cpp Line 16271). When I start RetroDebugger normally (by clicking exe file from Win Explorer, assertion dialog shows, but I can ignore it and debugger then starts normally). When I use RetroDebugger from KickAssembler VSC plugin (by Paul Hocker), no matter what I press, debugger gets closed after I click anything on that assert dialog.

To Reproduce
Steps to reproduce the behavior:

  1. Run Retrodebugger (either by clicking on exe or by Ctrl+F6 from VSC)
  2. See error

The error is most likely caused by my local configuration, but I cannot find the place where it is stored (I don't see it in Users/). Probably cleaning that out would help, but sadly I don't know how to do it.

Expected behavior
I don't see a reason for this assert dialog to show up. App should work no matter how I rearrange the layout.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 11
  • Version: 0.64.64

Additional context
Add any other context about the problem here.

Improvement - monitor cmd or key shortcut to breakpoint first unrun code line throughout memory

I may have missed this as an option but can't seem to find it if it is already there.

The option would be that either by a command in monitor or a key shortcut that when called would put a breakpoint on the first line of un run code ... this would make finding things a lot easier such as collisions .. joystick movements... game over routines etc as just run the game and do what you don't want to find (move left.. right etc ) then hit this command .. then 9 times out of 10 it would breakpoint on death .. game over .. etc etc

Cant add watch / C64 Data Watch

Describe the bug
Can't add data watch

To Reproduce
Steps to reproduce the behavior:

  1. Open C64 Data watch view
  2. Click on '+'
  3. Select the variable from the combobox
  4. Getting the error: "Cant add watch / Invalid address or symbol: XXX"

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
retro-shot

Desktop (please complete the following information):

  • Linux, gtk, Arch
  • Version 0.64.68 and 0.64.66

Additional context
works in 0.64.62, switched back to this version for now

Greetz seytan/aps/reflex

Breakpoints in monitor console and GUI are not consistent

Add a breakpoint in the GUI, list breakpoints using the monitor console -> it does not show

Add a breakpoint in the monitor console, look at the list in the GUI -> it does not show

Expected: both use the same list(s) and show the same things

Implicit Declaration errors

When trying to build the current version, I'm getting the following issue:

[  1%] Building C object CMakeFiles/Plugins.dir/src/Plugins/GoatTracker/gt2/gconsole.c.o
/home/evil/src/RetroDebugger/src/Emulators/atari800/esc.c: In function ‘ESC_Run’:
/home/evil/src/RetroDebugger/src/Emulators/atari800/esc.c:154:9: error: implicit declaration of function ‘c64d_show_message’ [-Wimplicit-function-declaration]
  154 |         c64d_show_message(buf); //"CPU JAM has occured");
      |         ^~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/EmulatorAtari800.dir/build.make:230: CMakeFiles/EmulatorAtari800.dir/src/Emulators/atari800/esc.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:117: CMakeFiles/EmulatorAtari800.dir/all] Error 2

Note that this does not appear to be the only file with this issue:

[ 27%] Building C object CMakeFiles/EmulatorVice.dir/src/Emulators/vice/gfxoutputdrv/gfxoutput.c.o
/home/evil/src/RetroDebugger/src/Emulators/vice/gfxoutputdrv/gfxoutput.c: In function ‘gfxoutput_early_init’:
/home/evil/src/RetroDebugger/src/Emulators/vice/gfxoutputdrv/gfxoutput.c:128:5: error: implicit declaration of function ‘gfxoutput_init_godot’; did you mean ‘gfxoutput_init_koala’? [-Wimplicit-function-declaration]
  128 |     gfxoutput_init_godot(help);
      |     ^~~~~~~~~~~~~~~~~~~~
      |     gfxoutput_init_koala
make[2]: *** [CMakeFiles/EmulatorVice.dir/build.make:622: CMakeFiles/EmulatorVice.dir/src/Emulators/vice/gfxoutputdrv/gfxoutput.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:169: CMakeFiles/EmulatorVice.dir/all] Error 2

We also have these in pokeyrec.c:

[ 26%] Building C object CMakeFiles/EmulatorAtari800.dir/src/Emulators/atari800/pia.c.o
/home/evil/src/RetroDebugger/src/Emulators/atari800/pokeyrec.c: In function ‘POKEYREC_Initialise’:
/home/evil/src/RetroDebugger/src/Emulators/atari800/pokeyrec.c:75:24: error: implicit declaration of function ‘Util_sscandec’ [-Wimplicit-function-declaration]
   75 |             interval = Util_sscandec(argv[++i]);
      |                        ^~~~~~~~~~~~~
/home/evil/src/RetroDebugger/src/Emulators/atari800/pokeyrec.c:77:17: error: implicit declaration of function ‘Log_print’ [-Wimplicit-function-declaration]
   77 |                 Log_print("Negative interval not allowed");
      |                 ^~~~~~~~~
/home/evil/src/RetroDebugger/src/Emulators/atari800/pokeyrec.c:84:24: error: implicit declaration of function ‘Util_strdup’ [-Wimplicit-function-declaration]
   84 |             filename = Util_strdup(argv[++i]);
      |                        ^~~~~~~~~~~
/home/evil/src/RetroDebugger/src/Emulators/atari800/pokeyrec.c:84:22: error: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
   84 |             filename = Util_strdup(argv[++i]);
      |                      ^
make[2]: *** [CMakeFiles/EmulatorAtari800.dir/build.make:272: CMakeFiles/EmulatorAtari800.dir/src/Emulators/atari800/pokeyrec.c.o] Error 1

gcc also complains about a lot of incompatible pointer types:

/home/evil/src/RetroDebugger/src/Plugins/GoatTracker/gt2/gconsole.c: In function ‘initscreen’:
/home/evil/src/RetroDebugger/src/Plugins/GoatTracker/gt2/gconsole.c:85:26: error: assignment to ‘unsigned int *’ from incompatible pointer type ‘unsigned char *’ [-Wincompatible-pointer-types]
   85 |         rgbaPixelsBuffer = gtGetRgbaPixelsBuffer();
      |                          ^
/home/evil/src/RetroDebugger/src/Plugins/GoatTracker/gt2/gconsole.c: In function ‘fliptoscreen’:
/home/evil/src/RetroDebugger/src/Plugins/GoatTracker/gt2/gconsole.c:389:47: error: initialization of ‘unsigned char *’ from incompatible pointer type ‘unsigned int *’ [-Wincompatible-pointer-types]
  389 |                         unsigned char *dptr = rgbaPixelsBuffer + y *16 * pitch + x*8; //+1;
      |                                               ^~~~~~~~~~~~~~~~

To Reproduce
Steps to reproduce the behavior:
cd RetroDebugger
mkdir build
cd build
cmake ./../
make clean
make

The first error seems valid, at first glance... it looks like that first function is declared in ViceWrapper.h. If I add an include for it, the error goes away.

The second error also goes away, if I just uncomment '//#include "godotdrv.h"' on line 44.

The third set of errors goes away by adding a-util.h and a-log.h to the pokeyrec.c includes.

However... There are still seven other incompatible pointer types and other errors yet to fix, so I'm wondering if I'm going down the wrong path here... if this somehow builds for everyone else on Linux.

  • OS: Ubuntu Noble Numbat (24.04)
  • Version: Git as of 24/03/29

Add VICE as a Code monitor option for NES and Atari 800

The Default Code monitor has the basic functionality one would expect. But the VICE Code monitor is way better. If there was a way to select it as an option when running NES or Atari 800, that'd be ideal.

UI-wise, it'd add Settings->Atari 800->Code monitor->VICE, Settings->NES->Code monitor->VICE.

Because it's not already available, I'm guessing it's because the VICE monitor logic is where it normally is which resides in VICE rather than in an area easily usable by NES & Atari 800. If that's the case and it's simply too much to extract it, then perhaps this is more of a request to enhancement the Default Code monitor. The big hitters I immediately miss were the "break" command (and inversely "del") and the disassemble and assemble commands.

Double Clicking the Program Counter crashes emulated CPU while paused at a memory write breakpoint

Describe the bug
Double clicking the PC set it to 0000 and crashes the application (unable to reset).

To Reproduce
Steps to reproduce the behavior:
Double Click on the Program Counter while a c64 program is executing and is paused at a memory write break point.

Expected behavior
I assumed this would take me to the execution address in the monitor window.

Desktop (please complete the following information):

  • OS: Windows 7

Compiling v0.64.66 on Debian fails with "unknown type name ‘BYTE’"

Compiling RetroDebugger fails with errors about BYTE and WORD being unknown types.
There's also a large number of warnings - I guess at least the "implicit declaration of function X" warning may hint at the root of the problem.

I have tried to compile RetroDebugger as instructed in the README.md, including installing the development libraries and building MTEngineSDL in the same dir where RetroDebugger is.

For a complete log of the output of cmake and make see this:
https://pastebin.com/FD1j48pm

  • OS: Debian testing
  • Version 0.64.66

Blackout

Hello Marcin!

Describe the bug
When launching the C64 Debugger (even C64Debugger-064582-m8.app) there's a black screen. Same is true for the recent release. Old debugger freezes (need to Force Quit), new debugger runs but no C64 screen visible.

Screenshots
Screenshot 2021-12-25 at 14 02 17

Desktop (please complete the following information):

  • OS: macOS 12.0.1 Monterey
  • Version 0.64.60.04E

Additional context
It's kinda random, I've had it before using the same setup, then it was gone. Then it happened again.
Restart doesn't help. I'd like to delete caches/prefs but can't find any.

/Digger^ESM

Linux Linking error: undefined reference to IMPlot::BustItemCache()

Tested on Ubuntu Mantic (23.10 alpha): libMTEngineSDL.a makes & compiles fine, and RetroDebugger makes and compiles... until it gets to the linking step, where I receive the following error:

[100%] Linking CXX executable retrodebugger
/usr/bin/ld: /home/evil/src/RetroDebugger/../MTEngineSDL/build/libMTEngineSDL.a(implot.cpp.o): in function `ImPlot::ShowColormapSelector(char const*)':
/home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4755: undefined reference to `ImPlot::BustItemCache()'
/usr/bin/ld: /home/evil/src/RetroDebugger/../MTEngineSDL/build/libMTEngineSDL.a(implot.cpp.o): in function `ImPlot::ShowStyleEditor(ImPlotStyle*)':
/home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4890: undefined reference to `ImPlot::BustItemCache()'
/usr/bin/ld: /home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4897: undefined reference to `ImPlot::BustItemCache()'
/usr/bin/ld: /home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4903: undefined reference to `ImPlot::BustItemCache()'
/usr/bin/ld: /home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4950: undefined reference to `ImPlot::BustItemCache()'
/usr/bin/ld: /home/evil/src/RetroDebugger/../MTEngineSDL/build/libMTEngineSDL.a(implot.cpp.o):/home/evil/src/MTEngineSDL/src/Engine/Libs/implot/implot.cpp:4963: more undefined references to `ImPlot::BustItemCache()' follow
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/retrodebugger.dir/build.make:2923: retrodebugger] Error 1
make[1]: *** [CMakeFiles/Makefile2:198: CMakeFiles/retrodebugger.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

I'm not immediately sure why it would claim it's undefined, when I do see it in the implot_internal.h file included by implot.cpp.

Reset keyboard mapping on mac

Describe the bug
Can't find which files to delete/how to reset keyboard mapping that i've "set as default"

Also an odditiy which only shows it self sometimes, i'll type the word "LIST" for instance, and sometimes the PET ASCII symbols will be typed instead of the character. Can't say much more about this, because i haven't yet found a rhyme or reason this happens and what triggers it.

Desktop (please complete the following information):

  • OS: Mac
  • Version Ventura 13.4

OpenGL2 Backend

Describe the bug
Segmentation fault on Debian 5.14.9-2 (2021-10-03) x86_64 GNU/Linux .

I compiled RetroDebugger and MTEngineSDL. Then started with gdb.

(gdb) r
Starting program: /home/wolf/git/RetroDebugger/build/retrodebugger 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff627d640 (LWP 10873)]
[New Thread 0x7ffff43af640 (LWP 10875)]
[New Thread 0x7fffebfff640 (LWP 10876)]
[New Thread 0x7ffff3bae640 (LWP 10877)]
[New Thread 0x7ffff33ad640 (LWP 10878)]
[New Thread 0x7ffff2b64640 (LWP 10892)]
[New Thread 0x7ffff2b23640 (LWP 10893)]

Thread 1 "retrodebugger" received signal SIGSEGV, Segmentation fault.
CSlrMutex::Lock (this=0x0) at /home/wolf/git/MTEngineSDL/src/Engine/Core/SYS_Threading.cpp:179
179		SDL_LockMutex(mutex);

The same happens with the pre-compiled release alpha v0.64.60.04E.

VICE core is outdated

Yeah, obviously you know this :) However, this is a big problem (IMHO) - and the question is, how we could make it easier to update it and keep it somewhat recent. I have not looked at the current code in detail yet - i did that back when the GUI was still SDL stuff, and back then it was kinda hard, because of all the hardcoded patches etc. Is that still the case? Wouldn't it be possible to change things so the debugger uses the new binary remote protocol, so it can use a recent "headless" VICE build instead of the embedded 3.1? What would be the main obstacles with that? (Obviously we can extend the remote protocol when we find things that are missing and can not be done yet)

D64 autostart fails on apple silicone (M1)

Describe the bug
I can start the Retro Debugger application (by double click on the executable in Finder).
However I can not make any program run that is loaded from disc .d64 or .prg .

To Reproduce
Steps to reproduce the behavior:

  1. Start Retro Debugger by double click program in Finder
  2. Choose a .d64 file after selecting File | Open in menu. (http://csdb.dk/getinternalfile.php/85044/GIANA SISTERS.D64
  3. Got messages/notifications "inserted nnn ..." and "loaded from $0801 to $A8FF"
  4. Nothing happens
  5. Choose Code | Continue and it executes a few lines from $0801 but fails on $0811 "BRK"

Expected behavior
Me playing Giana Sisters all night long and with a happy smile editing diamond characters to change the animations

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: macOS Ventura 13.5.1 (mac with apple ARM silicon M1 processor)
  • Version 0.64.64

Additional context
Add any other context about the problem here.

Greenshot 2023-08-23 22 27 28

C64 CIA window problem.

Hi Marcin,
There is a font scaling problem in the CIA status window. In general, when the font size is changed, the CIA 2 fields are rendered in their original position and obscure some of the CIA 1 state information.

I think the problem is somewhere here:

void CViewC64StateCIA::Render()
{
//	if (debugInterface->GetSettingIsWarpSpeed() == true)
//		return;
	
	float px = posX;
	if (renderCIA1)
	{
		this->RenderStateCIA(px, posY, posZ, fontBytes, fontSize, 1);
		px += fontSize + 190;
	}
	
	if (renderCIA2)
	{
		this->RenderStateCIA(px, posY, posZ, fontBytes, fontSize, 2);
	}
}

or at other place when is used magic 190 number
C64_CIA_Window

Missing Updates on "C64 Screen" while debugging/stepping

Hi, I'm hesitant to open this issue here as it might rather be related to the underlying vice but I hope there are enough knowledgeable people here to help me on this:

When debugging code created by KickAss assembler on RetroDebugger
any update made to memory/hardware which would result in the VIC or SID to update the display or audio is NOT visible while in stepping mode. This is obsevable for e.g. updating the background/frame color ($D021) or by writing into screen memory ($0400) in that mode. Any update in step/break mode will only be visible on the window "C64 screen" after the "continue" command is given...

To my understanding the emulator should not stop the whole machine (clock) but the processor from fetching and processing instructions, leaving the memory and hardware part still buzzing with the systems clock, shouldn't it?

Why would one decide for such design in an emulator?

"C64DebuggerPluginShowPic.cpp" source missing

Hi there,

just did a fresh clone... and tried to compile the sources.

mkdir build
cd build
cmake ./../
-- Configuring done
CMake Error at CMakeLists.txt:191 (add_library):
  Cannot find source file:

    /<...>/RetroDebugger/src/Plugins/ShowPic/C64DebuggerPluginShowPic.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
  .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc


CMake Error at CMakeLists.txt:191 (add_library):
  No SOURCES given to target: Plugins

The C64DebuggerPluginShowPic.cpp seems to be missing in SCM?

Thanks!

Changing keymap?

Hi,

is there a way to change the keymap under linux for the used vice version?
I miss several keys (like *, left arrow, ...). In my native vice version the keymapping is fine and can also be altered.

Thx

Importing Vice or 64tass labels always fails

I am not able to import labels in latest available version, neither vice labels nor 64tass labels. I am not using Java and KickAssembler. If I try to import vice labels I get message:

"Loading lables failed: Error: Found whitespace in your keyname (use quotes to include) at line 1m2 >> al 2860 .dec2b92 al"

Vice labels are in format:

al 2860 .dec2B92
al 38b5 .a3374
al 1865 .chkScrMovingUD
al 1873 .chkScrMovingUD:_l1
al 1886 .chkScrMovingUD:_l2
al 1899 .chkScrMovingUD:_l3
al 18ac .chkScrMovingUD:_l4
al 18ba .chkScrMovingUD:_exit
al 149e .touchingLt
al dbb .MainGameLoop
...

so, just as specified in old documentation where white space also exists. If I prepare same labels in 64tass format, I get another error message:

"Loading labels failed. Error: Found EOF while looking for a key name (check your syntax).

and labels are in format

dec2B92		= $2860
a3374		= $38b5
tblBoxAnimState	= $fb36
chkScrMovingUD	= $1865
touchingLt	= $149e
MainGameLoop	= $0dbb
...

so, in same format as old RetroDebugger docs are specifying. Tried converting CR/LF to LF but getting same errors. Labels are generated by 64tass and generated vice labels work normally in latest Vice, but that's not debugger ... Since automatic loading of labels is not supported for CRT files, I am always trying to manually import them.

BTW, please put clean link to your Paypal donation page, as current link is being blocked by security/adblocking software, and it's impossible to open that link because of viglink. Understand this is being blocked on very sensitive point - payments ;) Cheers!

Missing gcc compiler flag

Hi,

currently the code doesn't compile under "Arch" with GCC 14.1.1.
The fix is really simple, just add CMAKE_C_FLAGS to CMakeLists.txt, like it's already done with CMAKE_CXX_FLAGS.
So, that you have these lines:

set (CMAKE_CXX_FLAGS "-fpermissive")
set (CMAKE_C_FLAGS "-fpermissive")

This is already addressed in issue #31 (atleast in the first posts).

Regards,
Thomas

unmanageable layout - where is settings stored

Describe the bug
dragged panels around, some accidently moved far outside interface, cant not be grabbed anymore

To Reproduce
Steps to reproduce the behavior:

  1. do above

Expected behavior
so many features settings, menus, panels, no documentation or setting stating or showing where layout/program settings are stored

Screenshots
would not matter

Desktop (please complete the following information):

  • OS: probably any
  • Version any

Additional context
workspaces does not fix anything

F9 - Main Menu not working

The F9 key does not show the main menu. Other keys e.g., F10/F11 function as normal. I cannot find anyone else having the same issue, did I miss a change/documentation or is it my setup?

SETUP
Macbook Pro M1
UTM virtual box
Ubuntu 22.04 64bit Aarch64
RetroDebugger successfully built from source

I checked whether MacOS was blocking/reserving the F9 key but cannot find anything. No idea what to check anymore, any ideas?

Linux build: libglew-dev needed

Describe the bug
Compilation fails on Debian 5.14.9-2 (2021-10-03) x86_64 GNU/Linux .

Console output
[100%] Linking CXX executable retrodebugger
/usr/bin/ld: cannot find -lGLEW

Desktop (please complete the following information):

  • OS: Linux
  • Version Debian 5.14.9-2 (2021-10-03) x86_64 GNU/Linux

Additional context
OpenGL Extension Wrangler seems to be missing. Please, just include this information in README.md.

fix: sudo apt install libglew-dev

Making RetroDebugger automatically stop at the beginning of the session

Unfortunately this is really not a bug, but a mere question! I tried to look for an answer, but couldn't find anything clear elsewhere so here goes.

How does one make the RetroDebugger stop automatically on the breakpoints set in KickAssembler code (with the .break-directive)?
I build the code with symbols (-symbolfile-flag) and debuginfo (-debugdump-flag), and get the corresponding files.
I've tried to let the RetroDebugger know about these files by pointing them out to the Debugger when starting the debug-session. Below is an example of the kinds of flags I give to the debugger:

-symbols build/project.sym -debuginfo build/game.dbg -wait 3000 -autojmp -prg build/game.prg

What happens is, that the RetroDebugger starts up fine and even runs the assembled program without any issues, but the debugger won't stop at the breakpoint in the code.

Here's what the symbol/debug files look like in my project (the .sym-file has probably a lot of unnecessary cruft not useful for explaining this, but I'll throw it in none-the-less):

game.dbg:

<C64debugger version="1.0">
   <Sources values="INDEX,FILE">
      0,KickAss.jar:/include/autoinclude.asm
      1,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\src\project.asm
      2,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\pseudo.asm
      3,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\src\zeropage.asm
      4,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\assert_macros.asm
      5,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\src\data.asm
      6,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\assert_pseudo.asm
      7,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\src\config.asm
      8,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\macros.asm
      9,.\lib\sysutils\sysutils.asm
      10,.\lib\coreutils\coreutils.asm
      11,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\utils.asm
      12,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\src\main.asm
      13,D:\projects\programming\mos6502\kickassembler\kickasm-c64-tools\lib\coreutils\assert_funcs.asm
   </Sources>

   <Segment name="Default" dest="" values="START,END,FILE_IDX,LINE1,COL1,LINE2,COL2">
   </Segment>

   <Segment name="Zeropage" dest="" values="START,END,FILE_IDX,LINE1,COL1,LINE2,COL2">
   </Segment>

   <Segment name="Code" dest="" values="START,END,FILE_IDX,LINE1,COL1,LINE2,COL2">
      <Block name="Basic">
         $0801,$0802,0,56,2,56,6
         $0803,$0804,0,57,5,57,9
         $0805,$0805,0,58,5,58,9
         $0806,$0809,0,59,2,59,6
         $080a,$080a,0,60,2,60,6
         $080b,$080c,0,62,5,62,9
      </Block>
      <Block name="Main Begin">
         $0810,$0811,2,65,9,65,11
         $0812,$0814,2,66,9,66,11
         $0815,$0815,12,16,9,16,11
      </Block>
   </Segment>

   <Segment name="Data" dest="" values="START,END,FILE_IDX,LINE1,COL1,LINE2,COL2">
   </Segment>

   <Labels values="SEGMENT,ADDRESS,NAME,START,END,FILE_IDX,LINE1,COL1,LINE2,COL2">
      Default,$00ff,allOn,11,10,16,10,20
      Default,$ffffff00,allOff,11,11,16,11,21
      Default,$0001,bit0On,11,12,16,12,21
      Default,$0002,bit1On,11,13,16,13,21
      Default,$0004,bit2On,11,14,16,14,21
      Default,$0008,bit3On,11,15,16,15,21
      Default,$0010,bit4On,11,16,16,16,21
      Default,$0020,bit5On,11,17,16,17,21
      Default,$0040,bit6On,11,18,16,18,21
      Default,$0080,bit7On,11,19,16,19,21
      Default,$00fe,bit0Off,11,20,16,20,22
      Default,$00fd,bit1Off,11,21,16,21,22
      Default,$00fb,bit2Off,11,22,16,22,22
      Default,$00f7,bit3Off,11,23,16,23,22
      Default,$00ef,bit4Off,11,24,16,24,22
      Default,$00df,bit5Off,11,25,16,25,22
      Default,$00bf,bit6Off,11,26,16,26,22
      Default,$007f,bit7Off,11,27,16,27,22
      Default,$00f0,loNibbleOff,11,28,16,28,26
      Default,$ffffff0f,loNibbleOn,11,29,16,29,25
      Default,$ffffff0f,hiNibbleOff,11,30,16,30,26
      Default,$00f0,hiNibbleOn,11,31,16,31,25
      Default,$2000,test_ENSURE_ARG_NOT_NULL,4,11,1,11,25
      Default,$2000,test_ENSURE_ARG_BETWEEN,4,27,1,27,24
      Default,$2000,test_ENSURE_CMD_ARG,4,54,1,54,20
      Default,$2000,test_ENSURE_IMMEDIATE_CMD_ARG,4,85,1,85,30
      Default,$2000,test_ENSURE_NON_IMMEDIATE_CMD_ARG,4,115,1,115,34
      Default,$2000,test_STR_LP,4,145,1,145,12
      Default,$2000,test_bitsToBytes,13,11,1,11,17
      Default,$2000,test_bytesToBits,13,21,1,21,17
      Default,$2000,test_16BitNextArg,13,29,1,29,18
      Default,$2000,test_isPowerOfTwo,13,40,1,40,18
      Default,$2000,test_bit,6,11,1,11,9
      Default,$2000,test_mov,6,19,1,19,9
      Default,$2000,test_movx,6,37,1,37,10
      Default,$2000,test_movy,6,55,1,55,10
      Default,$2000,test_add,6,73,1,73,9
      Default,$2000,test_sub,6,91,1,91,9
      Default,$2000,test_adc,6,109,1,109,9
      Default,$2000,binary,6,111,9,111,15
      Default,$2000,ternary,6,141,9,141,16
      Default,$2000,test_sbc,6,175,1,175,9
      Default,$2000,binary,6,177,9,177,15
      Default,$2000,ternary,6,207,9,207,16
      Default,$2000,test_inc16,6,241,1,241,11
      Result,$2008,skip,2,331,1,331,5
      Expected,$2008,skip,6,249,9,249,13
      Default,$2000,test_dec16,6,258,1,258,11
      Result,$2008,skip,2,350,1,350,5
      Expected,$2008,skip,6,266,9,266,13
      Default,$2000,test_mov16,6,275,1,275,11
      Default,$2000,test_mov16x,6,306,1,306,12
      Default,$2000,test_mov16y,6,337,1,337,12
      Default,$2000,test_sta16xy,6,368,1,368,13
      Default,$2000,test_sta16yx,6,383,1,383,13
      Default,$2000,test_adc16,6,398,1,398,11
      Default,$2000,binary,6,400,9,400,15
      Default,$2000,ternary,6,435,9,435,16
      Default,$2000,test_sbc16,6,494,1,494,11
      Default,$2000,binary,6,496,9,496,15
      Default,$2000,ternary,6,531,9,531,16
      Default,$2000,test_asl,6,590,1,590,9
      Default,$2000,unary,6,592,9,592,14
      Default,$2000,binary,6,607,9,607,15
      Default,$2000,test_lsr,6,624,1,624,9
      Default,$2000,unary,6,626,9,626,14
      Default,$2000,binary,6,641,9,641,15
      Default,$2000,test_rol,6,658,1,658,9
      Default,$2000,unary,6,660,9,660,14
      Default,$2000,binary,6,675,9,675,15
      Default,$2000,test_ror,6,692,1,692,9
      Default,$2000,unary,6,694,9,694,14
      Default,$2000,binary,6,709,9,709,15
      Default,$2000,test_pla,6,726,1,726,9
      Default,$2000,test_nop,6,739,1,739,9
      Default,$2000,test_subInv,6,753,1,753,12
      Default,$2000,binary,6,755,9,755,15
      Default,$2000,ternary,6,789,9,789,16
      Default,$2000,test_dlt16,6,840,1,840,11
      Default,$2000,binary,6,842,9,842,15
      Default,$2000,ternary,6,890,9,890,16
      Default,$2000,swa,6,977,1,977,4
      Result,$200d,_tmp,2,715,9,715,11
      Expected,$200d,_tmp,6,986,17,986,19
      Default,$2000,swx,6,1005,1,1005,4
      Default,$2000,swy,6,1032,1,1032,4
      Default,$2000,pause,6,1060,1,1060,6
      Default,$002f,dataDirDefault,9,46,16,46,29
      Default,$0037,portDefault,9,47,16,47,26
      Default,$0000,dataDir,9,49,16,49,22
      Default,$0001,port,9,50,16,50,19
      Default,$0002,memBegin,9,59,16,59,23
      Default,$00ff,memEnd,9,60,16,60,21
      Default,$0100,memBegin,9,71,16,71,23
      Default,$01ff,memEnd,9,72,16,72,21
      Default,$0200,memBegin,9,81,16,81,23
      Default,$02ff,memEnd,9,82,16,82,21
      Default,$0300,memBegin,9,91,16,91,23
      Default,$03ff,memEnd,9,92,16,92,21
      Default,$0314,memBegin,9,100,24,100,31
      Default,$0333,memEnd,9,101,24,101,29
      Default,$2000,irq,9,103,17,103,20
      Default,$0314,lo,9,105,32,105,33
      Default,$0315,hi,9,106,32,106,33
      Default,$2000,BRK,9,108,17,108,20
      Default,$0316,lo,9,110,32,110,33
      Default,$0317,hi,9,111,32,111,33
      Default,$2000,nmi,9,113,17,113,20
      Default,$0318,lo,9,115,32,115,33
      Default,$0319,hi,9,116,32,116,33
      Default,$2000,OPEN,9,118,17,118,21
      Default,$031a,lo,9,120,32,120,33
      Default,$031b,hi,9,121,32,121,33
      Default,$2000,CLOSE,9,124,17,124,22
      Default,$031c,lo,9,126,32,126,33
      Default,$031d,hi,9,127,32,127,33
      Default,$2000,CHKIN,9,129,17,129,22
      Default,$031e,lo,9,131,32,131,33
      Default,$031f,hi,9,132,32,132,33
      Default,$2000,CHKOUT,9,134,17,134,23
      Default,$0320,lo,9,136,32,136,33
      Default,$0321,hi,9,137,32,137,33
      Default,$2000,CLRCHN,9,139,17,139,23
      Default,$0322,lo,9,141,32,141,33
      Default,$0323,hi,9,142,32,142,33
      Default,$2000,CHRIN,9,144,17,144,22
      Default,$0324,lo,9,146,32,146,33
      Default,$0325,hi,9,147,32,147,33
      Default,$2000,CHROUT,9,149,17,149,23
      Default,$0326,lo,9,151,32,151,33
      Default,$0327,hi,9,152,32,152,33
      Default,$2000,STOP,9,154,17,154,21
      Default,$0328,lo,9,156,32,156,33
      Default,$0329,hi,9,157,32,157,33
      Default,$2000,GETIN,9,159,17,159,22
      Default,$032a,lo,9,161,32,161,33
      Default,$032b,hi,9,162,32,162,33
      Default,$2000,CLALL,9,164,17,164,22
      Default,$032c,lo,9,166,32,166,33
      Default,$032d,hi,9,167,32,167,33
      Default,$2000,LOAD,9,169,17,169,21
      Default,$0330,lo,9,171,32,171,33
      Default,$0331,hi,9,172,32,172,33
      Default,$2000,SAVE,9,174,17,174,21
      Default,$0332,lo,9,176,32,176,33
      Default,$0333,hi,9,177,32,177,33
      Default,$0400,memBegin,9,182,16,182,23
      Default,$07ff,memEnd,9,183,16,183,21
      Default,$2000,unused,9,186,9,186,15
      Default,$0000,memBegin,9,187,24,187,31
      Default,$0000,memEnd,9,188,24,188,29
      Default,$2000,spritePointers,9,191,9,191,23
      Default,$0000,memBegin,9,192,24,192,31
      Default,$0000,memEnd,9,193,24,193,29
      Default,$0800,memBegin,9,199,16,199,23
      Default,$9fff,memEnd,9,200,16,200,21
      Default,$0800,unused,9,201,16,201,21
      Default,$0801,default,9,202,16,202,22
      Default,$8000,memBegin,9,206,16,206,23
      Default,$9fff,memEnd,9,207,16,207,21
      Default,$a000,memBegin,9,211,16,211,23
      Default,$bfff,memEnd,9,212,16,212,21
      Default,$a000,memBegin,9,216,16,216,23
      Default,$bfff,memEnd,9,217,16,217,21
      Default,$d000,memBegin,9,221,16,221,23
      Default,$dfff,memEnd,9,222,16,222,21
      Default,$d000,memBegin,9,226,16,226,23
      Default,$dfff,memEnd,9,227,16,227,21
      Default,$2000,masks,9,230,17,230,22
      Default,$0000,bank0,9,231,32,231,36
      Default,$0001,bank1,9,232,32,232,36
      Default,$0001,bank2,9,233,32,233,36
      Default,$0003,bank3,9,234,32,234,36
      Default,$0000,chrMem0,9,236,32,236,38
      Default,$0001,chrMem1,9,237,32,237,38
      Default,$0002,chrMem2,9,238,32,238,38
      Default,$0003,chrMem3,9,239,32,239,38
      Default,$0004,chrMem4,9,240,32,240,38
      Default,$0005,chrMem5,9,241,32,241,38
      Default,$0006,chrMem6,9,242,32,242,38
      Default,$0007,chrMem7,9,243,32,243,38
      Default,$0003,bm0,9,245,32,245,34
      Default,$0007,bm1,9,246,32,246,34
      Default,$000f,screenMem00,9,248,32,248,42
      Default,$001f,screenMem01,9,249,32,249,42
      Default,$002f,screenMem02,9,250,32,250,42
      Default,$003f,screenMem03,9,251,32,251,42
      Default,$004f,screenMem04,9,252,32,252,42
      Default,$005f,screenMem05,9,253,32,253,42
      Default,$006f,screenMem06,9,254,32,254,42
      Default,$007f,screenMem07,9,255,32,255,42
      Default,$008f,screenMem08,9,256,32,256,42
      Default,$009f,screenMem09,9,257,32,257,42
      Default,$00af,screenMem10,9,258,32,258,42
      Default,$00bf,screenMem11,9,259,32,259,42
      Default,$00cf,screenMem12,9,260,32,260,42
      Default,$00df,screenMem13,9,261,32,261,42
      Default,$00ef,screenMem14,9,262,32,262,42
      Default,$00ff,screenMem15,9,263,32,263,42
      Default,$d000,memBegin,9,267,24,267,31
      Default,$d3ff,memEnd,9,268,24,268,29
      Default,$d000,spr0XPos,9,274,24,274,31
      Default,$d001,spr0YPos,9,275,24,275,31
      Default,$d002,spr1XPos,9,276,24,276,31
      Default,$d003,spr1YPos,9,277,24,277,31
      Default,$d004,spr2XPos,9,278,24,278,31
      Default,$d005,spr2YPos,9,279,24,279,31
      Default,$d006,spr3XPos,9,280,24,280,31
      Default,$d007,spr3YPos,9,281,24,281,31
      Default,$d008,spr4XPos,9,282,24,282,31
      Default,$d009,spr4YPos,9,283,24,283,31
      Default,$d00a,spr5XPos,9,284,24,284,31
      Default,$d00b,spr5YPos,9,285,24,285,31
      Default,$d00c,spr6XPos,9,286,24,286,31
      Default,$d00d,spr6YPos,9,287,24,287,31
      Default,$d00e,spr7XPos,9,288,24,288,31
      Default,$d00f,spr7YPos,9,289,24,289,31
      Default,$d010,sprXMSB,9,291,24,291,30
      Default,$d011,ctrl1,9,293,24,293,28
      Default,$d012,rasterLine,9,294,24,294,33
      Default,$d015,sprEnabled,9,295,24,295,33
      Default,$d016,ctrl2,9,296,24,296,28
      Default,$d017,stretchVer,9,297,24,297,33
      Default,$d018,memCtrl,9,298,24,298,30
      Default,$d019,intrStatus,9,299,24,299,33
      Default,$d01a,intrCtrl,9,300,24,300,31
      Default,$d01c,sprColorMode,9,301,24,301,35
      Default,$d01d,stretchHor,9,302,24,302,33
      Default,$d01e,sprCollisions,9,303,24,303,36
      Default,$d01f,bgCollisions,9,304,24,304,35
      Default,$d020,border,9,305,24,305,29
      Default,$d021,bg0,9,306,24,306,26
      Default,$d022,bg1,9,307,24,307,26
      Default,$d023,bg2,9,308,24,308,26
      Default,$d024,bg3,9,309,24,309,26
      Default,$d025,sprXtraColor1,9,310,24,310,36
      Default,$d026,sprXtraColor2,9,311,24,311,36
      Default,$d027,spr0Color,9,312,24,312,32
      Default,$d028,spr1Color,9,313,24,313,32
      Default,$d029,spr2Color,9,314,24,314,32
      Default,$d02a,spr3Color,9,315,24,315,32
      Default,$d02b,spr4Color,9,316,24,316,32
      Default,$d02c,spr5Color,9,317,24,317,32
      Default,$d02d,spr6Color,9,318,24,318,32
      Default,$d02e,spr7Color,9,319,24,319,32
      Default,$dd00,bankSelect,9,321,24,321,33
      Default,$d400,memBegin,9,325,24,325,31
      Default,$e1ff,memEnd,9,326,24,326,29
      Default,$2000,voice1,9,328,17,328,23
      Default,$d400,memBegin,9,329,32,329,39
      Default,$d400,FreqLo,9,330,32,330,37
      Default,$d401,FreqHi,9,331,32,331,37
      Default,$d402,PulseLo,9,332,32,332,38
      Default,$d403,PulseHi,9,333,32,333,38
      Default,$d404,Ctrl,9,334,32,334,35
      Default,$d405,AD,9,335,32,335,33
      Default,$d406,SR,9,336,32,336,33
      Default,$2000,voice2,9,338,17,338,23
      Default,$d407,memBegin,9,339,32,339,39
      Default,$d407,FreqLo,9,340,32,340,37
      Default,$d408,FreqHi,9,341,32,341,37
      Default,$d409,PulseLo,9,342,32,342,38
      Default,$d40a,PulseHi,9,343,32,343,38
      Default,$d40b,Ctrl,9,344,32,344,35
      Default,$d40c,AD,9,345,32,345,33
      Default,$d40d,SR,9,346,32,346,33
      Default,$2000,voice3,9,348,17,348,23
      Default,$d40e,memBegin,9,349,32,349,39
      Default,$d40e,FreqLo,9,350,32,350,37
      Default,$d40f,FreqHi,9,351,32,351,37
      Default,$d410,PulseLo,9,352,32,352,38
      Default,$d411,PulseHi,9,353,32,353,38
      Default,$d412,Ctrl,9,354,32,354,35
      Default,$d413,AD,9,355,32,355,33
      Default,$d414,SR,9,356,32,356,33
      Default,$2000,filter,9,359,17,359,23
      Default,$d415,cutOffA,9,362,32,362,38
      Default,$d416,cutOffB,9,363,32,363,38
      Default,$d417,ctrl,9,364,32,364,35
      Default,$d418,mode,9,365,32,365,35
      Default,$d418,volumeCtrl,9,368,24,368,33
      Default,$d419,XValPaddle,9,370,24,370,33
      Default,$d41a,YValPaddle,9,371,24,371,33
      Default,$d41b,voice3WaveOut,9,373,24,373,36
      Default,$d41a,voice3ADSROut,9,374,24,374,36
      Default,$d800,memBegin,9,378,24,378,31
      Default,$dbe7,memEnd,9,379,24,379,29
      Default,$0080,offset,9,383,24,383,29
      Default,$2000,p1,9,385,17,385,19
      Default,$00ff,middle,9,386,32,386,37
      Default,$00fe,up,9,387,32,387,33
      Default,$00fd,down,9,388,32,388,35
      Default,$00fb,left,9,389,32,389,35
      Default,$00fa,upLeft,9,390,32,390,37
      Default,$00f9,downLeft,9,391,32,391,39
      Default,$00f7,right,9,392,32,392,36
      Default,$00f6,upRight,9,393,32,393,38
      Default,$00f5,downRight,9,394,32,394,40
      Default,$2000,p2,9,397,17,397,19
      Default,$007f,middle,9,398,32,398,37
      Default,$007e,up,9,399,32,399,33
      Default,$007d,down,9,400,32,400,35
      Default,$007b,left,9,401,32,401,35
      Default,$007a,upLeft,9,402,32,402,37
      Default,$0079,downLeft,9,403,32,403,39
      Default,$0077,right,9,404,32,404,36
      Default,$0076,upRight,9,405,32,405,38
      Default,$0075,downRight,9,406,32,406,40
      Default,$dc00,memBegin,9,411,24,411,31
      Default,$dcff,memEnd,9,412,24,412,29
      Default,$dc00,gamePort2,9,414,24,414,32
      Default,$dc01,gamePort1,9,415,24,415,32
      Default,$dc04,timerA,9,417,24,417,29
      Default,$dc06,timerB,9,418,24,418,29
      Default,$dc0d,intrCtrl,9,419,24,419,31
      Default,$dc0e,intrTimerACtrl,9,420,24,420,37
      Default,$dc0f,intrTimerBCtrl,9,421,24,421,37
      Default,$dd00,memBegin,9,425,24,425,31
      Default,$ddff,memEnd,9,426,24,426,29
      Default,$dd0d,intrCtrl,9,428,24,428,31
      Default,$dd0e,intrTimerACtrl,9,429,24,429,37
      Default,$dd0f,intrTimerBCtrl,9,430,24,430,37
      Default,$e000,memBegin,9,435,16,435,23
      Default,$ffff,memEnd,9,436,16,436,21
      Default,$fd30,memBegin,9,439,24,439,31
      Default,$fd50,memEnd,9,440,24,440,29
      Default,$ff5e,resetPAL_NTSC,9,443,16,443,28
      Default,$ea31,intrHandlerBegin,9,446,24,446,39
      Default,$ea81,intrHandlerEnd,9,447,24,447,37
      Default,$fe66,BRK,9,448,24,448,26
      Default,$fe47,nmi,9,449,24,449,26
      Default,$e500,IOBASE,9,451,24,451,29
      Default,$e505,SCREEN,9,452,24,452,29
      Default,$e50a,PLOT,9,453,24,453,27
      Default,$ea87,SCNKEY,9,454,24,454,29
      Default,$ed09,TALK,9,455,24,455,27
      Default,$ed0c,LISTEN,9,456,24,456,29
      Default,$edb9,SECOND,9,457,24,457,29
      Default,$edc7,TALKSA,9,458,24,458,29
      Default,$eddd,CIOUT,9,459,24,459,28
      Default,$edef,UNTALK,9,460,24,460,29
      Default,$edfe,UNLSN,9,461,24,461,28
      Default,$ee13,ACPTR,9,462,24,462,28
      Default,$f13e,GETIN,9,463,24,463,28
      Default,$f147,CHRIN,9,464,24,464,28
      Default,$f1ca,CHROUT,9,465,24,465,29
      Default,$f20e,CHKIN,9,466,24,466,28
      Default,$f250,CHKOUT,9,467,24,467,29
      Default,$f291,CLOSE,9,468,24,468,28
      Default,$f32f,CLALL,9,469,24,469,28
      Default,$f333,CLRCHN,9,470,24,470,29
      Default,$f34a,OPEN,9,471,24,471,27
      Default,$f4a5,LOAD,9,472,24,472,27
      Default,$f5ed,SAVE,9,473,24,473,27
      Default,$f6e4,SETTIM,9,474,24,474,29
      Default,$f69b,UDTIM,9,475,24,475,28
      Default,$f6dd,RDTIM,9,476,24,476,28
      Default,$f6ed,STOP,9,477,24,477,27
      Default,$fd15,RESTOR,9,478,24,478,29
      Default,$fd1a,VECTOR,9,479,24,479,29
      Default,$fd50,RAMTAS,9,480,24,480,29
      Default,$fda3,IOINIT,9,481,24,481,29
      Default,$fdf9,SETNAM,9,482,24,482,29
      Default,$fe00,SETLFS,9,483,24,483,29
      Default,$fe07,READST,9,484,24,484,29
      Default,$fe18,SETMSG,9,485,24,485,29
      Default,$fe21,SETTMO,9,486,24,486,29
      Default,$fe25,MEMTOP,9,487,24,487,29
      Default,$fe34,MEMBOT,9,488,24,488,29
      Default,$ff5b,CINT,9,489,24,489,27
      Default,$fce2,coldReset,9,493,24,493,32
      Default,$fe43,nmi,9,494,24,494,26
      Default,$ff48,interrupt,9,495,24,495,32
      Default,$ff81,CINT,9,499,24,499,27
      Default,$ff84,IOINIT,9,500,24,500,29
      Default,$ff87,RAMTAS,9,501,24,501,29
      Default,$ff8a,RESTOR,9,502,24,502,29
      Default,$ff8d,VECTOR,9,503,24,503,29
      Default,$ff90,SETMSG,9,504,24,504,29
      Default,$ff93,SECOND,9,505,24,505,29
      Default,$ff96,TALKSA,9,506,24,506,29
      Default,$ff99,MEMTOP,9,507,24,507,29
      Default,$ff9c,MEMBOT,9,508,24,508,29
      Default,$ff9f,SCNKEY,9,509,24,509,29
      Default,$ffa2,SETTMO,9,510,24,510,29
      Default,$ffa5,ACPTR,9,511,24,511,28
      Default,$ffa8,CIOUT,9,512,24,512,28
      Default,$ffab,UNTALK,9,513,24,513,29
      Default,$ffae,UNLSN,9,514,24,514,28
      Default,$ffb1,LISTEN,9,515,24,515,29
      Default,$ffb4,TALK,9,516,24,516,27
      Default,$ffb7,READST,9,517,24,517,29
      Default,$ffba,SETLFS,9,518,24,518,29
      Default,$ffbd,SETNAM,9,519,24,519,29
      Default,$ffc0,OPEN,9,520,24,520,27
      Default,$ffc3,CLOSE,9,521,24,521,28
      Default,$ffc6,CHKIN,9,522,24,522,28
      Default,$ffc9,CHKOUT,9,523,24,523,29
      Default,$ffcc,CLRCHN,9,524,24,524,29
      Default,$ffcf,CHRIN,9,525,24,525,28
      Default,$ffd2,CHROUT,9,526,24,526,29
      Default,$ffd5,LOAD,9,527,24,527,27
      Default,$ffd8,SAVE,9,528,24,528,27
      Default,$ffdb,SETTIM,9,529,24,529,29
      Default,$ffde,RDTIM,9,530,24,530,28
      Default,$ffe1,STOP,9,531,24,531,27
      Default,$ffe4,GETIN,9,532,24,532,28
      Default,$ffe7,CLALL,9,533,24,533,28
      Default,$ffea,UDTIM,9,534,24,534,28
      Default,$ffed,SCREEN,9,535,24,535,29
      Default,$fff0,PLOT,9,536,24,536,27
      Default,$fff3,IOBASE,9,537,24,537,29
      Default,$2000,nmi,9,541,17,541,20
      Default,$fe43,default,9,542,32,542,38
      Default,$fffa,lo,9,543,32,543,33
      Default,$fffb,hi,9,544,32,544,33
      Default,$2000,coldReset,9,546,17,546,26
      Default,$fce2,default,9,547,32,547,38
      Default,$fffc,lo,9,548,32,548,33
      Default,$fffd,hi,9,549,32,549,33
      Default,$2000,irq,9,551,17,551,20
      Default,$ff48,default,9,552,32,552,38
      Default,$fffe,lo,9,553,32,553,33
      Default,$ffff,hi,9,554,32,554,33
      Default,$e000,memBegin,9,560,16,560,23
      Default,$ffff,memEnd,9,561,16,561,21
      Default,$0032,maxFps,7,7,16,7,21
      Default,$0000,VicIIBankOffset,7,8,16,8,30
      Default,$0400,screenMemOffset,7,9,16,9,30
      Default,$2000,bitmapOffset,7,10,16,10,27
      Default,$0000,frameOffset,7,11,16,11,26
      Default,$0000,charMemOffset,7,12,16,12,28
      Default,$0002,zpBegin,7,14,16,14,22
      Default,$0810,mainCodeBegin,7,15,16,15,28
      Default,$2000,bitmapMemBegin,7,16,16,16,29
      Default,$0000,charMemBegin,7,17,16,17,27
      Code,$080b,upstartEnd,0,61,1,61,11
      Code,$0810,main,12,14,1,14,5
      Default,$ea31,default,9,104,32,104,38
      Default,$fe66,default,9,109,32,109,38
      Default,$fe47,default,9,114,32,114,38
      Default,$f34a,default,9,119,32,119,38
      Default,$f291,default,9,125,32,125,38
      Default,$f20e,default,9,130,32,130,38
      Default,$f250,default,9,135,32,135,38
      Default,$f333,default,9,140,32,140,38
      Default,$f147,default,9,145,32,145,38
      Default,$f1ca,default,9,150,32,150,38
      Default,$f6ed,default,9,155,32,155,38
      Default,$f13e,default,9,160,32,160,38
      Default,$f32f,default,9,165,32,165,38
      Default,$f4a5,default,9,170,32,170,38
      Default,$f5ed,default,9,175,32,175,38
   </Labels>

   <Breakpoints values="SEGMENT,ADDRESS,ARGUMENT">
      Code,$0810,
   </Breakpoints>

   <Watchpoints values="SEGMENT,ADDRESS1,ADDRESS2,ARGUMENT">
   </Watchpoints>

</C64debugger>

project.sym:

.namespace BitMasks {
  .label bit2Off=$fb
  .label hiNibbleOff=$ffffff0f
  .label bit1Off=$fd
  .label bit3Off=$f7
  .label bit4Off=$ef
  .label allOff=$ffffff00
  .label bit0Off=$fe
  .label allOn=$ff
  .label bit7Off=$7f
  .label bit5Off=$df
  .label bit6Off=$bf
  .label bit6On=$40
  .label bit7On=$80
  .label loNibbleOn=$ffffff0f
  .label hiNibbleOn=$f0
  .label bit0On=$1
  .label bit1On=$2
  .label bit2On=$4
  .label bit3On=$8
  .label bit4On=$10
  .label bit5On=$20
  .label loNibbleOff=$f0
}
.namespace AssertFuncs {
  .label test_16BitNextArg=$2000
  .label test_bitsToBytes=$2000
  .label test_isPowerOfTwo=$2000
  .label test_bytesToBits=$2000
}
.namespace Io {
  .label memBegin=$d000
  .label memEnd=$dfff
  .namespace ColorRam {
    .label memBegin=$d800
    .label memEnd=$dbe7
  }
  .namespace Cia1 {
    .label timerA=$dc04
    .label timerB=$dc06
    .label memBegin=$dc00
    .label memEnd=$dcff
    .label gamePort1=$dc01
    .label gamePort2=$dc00
    .label intrTimerACtrl=$dc0e
    .label intrTimerBCtrl=$dc0f
    .label intrCtrl=$dc0d
  }
  .namespace Cia2 {
    .label memBegin=$dd00
    .label memEnd=$ddff
    .label intrTimerACtrl=$dd0e
    .label intrTimerBCtrl=$dd0f
    .label intrCtrl=$dd0d
  }
  .namespace VicII {
    .label spr0XPos=$d000
    .label spr5XPos=$d00a
    .label sprXMSB=$d010
    .label memEnd=$d3ff
    .label spr7YPos=$d00f
    .label bg0=$d021
    .label spr2YPos=$d005
    .label bg2=$d023
    .label bg1=$d022
    .label ctrl2=$d016
    .label ctrl1=$d011
    .label intrCtrl=$d01a
    .label bg3=$d024
    .label spr6YPos=$d00d
    .label spr1YPos=$d003
    .label memBegin=$d000
    .label spr6Color=$d02d
    .label spr4XPos=$d008
    .label spr3Color=$d02a
    .label bgCollisions=$d01f
    .label spr3XPos=$d006
    .label sprXtraColor2=$d026
    .label spr0Color=$d027
    .label sprXtraColor1=$d025
    .label memCtrl=$d018
    .label sprColorMode=$d01c
    .label border=$d020
    .label spr0YPos=$d001
    .label spr5YPos=$d00b
    .label spr7XPos=$d00e
    .label spr7Color=$d02e
    .label masks=$2000 {
      .label screenMem12=$cf
      .label screenMem13=$df
      .label screenMem10=$af
      .label screenMem11=$bf
      .label bm0=$3
      .label screenMem14=$ef
      .label bm1=$7
      .label screenMem15=$ff
      .label chrMem3=$3
      .label screenMem01=$1f
      .label chrMem2=$2
      .label screenMem02=$2f
      .label chrMem1=$1
      .label chrMem0=$0
      .label screenMem00=$f
      .label bank2=$1
      .label chrMem7=$7
      .label screenMem05=$5f
      .label bank3=$3
      .label chrMem6=$6
      .label screenMem06=$6f
      .label bank0=$0
      .label chrMem5=$5
      .label screenMem03=$3f
      .label bank1=$1
      .label chrMem4=$4
      .label screenMem04=$4f
      .label screenMem09=$9f
      .label screenMem07=$7f
      .label screenMem08=$8f
    }
    .label spr2XPos=$d004
    .label spr4YPos=$d009
    .label spr4Color=$d02b
    .label spr1Color=$d028
    .label stretchVer=$d017
    .label sprEnabled=$d015
    .label rasterLine=$d012
    .label bankSelect=$dd00
    .label sprCollisions=$d01e
    .label spr6XPos=$d00c
    .label stretchHor=$d01d
    .label spr3YPos=$d007
    .label spr2Color=$d029
    .label spr1XPos=$d002
    .label intrStatus=$d019
    .label spr5Color=$d02c
  }
  .namespace CtrlPort {
    .label p1=$2000 {
      .label middle=$ff
      .label left=$fb
      .label downLeft=$f9
      .label upLeft=$fa
      .label downRight=$f5
      .label up=$fe
      .label right=$f7
      .label down=$fd
      .label upRight=$f6
    }
    .label p2=$2000 {
      .label middle=$7f
      .label left=$7b
      .label downLeft=$79
      .label upLeft=$7a
      .label downRight=$75
      .label up=$7e
      .label right=$77
      .label down=$7d
      .label upRight=$76
    }
    .label offset=$80
  }
  .namespace Sid {
    .label filter=$2000 {
      .label mode=$d418
      .label ctrl=$d417
      .label cutOffA=$d415
      .label cutOffB=$d416
    }
    .label YValPaddle=$d41a
    .label memBegin=$d400
    .label memEnd=$e1ff
    .label voice1=$2000 {
      .label FreqHi=$d401
      .label FreqLo=$d400
      .label memBegin=$d400
      .label AD=$d405
      .label PulseHi=$d403
      .label Ctrl=$d404
      .label PulseLo=$d402
      .label SR=$d406
    }
    .label voice3=$2000 {
      .label FreqHi=$d40f
      .label FreqLo=$d40e
      .label memBegin=$d40e
      .label AD=$d413
      .label PulseHi=$d411
      .label Ctrl=$d412
      .label PulseLo=$d410
      .label SR=$d414
    }
    .label voice2=$2000 {
      .label FreqHi=$d408
      .label FreqLo=$d407
      .label memBegin=$d407
      .label AD=$d40c
      .label PulseHi=$d40a
      .label Ctrl=$d40b
      .label PulseLo=$d409
      .label SR=$d40d
    }
    .label voice3WaveOut=$d41b
    .label voice3ADSROut=$d41a
    .label volumeCtrl=$d418
    .label XValPaddle=$d419
  }
}
.namespace Config {
  .label charMemOffset=$0
  .label charMemBegin=$0
  .label screenMemOffset=$400
  .label VicIIBankOffset=$0
  .label bitmapOffset=$2000
  .label frameOffset=$0
  .label mainCodeBegin=$810
  .label bitmapMemBegin=$2000
  .label maxFps=$32
  .label zpBegin=$2
}
.namespace KernalRom {
  .namespace Routines {
    .label SETLFS=$fe00
    .label intrHandlerEnd=$ea81
    .label PLOT=$e50a
    .label UDTIM=$f69b
    .label LOAD=$f4a5
    .label CHKOUT=$f250
    .label MEMBOT=$fe34
    .label intrHandlerBegin=$ea31
    .label CLRCHN=$f333
    .label SETMSG=$fe18
    .label nmi=$fe47
    .label TALK=$ed09
    .label CLOSE=$f291
    .label GETIN=$f13e
    .label SCREEN=$e505
    .label RESTOR=$fd15
    .label CIOUT=$eddd
    .label LISTEN=$ed0c
    .label SAVE=$f5ed
    .label ACPTR=$ee13
    .label CHRIN=$f147
    .label SETTIM=$f6e4
    .label SETTMO=$fe21
    .label RDTIM=$f6dd
    .label STOP=$f6ed
    .label CLALL=$f32f
    .label RAMTAS=$fd50
    .label SETNAM=$fdf9
    .label OPEN=$f34a
    .label VECTOR=$fd1a
    .label READST=$fe07
    .label CHROUT=$f1ca
    .label CINT=$ff5b
    .label TALKSA=$edc7
    .label MEMTOP=$fe25
    .label SCNKEY=$ea87
    .label CHKIN=$f20e
    .label BRK=$fe66
    .label SECOND=$edb9
    .label UNTALK=$edef
    .label IOINIT=$fda3
    .label UNLSN=$edfe
    .label IOBASE=$e500
  }
  .namespace Services {
    .label interrupt=$ff48
    .label coldReset=$fce2
    .label nmi=$fe43
  }
  .label memBegin=$e000
  .label resetPAL_NTSC=$ff5e
  .label memEnd=$ffff
  .namespace VectorDefaultTable {
    .label memBegin=$fd30
    .label memEnd=$fd50
  }
  .namespace Func {
    .label SETLFS=$ffba
    .label UDTIM=$ffea
    .label PLOT=$fff0
    .label LOAD=$ffd5
    .label CHKOUT=$ffc9
    .label MEMBOT=$ff9c
    .label CLRCHN=$ffcc
    .label SETMSG=$ff90
    .label TALK=$ffb4
    .label CLOSE=$ffc3
    .label GETIN=$ffe4
    .label SCREEN=$ffed
    .label RESTOR=$ff8a
    .label CIOUT=$ffa8
    .label LISTEN=$ffb1
    .label SAVE=$ffd8
    .label ACPTR=$ffa5
    .label CHRIN=$ffcf
    .label SETTIM=$ffdb
    .label SETTMO=$ffa2
    .label RDTIM=$ffde
    .label STOP=$ffe1
    .label CLALL=$ffe7
    .label RAMTAS=$ff87
    .label SETNAM=$ffbd
    .label VECTOR=$ff8d
    .label READST=$ffb7
    .label OPEN=$ffc0
    .label CHROUT=$ffd2
    .label CINT=$ff81
    .label TALKSA=$ff96
    .label MEMTOP=$ff99
    .label SCNKEY=$ff9f
    .label CHKIN=$ffc6
    .label SECOND=$ff93
    .label IOINIT=$ff84
    .label UNTALK=$ffab
    .label UNLSN=$ffae
    .label IOBASE=$fff3
  }
  .namespace Vectors {
    .label coldReset=$2000 {
      .label hi=$fffd
      .label default=$fce2
      .label lo=$fffc
    }
    .label irq=$2000 {
      .label hi=$ffff
      .label default=$ff48
      .label lo=$fffe
    }
    .label nmi=$2000 {
      .label hi=$fffb
      .label default=$fe43
      .label lo=$fffa
    }
  }
}
.namespace Data {
}
.namespace DefaultScreenMemory {
  .label memBegin=$400
  .label memEnd=$7ff
  .label unused=$2000 {
    .label memBegin=$0
    .label memEnd=$0
  }
  .label spritePointers=$2000 {
    .label memBegin=$0
    .label memEnd=$0
  }
}
.namespace Proc {
  .label portDefault=$37
  .label port=$1
  .label dataDir=$0
  .label dataDirDefault=$2f
}
.namespace Page3 {
  .label memBegin=$300
  .label memEnd=$3ff
  .namespace Vectors {
    .label CHRIN=$2000 {
      .label hi=$325
      .label default=$f147
      .label lo=$324
    }
    .label memEnd=$333
    .label STOP=$2000 {
      .label hi=$329
      .label default=$f6ed
      .label lo=$328
    }
    .label LOAD=$2000 {
      .label hi=$331
      .label default=$f4a5
      .label lo=$330
    }
    .label CHKOUT=$2000 {
      .label hi=$321
      .label default=$f250
      .label lo=$320
    }
    .label irq=$2000 {
      .label hi=$315
      .label default=$ea31
      .label lo=$314
    }
    .label CLRCHN=$2000 {
      .label hi=$323
      .label default=$f333
      .label lo=$322
    }
    .label nmi=$2000 {
      .label hi=$319
      .label default=$fe47
      .label lo=$318
    }
    .label CLOSE=$2000 {
      .label hi=$31d
      .label default=$f291
      .label lo=$31c
    }
    .label CLALL=$2000 {
      .label hi=$32d
      .label default=$f32f
      .label lo=$32c
    }
    .label OPEN=$2000 {
      .label hi=$31b
      .label default=$f34a
      .label lo=$31a
    }
    .label CHROUT=$2000 {
      .label hi=$327
      .label default=$f1ca
      .label lo=$326
    }
    .label GETIN=$2000 {
      .label hi=$32b
      .label default=$f13e
      .label lo=$32a
    }
    .label memBegin=$314
    .label CHKIN=$2000 {
      .label hi=$31f
      .label default=$f20e
      .label lo=$31e
    }
    .label BRK=$2000 {
      .label hi=$317
      .label default=$fe66
      .label lo=$316
    }
    .label SAVE=$2000 {
      .label hi=$333
      .label default=$f5ed
      .label lo=$332
    }
  }
}
.namespace AssertPseudo {
  .label test_ror=$2000 {
    .label binary=$2000
    .label unary=$2000
  }
  .label test_rol=$2000 {
    .label binary=$2000
    .label unary=$2000
  }
  .label test_nop=$2000
  .label test_bit=$2000
  .label test_sbc16=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label test_mov=$2000
  .label test_inc16=$2000
  .label test_mov16y=$2000
  .label test_mov16x=$2000
  .label test_sta16xy=$2000
  .label test_pla=$2000
  .label test_movx=$2000
  .label swy=$2000
  .label swx=$2000
  .label test_movy=$2000
  .label test_adc=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label test_mov16=$2000
  .label test_add=$2000
  .label test_sta16yx=$2000
  .label test_asl=$2000 {
    .label binary=$2000
    .label unary=$2000
  }
  .label test_sbc=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label pause=$2000
  .label test_subInv=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label test_dec16=$2000
  .label test_lsr=$2000 {
    .label binary=$2000
    .label unary=$2000
  }
  .label test_dlt16=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label test_sub=$2000
  .label test_adc16=$2000 {
    .label binary=$2000
    .label ternary=$2000
  }
  .label swa=$2000
}
.namespace AssertMacros {
  .label test_ENSURE_ARG_NOT_NULL=$2000
  .label test_ENSURE_NON_IMMEDIATE_CMD_ARG=$2000
  .label test_STR_LP=$2000
  .label test_ENSURE_CMD_ARG=$2000
  .label test_ENSURE_IMMEDIATE_CMD_ARG=$2000
  .label test_ENSURE_ARG_BETWEEN=$2000
}
.namespace Page0 {
  .label memBegin=$2
  .label memEnd=$ff
}
.namespace Page1 {
  .label memBegin=$100
  .label memEnd=$1ff
}
.namespace ZP {
}
.namespace Page2 {
  .label memBegin=$200
  .label memEnd=$2ff
}
.namespace CartRomLo {
  .label memBegin=$8000
  .label memEnd=$9fff
}
.namespace BasicArea {
  .label default=$801
  .label memBegin=$800
  .label memEnd=$9fff
  .label unused=$800
}
.namespace CartRomHi2 {
  .label memBegin=$e000
  .label memEnd=$ffff
}
.namespace CartRomHi1 {
  .label memBegin=$a000
  .label memEnd=$bfff
}
.namespace Main {
  .label main=$810
}
.namespace BasicRom {
  .label memBegin=$a000
  .label memEnd=$bfff
}
.namespace CharRom {
  .label memBegin=$d000
  .label memEnd=$dfff
}

Any tips or tricks? Apologies in advance, if this was not the right forum for asking this kind of question!

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.