Review of new Pac-Man game also reviews the game review site it's posted on


#1

Originally published at: http://boingboing.net/2017/04/10/review-of-new-pac-man-game-als.html


#2

Review of new Pac-Man game also reviews the game review site it’s posted on

I’m confused.


#3

Eat the red pill - it’s a power-up, and avoid the ghosts (editors).


#4

Nice! Disgruntlement is always a good creative energy. But this could also have been a good location for a hidden acrostic:

Bring back Pacman! A
revolutionary idea in this
age of nostalgia. But a
small gimmick or novelty
has been applied… and it’s a
strange one.
under the gameplay, the
challenge in Pacman was to
keep racking up the levels…

etc.


#5
The idea of Pac-Man 256 is derived from what happens in the original Pac-Man when you clear 256 levels; on level 257, the game becomes a garbled mess that becomes unplayable.

Nitpick: the killscreen is level 256. Because an 8-bit unsigned integer can have a value from 0 (binary 00000000) to 255 (binary 11111111).

The phenomenon of generic-looking game review mills seems tied to Metacritic, the game review aggregation site.

Maybe, but that doesn’t seem to be the case for this specific site, given that its owners appear to have intentionally delisted it from Metacritic, as you quoted:

Speaking of ghosts, did you know that Brash Games deliberately ghosted themselves from Metacritic, GameRankings, and OpenCritic (marking themselves as “out of business on Meta and GR, which is an outrageous and egregious lie – it’s here right now) to avoid having any sort of public record of reviews available which would have attributed work to the proper authors? It’s true!

To this:

Don't work but for money or love, kids.

Truer words.

What are the odds that Ryan said his writers were being paid in “exposure”? And then, of course, he yanked the exposure away.

At least he appears to have gone and Streisanded himself on this one. Whatever Brash Games was worth to him, this may have destroyed its value; he may have to change its name if he wants to keep the scam going.

Fortunately for him (and unfortunately for his contributors and visitors), the name “Paul Ryan” comes with its own defenses against people finding dirt on him on Google.


#6

That kinda relies on fixed line widths, though. It’s a classic trick in print, but not so good for a website.


#7

It’s undeniable that “working for exposure” is a terrible deal. But nonetheless, if the choice comes down to posting your review on a blog that no one is ever likely to visit, and having your review hosted on a vaguely-prominent website, there’s only one option that makes sense.

But even then, writing uncredited is going much too far.


#8

As someone currently trying to escape a lousy job, I applaud this guy.


#9

A quick rummage off my shelf shows nothing about his approach in Strunk & White, which is astonishing as that article is the very element of style.


#10

i had to look this up, because, i figured, if there was a level display, it’d number the first level as 1.

turns out there is no level display, and the internal counter is indeed at 0 when you play the 1st level.

but, apparently what goes wrong is not really the level counter per se, it’s the fruit display. fruits get calculated with level + 1 ( which must be further tweaked somehow to dole the new fruits out every few levels ), and then fruits are drawn by subtracting 1 till the counter hits zero.

so, like you say: when starting level 255 ( the 256th level played ) the fruit count gets calculated ( 255 + 1 = 0 ), it draws a fruit, subtracts 1 ( so 0 - 1 wraps back to 255 ), then keeps drawing fruits till it hits 0 again ( that’s a lot of fruit! ): overwriting the memory used for the rest of the level.

nobody has ever been able to get through to the 257th level because the dots you need have been replaced by gibberish symbols, invisible walls, and the like.


#11

Sort of like…


#12

I don’t get how that works.

So, level 254 draws 255 fruit.

And level 255 draws 256 fruit.

And somehow that extra one fruit overwrites the memory used for the rest of the level?

I’m missing something here.


#13

That’s some never-next level shit right there!


#14

In 8 bit integer math 255+1 = 0. At level 255 the program assumes it’s writing the fruit to a safe place in memory, but due to the integer overflow, when it increments the level and sets the loop counter, it’s set to 0. The routine for drawing the fruit doesn’t handle this state with a level 255 but loop count 0, which is unhanded/unexpected, so it winds up writing 255 fruits 255 times and in the process over-writes RAM that’s reserved for other game elements.

I’m not sure if that’s clear. It’s hard to explain in simple terms. There’s an account here that lists the Z80 assembly and mentions which registers were involved, which may or may not help, depending:

http://www.donhodges.com/how_high_can_you_get2.htm


#15

part of the reward of clearing levels is that you get a new kind of bonus fruit that can bounce around. there are only 8 kinds of fruit, and the game draws all of the fruit you might see bouncing around your current level. ( only the first few are actual fruit, eventually there’s a key and bell. )

level + 1 helps determine the fruit counter, which is used to determine the fruits you might get. ( nobody seems to document what the actual formula is. by the 21st level, you’ve already unlocked the 8th fruit. so it probably does some division or bit manipulation after the addition. )

to draw the possible fruits, the game draws the first fruit, subtracts 1 from its fruit counter, checks that the counter isn’t zero, draws the next fruit, and so on down till the counter is zero. where it stops drawing.

since you start at level 0, the fruit counter is initially 1. you get one fruit, the counter hits zero, and no more fruit.

the corruption happens at the 256th level, when the level counter is 255. 255 + 1 is used to compute the fruit counter, but like @thadboyd says, you can’t store that in a byte. there’s only room for 0…255. so 255+1 becomes 0.

it draws a fruit, subtracts 1, but ( for the same bit math reason ) 0-1 equals 255. 255 isn’t zero, so it draws another fruit, subtracts 1, 254 isn’t zero, so it draws another fruit, …

“drawing” for old games like this, is really just writing some value to memory. the programmer expected at most 8 fruits to draw, and then stop. the very next spot in memory after the 8th fruit is (probably) some other part of the map. since it winds up drawing some 248 more fruits than expected, it writes a lot of bad (map) data.


#16

Meh. I’d still put it on my own site. If I want to be known for game reviews (or whatever) it seems more sensible to cultivate that instead of serving a parasite.

And aren’t there plenty of other sites to write for anyway?


#17

Or make it an acrostic MAZE


#18

James May was famously fired from his job as editor of Autocar magazine after pulling an acrostic stunt by arranging all of the drop caps in each article to spell out a very special message:

“So you think it’s really good, yeah? You should try making the bloody thing up. It’s a real pain in the arse.”

He was subsequently fired when this was discovered by eagle eyed readers.


#19

Okay, that makes more sense. So, it ends up drawing ~65,000 fruits, not ~256. Yeah, I can see that overwriting something important.


#20

I was a little off on the number there (@gatto explained that part better), but it not only draws more than the expected number of fruits but also winds up reading out of weird regions while it’s trying to draw them due to the bug, thus creating weird crap all over the screen. But the overflow in the counter that isn’t handled is the root bug, and that bug mangles the rendering in the subroutine that renders the fruit (in how many times the loop’s iterated over and wandering along into bad parts of memory to load the images from).