Skip to content
Simon Slamka edited this page Oct 31, 2026 · 1 revision

FAQ (from answers on Discord)

About

What is Crosstalk for?

2026-10-24

it's currently mainly for RTL projects (it started as an EDA toolkit it's going in another direction currently)

How long has Crosstalk been in development?

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

Why does Crosstalk run in a terminal instead of a graphical window?

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

Will there be mouse support?

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

Why are some characters shown as "?"

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

What does the Discord server's name mean?

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

Why Perforce instead of git?

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

Steam and GitHub

Why is no developer listed on the Steam page?

2026-10-28

I removed the developer field's value when the game became open-source. it felt like it'd be more fair.

Did you buy Steam reviews?

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).

Why did Crosstalk leave Steam?

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

Why not keep it on Steam and ignore the reviews?

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

I already have Crosstalk on Steam. What happens to my copy?

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

Will updates still come to Steam?

2026-10-31

just GitHub

I might put up a Codeberg mirror as well as a second remote. some people recommended it

https://codeberg.org/danglingptr0x0/crosstalk now live

How is the GitHub repository updated?

2026-10-28

there will be a mirror here pushed on every release and rc (similar to Linux, which is also mirrored on GH)

What happens to achievements, lobbies, and the Workshop without Steam?

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

Installing

How do I install Crosstalk?

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

less is 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

What does Crosstalk need on Linux?

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

Getting Started

How do I open the command line?

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 work

that is, Control + Shift + semicolon

cmdline commands are semicolon-terminated

Is there an in-game guide?

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)

Are there demo designs?

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

The help command prints nothing. Does it work?

2026-10-24

it prints to the log

Controls

Does Crosstalk work with non-US keyboard layouts?

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

A key combination opens something in my terminal instead of the game. Why?

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

How do I open the pause menu?

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.

How do I resize and move windows?

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

Why does the game beep?

2026-10-25

it beeps when notifications are emitted and during load screens

Projects

Why are there several copies of my project under Load, and how do I delete them?

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

Loading Designs

How do I load a SystemVerilog design?

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>

What is the top module?

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)

Which SystemVerilog features are supported?

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

Will parse errors say what went wrong?

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

Can I load a design without a clock?

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

Are memory arrays supported?

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

How do I load a binary into memory?

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

Simulation and Views

What can I try after loading a design?

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

How do I clear the analyzer?

2026-10-25

analyzer off;

Can the analyzer show arrays?

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

How do the register and stack views work?

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

How do I use the built-in terminal?

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

Can a design read from and write to the terminal?

2026-10-25

it can, via a serial port in the design

well, not strictly serial, but I use it as serial

How does Crosstalk run a design?

2026-10-25

SV-to-C99, yeah, but after that, it's LLVM. emit; effectively compiles a design with it and then runs it

How was the demo program in memory built?

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

Logs and Errors

Is it safe to share my log?

2026-10-25

you could share your log. besides relevant paths, there's nothing personal in it

What does error 14 mean?

2026-10-25

err 14 is LDG_ERR_NOT_FOUND

Why does the log record every layout change?

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

Other

Is the Minecraft client in the video running inside the emulator?

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

Will there be a Minecraft server too?

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)

Where can I learn electronics and PCB design?

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

Clone this wiki locally