From f8c0dc54e36cc201c657aa12e5a22029b092e1bc Mon Sep 17 00:00:00 2001 From: Aargh Rai Date: Mon, 13 Jul 2026 21:58:18 +0530 Subject: restructed all the files + uci done now also broke the symbol analyser in the process, i didn't help much, i had to pull out the pen & paper, but it made a cool graph never the less multithreading was a pain! but it got it in the end fixed the structs naming convention, if it's used outside by other files, it's typedeffed, otherwise it's not fixed the recursive imports issued i had in go_args*, where i was casting it to void* in uci to make it work now response.c doesn't deal with ipc, really happy with that change now every single thing has its own responsibility --- assets/board.js | 262 -------------------------------------------------- assets/pieces/bb.webp | Bin 538 -> 0 bytes assets/pieces/bk.webp | Bin 1028 -> 0 bytes assets/pieces/bn.webp | Bin 740 -> 0 bytes assets/pieces/bp.png | Bin 692 -> 0 bytes assets/pieces/bq.png | Bin 1563 -> 0 bytes assets/pieces/br.webp | Bin 274 -> 0 bytes assets/pieces/wb.webp | Bin 834 -> 0 bytes assets/pieces/wk.webp | Bin 946 -> 0 bytes assets/pieces/wn.png | Bin 1263 -> 0 bytes assets/pieces/wp.png | Bin 898 -> 0 bytes assets/pieces/wq.webp | Bin 1388 -> 0 bytes assets/pieces/wr.png | Bin 748 -> 0 bytes 13 files changed, 262 deletions(-) delete mode 100644 assets/board.js delete mode 100644 assets/pieces/bb.webp delete mode 100644 assets/pieces/bk.webp delete mode 100644 assets/pieces/bn.webp delete mode 100644 assets/pieces/bp.png delete mode 100644 assets/pieces/bq.png delete mode 100644 assets/pieces/br.webp delete mode 100644 assets/pieces/wb.webp delete mode 100644 assets/pieces/wk.webp delete mode 100644 assets/pieces/wn.png delete mode 100644 assets/pieces/wp.png delete mode 100644 assets/pieces/wq.webp delete mode 100644 assets/pieces/wr.png (limited to 'assets') diff --git a/assets/board.js b/assets/board.js deleted file mode 100644 index 9c7b29d..0000000 --- a/assets/board.js +++ /dev/null @@ -1,262 +0,0 @@ -const assets = [ - "wk.webp", "wq.webp", "wr.png", "wb.webp", "wn.png", "wp.png", - "bk.webp", "bq.png", "br.webp", "bb.webp", "bn.webp", "bp.png" -].map(x => "./assets/pieces/" + x); -let hoveringPiece = -1; - -const bitboards = [ - 16n, - 8n, - 129n, - 36n, - 66n, - 65280n, - 1152921504606846976n, - 576460752303423488n, - 9295429630892703744n, - 2594073385365405696n, - 4755801206503243776n, - 71776119061217280n, -]; -const WHITE_KING = 0; -const WHITE_QUEEN = 1; -const WHITE_ROOK = 2; -const WHITE_BISHOP = 3; -const WHITE_KNIGHT = 4; -const WHITE_PAWN = 5; -const BLACK_KING = 6; -const BLACK_QUEEN = 7; -const BLACK_ROOK = 8; -const BLACK_BISHOP = 9; -const BLACK_KNIGHT = 10; -const BLACK_PAWN = 11; - -let counting_bitboard = 0n; -function trackBitboard(i, selected, output) { - const mask = 1n << BigInt(i); - if (selected) counting_bitboard |= mask; - else counting_bitboard &= ~mask; - output.textContent = counting_bitboard.toString(); -} - -function checkForPiece(square, bitIndex, set = true) { - for (let i = 0; i < bitboards.length; i++) { - const mask = bitboards[i]; - if ((mask >> BigInt(bitIndex)) & 1n) { - if (set) square.style.backgroundImage = `url(${assets[i]})`; - return i; - } - } - return null; -} - -function isYourTurn(piece) { - if (turn == "w") return piece < 6; - return piece >= 6; -} - -const selectedAction = trackBitboard; - -window.onkeydown = (e) => { - if (e.key == 'b') { - console.log(` -position.bitboards[WHITE_KING] = ${bitboards[0].toString()}ULL; -position.bitboards[WHITE_QUEEN] = ${bitboards[1].toString()}ULL; -position.bitboards[WHITE_ROOK] = ${bitboards[2].toString()}ULL; -position.bitboards[WHITE_BISHOP] = ${bitboards[3].toString()}ULL; -position.bitboards[WHITE_KNIGHT] = ${bitboards[4].toString()}ULL; -position.bitboards[WHITE_PAWN] = ${bitboards[5].toString()}ULL; -position.bitboards[BLACK_KING] = ${bitboards[6].toString()}ULL; -position.bitboards[BLACK_QUEEN] = ${bitboards[7].toString()}ULL; -position.bitboards[BLACK_ROOK] = ${bitboards[8].toString()}ULL; -position.bitboards[BLACK_BISHOP] = ${bitboards[9].toString()}ULL; -position.bitboards[BLACK_KNIGHT] = ${bitboards[10].toString()}ULL; -position.bitboards[BLACK_PAWN] = ${bitboards[11].toString()}ULL; - `) - } -} - -let validMoves = {}; -let renderingMoves = []; -let pickedUpFrom = -1; - -function updateRenderingMoves() { - for (let i = 0; i < 64; i++) { - const square = document.getElementById(`square-${i}`); - if (renderingMoves.includes(i)) square.children[0].classList.add("possible_move"); - else square.children[0].classList.remove("possible_move"); - } -} - -function handleTransmission(data) { - data = data.join(""); - for (let i = 0; i < data.length / 4; i++) { - const moveData = data.slice(4 * i, 4 * i + 4); - let from = parseInt(moveData.slice(0, 2)); - let to = parseInt(moveData.slice(2)); - - console.log(from, to, moveData); - - if (validMoves[from] == undefined) validMoves[from] = [] - validMoves[from].push(to); - } -} - -function calculateFen() { - let fen = "" - let empty = 0; - for (let i = 7; i >= 0; i--) { - for (let j = 0; j < 8; j++) { - const sqr = document.getElementById(`square-${8 * i + j}`).style.backgroundImage; - if (sqr.length == 0 || sqr.includes("none")) { - empty++; - continue; - } - if (empty != 0) { - fen += empty.toString(); - } - empty = 0; - let p = sqr[22]; - if (sqr[21] == "w") p = sqr[22].toUpperCase(); - fen += p; - } - if (empty != 0) { - fen += empty.toString(); - } - if (i == 0) continue; - empty = 0; - fen += "/"; - } - return fen; -} - -let turn = "w"; -let castling = "KQkq"; -let passant_square = "-"; -let halfmove = 0; -let fullmove = 1; -let socket; -let old_fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; -function checkMoveMade(pieceMoved) { - let new_fen = calculateFen(); - if (new_fen == old_fen.split(" ")[0]) return; - old_fen = new_fen; - halfmove++; - console.log(pieceMoved) - if (pieceMoved == WHITE_PAWN || pieceMoved == BLACK_PAWN) halfmove = 0; - if (turn == "b") fullmove++; - turn = turn == "w" ? "b" : "w"; - old_fen = `${new_fen} ${turn} ${castling} ${passant_square} ${halfmove} ${fullmove}`; - validMoves = {}; - console.log(old_fen); - socket.send(old_fen); -} - -function connectSocket() { - socket = new WebSocket("ws://localhost:3456"); - let data = []; - socket.onmessage = e => { - console.log(e); - if (e.data == "END-TRANSMISSION") { - handleTransmission(data); - data = []; - } else { - data.push(e.data); - } - } - socket.onopen = () => { - console.log(old_fen); - socket.send(old_fen); - } - socket.onerror = e => { - console.log("error", e); - }; -} - -window.onload = () => { - connectSocket(); - socket.onclose = e => { - console.log("closed", e.code, e.reason); - }; - - const output = document.getElementById("output"); - const board = document.getElementById("board"); - for (let i = 0; i < 64; i++) { - if (i % 8 == 0) { - const label = document.createElement("div"); - label.classList.add("label"); - label.textContent = 8 - Math.round(i / 8); - board.appendChild(label); - } - const square = document.createElement("div"); - square.classList.add("square"); - - const renderingMoveMarker = document.createElement("div"); - renderingMoveMarker.classList.add("rendering_marker"); - square.appendChild(renderingMoveMarker); - - const shift = Math.floor(i / 8); - square.classList.add((i + shift) % 2 ? "dark" : "light"); - const bitIndex = (i % 8) - 8 * Math.floor(i / 8) + 56; - square.id = 'square-' + bitIndex.toString(); - checkForPiece(square, bitIndex); - square.onclick = (e) => { - if (e.ctrlKey) { - const selected = square.classList.contains("selected"); - selectedAction(bitIndex, !selected, output); - if (selected) square.classList.remove("selected"); - else square.classList.add("selected"); - return; - } - - const piece = checkForPiece(square, bitIndex, false); - const sqr_id = parseInt(square.id.slice(7)); - if (hoveringPiece == -1) { - if (piece == null) return; - if (!isYourTurn(piece)) return; - if (validMoves[bitIndex]) renderingMoves = validMoves[bitIndex]; - setHoverpiece(piece); - pickedUpFrom = sqr_id; - square.style.backgroundImage = `none`; - bitboards[piece] &= ~(1n << BigInt(bitIndex)); - } else { - if (sqr_id != pickedUpFrom && !renderingMoves.includes(sqr_id)) return; - renderingMoves = []; - square.style.backgroundImage = `url(${assets[hoveringPiece]})`; - if (piece) bitboards[piece] &= ~(1n << BigInt(bitIndex)); - bitboards[hoveringPiece] |= (1n << BigInt(bitIndex)); - setHoverpiece(-1); - } - console.log(piece, hoveringPiece, square, renderingMoves); - updateRenderingMoves(); - }; - board.appendChild(square); - } - const label = document.createElement("div"); - label.classList.add("horizontal_label"); - board.appendChild(label); - for (let i = 0; i < 8; i++) { - const label = document.createElement("div"); - label.classList.add("horizontal_label"); - label.textContent = ["a", "b", "c", "d", "e", "f", "g", "h"][i]; - board.appendChild(label); - } - - const mouse = document.getElementById("mouse"); - function setHoverpiece(i) { - let oldHoveringPiece = hoveringPiece; - hoveringPiece = i; - if (i < 0) { - mouse.style.backgroundImage = `none`; - checkMoveMade(oldHoveringPiece); - return; - } - mouse.style.backgroundImage = `url(${assets[i]})`; - } - window.onmousemove = (e) => { - const x = e.clientX; - const y = e.clientY; - mouse.style.left = x.toString() + 'px'; - mouse.style.top = y.toString() + 'px'; - } -} diff --git a/assets/pieces/bb.webp b/assets/pieces/bb.webp deleted file mode 100644 index f780b4d..0000000 Binary files a/assets/pieces/bb.webp and /dev/null differ diff --git a/assets/pieces/bk.webp b/assets/pieces/bk.webp deleted file mode 100644 index 23d2e3b..0000000 Binary files a/assets/pieces/bk.webp and /dev/null differ diff --git a/assets/pieces/bn.webp b/assets/pieces/bn.webp deleted file mode 100644 index 68a6d63..0000000 Binary files a/assets/pieces/bn.webp and /dev/null differ diff --git a/assets/pieces/bp.png b/assets/pieces/bp.png deleted file mode 100644 index fa57435..0000000 Binary files a/assets/pieces/bp.png and /dev/null differ diff --git a/assets/pieces/bq.png b/assets/pieces/bq.png deleted file mode 100644 index 6334dd4..0000000 Binary files a/assets/pieces/bq.png and /dev/null differ diff --git a/assets/pieces/br.webp b/assets/pieces/br.webp deleted file mode 100644 index 8d078e1..0000000 Binary files a/assets/pieces/br.webp and /dev/null differ diff --git a/assets/pieces/wb.webp b/assets/pieces/wb.webp deleted file mode 100644 index 5020e5e..0000000 Binary files a/assets/pieces/wb.webp and /dev/null differ diff --git a/assets/pieces/wk.webp b/assets/pieces/wk.webp deleted file mode 100644 index 72fdcf7..0000000 Binary files a/assets/pieces/wk.webp and /dev/null differ diff --git a/assets/pieces/wn.png b/assets/pieces/wn.png deleted file mode 100644 index a03ccac..0000000 Binary files a/assets/pieces/wn.png and /dev/null differ diff --git a/assets/pieces/wp.png b/assets/pieces/wp.png deleted file mode 100644 index d968278..0000000 Binary files a/assets/pieces/wp.png and /dev/null differ diff --git a/assets/pieces/wq.webp b/assets/pieces/wq.webp deleted file mode 100644 index bfbd57a..0000000 Binary files a/assets/pieces/wq.webp and /dev/null differ diff --git a/assets/pieces/wr.png b/assets/pieces/wr.png deleted file mode 100644 index 69811d8..0000000 Binary files a/assets/pieces/wr.png and /dev/null differ -- cgit v1.2.3