I'll try to come back to this, I hate to miss your puzzles.
Comment has been collapsed.
As of the last update at least, correct completion and understanding of the very first step should immediately show you that you are on the right track. It often helps to relax and take a look at things from a different perspective.
Please don't mention the specifics here.
Comment has been collapsed.
Can I make these planes all land together in Windows? I don't currently have a Linux installation.
(And if so, will I need an unzip program? I realized on a previous puzzle that I don't have one.)
Comment has been collapsed.
Actually I can remove entry. And you can do whatever you like.
Also: Cybmaline? 'malina'? :)
Also2: removed entry
Also3: or we can interpret the title as something else and both enter.
Edit to Also3: won't work because suppose I win but won't have the game in my library and somebody will think I traded or gifted it. So better do something else
Comment has been collapsed.
"the giveaway link is hidden in plain sight, showing up in when you mask out every bit except bit 0 of the red part, that is, bit 5 of every pixel in the data"
What I did was attempt to mask out all the pixels which either had the entire red component equal to 0, and doing that gave me this: http://i.imgur.com/A7WGHhi.png
Then I thought I needed to do something with the remaining pixels and tried finding patterns in that noise. It never occured to me that "RED0" meant "bit 0 of R" :/
Comment has been collapsed.
You couldn't hide anything in the entire red component :) It's way too noticeable. Furthermore, the "Just a bit" message itself was red, so any image not using red at all would be extremely visible.
Even if I used bit 1 of any component and not 0th one, it would be immediately evident.
You were very close, still :)
Comment has been collapsed.
But the message wasn't red :D
http://i.imgur.com/ARfkXEa.png - this how I have it decoded.
I'm looking at my code, and the bit operations seem fine... Bleh, SG encoded the operators :/
var pixel1 = (((int)plane3byte & Convert.ToInt32("11000000", 2)) >> 0) |
(((int)plane2byte & Convert.ToInt32("11000000", 2)) >> 2) |
(((int)plane1byte & Convert.ToInt32("11000000", 2)) >> 4) |
(((int)plane0byte & Convert.ToInt32("11000000", 2)) >> 6);
var pixel2 = (((int)plane3byte & Convert.ToInt32("00110000", 2)) << 2) |
(((int)plane2byte & Convert.ToInt32("00110000", 2)) >> 0) |
(((int)plane1byte & Convert.ToInt32("00110000", 2)) >> 2) |
(((int)plane0byte & Convert.ToInt32("00110000", 2)) >> 4);
var pixel3 = (((int)plane3byte & Convert.ToInt32("00001100", 2)) << 4) |
(((int)plane2byte & Convert.ToInt32("00001100", 2)) << 2) |
(((int)plane1byte & Convert.ToInt32("00001100", 2)) >> 0) |
(((int)plane0byte & Convert.ToInt32("00001100", 2)) >> 2);
var pixel4 = (((int)plane3byte & Convert.ToInt32("00000011", 2)) << 6) |
(((int)plane2byte & Convert.ToInt32("00000011", 2)) << 4) |
(((int)plane1byte & Convert.ToInt32("00000011", 2)) << 2) |
(((int)plane0byte & Convert.ToInt32("00000011", 2)) >> 0);
var pixel1brush = new SolidBrush(Color.FromArgb(
((pixel1 & Convert.ToInt32("11100000", 2)) >> 5) * 32,
((pixel1 & Convert.ToInt32("00011100", 2)) >> 2) * 32,
(pixel1 & Convert.ToInt32("00000011", 2)) * 64
));
var pixel2brush = new SolidBrush(Color.FromArgb(
((pixel2 & Convert.ToInt32("11100000", 2)) >> 5) * 32,
((pixel2 & Convert.ToInt32("00011100", 2)) >> 2) * 32,
(pixel2 & Convert.ToInt32("00000011", 2)) * 64
));
var pixel3brush = new SolidBrush(Color.FromArgb(
((pixel3 & Convert.ToInt32("11100000", 2)) >> 5) * 32,
((pixel3 & Convert.ToInt32("00011100", 2)) >> 2) * 32,
(pixel3 & Convert.ToInt32("00000011", 2)) * 64
));
var pixel4brush = new SolidBrush(Color.FromArgb(
((pixel4 & Convert.ToInt32("11100000", 2)) >> 5) * 32,
((pixel4 & Convert.ToInt32("00011100", 2)) >> 2) * 32,
(pixel4 & Convert.ToInt32("00000011", 2)) * 64
));
``
Comment has been collapsed.
Hmm. In Mode X, you're supposed to take one byte from each plane sequentially, that's all. It means that you get plane0[0], plane1[0], plane2[0], plane3[0], plane0[1]... Each byte represents one pixel. Why did you shuffle them so? You could just write var pixel1 = plane0byte , if I understand your code correctly :)
Here, this is the excerpt of my code handling the image building part of the solver.
Comment has been collapsed.
No :) In planar 16-color VGA modes, each byte of every plane indeed held the data for several pixels -- not four though, but eight. Mode X, being a hack using changed scan rate for getting square pixels and planar composition for higher performance, took one byte for every pixel. I'd probably better send you to Abrash himself.
Comment has been collapsed.
Thank you for the puzzle Alamarjan, it was fun. I got practically the same image created by chour and posted in the giveaway but I made a mistake with the palette as I created a BMP header from IrfanView using a previous image and haven't replaced the palette despite I realized that could help. So I could read only the message "Just a bit" and wasted my time with Mode X documentation (one of these confused me initially as it has a wrong description of how the pixels are placed in the planes), shifting bitplanes and playing with a ripper tool. What a pity. ;)
Comment has been collapsed.
Oh, that's a shame. I'd very much like to see you on that giveaway page. I wish you luck with the next one :)
About Mode X, the best way you could go was to read the explanation of Michael Abrash himself. The whole Black Book (which I highly recommend to any coder here) is available online, for free, and here is the chapter you needed.
Comment has been collapsed.
156 Comments - Last post 6 minutes ago by NebraskaJones
395 Comments - Last post 45 minutes ago by wigglenose
39 Comments - Last post 1 hour ago by Foxhack
284 Comments - Last post 1 hour ago by Wok
8 Comments - Last post 5 hours ago by TheLimeyDragon
1,247 Comments - Last post 9 hours ago by WaxWorm
82 Comments - Last post 10 hours ago by GarlicToast
1,369 Comments - Last post 3 minutes ago by Tapsel
0 Comments - Created 18 minutes ago by AT1O
77 Comments - Last post 20 minutes ago by DarkCobra
2,827 Comments - Last post 28 minutes ago by ozo2003
778 Comments - Last post 29 minutes ago by Vampus
14 Comments - Last post 32 minutes ago by wiLLie22
4 Comments - Last post 40 minutes ago by Momo1991
Here as always.
The solution is here!
Comment has been collapsed.