BootChess by Red Sector Inc. [web]
[nfo]
|
||||||||
---|---|---|---|---|---|---|---|---|
|
||||||||
|
popularity : 86% |
|||||||
alltime top: #2082 |
|
|||||||
|
||||||||
added on the 2015-01-27 01:42:29 by Baudsurfer |
popularity helper
comments
I just started a quick game :D After 1.e4 e6 2.Ne2 d5 3.exd exd 4.Nc3 c6 5.Nxd5? cxd5 6.h3 i am already sure i'll win this, but hey, i am a club level chess player ;) Will dive deep into the code later, for now i'll just say : WOW! Great release!
Nice
nice opening for the next 30 years!
Okay, maybe I'm dense but is there any way to assemble this to run from the console on OSX/Linux? I don't have anything with a floppy drive to write it to at the moment.
WAT? With all those ports, and No Amiga port? Disappointment ;)
Automatic thumb for new world record! :) And 50% smaller than previous attempt!
Nice!
Wow!
nicely done :)
wow
BootChess.txt was interesting reading.
Congratulations for the record.
BootChess.txt was interesting reading.
Congratulations for the record.
Awesome!
Also, thank for the use of WTFPL, sam will be pleased :)
Also, thank for the use of WTFPL, sam will be pleased :)
needs better gfx and fighting animations like battlechess! ;)
Actually there ARE other 512b games, check this as an example: http://trd.speccy.cz/demos/ncp12.htm.
Otherwise cool. Can't figure out how to enter moves, any advice plz?
Otherwise cool. Can't figure out how to enter moves, any advice plz?
great stuff!
WTF!?!
Great!
Tried that myself once but gave up too early because i thought it would not have been possible
Tried that myself once but gave up too early because i thought it would not have been possible
Cool
Very cool, and a really impressive feat. =)
Nice!
.
Great, I'm alway ready for a good game of chess. So here we go...
White: Boot Chess
Black: Ham/SFL
1. e2e4 e7e5
2. Ng1e2 (with this movement, BootChess enters the Alapin's Opening)
Notice that, in the source code, there is a comentary about "hardcoded Spanish Opening"... well, just the first move of the Spanish (1 e4) is really hardcoded so it is misleading to say that BootChess knows that opening (As every good chess player knows, lots of opening starts with 1 e4, not just the Spanish, the Spanish Opening is 1 e4 e5 2 Nf3 Nf6 3 Bb5)
2. ... Ng8f6
3. Nb1c3 d7d5
4. e4xd5 Nf6xd5
5. Nc3xd5 Bf8c5
Till now BootChess played very well but suddenly...
6. Nd5xc7? Qd8xc7
Nxc7 is a bad mistake. BootChess exchange a knight for a pawn.
7. h2h3 Nb8c6
8. Rh1h2 e5e4
9. g2g3 f7f5
10. Bf1g2 Rh8f8
I would like to castle instead of place a rook on f8 but the program does not allow me to do it. So I play Rh8f8.
11. Bg2xe4? f5xe4
Another bad exchange. A bishop for a pawn. This program likes all captures!
12. f2f3 e4xf3
13. Ke1f2 f3xe2+
14. Kf2xe2 (screenshot 1)
It seems that white are lost and soon a checkmate will come. I decided to take the g3 pawn to prepare a decisive attack with queen and rook combined.
14. ... Qc7xg3
But then...
15. Ke2f3?? <-illegal move! (screenshot 2)
BootChess does not care if his King is placed on a square controlled by the enemy pieces. Very bad and very illegal. This is forbidden by chess rules!
15. ... QxK++
16. Program exit to MSDOS
Well... It is clear to me that you put more interest in making a small chess program that in making a good chess program. That's understandable even if the result is a program very easy to beat but... you cannot say that BootChess is a complete chess program because it does not allow to castle (didn't tried promotions, underpromotions, en passant pawn captures, stalemate... but I bet that are not supported, are they?) and, worst, it does not care about avoid to place a King in check. Every chess player knows that it is illegal (the movement CANNOT be made) to place your king on a square controlled by your rival pieces. If you allow it, then this is not chess.
I myself coded a few chess engines so I know how hard it is to do it and squeeze it in a small program. So I will not thumb down this nice effort. But you should stop that bragging about breaking records until you make a complete chess program.
White: Boot Chess
Black: Ham/SFL
1. e2e4 e7e5
2. Ng1e2 (with this movement, BootChess enters the Alapin's Opening)
Notice that, in the source code, there is a comentary about "hardcoded Spanish Opening"... well, just the first move of the Spanish (1 e4) is really hardcoded so it is misleading to say that BootChess knows that opening (As every good chess player knows, lots of opening starts with 1 e4, not just the Spanish, the Spanish Opening is 1 e4 e5 2 Nf3 Nf6 3 Bb5)
2. ... Ng8f6
3. Nb1c3 d7d5
4. e4xd5 Nf6xd5
5. Nc3xd5 Bf8c5
Till now BootChess played very well but suddenly...
6. Nd5xc7? Qd8xc7
Nxc7 is a bad mistake. BootChess exchange a knight for a pawn.
7. h2h3 Nb8c6
8. Rh1h2 e5e4
9. g2g3 f7f5
10. Bf1g2 Rh8f8
I would like to castle instead of place a rook on f8 but the program does not allow me to do it. So I play Rh8f8.
11. Bg2xe4? f5xe4
Another bad exchange. A bishop for a pawn. This program likes all captures!
12. f2f3 e4xf3
13. Ke1f2 f3xe2+
14. Kf2xe2 (screenshot 1)
It seems that white are lost and soon a checkmate will come. I decided to take the g3 pawn to prepare a decisive attack with queen and rook combined.
14. ... Qc7xg3
But then...
15. Ke2f3?? <-illegal move! (screenshot 2)
BootChess does not care if his King is placed on a square controlled by the enemy pieces. Very bad and very illegal. This is forbidden by chess rules!
15. ... QxK++
16. Program exit to MSDOS
Well... It is clear to me that you put more interest in making a small chess program that in making a good chess program. That's understandable even if the result is a program very easy to beat but... you cannot say that BootChess is a complete chess program because it does not allow to castle (didn't tried promotions, underpromotions, en passant pawn captures, stalemate... but I bet that are not supported, are they?) and, worst, it does not care about avoid to place a King in check. Every chess player knows that it is illegal (the movement CANNOT be made) to place your king on a square controlled by your rival pieces. If you allow it, then this is not chess.
I myself coded a few chess engines so I know how hard it is to do it and squeeze it in a small program. So I will not thumb down this nice effort. But you should stop that bragging about breaking records until you make a complete chess program.
oh ham you are being too harsh.. I'm sure Baudsurfer will fix that, there are plenty of bytes for it!
No way!
Observations by ham are correct. This behaviour is desribed in the readme though ;) The program is expoitable really fast by some kind of reversed scholars mate :/
1. e2e4 e7e5
2. Ng1e2 Bf8c5
3. Nb1c3 Qd8h4
4. h2h3 Qh4xf2 (mate)
5. Ke1xf2 Bc5xf2 (exits)
I'd advise to change the opening move to e2e3 (passive) or (solid) both prevent the basic scholars mate idea).
Basically i'm d'accord with everything ham said. Just i think that this is awesome anyway ;)
Some links for interested people :
http://talkchess.com/forum/index.php
http://tcec.chessdom.com/live.php
http://stockfishchess.org/
http://www.computerchess.org.uk/ccrl/4040/
https://groups.google.com/forum/#!forum/fishcooking
https://chessprogramming.wikispaces.com/
1. e2e4 e7e5
2. Ng1e2 Bf8c5
3. Nb1c3 Qd8h4
4. h2h3 Qh4xf2 (mate)
5. Ke1xf2 Bc5xf2 (exits)
I'd advise to change the opening move to e2e3 (passive) or (solid) both prevent the basic scholars mate idea).
Basically i'm d'accord with everything ham said. Just i think that this is awesome anyway ;)
Some links for interested people :
http://talkchess.com/forum/index.php
http://tcec.chessdom.com/live.php
http://stockfishchess.org/
http://www.computerchess.org.uk/ccrl/4040/
https://groups.google.com/forum/#!forum/fishcooking
https://chessprogramming.wikispaces.com/
Quote:
I'd advise to change the opening move to e2e3 (passive) or (solid) both prevent the basic scholars mate idea).
... or d2d4 (solid) ^^
I just read the previous record on wikipedia, 1k ZX chess (which is to be compared), implements (only) most chess rules.
just to nitpick a bit, the 1k ZX Chess is actually 672 bytes big, not 1024 bytes
Don't take me wrong. I know what you have achieved and I like it. A very compact program capable of generate pseudolegal moves. Another step forward and your program could avoid placing the King in check and also play a bit better.
It is very difficult, considering your less-than-1K constraint, to make a decent AI but you should, by all means, try to implement some awareness of the control over the board of the enemy pieces (and also yours, in the turn of the opponent). Try, for instance, to fill an array representing "board pressure" or "force field" (before calculate the next possible moves) with numbers of attacks of enemy pieces in the board (you can clear the array to zeroes and use the pseudolegal moves generator to add +1 to every square that could be a destination for some enemy piece). Then take care when checking the legality of a king movement that the destination square are not controlled by enemy forces.
You could avoid mistakes like the bad exchanges implementing some sort of static exchange evaluator (static because does not rely on techniques like negamax that you do not have space to implementent). You can base that exchange evaluation in the data present in that array of "pressure". Never take a piece less valuable than yours if the destination square is under attack.
This are imperfect solutions and the program still will play bad cheap chess. But al least will endurance a bit more and maybe win some games against beginners. Even the idea of use the taxi distance can work somehow if your AI is aware of the minefield of squares taken by the rival and avoid to place his pieces on bad squares. But it does not work very well in the current form of your program.
Just don't be lazy. There is a way to test that old "1K ZX Chess"? I would like to see how well play.
Your goal should be making a program able to beat that old relic with less bytes!
By the way, add a little bit of randomness in the game. Pure deterministic opponents can kill fun in chess.
It is very difficult, considering your less-than-1K constraint, to make a decent AI but you should, by all means, try to implement some awareness of the control over the board of the enemy pieces (and also yours, in the turn of the opponent). Try, for instance, to fill an array representing "board pressure" or "force field" (before calculate the next possible moves) with numbers of attacks of enemy pieces in the board (you can clear the array to zeroes and use the pseudolegal moves generator to add +1 to every square that could be a destination for some enemy piece). Then take care when checking the legality of a king movement that the destination square are not controlled by enemy forces.
You could avoid mistakes like the bad exchanges implementing some sort of static exchange evaluator (static because does not rely on techniques like negamax that you do not have space to implementent). You can base that exchange evaluation in the data present in that array of "pressure". Never take a piece less valuable than yours if the destination square is under attack.
This are imperfect solutions and the program still will play bad cheap chess. But al least will endurance a bit more and maybe win some games against beginners. Even the idea of use the taxi distance can work somehow if your AI is aware of the minefield of squares taken by the rival and avoid to place his pieces on bad squares. But it does not work very well in the current form of your program.
Just don't be lazy. There is a way to test that old "1K ZX Chess"? I would like to see how well play.
Your goal should be making a program able to beat that old relic with less bytes!
By the way, add a little bit of randomness in the game. Pure deterministic opponents can kill fun in chess.
Another interesting resource regarding small chess program is nanochess by Oscar Toledo who wrote several chess programs whose C source fits in ~900 bytes and the uber famous JS Chess 1k.
I'd give the Monte Carlo approach a try.
https://chessprogramming.wikispaces.com/Monte-Carlo+Tree+Search
Basically, just play repeatedly random games until the end from the current position, and chose the move which scores best on average. No sophisticated evaluation needed here, not even memory (besides the one currently simulated variant). Just a score per each possible move, which is updated after each run. After some (thousands?) of these runs, chose the most promising move ;)
https://chessprogramming.wikispaces.com/Monte-Carlo+Tree+Search
Basically, just play repeatedly random games until the end from the current position, and chose the move which scores best on average. No sophisticated evaluation needed here, not even memory (besides the one currently simulated variant). Just a score per each possible move, which is updated after each run. After some (thousands?) of these runs, chose the most promising move ;)
@HellMood: Implementing a Monte Carlo approach would require the ability to make and unmake moves. It will be necessary to do it many "plies" and evaluate depth nodes/leafs in the game tree. I assume that BootChess cannot make/unmake moves because it does not use minmax/negamax style of search (I didn't examine the whole source code, just read the bootchess.txt).
With randomness I mean something very simple, like add a small random factor, about half a pawn value after evaluate every position so the program could choose a different line when there are many equally good possibilities.
@Baudsurfer: Improve it a little bit and you will get more thumbs. ;]
With randomness I mean something very simple, like add a small random factor, about half a pawn value after evaluate every position so the program could choose a different line when there are many equally good possibilities.
@Baudsurfer: Improve it a little bit and you will get more thumbs. ;]
Quote:
BootChess is still smaller
I never claimed otherwise
Quote:
So...Do I get your thumb now britelite :) ?
No
Not proper chess, but great work nevertheless.
@ham, yes, you would need to push and pop a lot ;) i think that's still better than any evaluation based approach. Better, in the meaning of : more suited for a sizetro. Evaluation means formulas, or tables, or both, in the code (!) A sizetro has no space for that. But it can use 640K of memory. While normally, nobody in the current chess coding scene will route for the MC approach right now, it might make perfect sense for a sizetro.
I guess, we will never know unless somebody actually tries ;)
I guess, we will never know unless somebody actually tries ;)
Impressive as always Baudsurfer, this time probably even more. Thumbs up!
On the one hand, it's super small and thus very impressive. And with the goal of "super small" in mind, I think it doesn't need to focus on playing strong. Of course one could improve it at the cost of size, but then when do you stop?
But I agree with others that considering the bragging, it should at least implement the rules correctly, or otherwise it's not Chess.
But I agree with others that considering the bragging, it should at least implement the rules correctly, or otherwise it's not Chess.
It seems this prod has been slashdotted. This fate used to (temporarily) bring down sites back in the day. I wonder how Pouet will fare...
Also, obligatory thumb.
Also, obligatory thumb.
Hey, you made it on slashdot, thumbs up!
a chess game which can not play chess.
Since the binary file size seems to be what folks are going for here, why not just write the thing in 6502 assembly for the VIC-20 and C-64? You also might be able to save a few bytes by writing some self-modifying code and store a few variables in the boot code, which wouldn't be used once things fired up :D.
If wouldn't be as impressive as being able to run on almost any x86 box, but you'd still have the record (as it plays "chess").
If wouldn't be as impressive as being able to run on almost any x86 box, but you'd still have the record (as it plays "chess").
Tiny coding! <3
Quote:
Not really britelite for the article written by David Horne, the author of 1k ZX Chess states clearly "in just 1000 bytes of memory" (top right of article scan).
It was written for ZX81 which only HAS 1024 bytes of memory.
Therefore the code AND data storage together have to fit in 1K.
Cool :)
Beat the game pretty easily due to his king taking a rook that was protected by my queen. Technically an illegal move, but I suppose this game features suicidal kings
Beat the game pretty easily due to his king taking a rook that was protected by my queen. Technically an illegal move, but I suppose this game features suicidal kings
The BBC article has a link back to this thread :-)
Quote:
"[It] demonstrates why assembly language is still the language of choice to excel [at] in programming," he said.
hahahaha
I'm not sure which is more impressive, the code in this or getting the bbc to link to pouet :D
cute size code endeavour but the whole world record press announcement thing feels a bit ridiculous.
Thumb up for the world press announcement
Fantastic achievement. Wish it would run on 8086 (uses pusha/popa), but that is a minor quibble. Major thumbs up.
Great tribute to the ZX era, amazing challenge.
Bravo Baud!
Bravo Baud!
Cool stuff!!!!
What ps said. Cool but enough sizecoding already, we want Rush Hour 3.
excellent world press announcement! it's now in the papers that you're in RSI so it must be true!
What Serpent said.
Note that the "1k RAM" of the ZX81 also contains video memory, system variables and stack and BASIC boot loader. That is, 1024 bytes is the grand total of actual code, internal data, stack, DFILE and system stuff. This means that the "1k-Chess" is way below 1024 bytes.
This noteworthy "512 byte implementation" (actually 510 because its final 55/AA signature) uses external system variables, external data (note the "brd" equ), external stack, external video memory, and even 80186 instructions and EGA bios.
This noteworthy "512 byte implementation" (actually 510 because its final 55/AA signature) uses external system variables, external data (note the "brd" equ), external stack, external video memory, and even 80186 instructions and EGA bios.
Congrats on making the headlines, but as others have commented, this does not implement the rules of the game correctly.
Castling is permissible if and only if all of the following conditions hold (Schiller 2001:19):
The king and the chosen rook are on the player's first rank.[3]
Neither the king nor the chosen rook have previously moved.
There are no pieces between the king and the chosen rook.
The king is not currently in check.
The king does not pass through a square that is attacked by an enemy piece.[4]
The king does not end up in check. (True of any legal move.)
http://en.wikipedia.org/wiki/Castling
A pawn on its fifth rank may capture an enemy pawn on an adjacent file that has moved two squares in a single move, as if the pawn had moved only one square. The conditions are:
the capturing pawn must be on its fifth rank;
the captured pawn must be on an adjacent file and must have just moved two squares in a single move (i.e. a double-step move);
the capture can only be made on the move immediately after the opposing pawn makes the double-step move; otherwise the right to capture it en passant is lost.
http://en.wikipedia.org/wiki/En_passant
Castling is permissible if and only if all of the following conditions hold (Schiller 2001:19):
The king and the chosen rook are on the player's first rank.[3]
Neither the king nor the chosen rook have previously moved.
There are no pieces between the king and the chosen rook.
The king is not currently in check.
The king does not pass through a square that is attacked by an enemy piece.[4]
The king does not end up in check. (True of any legal move.)
http://en.wikipedia.org/wiki/Castling
A pawn on its fifth rank may capture an enemy pawn on an adjacent file that has moved two squares in a single move, as if the pawn had moved only one square. The conditions are:
the capturing pawn must be on its fifth rank;
the captured pawn must be on an adjacent file and must have just moved two squares in a single move (i.e. a double-step move);
the capture can only be made on the move immediately after the opposing pawn makes the double-step move; otherwise the right to capture it en passant is lost.
http://en.wikipedia.org/wiki/En_passant
Ok, so the Z80 has way less instruction flexibility as the 80x86. There are very limited pointer indexing abilities and less registers. Also no direct memory writes are possible, eg.
I'm not saying this ain't cool, but it's hardly comparative.
Code:
. I gotta wonder how big your game would be if you wrote it in Z80 assembler. THAT would be the true test. This is hardly a massive victory until you've done that. mov byte ptr [bx],0x34
I'm not saying this ain't cool, but it's hardly comparative.
new pouet record for comments/popularity ratio :D
@Sense, even best prod of all time if you go back <=283 days ^^
https://www.pouet.net/toplist.php?type=&platform=&days=283&limit=10
The hype is a bit unreal though :D
http://www.spiegel.de/netzwelt/games/bootchess-kleinstes-schachspiel-der-welt-programmiert-a-1015600.html
https://www.pouet.net/toplist.php?type=&platform=&days=283&limit=10
The hype is a bit unreal though :D
http://www.spiegel.de/netzwelt/games/bootchess-kleinstes-schachspiel-der-welt-programmiert-a-1015600.html
hahaha, "'BootChess'-Screenshot von Red Star Inc." @ spiegel.de
stomachcontents: In an other hand it also mean that there's no world record if it's not coded on a ZX81 with 1Ko of RAM because it's not comparable... Well I think this is the new benchmark. "Beat dis!" :))
Amazing hype :P
Amazing hype :P
Just goes to show how you can easily generate press by hitting the right media buttons. Every news site needs a dozen stories per day and things come and go very quickly. If you wanted to generate even more attention you could try making a Super Mario Bros. clone in 1k or a Call of Duty clone in 4k. Or maybe someone should link them to the best 256 byte tetris we have so far, but then again, that's maybe too mundane, as nobody can claim to have bested some dubious 30+ year record. :)
Don't get me wrong: This program is pretty cool and there's a lot of work put into it, but all the shortcomings, bugs, begging people for thumbs and the apples to oranges comparisons regarding size and features make this an unlikely prod for me to like and endorse. It's also visually not the best solution. By adding spaces, it would look much more comprehensible and less crammed, etc.
Don't get me wrong: This program is pretty cool and there's a lot of work put into it, but all the shortcomings, bugs, begging people for thumbs and the apples to oranges comparisons regarding size and features make this an unlikely prod for me to like and endorse. It's also visually not the best solution. By adding spaces, it would look much more comprehensible and less crammed, etc.
sensenstahl: I think this one takes the cake in historical context at least :)
About the prod itself, I'm too conflicted to make up my mind... grats anyway.
About the prod itself, I'm too conflicted to make up my mind... grats anyway.
Nein, wirklich nicht.
I vote LSL. This is subpar x86 asm implementing chess in a broken and highly unattractive way.
Awesomeness!
Chess is boring, but thumb for hype.
Yes! Nice work! for you and for scene politicans and fault-finders. Jealousy goes with glory.
Check mate! We have a NEW WORLD RECORD at 481 bytes.
And voilà. Oscar Toledo, author of many tiny chess programs, including the JS1k chess, made one similar to BootChess, in 481 bytes that he called AtomChess.
Your turn ;)
And voilà. Oscar Toledo, author of many tiny chess programs, including the JS1k chess, made one similar to BootChess, in 481 bytes that he called AtomChess.
Your turn ;)
@p01, in Toledos version you can directly capture their king on first move -> 1.d1e8 and over ^^ You might notice that Toledos version does play on still though :D He also just omitted board coordinates (that alone should save at least 5 bytes). If not for these flaws, it seems to play slightly stronger. But not checking moves for legality and playing on? I don't like where this is going ...
"playing on" ... without king i mean ;)
yeah.. thumbing down faulty chess programs sucks. seems legit.
I want to state clearly that I don't borrowed code from your chess program.
I would be ashamed of doing that. Anyone can verify it and compare sources side by side. You should be more careful before assuring that.
This is my original implementation based on Toledo Nanochess core plus my Picochess simplifications changed to a 0x88 implementation in order to use page-size optimizations.
The core searchs at 3-ply depth exploration and doesn't make illegal movements.
I would be ashamed of doing that. Anyone can verify it and compare sources side by side. You should be more careful before assuring that.
This is my original implementation based on Toledo Nanochess core plus my Picochess simplifications changed to a 0x88 implementation in order to use page-size optimizations.
The core searchs at 3-ply depth exploration and doesn't make illegal movements.
i'm more a checkers person, me
Baudsurfer: It seems that AtomChess do not check for legal moves at input so you can type H7H5 (moving a black piece instead of one of your white pieces) and the program then move another black piece (g7 pawn in your example). Notice that even if this lack of legallity test (of the rival moves) is a bad thing it is still better that a program that does not care of place his king in check (something that is illegal in chess!). So AtomChess can play an entirely legal game of chess (limited because it does not have castling, en passant captures, promotions, etc... but still legal inside this set of limitations) but your program cannot because it will play illegal moves the moment it allows his king to move into a square that is controlled by an enemy piece.
The code snipets that you show us are not relevant. They are data related to the initial placement of pieces, relative values and offsets for the move generator algorithm. Not sure of that you pretend to prove with that.
nanochess: Kudos to you! Your program plays very much interesting chess than BootChess (it has even randomness to spice the game!). It is convenient that your program plays black and Bootchess white. We can confront them. ;]
The code snipets that you show us are not relevant. They are data related to the initial placement of pieces, relative values and offsets for the move generator algorithm. Not sure of that you pretend to prove with that.
nanochess: Kudos to you! Your program plays very much interesting chess than BootChess (it has even randomness to spice the game!). It is convenient that your program plays black and Bootchess white. We can confront them. ;]
Now do Go.
@ham
... i just DID ^^
Game Notation
1. e4 g6 2. Ne2 g5 3. Nbc3 c6 4. h3 c5 5. Rh2 Bg7 6. g3 h5 7. Bg2 h4 8.
gxh4 gxh4 9. Bf3 c4 10. Ng3 hxg3 11. fxg3 Be5 12. Kf2 Bd4+
Download as PGN
"Bootchess" wants to move Qe2 here (illegal). I would count that as win for black. "Nanochess" in response does a "nullmove" :D In the final position, Nanochess has a knight for a pawn, so it's clearly better. I don't know if i have the patience to play a whole tourney ^^
... i just DID ^^
Game Notation
1. e4 g6 2. Ne2 g5 3. Nbc3 c6 4. h3 c5 5. Rh2 Bg7 6. g3 h5 7. Bg2 h4 8.
gxh4 gxh4 9. Bf3 c4 10. Ng3 hxg3 11. fxg3 Be5 12. Kf2 Bd4+
Download as PGN
"Bootchess" wants to move Qe2 here (illegal). I would count that as win for black. "Nanochess" in response does a "nullmove" :D In the final position, Nanochess has a knight for a pawn, so it's clearly better. I don't know if i have the patience to play a whole tourney ^^
Baudsurfer: You have to understand 2 things:
1. I don't really care about this "world record".
2. Oscar Toledo has been writing tiny chess programs for yeaaaars and knows what he's doing. Surely he doesn't need you, and we don't need your nasty insinuations.
Discussion over.
1. I don't really care about this "world record".
2. Oscar Toledo has been writing tiny chess programs for yeaaaars and knows what he's doing. Surely he doesn't need you, and we don't need your nasty insinuations.
Discussion over.
Why does it not support castling or en passant capture?
These are not "features" of a chess program, like a pretty UI, or the ability to undo moves.
"The en passant capture rule was added in the 15th century when the rule that gave pawns an initial double-step move was introduced."
These are not "features" of a chess program, like a pretty UI, or the ability to undo moves.
"The en passant capture rule was added in the 15th century when the rule that gave pawns an initial double-step move was introduced."
Thumb down for ego and horrible unfounded accusations that others are ripping your code.
This thread is featured on many high profile sites, and these petty arguments are doing nothing to help show the demoscene in a good light.
Also, if (as you told the BBC) "[you] hoped this achievement would now inspire other programmers to get involved in the sizecoding scene" then why are you now discrediting others that are doing exactly that?
This thread is featured on many high profile sites, and these petty arguments are doing nothing to help show the demoscene in a good light.
Also, if (as you told the BBC) "[you] hoped this achievement would now inspire other programmers to get involved in the sizecoding scene" then why are you now discrediting others that are doing exactly that?
pseudo chess.
Quote:
Thumb down for ego and horrible unfounded accusations that others are ripping your code.
This thread is featured on many high profile sites, and these petty arguments are doing nothing to help show the demoscene in a good light.
Also, if (as you told the BBC) "[you] hoped this achievement would now inspire other programmers to get involved in the sizecoding scene" then why are you now discrediting others that are doing exactly that?
Quote:
Quote:Thumb down for ego and horrible unfounded accusations that others are ripping your code.
This thread is featured on many high profile sites, and these petty arguments are doing nothing to help show the demoscene in a good light.
Also, if (as you told the BBC) "[you] hoped this achievement would now inspire other programmers to get involved in the sizecoding scene" then why are you now discrediting others that are doing exactly that?
sizecoding != demoscene.
also the new contents and writings of this site are at least disgusting, i feel sorry that a legendary group's name is being exploited like this and has fallen prey to a person with such a childish behavior...
Quote:
nanochess: Kudos to you! Your program plays very much interesting chess than BootChess (it has even randomness to spice the game!). It is convenient that your program plays black and Bootchess white. We can confront them. ;]
@ham: Thanks. It would be interesting to see it. Edit: just I've seen the match ran by HellMood. :)
Quote:
"Bootchess" wants to move Qe2 here (illegal). I would count that as win for black. "Nanochess" in response does a "nullmove" :D In the final position, Nanochess has a knight for a pawn, so it's clearly better. I don't know if i have the patience to play a whole tourney ^^
@HellMood: wow! that's cool :)
Quote:
Nevertheless if I one insists on removing rank and file indexes BootChess becomes only 468 bytes (pic). The download archive and the .nfo were both updated with binaries and sourcode to reflect this added "feature" enabling 468 bytes.
@baudsurfer: With the extra space you can now solve the bug in Bootchess where it puts its own king in check, otherwise is pointless.
It will be interesting to see if you're able to fit it in less than 481 bytes.
Quote:
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
Using that license and then complaining that people do what it allows... well...
You could have used a license that requires people to give credit if you wanted so. There are several of those...
Just to make that clear : in the above game, i let the 486 byte "Bootchess" play with white against the 481 byte "Atomchess" with black (not Nanochess) ;)
Since I suck at chess I'm in no position to nitpick on anything.
Thumb for the effort, and all that resulted from it.
As a long-time chessplayer; can we not ditch the gui, and that you guys start competing for the worlds smallest chess _engine_ ? And use normal chess annotations for input/output?
Perhaps this frees up the needed bytes to implement both a correct and stronger chess opponent.
As a long-time chessplayer; can we not ditch the gui, and that you guys start competing for the worlds smallest chess _engine_ ? And use normal chess annotations for input/output?
Perhaps this frees up the needed bytes to implement both a correct and stronger chess opponent.
@wietze, i totally agree. As the war for the smallest formally correct chess entity is now over, they (we) should focus on a complete implementation. I wouldn't even mind to play blind ;)
Nice. :)
I'd rather see legal, complete, and competent chess in 1k than broken chess in 512b. "Exceptions" like castling and en passant are what make it interesting to implement -- skipping out on them is no fun!
I think sizecoding is a subset of demoscene, but so is aesthetics, and this prod feels very unaesthetic to me.
Respect the effort, but ultimately leaves me wanting more!
I think sizecoding is a subset of demoscene, but so is aesthetics, and this prod feels very unaesthetic to me.
Respect the effort, but ultimately leaves me wanting more!
strange thread....much hate
When does a chess computer cease to be a chess computer?
How many rules can you strip out?
How many rules can you strip out?
Some improvements based on this entry, done by some chess programmer: http://www.nanochess.org/chess6.html
Good small chess program! It's fun to play!
thumbdown for unfounded accusations of code stealing
Should I thumb this down for releasing an unfinished product (because of allowing illegal moves)?
This is really cool
@baudsurfer so now your program only runs from a COM file.
Toledo Atomchess is now 446 bytes ;) and still boots from a floppy disk. http://nanochess.org/chess6.html
All four versions included in the ZIP file if anyone wants to see the process of optimization.
Toledo Atomchess is now 446 bytes ;) and still boots from a floppy disk. http://nanochess.org/chess6.html
All four versions included in the ZIP file if anyone wants to see the process of optimization.
Broken/incomplete "chess" and accusing others of stealing your code without any proof and the whole ego trip here deserves more than one thumb down.
Stay classy.
You clearly have got the skills to pay the bills, and should better put money where mouth is.
You clearly have got the skills to pay the bills, and should better put money where mouth is.
no
yeah...
Hahaha :D I think I'll just thumb this down because of obvious reasons.
Quote:
chess programming in assembly
So now you even claim to be the first person to have programmed chess in Assembly?
Quote:
you will notice similarities in Toledo's code that were original published in Bootchess : the xlatb displacement part in whole and other parts
The only similarity is that they both use a LUT of offsets for valid moves - but that's because that's the trivial way of doing it, and the way it's approached is different: Bootchess never had an xlatb displacement (looking at BootChess_v01_487b.asm vs http://web.archive.org/web/20150202101559/http://nanochess.org/chess6.html), it uses memory offsets, and the logic around that particular lookup is very different - just look at the pawn moves, which Nanochess does from code instead of lookups, for example. You're dismantling your own argument in front of people who can actually comprehend ASM code, and anyone who can actually look and read what you told them to look and read will now never believe you.
Quote:
@qKkumba : I don't answer to your pompous emails anymore because the trouble with a mediocre virus writer like yourself (https://falsevxers.wordpress.com/2013/07/15/the-double-life-of-peter-ferrie-roy-g- biv-qkumba/) is thinking they are a 9.5/10 in asm while being a 7 and envious of others.
So you just took someone who (according to the credits) helped you, and now try to turn it into character assassination based on a random unsourced blogpost you googled up?
Quote:
before Bootchess was released, there was no trace whatsoever of either 1) assembly or 2) chess programming in assembly
1979 called..
Heck, Video Chess even implements castling and en passant correctly
drama
Wow, just wow. Upgrading my thumb.
Good at asm. Failing at human relations.
Quote:
before Bootchess was released, there was no trace whatsoever of either 1) assembly or 2) chess programming in assembly
Of course not, you are the first person in the world who coded a chess game in assembly. Nobody, except you of course, has been able to code a chess game in assembly. You are out of this world!
Quote:
@Stingray : also I dislike you very much as I hate weasels.
Fine, for me hate is just a four letter word.
Thanks for the entertainment.
Smells like "social" media fueled mobbing.
Let's compare who downvoted this, but didn't upvote megapole.
<grabs popcorn>
Let's compare who downvoted this, but didn't upvote megapole.
<grabs popcorn>
Hold on the pitchforks, Baudsurfer was talking specifically about Oscar Toledo.
You may grab your pitchforks again now.
You may grab your pitchforks again now.
A game that isn't chess and doesn't boot.
This is getting ridiculous
soundtrack vote
While Baud tends to exaggerate a bit, Mr. Toledo also isn't free from arrogance ;) I really can't decide or understand when a chess game is "broken" (even 1K ZX chess seems to miss some rules), so it's still a nice production for its size. And thanks for the drama - the scene needs it.
Quote:
(c)2015 WTFPL v2 license.
Quote:
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
... and then complain that people use the license as intended? If you want credit, use a license that says so!
Kudos to Baudsurfer for gaining such a big popularity (=number of views)!
Quote:
soundtrack vote
HAHAHAHAHAA!!!!!!!!!!!!!!!!
Toledo Atomchess in 399 bytes (COM file), 408 if you want it bootable https://github.com/nanochess/Toledo-Atomchess, now in nasm syntax, optimization help from HellMood and qkumba.
Never even try to understand how to code chess playing algorithm but always think that it's a type rocket science.
Quote:
Toledo Atomchess in 399 bytes (COM file), 408 if you want it bootable
Actually, now it's down to 383 bytes (COM) or 392 bytes (bootable). Neat!
ZX81 Chess was better than this on every way.
Maybe a little late, but here I go...
Last year, almost by accident, I started a new chapter of the mini chess programs story. I was trying to learn some Z80 assembly and ended up writing a chess game for ZX Spectrum.
Following David Horne's ZX81 1K Chess, Olivier Poudade's BootChess, Óscar Toledo Nanochess/Atomchess and others, I have just finished my game, likely to be the smallest ever, called ChesSkelet. In its tiniest version just takes 379 bytes. Hey, I´m sure it still has some bugs , but I also hope to find some new way to shrink it a bit.
For more details or to play online, have a look here. On the website, you can find 2 other versions with some additional features.
http://chesskelet.x10host.com/
If you would like to get in touch with me, write me at:
alex(dot)garcia(dot)b(at)gmail(dot)com
See you!
Alex
Last year, almost by accident, I started a new chapter of the mini chess programs story. I was trying to learn some Z80 assembly and ended up writing a chess game for ZX Spectrum.
Following David Horne's ZX81 1K Chess, Olivier Poudade's BootChess, Óscar Toledo Nanochess/Atomchess and others, I have just finished my game, likely to be the smallest ever, called ChesSkelet. In its tiniest version just takes 379 bytes. Hey, I´m sure it still has some bugs , but I also hope to find some new way to shrink it a bit.
For more details or to play online, have a look here. On the website, you can find 2 other versions with some additional features.
http://chesskelet.x10host.com/
If you would like to get in touch with me, write me at:
alex(dot)garcia(dot)b(at)gmail(dot)com
See you!
Alex
Lovely work!
I just came across a Timex Sinclair 1000 for $10, pulled up 1k ZX Chess and that brought me here.
I just came across a Timex Sinclair 1000 for $10, pulled up 1k ZX Chess and that brought me here.
@reeagbo It's never too late to break a world record!
I just released LeanChess, which is 328 bytes long - 24 bytes smaller than ChesSkelet and less than half the size of ZX1K.
Best,
Dmitry
I just released LeanChess, which is 328 bytes long - 24 bytes smaller than ChesSkelet and less than half the size of ZX1K.
Best,
Dmitry
Delighted with playing chess of this bytecode size! But, it was hardly worth expecting a serious game from a program that fits into the boot sector of a floppy disk.
Always starts: King's Pawn Opening, respond to this move: Alekhine's Defence.
Then the chess game continues like this:
The program does not respond to a check, and if you knock down the king, it throws it into DOS.
He generally reacts to castling in a curious way:
Thanks a lot and best regards!
Always starts: King's Pawn Opening, respond to this move: Alekhine's Defence.
Then the chess game continues like this:
The program does not respond to a check, and if you knock down the king, it throws it into DOS.
He generally reacts to castling in a curious way:
Thanks a lot and best regards!
submit changes
if this prod is a fake, some info is false or the download link is broken,
do not post about it in the comments, it will get lost.
instead, click here !
Smaller than previous 33-year old record 1024 bytes 1K ZX Chess.
Cam video link : https://www.youtube.com/watch?v=mlLgOLmQg_g