From ded1566f530602cb255028b79633e135fe658f3b Mon Sep 17 00:00:00 2001 From: k Date: Tue, 21 Oct 2025 19:49:22 -0400 Subject: [PATCH 1/2] fixed fenGame loading backwords --- src/main.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.zig b/src/main.zig index f6253df..1cad363 100644 --- a/src/main.zig +++ b/src/main.zig @@ -60,7 +60,7 @@ fn uciPos(str: []const u8, alloc: std.mem.Allocator) *types.game { } fn fenGame(str: []const u8, alloc: std.mem.Allocator) *types.game { - var pos: u8 = 0; + var pos: u8 = 63; var space: u8 = 0; var g = alloc.create(types.game) catch unreachable; g.* = std.mem.zeroes(types.game); @@ -84,7 +84,7 @@ fn fenGame(str: []const u8, alloc: std.mem.Allocator) *types.game { const set: *u64 = mov.charToSet(g, chr); const bit: u64 = @as(u64, 1) << @truncate(pos); set.* |= bit; - pos += 1; + pos -= 1; } return g; } From 94b501fd17f1634b99ea35fce475f14ed5f16aef Mon Sep 17 00:00:00 2001 From: k Date: Tue, 21 Oct 2025 19:52:16 -0400 Subject: [PATCH 2/2] knightMove runtime should be working --- src/move.zig | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/move.zig b/src/move.zig index 70f0dca..2694870 100644 --- a/src/move.zig +++ b/src/move.zig @@ -59,6 +59,32 @@ pub fn charToSet(g: *types.game, chr: u8) *u64 { // pub fn pawnMove(arr: std.ArrayList(c.move)) void { // const move = c.move{ .From = 8, .To = 16, .Promo = 0 }; // } + +pub fn knightMove(g: *types.game, arr: *std.ArrayList(types.move)) void { + const moveLut: [64]u64 = comptime blk: { + var value: [64]u64 = undefined; + for (0..64) |i| { + value[i] = knightCalc(@truncate(i)); + } + break :blk value; + }; + const set = if (g.whiteToMove) &g.white.knights else &g.black.knights; + const fset: u64 = if (g.whiteToMove) @as(u64, c.fullSet(@ptrCast(&g.white))) else @as(u64, c.fullSet(@ptrCast(&g.black))); + var val = set.*; //local copy + const n = @popCount(val); + for (0..n) |_| { + const pos = @ctz(val); + const moves = moveLut[pos] & ~fset; + val = val ^ (@as(u64, 1) << @truncate(pos)); + bitboardToMoves(pos, moves, arr); + } +} + +fn knightCalc(index: u8) u64 { + _ = index; + return @as(u64,1)<<32; +} + fn bitboardToMoves(start: u8, moves: u64, arr: *std.ArrayList(types.move)) void { var lmoves = moves; while (lmoves != 0) {