This is the sort of thing where Dear ImGui is simply perfect :) I also used it for the debugging UI in my emulators (https://floooh.github.io/tiny8bit/) - here's an example screenshot with the debug UI open (and the emulator integrated into a VSCode tab):
There are a lot of advantages when you can tightly couple the UI with the guts of the emulator (e.g. everything in the UI automatically shows the current emulator state at full display refresh rate without having to worry about UI update and rendering performance or doing complicated "data binding", just point the UI to the memory locations of the "live data", and everything updates automatically).
PS: the Spectrum Analyzer is actually using emulators from that same 'chips project' (https://github.com/floooh/chips). Props for the shoutout :)
Just one note: Please use UI scaling; it's near impossible to read on a 150% 4k screen (much less on 100%). Unfortunately, young eyes don't last forever.
The UI looks very much like ImHex (https://imhex.werwolv.net/). Is this a coincidence, or is it the standard ImGui look and feel?
I wish ImHex had a decompiler for Z80 as well, but this is much better.
It's not very well documented but if you put a font in the ./Fonts directory you can tell Spectrum Analyser to use it. If you edit the GlobalConfig.json you can put the font filename in the "Font" section. You can set the font size via the "FontSizePixels" entry. We can try to make this more obvious.
TBH I never tried it with scaling, but at least here in Chrome on macOS, it actually works nicely with the browser's scale feature (e.g. Cmd-plus/minus):
Reminds me of computers that came with very nice built-in monitors [1] which could be quite a luxury. Orao [2] had a monitor with a miniassembler and disassembly.
I never had a Spectrum, however I recognized the game being displayed in the screenshots. TIL that "Star Quake", that I played on a 286 w/ a Hercules card and a horrendous TSR CGA "emulator", was actually a Spectrum game first[1]. Maybe I should give the Spectrum a look.
I bought my first Spectrum (a Spectrum+) in 1985. It was a great machine for its time and cost. I learnt to code using the manual that came with it and can probably thank it for my career as a software developer.
I still have fond memories of that computer, the games I played on it and the time I spent hacking about on it, but it had some serious capability limitations compared to its competitors, most notably the Commodore 64, and I spent several years longingly looking at the C64 screenshots of games in Crash magazine, wishing I had gone down that route instead. Check out Paperboy on Spectrum versus C64 for example, where the Spectrum version is practically monochrome in a window that's approximately half the screen size.
I suspect, given their widespread adoption by devs at the time, that the tatung einstein 'port' would 'technically' have been the original, but the spectrum version was the first released version that more than 10 people cared about.
The tatung was an absolute beast of a z80 dev machine, and the favourite of many Spectrum and CPC devs.
I’m aware of the Apricot PC based PDS - Programmers Development System [1], but unfamiliar with a Tatung Einstein based dev environment, it’s mentioned briefly in this (interesting thread) [2], but would love to know more…
The tatung was designed in bradford, UK, then manufactured in Korea, 4MHz Z80, 64KB of RAM (upgraded to a 256k option by the EOL), AY-3910 sound, 2x 3" floppy drives built in, a built in 80 column monitor, and a video system comparable to the MSX, it ran CPM, which meant it had access to a plethora of good Z80 assemblers, Turbo Pascal, Wordstar, and other useful dev tools (including hisoft C). The 3" drives meant that it had a native advantage for the spectrum +3, CPC 6128, and amstrad PCW since it was trivial to write a disk writer to write native disks for those systems.
As a system of it's own standing, ignoring the MSX software catalog, which was largely unavailable in the UK, it was probably the best Z80 system by specs until the Elan/Flan/Enterprise 128* finally was released; which upped the high-tide mark for Z80 systems even further with again CPM compatibility (requiring a 3rd party copy of CPM though) and amazing hardware.
Both the Einstein and Enterprise were commercial failures for the most part, to the point that in early 1986 I was presented by Dixons offering either the Einstein or the Atari 130XE on a massive discount at £50. I chose poorly and picked the 130XE, which turned out to be the last one they had in stock, had 100% ram failure, and Dixons were unable to repair it under warranty. I still wish I'd gone with the more useful Einstein.
In the early 90s, you'd often find Einstein's knocking around in storage rooms of most UK development studios from when they got adopted as dev machines. Sometimes you'd find a PCW or 2 too, again CPM and the 3" disks rendering it useful.
Another cool spectrum-first game was Nebulus. I remember buying it at a shop on Tottenham Court Road.
I recently learned Nintendo released versions of the game as 'Castelian'. The level design, at least for level 1, is the same as in the original Nebulus.
aka "Tower Toppler" or "Castelian". The 3D tower rotation was mind blowing--on an 8-bit with no coprocessor or even hardware multiply!
Walk-through video: https://www.youtube.com/watch?v=tuLgJeXBB-A
Why would you need a coprocessor or hardware multiply? It's all tiles and sprites just like Super Mario Brothers. Ok, on the Spectrum software emulated, but still.
Tower rotation is achieved by scrolling (well, rolling really) 8x8 character bitmaps at varying rates. It gives a very convincing 3D-rotation illusion, while being nothing like it at all.
I was simply marveling at what could be done without on a ZX Spectrum, when contemporary 8-bits usually had some mix of sound, scroll, sprite/video hardware.
That’s great! Back in the day I’d have to take a snapshot with my +D and then disassemble parts of it and print them on my dot matrix printer. At least the HiSoft Devpac Mons debugger was relocatable so you could move it around to get out of the way of the code you wanted to look at. Which then became a target of curiosity for how the relocation code worked :)
Hi, I'm the maintainer of the colourclash website for Spectrum Analyser. Unfortunately I hit a bandwidth limit so the site is currently available.
In the meantime, feel free to join our discord server for Spectrum Analyser and the other 8 bit analysers. You can download the latest PC build of Spectrum Analyser there on the #builds channel.
https://discord.gg/VQ3m6W4ZRu
I think it's a great name, and it's easily found as "ZX Spectrum analyser", which is the obvious description of the tool. I think it's actually kind of a perfect name
Looks great, also it's quite funny, it seems to me like just how HTML+JS+CSS is the universal GUI of the web, imgui seems to be becoming the universal GUI of native applications.
PS: I wish we had something this nice for x86 DOS programming. I have been trying to write little 256b intros for DOS and the debugging options for .COM files are not great.
https://floooh.github.io/images/vscode-wasm-wasi-3.webp
There are a lot of advantages when you can tightly couple the UI with the guts of the emulator (e.g. everything in the UI automatically shows the current emulator state at full display refresh rate without having to worry about UI update and rendering performance or doing complicated "data binding", just point the UI to the memory locations of the "live data", and everything updates automatically).
PS: the Spectrum Analyzer is actually using emulators from that same 'chips project' (https://github.com/floooh/chips). Props for the shoutout :)
Here in the "sister project" there are some re-used windows from my debugger ui visible (https://colourclash.co.uk/cpc-analyser/), which I think is very cool because it shows how existing Dear ImGui code can be used as UI components (for instance I also re-used the hex editor from here: https://github.com/ocornut/imgui_club/tree/main/imgui_memory...)