Repository navigation
FAQ
2026-10-24
it's currently mainly for RTL projects (it started as an EDA toolkit it's going in another direction currently)
2026-10-24
it started as a bunch of projects all over the place, but with the current goal that I have, for about a year. last September/October I started posting FPGA videos to YT about my ISA and the beginning of my CPU. at that point I had a pretty good idea what I wanted to build. Crosstalk happened almost as a coincidence while struggling with electronics component libraries for boards that I wanted to make for the CPU. 3 or 4 months ago, I started on Crosstalk under the name "Crosstalk"
and since then, I've been on it nearly full-time, sharing time between Crosstalk and the custom architecture ecosystem
some parts of the Crosstalk code are older than a year, but those are comparatively small
2026-10-25
I did, but it annoyed me. first of all, it was too heavy. then, arbitrary programs decided to hook into my process without consent. Steam, OBS, Discord, and AMD all had their DLLs in the game. supporting OpenGL was also quite painful. and on Linux, it didn't even work because would have had to link, like, 8 different third-party objects, which I decided not to
this is what it was like: https://youtube.com/live/kyxaLrihAD8
I was already mad for Windows letting these DLLs get loaded into my program. they can't even be unloaded. Windows just lets them. and it's also the memory waste. the AMD driver committed about 4 gigs when I started the game on Windows. without it, the memory footprint is much lower. the actual usage, discounting for design pools that expand with larger designs, it's about 250-300Mi committed
and probably the biggest reason was that I want to prep it for my architecture. eventually it'll be runnable there without any other dependencies, either on an FPGA or, later, ASIC
2026-10-25
about mouse dragging: it could work here as well, though I do think that it's a bit uncharacteristic for a terminal emulator, even though some programs somewhat support it
maybe someone's patch could add mouse support. LDG has the interface, so it'd just need to be plugged in and listened to
2026-10-25
? would be UTF. underscores are supported
I made the call to not support UTF at all in the ecosystem
one day you're adding accented characters and before you realize, there's this: https://imgur.com/a/SgfNkQs (from: https://en.wikipedia.org/wiki/List_of_emojis)
and they keep adding more and more and more, plus various combinations of them. and they're wider than one byte (the emoji are 4B), which is a headache
English is expressible with 7-bit ASCII, so the ecosystem supports exactly that
2026-10-28
the server name is almost a joke. the same way some servers use a name that fits their thing
it's "Crosstalk" in LE ASCII
so, klatssorC
2026-10-28
it's not using git as source control at all at the moment because I was annoyed by the overhead of having to keep committing and sometimes fixing conflicts, plus git is not really built for binaries, so I switched to Perforce, which doesn't have a public-facing site like GitHub (as far as I could tell at the time).
there's a free self-hosted version. "pro" maybe in the sense that game project use it a lot, alongside SVN
git is not that popular in game dev
2026-10-28
I removed the developer field's value when the game became open-source. it felt like it'd be more fair.
2026-10-27
someone on Steam accused me of having "bought" reviews, so I want to say ahead of time that I never did and never would that. this is an open-source project, and I do not have any incentive to do that. if anything, I am losing by building Crosstalk and the surrounding ecosystem the way I'm building it
2026-10-28
the reviews that you see on the store page are bots (I actually reported them to Valve, who will probably not act but at least it's reported).
2026-10-28
I'm done with Steam as a dev. this really annoyed me. and people come to me with accusations (I don't mean you, [...], specifically, just in general. there was a user two days ago who accused me of buying reviews)
yeah, I just want it solved and work on the game without responding on the Steam forums on the daily when people think that reviews are bought or it's a scam or something
2026-10-30
as far as the reviews go, I've had enough for a lifetime. I don't want my time on this or any project to turn from development into moderation, self-defense, and marketing. that's not why I'm doing this. if people want to join the community and/or participate, then they're welcome to do so, but I want to focus on building it. with ASD and my kind of personality, I already have difficulties interacting with people as it is, so all the botting and confusion arising from something like this being on Steam is not something I want to willingly participate in. I had no idea it'd go that badly. I kept posting before the game's release because I wanted to use Steam as a backend and saw the project as different from others there, but it turned out differently. when it comes to achievements, stats, etc., it's going to be a bit of a problem because I implemented all of it already, plus lobbies, matchmaking, voice chat, Steam Timeline, and the workshop, but I have a plan to solve that without giving up the functionality (I'll probably mirror the Steamworks SDK interfaces and self-host a Steam-like backend, plus offer it as a package for others to self-host)
at the end of the day, I don't want what I do to turn into something other than development. it gave me a taste of what a manager at a corporation who used to be in dev would feel like, and I think it's fairly early for me to go there, and I actually think that I want to do dev directly forever without "upgrading" to a management position, if I ever work at a serious company
2026-10-30
I could, but the problem is that it causes people to come to Steam forums and say things like "you're buying positive reviews" (paraphrased)
so, then if I ignore it, then I implicitly agree with it in the eyes of many. so I have to address it. and that's what I don't want. on GitHub, there are no reviews and it's not a "storefront," so people view it differently. on Steam, one thing that they don't like or understand and suddenly there's a review and a forum post
it would be different if Steam gave me something useful, something that I couldn't self-host. what you'll be able to get on GitHub soon will be virtually equivalent to what you'd get via Steam, minus playtime tracking, but that's not part of the game itself. if anything, there is no reason, in my view, to use Steam. the game doesn't need it
2026-10-30
since you have already claimed the game on Steam, you will continue to have it in your library. my guess is that playtime tracking is what you're after, because otherwise everything else will remain the same. there will be a small script that will get the game and its utility library from GitHub, then my modified LLVM, and then compile the two on your system. there will also be free precompiled binaries in GitHub releases
2026-10-31
just GitHub
I might put up a Codeberg mirror as well as a second remote. some people recommended it
2026-10-28
there will be a mirror here pushed on every release and rc (similar to Linux, which is also mirrored on GH)
2026-10-30
when it comes to achievements, stats, etc., it's going to be a bit of a problem because I implemented all of it already, plus lobbies, matchmaking, voice chat, Steam Timeline, and the workshop, but I have a plan to solve that without giving up the functionality (I'll probably mirror the Steamworks SDK interfaces and self-host a Steam-like backend, plus offer it as a package for others to self-host)
exactly. and I will build my own self-hosted workshop while keeping Valve's interfaces. so at the end of the day, there's nothing that depends on Steam
2026-10-30
s=$(curl -fsSL https://raw.githubusercontent.com/danglingptr0x0/crosstalk/main/tools/dangem/dangem.sh) && less <<<"$s" && bash -c "$s"this is now the path to install Crosstalk
Windows: https://github.com/danglingptr0x0/crosstalk/releases/download/0.1/crosstalk-0.1-windows.zip
lessis used so that you can read the script before blindly passing it into bash, which is what most "quick start" guides would have you do
2026-10-30
dependencies:
NeededLibraries [ libc.so.6 libdangling.so libdiscord_partner_sdk.so libm.so.6 libpthread.so.0 libsdkencryptedappticket.so libsteam_api.so ]Arch/Debian packages needed:
glibc/libc6-dev gcc/libgcc-10-dev (libgcc-12-dev on Debian 12) gcc-libs/libgcc-s1 gcc-libs/libatomic1 alsa-lib/libasound2 libpipewire/libpipewire-0.3-0 curl/libcurl4 curl/curl xz/xz-utils
2026-10-24
yes. in "RTL," you can type in a project name and then create a project. then you'll be in the editor. the cmdline is accessible there
<C-S-;>should then workthat is, Control + Shift + semicolon
cmdline commands are semicolon-terminated
2026-10-24
the guide now shows up. you can navigate it using h/l or the D-pad
it only shows up in new projects.
guide close; on the cmdline closes the guide, in case you're in a new project and have gone through the guide
2026-10-25
guide tour; if you closed it already
if you start the guide in another project, don't run either of the two demos that are suggested near the end of the guide, otherwise save and then load (it won't autosave before discarding the already open project)
2026-10-25
I am adding a small demo systemverilog CPU core so that you and others who are new to the game can see something on the screen after finishing the guide except just the emulator. you can then also experiment with it in the terminal on teh side
monitor usage is also shown. it's basic, but you can see how to access it there and then only your imagination is the limit :D
2026-10-24
it prints to the log
2026-10-24
I will fix that. the input handler reads the ASCII character ; and not the hardware keycode, so the layout breaks it. I haven't thought about this earlier. thanks for the report
your layout shouldn't be a factor anymore. the game is reading the physical scancode now. please check
2026-10-25
I know. the game is remapping your layout internally to the US one
2026-10-24
one thing with the German layout is that Windows Terminal hijacks that to open the settings, which is what you saw. I tried it on mine, and it's Control + Shift + comma that opens the settings. this could be the case with any other keybinding that people might use that happens to trigger something in the terminal. the game can't intercept it before the terminal does, though I will see what else could be done
the game runs in a terminal, so the terminal tells it what was pressed. I'd have to launch something else to hook into the system's input handler. I could do that as admin, though I think some people might object
2026-10-24
ESC is used to clear text fields and exit insert mode when using vim through the game, so it listens for two presses within 150ms
otherwise they'd conflict
yes, though it'll be changeable. you could decide to use Shift + ESC if you wanted to. other key combinations will also be reassignable
the pause menu is now Shift + ESC instead of rapid ESC.
2026-10-25
yes. try Alt + hjkl to resize and Shift + Alt + hjkl to move
saving the project will persist your layout for that project
window layout
2026-10-25
it beeps when notifications are emitted and during load screens
2026-10-24
yes, though not from inside the game. I wanted to use the delete key to arm for deletion, then again to confirm, but it's not in yet
the 5 instances are because saving creates a new savefile. many times in here and also other games/programs, I lost save files because they weren't fully written, or they were but I realized that I just overwrote my save with bad changes. so I decided to save additively without an option to turn it off. once the game is stable and out of early access, I might add a setting, but for now, it's safer this way. once the deletion is in, then you can just delete the previous save whenever you're loading your next one (that's the way I do it)
2026-10-25
not sure if I mentioned, but deletion also works now. in the load submenu, pressing DEL once marks for deletion, then pressing again deletes
2026-10-24
there are commands that you can use to load your systemverilog project
<C-S-;>opens the cmdline, where you can use ld to load it
2026-10-25
the SV files themselves are comma-separated without a whitespace between them
though the load syntax is now
ld <path_to_sv_dir> <file1.sv,file2.sv,file3.sv> <top>
2026-10-24
top is basically the module that uses all the other modules. it can have any name. it doesn't have to be "top"
or modules that use other modules. but it uses all modules in the design directly or by proxy
2026-10-25
that part at the end has an extension. the top module doesn't have one. it's just the module's name
like
ld <path> test.sv test;(if "test" is the name of the module inside the SV)
2026-10-24
it needs expressions and tokens that are supported. I add more whenever a load fails. when I was testing the z386 project, I added a bunch, but the standard is quite large, so it's far from complete. did you get a failure? I can add whatever it failed on. it's usually parse errors
2026-10-25
https://ieeexplore.ieee.org/document/10458102 this is what I used
2026-10-25
but you have a point. I'll try to print when something like that happens. the issue is currently that there is no parser error database. I'll have to build one
based on the confusing error, I am starting to build something like this:
"endmodule; <-- endmodule followed by a semicolon is illegal (IEEE Std 1364TM-2005)"incrementally, as I encounter issues
2026-10-25
fixed, though there is another thing with your adder: it's not clocked, i.e. it's only combinatorial
I am fixing that as well
until now, the game's been requiring a clock signal
true. funny thing: I never tested it without a clock :D
I've always had something that was clock in the top module and then divided down later on, like in a serial module
2026-10-25
it's the memory port. let me see check something
yeah, it's that. this would take a while to implement. it would be an addition
2026-10-28
this would now work. I implemented memory arrays
2026-10-24
memld can load data into a slot that you specify, like if you have a memory image
memld <port_name> <path_to_file_to_load> [offset];
2026-10-25
memld memory <path>/prog.bin;
it should work nested, too, if some memory in the future is inside a submodule
2026-10-25
after loading, you could try these:
prof on; ind sum; analyzer a b sum cout; scope sum; poke a 5; poke b 7; poke cin 1;when you modify the file, it should refresh in real time
2026-10-25
analyzer off;
2026-10-25
no
unless it's on its own signal. something like: assign reg2 = regs[2];
per-element, of course, so effectively, no. that's the next thing to add. I'll have to add it to the backlog and get to it after the release of 0.1
2026-10-25
regview and stackview autodetect based on names, which follow my architecture. regview, for example, should be showing loc if it can find it, which is the locator, i.e. PC
2026-10-25
yeah. if you'd like, you could use the integrated terminal emulator. it's easier than alt-tabbing
I tested it with nvim, which wants a lot from the terminal, and it worked. the only thing that will break will be any UTF character, which will show up as "?"
of those, only the terminal takes input
term host; then focus it with ^1
2026-10-25
it can, via a serial port in the design
well, not strictly serial, but I use it as serial
2026-10-25
SV-to-C99, yeah, but after that, it's LLVM. emit; effectively compiles a design with it and then runs it
2026-10-25
unless you mean the memld'd one in demo 2
if so, then it's also LLVM. I just wrote a backend for my architecture, but most of the work was done by the LLVM team
yes, that is from an assembler, which I call the "DANGSEMBLER"
for large programs I use my LLVM backend, though. my assembler is very minimal
it can be done in a few hundred lines. mine, with comment support, is about 400
2026-10-25
you could share your log. besides relevant paths, there's nothing personal in it
2026-10-25
err 14 is LDG_ERR_NOT_FOUND
2026-10-25
yes. because I was setting a default layout and printed it to the log so that I could see the values
it was easier than looking for them in a debugger
2026-10-26
context, from the description:
The experiments start after 3min25sec. The Java client is superimposed on Crosstalk's window. Crosstalk is running a C99 reimplementation of a basic Fabric-compatible client called "Cubejuggler." The character, Simon, is controlled by Crosstalk, or, rather, by the C99 client running in the DANGCSA/DANGXA emulator. The Java client is used only to provide a visual reference and an easily usable point of view while building Cubejuggler and experimenting
yeah
it's still pretty basic, but main controls work and it can inspect and exchange items with containers
2026-10-26
I might try a server sometime, though. I am really behind with all the DLC, so it'll have to be after, possibly in a new DLC (since I use DLC as a roadmap)
2026-10-24
it'll eventually be a part of Crosstalk, also with some tutorials, but I don't know when because I don't feel up to it
but I know of some great resources, which I also used in the past https://www.youtube.com/@PhilsLab
this guy is also good: https://www.youtube.com/@RobertFeranec