OooSLAJEREKooO
slajerek / retrodebugger Goto Github PK
View Code? Open in Web Editor NEWRetro Debugger is a multiplatform debugger APIs host for retro computers: C64 (Vice), Atari800 and NES (NestopiaUE).
Retro Debugger is a multiplatform debugger APIs host for retro computers: C64 (Vice), Atari800 and NES (NestopiaUE).
OooSLAJEREKooO
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.
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.
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:
Expected behavior
0.64.62 to run on Windows 8.1 X64.
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?
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
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:
Expected behavior
no crash
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
first noticed in version v0.64.62
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):
Additional context
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 Ö :)
Describe the bug
Build succeeds til 100%, at which point the linking fails.
To Reproduce
Steps to reproduce the behavior:
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):
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):
Multi Monitor support would be nice, currently it only supports the primary monitor.
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:
Expected behavior
To either block "$" characters (as they're not needed) or to tolerate addresses that start with "$"
Desktop
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"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
... this makes the console pretty annoying to use
Something as simple as shell-open the readme would be better than nothing :)
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:
Expected behavior
To function as they do with d64 files.
Screenshots
Behavior with a .d64 file:
Desktop (please complete the following information):
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):
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.
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:
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.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
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
Describe the bug
Can't add data watch
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Desktop (please complete the following information):
Additional context
works in 0.64.62, switched back to this version for now
Greetz seytan/aps/reflex
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
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.
All Bitmaps controller does not save state with layout (e.g. b/w, hires etc).
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.
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):
Right mouse button on an address in "1541 Memory" window, select checkbox "Breakpoint: Write" and the address is added to "C64 Memory Breakpoints" window instead.
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
I have to admit i did not actually check - but if things work like i think they do, Retrodebugger inherits the same bug (every VICE release since at least 1.9 has it). see https://csdb.dk/forums/?roomid=11&topicid=165858#165868
put a breakpoint somewhere, make the emulation hit it so it stops. Now in the monitor console use "io" - it will hang the entire debugger (the io command works fine when emulation is running)
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.
Desktop (please complete the following information):
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
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.
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):
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.
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)
The program does not start if the audio device is unavailable
Steps to reproduce the behavior:
Desktop (please complete the following information):
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:
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):
Additional context
Add any other context about the problem here.
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);
}
}
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?
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!
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
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!
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
Describe the bug
dragged panels around, some accidently moved far outside interface, cant not be grabbed anymore
To Reproduce
Steps to reproduce the behavior:
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):
Additional context
workspaces does not fix anything
CMakeLists.txt has a reference to:
src/Views/C64/AllGraphics/CViewC64AllGraphics.cpp
But that file is not in the repo...
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?
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):
Additional context
OpenGL Extension Wrangler seems to be missing. Please, just include this information in README.md.
fix: sudo apt install libglew-dev
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.