All notable changes to the "amiga-debug" extension will be documented in this file. See PR links for more information.
- FIX: disassembly: fix error message when hovering over the cycle counts of an illegal instruction
- NEW: Makefile: support dependency tracking for GNU-assembler sources (
.s
)
- FIX: Resource bitmap colors red & blue swapped #226
- FIX: auto-reload
.size.amigaprofile
,.shrinklerstats
if changed on disk #247 - CHG: changed shrinkler output name from
a.exe.config.shrinkler
toa.shrinkler_config.exe
so you can useEXE2ADF
on the resulting shrinkled file - CHG:
Makefile
: don't strip symbol names (-s
) inelf2hunk
so Shrinkler can display nicershrinklerstats
- FIX: fixed/optimized
memclr
- NEW: ELF disassembly: move cursor with
Shift
to show accumulated cycle counts - FIX: flashing document when
Show Source
has been disabled in ProfilerAssembly
view
- NEW: modified template project to include
-ffunction-sections
,-fdata-sections
,--gc-sections
flags and changed assembly files to use unique sections so linker can better strip unused code/data - NEW: updated
type_traits
include - FIX: fix MacOS issue
- FIX: fixed missing
obj
andout
directories in template project - FIX:
__attribute__((always_inline))
ingcc8_c_support.h
for-Ofast
- FIX: 1.7.3 was broken for Linux/MacOS
- NEW: update gcc to 13.2.0
- NEW: update gcc to 13.1.0, binutils, GNU gdb (GDB) 14.0.50.20230511-git
- CHG: replaced MicroKnight debug font with Topaz #227
- FIX: 1.7.0 would not start debugging if launch.json was missing
emuargs
#211
- CHG: update to latest WinUAE (41010)
- FIX: Only write m68k settings for Amiga projects PR#208
- NEW: Emulator config improvements PR#209
- NEW: profiler: get AGA colors from WinUAE
- NEW: launch.json: new configuration attribute "stack" to override the default stack size (in bytes)
- FIX: debugger: fixed crash on launch when using encrypted Kickstart #199
- FIX: screen: don't overwrite OCS colors with AGA colors from different banks
- NEW: screen: support AGA colors, show BPLCON3 (TODO: get AGA colors from .profile file)
- FIX: Builds using MacOS 11 for better compatibility; Includes updated binaries for GCC, binutils and FS-UAE PR#197
- NEW: update gcc to 12.2.0, binutils, GNU gdb (GDB) 13.0.50.20221127-git
- FIX: WinUAE/FS-UAE: don't enable "Full stack frame tracking" (caused WinUAE to crash due to stack overflow in certain situations) PR#183
- NEW: assembly: View memory for symbols in assembly PR#174
- NEW: assembly: Support other Motorola assembly language providers PR#175
- FIX: assembly: Cycle count was missing on last line of source PR#176
- NEW: assembly: Cycle decoration improvements PR#184
- FIX: assembly: Async parsing PR#180
- CHG: disassembly: New CPU cycle count implementation with improved accuracy PR#179
- NEW: disassembly: Tooltip improvements PR#190
- NEW: debugger: Disassembled memory view PR#185
- NEW: debugger: Add symbol offset labels to registers PR#189
- NEW: profiler: Toggle right panel PR#167
- NEW: debugger: New panel for custom registers PR#166
- FIX: profiler: Fix mac rendering bug PR#169
- FIX: profiler: Mac keyboard shortcuts PR#170
- NEW: vasm: memory type suffix in section names PR#171
- FIX: assembly: Check cycle counts are for current file PR#173
- NEW: profiler: Track source from profile disassembly view PR#168
- FIX: Make cpptools a recommendation, not dependency
- FIX: profiler: Fix section regex to handle multiple digits
- FIX: profiler: Parse frames-interp output by whitespace
- FIX: Path env var needs to be uppercase on Mac/Linux
- FIX: Update libSDL2, libSDL2_ttf dylib version
- FIX: disassembly: Source links broken for non-windows
- FIX: Vasm fixes PR#148
- CHG: Better stack unwinding for assembly code PR#145
- FIX: GDB Mac exe without libintl dylib dependency PR#155
- FIX: libintl issue in ARM-based Macs #145
- FIX: 'Profile File Size' broken since last version
- FIX: Linux, MacOS executables lost file permissions
- NEW: Linux, MacOS is now supported thanks to Peter Mackay and Graham Bates. Please do report any problems here: https://github.com/BartmanAbyss/vscode-amiga-debug/issues
- FIX: screen: freeze frame memory was wrong
- FIX: resource: possibly very slow performance when using
Copper Palette
- NEW: icons for
.uss
,.amigaprofile
,.shrinklerstats
,.objdump
- FIX: fix memory content for multi-frame captures (was wrong after frame 1)
- FIX: screen: center reference screenshot (probably still wrong)
- CHG: screen: zoom panel size, clipping
- NEW: screen: show bitplane pointers
- CHG: screen: improve performance by 40%
- NEW: screen: mouse click&drag to set time
- NEW: screen:
Freeze frame
to visualize drawing (+ Memory overlay) - CHG: profiler: improve loading performance by >1000%
- CHG: profiler: multi-frame captures are now loaded in the background for faster startup time
- CHG: savestate: show progress bar during profiling
- NEW:
Amiga: Clean Temp Files
to delete.amigaprofile
files from your temp path. - FIX: the terminal didn't re-open once closed
- FIX: disassembly: fix divul, divsl, FPU, fmoveml (see
68k-dis.ts
) - FIX: #128 Can't use the image converter link
- FIX: #129 Screen and Resources tabs have no scroll bars so I can't see the bottom of a tall image
- FIX: improved behavior of jumping from assembly to source (still sometimes the source window disappears)
- NEW: update to latest WinUAE
- NEW: VASM assembler with debugging support (PR#123 by merry^Architect)
- GAS keeps the
.s
extension; VASM uses the.asm
extension. - VASM has been modified to provide valid DWARF section names to make the extension debugger to work (although you can debug using the official version prefixing code section names with
.text
). - The assembly language provider has been updated to validate assembly sources against either GAS or VASM depending on the source code file extension.
- Syntax highlighting, symbol search and error squiggles support.
- GAS keeps the
- NEW:
DMA Control
showsBltPri
- NEW: assembly: hover over custom register name to get documentation
- NEW: assembly: hover over status register bits to get more info
- FIX: assembly: Find Ctrl+F now case-insensitive
- FIX: screen: fix sprites over HAM
- FIX: copper: improve performance
- NEW: copper: Find Ctrl+F
- NEW: profiler: improve blitter tooltip for line mode, show simplified formulas of minterms
- NEW: profiler: show blitter mode (
Blit
,Line
,Fill
,Clear
) in blitter timeline - NEW: new commands in the command palette Ctrl+Shift+P: (PR#124 by merry^Architect)
Open Gradient Master
: opens the Deadliner's The Amiga Gradient Master tool to assist you creating color gradients for Copperlists).Open Image Tool
opens the Deadliner's Image Tool to assist you converting images to different Amiga formats.Open Color Reducer
opens the Deadliner's Color Reducer tool to assist you reducing the number of colors in images in a smart manner.Open BLTCON Cheat Sheet
: opens the Deadliner's BLTCON Cheat Sheet tool that helps you designing Blitter operations.Open Amiga Hardware Reference Manual
: opens the Amiga Hardware Reference Manual TOC hosted at amigadev.elowar.com.
- NEW: you can set your Kickstart paths in settings Ctrl+, under
Extensions
>Amiga C/C++ Compile, Debug & Profile
>Rom-paths: A500, A1200, A4000
(PR#117 by merry^Architect) - NEW: template project's output now in
out/a.elf
,out/a.exe
. Can be changed in settingsamiga.program
(PR#119 by merry^Architect) - NEW: new command
Convert EXE to ADF
(right-click Amiga EXE files in the explorer) (PR#122 by merry^Architect) - NEW: assembly registers now also show
SR
(status register)
- FIX: fix missing cycle timings in assembly view (was broken since 1.4.7)
- NEW: memory: switch between byte
.B
, word.W
and longword.L
display - NEW: smooth scrolling for custom register/CPU opcode tooltip windows
- FIX: assembly: handle 0-cycle trace instructions
- FIX: kickstart symbols now include mathieeesingbas.library
- NEW: disassembler: support FPU (68881/68882/68040/68060)
- NEW: profiler: blitter-tooltip: show BLT*DAT if DMA for channel is disabled but is used in minterm
- CHG:
BPL1MOD
,BPL2MOD
as decimals
- FIX: copper: don't crash when hovering over
NO-OP
instruction - NEW: display
BPL1MOD
,BPL2MOD
as signed values - NEW: screen: support
FMODE
(AGA) for bitplanes - NEW: profiler now shows 32 and 64 bit wide DMA transfers
- NEW: resources: support
FMODE
(AGA)
- FIX: profiler: Custom registers at start of frame
- FIX: screen: display window when not set during frame
- FIX: DMA: ignore fake copper DMA after COPJMP
- FIX: fixed WinUAE-crash in savestate profiler for non-68000 CPUs, and non-bogomem memory configs
- FIX: savestate controls improved, debug output
- FIX: screen/resource zoom window now clips to document
- NEW: fixed template project's
TakeSystem
/FreeSystem
to be compatible with AROS - NEW: Use AROS if no Kickstart ROM is configured
- CHG: update AROS ROM in WinUAE
- FIX: fix 2 seconds delay when starting WinUAE
- NEW: new debug functions
debug_load
,debug_save
ingcc8_c_support.h
- NEW: show CPU registers in assembly view (fixes [#78)
- NEW: memory viewer: track CPU data
- NEW: screen: show time, enable/disable display window, more pixel sources, DMACON, BPLCON
- FIX: scrolling in copperlist no longer shifts whole profiler up
- FIX: dragging time in profiler flame-graph no longer stops working once reaching the outside of the profiler
- NEW: memory heatmap
- CHG: update WinUAE
- custom registers view: tooltip help for registers
- Denise emulator ("Screen (Beta)" tab), enable/disable specific bitplanes, sprites, with DMA overlay; click in screen to set time
- blitter tooltips show blit duration, minterm
- Profiler saves screenshots even for single-frame profiles (PNG, better quality)
- Fix screenshot delay (screenshots were always one frame too old)
- updated to latest WinUAE. fixes sprite DMA not showing SPRxDATA, SPRxDATB
- removed
avail
in startup-sequence (commited by mistake)
- savestate profiler: enable "cycle exact" before launching .uss file
- fixes missing shrinkler terminal output
- Shrinkler: fixed progress output (only went to 10% instead of 100%)
- fixed DMA display for blitter (Channel D was missing, Channel B and C incorrectly had Line & Fill attribution) (fixes #104)
- added more DMA events (CPU Blitter Steal, CPU Blitter Stolen, Copper Skip)
- fix Makefile for users with
git sh
in their path (fixes #103)
- symbols for Kickstart 1.2, 1.3, 2.04, 2.05, 3.0, 3.1 (no FPU support) working for debugging (e.g. you can set a breakpoint to 'WaitBlit' or 'AllocMem') and profiling
- fix debugger not working when kickstart symbols not found (broken since 1.3.8)
- symbols for Kickstart 1.3 [exec 34.2] (GDB only, dos.library missing)
- fixed crash in assembly view #97
- use VSCode built-in memory viewer for
Amiga: View Memory
- use VSCode built-in memory viewer (click the binary icon beside a variable in the debug view)
- fix crash in WinUAE when requesting a memory dump
- updated to GCC 12.1.0, binutils, GNU gdb (GDB) 13.0.50.20220509-git
- fixed missing error message during launching a debug session when .elf file was not found
- fix some 68k cycle timings
- support breakpoints in .s files
- Assembly: show theoretical 68000 cycles as decoration
- Assembly: fix F12 on local labels
- Assembly: Autocomplete for opcodes, labels
- Disassembly: Hover over CPU instructions to view documentation
- Diassembly: fix loop cycle display in some cases
- updated to WinUAE 4.9.0 beta 42
- fixed debug overlay redraw issue (broken since 1.2.0)
- (internal) use webpack for both extension and webview
- fix "Disassemble ELF file" (broken since 1.3.0)
- savestate gfx-debugging/profiling (.uss files created by any WinUAE)
- resource viewer supports hires
- resource viewer shows copper screens of every profiled frame
- fixed AbleICR, SetICR, AddICRVector, RemICRVector in resources/cia.h [tehKaiN] #80
- Configurable ram size [tehKaiN] #79
- fix incorrect blitter size (broken since 1.2.1) #85
- fix palette/copper colors (broken since a while) #71
- Updated to WinUAE 4.9.0 beta 38 (2021.10.23) #84
- fix multi-frame profile screenshot thumbnails (broken since 1.2.1 for 32-bit machine models)
- fix multi-frame profile error message "Unable to start profiling: RangeError: start offset of Uint16Array should be a multiple of 2" (broken since 1.2.1)
- Updated to WinUAE 4.9.0 beta 37 (2021.10.14)
- Updated to GCC 11.2.0 and GDB 12.0.50.20211014-git
- Disassembly now demangles C++ names
- Bitmap visualizer now supports HAM5, HAM6 and EHB modes (see
debug_resource_bitmap_ham
) - Blitter visualizer now uses number of bitplanes from registered bitmap resources (channel D)
- WinUAE now handles debugging commands when emulation is paused
- Better handling of closing WinUAE during debugging
- Fixed WinUAE to reset debug resources on restart
Profile File Size
working again, now demangles C++ names- bump IntelliSense to gnu11, g++20
- moved elf2hunk to a seperate repository, limit symbol length, C++ name demangling
- elf2hunk now suports
-s
to strip symbols (long symbol names can cause AmigaDOS to not load the exe file) - fix crash in Shrinkler for empty symbol hunks
- better C++ support (added -fno-rtti -fcoroutines to CCFLAGS). Added <type_traits>, header files. support for global destructors (now using -fno-use-cxa-atexit)
- support for more Amiga models in
.vscode/launch.json
(these are all WinUAE quickstart configs):A1200-FAST
: A1200 with 4MB fast memoryA1200-030
: A1200 with Blizzard 1230-IV and 32MB board memory. Requires the absolute path to the Blizzard ROM incpuboard
.A3000
: A3000 (no profiler support)
- new option
endcli
in.vscode/launch.json
(default: false) If enabled, usesrun
andEndCLI
instartup-sequence
so you cann callCloseWorkBench()
from your program. - new option
uaelog
in.vscode/launch.json
(default: true): If disabled, don't show WinUAE log output in debug console - NDK: updated to latest version from bebbo's package
- GCC: prevent
sccp
pass from generating__mulsi3
calls - Fixed WinUAE not booting correctly after overwriting the default configuration
- debugger: now breaks at 'TRAP #7' opcode (generated by GCC when undefined behavior is encountered)
- debugger: now breaks at Address Error (68000 unaligned memory access)
- debugger: now breaks at Illegal Instruction (illegal opcode)
- debugger: support restart
- debugger: faster stop when debugging hasn't started yet
- Debug Console now shows all output from WinUAE as well (exceptions, etc.)
- GDB output can now be found in the
Output
pane underAmiga
- support IntelliSense for assembly sources (currently working:
Go to Symbol
,Go to Definition
, semantic highlighting) - support relocation for an arbitrary number of sections/hunks (fixes #11)
- support data breakpoints/watchpoints (during debugging, right-click on a variable and select
Break when value changes
) - support for a custom version of Shrinkler executable cruncher by Blueberry that generates
.shrinklerstats
files that can be opened with VS Code for size profiling. Right-click an EXE file in the explorer, and selectAmiga: Shrinkle File
, then select a Shrinkler configurations. See.vscode/amiga.json
in the template project for examples of how to specify shrinkler configurations. - added blitter timeline to profiler
- better scolling/zooming in profiler
- fixed CPU profiling (callstacks got merged)
- GCC: fixed unwind information generated in epilogues
- disassemble ELF file: Right-click on ELF file in the explorer, and select
Amiga: Disassemble ELF File
. Navigate with cursor keys. Automatically opens C sources and relates C source code to assembly. cursor right to follow jump, cursor left to backtrack. Navigate in C sources to automatically show corresponding assembly instructions. Disassembly is automatically updated when you rebuild your project. - profiler: new
Assembly
tab shows assembly execution trace with timings and jumps - profiler now has symbol table and can resolve addresses
- profiler now synchronized to DMA
- profiler now supports multiple frames with screenshots
- profiler: optimized loading of big profile files
- fixed blitter crash after setting a breakpoint in interrupt or profiling
- graphics debugger in profiler (copper, blitter, bitmaps, custom registers). Use debug_register_*/debug_unregister functions from
gcc8_c_support.h
to tell the graphics debugger about your bitmaps, palettes and copperlists for a better experience. Move the time slider in the flame-graph to replay the captured frame and see your graphics change in real-time. Use 'Overlay' to visualize blitter rects or overdraw. - WinUAE debug overlay: debug_text now supports newlines
- several DMA request were not displayed in the timeline (bitplanes > 1, sprites > 1, refresh > 1)
- template project: added ThePlayer61 module replayer. To convert your own modules, use p61con
- increased buffer size for addr2line.exe (profiling could fail on "big" executables)
gcc8_c_support.c
: improvedwarpmode
- IntelliSense: previous versions would write
"compilerPath"
to every.vscode/c_cpp_properties.json
, even if it wasn't an Amiga project. Now, the whole process has been simplified. Please use the following.vscode/c_cpp_properties.json
file:
{
"configurations": [
{
"name": "Amiga",
"configurationProvider": "BartmanAbyss.amiga-debug"
}
],
"version": 4
}
and move the existing "defines"
, "includePath"
settings to .vscode/amiga.json
like this:
{
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/../shared/"
],
"defines": [ "DEBUG" ]
}
"defines" : [ "__GNUC__=8", "_NO_INLINE" ]
is no longer needed.
Important: You must have a .vscode/amiga.json
file in your workspace, even if it's empty. IntelliSense will not work if this file is not present.
- added function-level + DMA profiling: during a debugging session, press the
Profile
button on the right of the debug toolbar, and 1 frame will be profiled. - added ELF file size profiling: right-click an ELF file in the explorer, and select
Amiga: Profile File Size
- added WinUAE debug overlays. See template project for debug_* function calls for an example
- updated to latest 64-bit WinUAE
- added command
Amiga: Open Terminal
- fixed disassembly
- improved
INCBIN
macro to correctly report binary size to the size profiler. - added
INCBIN_CHIP
macro to put binaries directly into chip mem. - better demo project, shows copper, bitplanes
- support for different Amiga models (A500, A1200, A4000) in
.vscode/launch.json
- now available in the Visual Studio Code Marketplace
- updated to GCC 10.1, binutils 2.34 and GDB 9.1
- elf2hunk now built with Microsoft Visual C++ 2019
- fix prototypes in string.h
- support C++ (template project updated, just rename main.c to main.cpp)
INCBIN
macro was broken. Fixed now and added example code to "new project" template.
- "Init Amiga Project" now checks if project folder is empty
- added command amiga.initProject
- better README
- added template project
- instead of passing arguments to WinUAE, they are now written to the default config (default.uae). You can now change settings in WinUAE and save over default.uae and changes will persist.
- removed WinUAE notification icon
- revert back to old way of ending gdb/WinUAE
- don't activate Visual Studio Code on break-on-entry
- show Explorer after debugging is finished
- hide GDB output
- support faster debug output via uaelib trap #87
- added keyboard mapping ^ = single step, Page-up = warp mode