Jump to content
Jet Set Willy & Manic Miner Community

Pokes for Fixing the Cell Graphics Bug in JSW


IRF

Recommended Posts

Taking Room 16 (Quirkafleeg), the instance flagged up relates to the fact that the bottom pixel-row of the Fire cells is entirely filled in (value #FF), which causes a match with the (default) value of #FF for the conveyor attribute in that room.  But there is no conveyor in Quirkafleeg, and if Matthew had put one in, he would almost certainly have ascribed a different attribute to it (notwithstanding the solid white block in Conservatory Roof, which must have been an omission on Matthew's part).

 

So it is clearly necessary to do some manual, post-SPECSAISIE analysis of the generated tables, in order to extract any 'genuine' instances of the CGB.

Edited by IRF
Link to comment
Share on other sites

Danny, have you only spotted the instances where the initials 'BGB' appear in the rightmost column of the tables (the 'overspill' column, that is empty in most cases)?

 

There is an instance in Room 2 ('Under the MegaTree'), which is embedded in the middle of a table (and a regular 'Offset byte' number is shunted along into the right-hand column).  The fourth pixel-row of the (unused) ramp tiles was apparently assigned a value of #FF (a solid line), which is rather peculiar given that there is no ramp in that room, and all the other ramp pixel-rows are blank (#00).  That is then causing a match with the attribute byte for the (also unused) conveyor in that room.

 

So (i) the 'BGB' flag must appear immediately after the byte which causes the erroneous match;

(ii) there are probably more instances than you indicated at the top of your post #30 in this thread (many of which may be the default #FF 'unused attribute' value matching with a fully-infilled pixel-row);

(iii) further investigation should (hopefully) confirm that all the previously-known instances of the CGB have been detected by SPECSAISIE after all!

Edited by IRF
Link to comment
Share on other sites

I've been going through the data.  As I highlighted above, there are lots of instances of an unused room element with attribute set to #FF (or -1 as it is referred to in the SPECSAISIE tables), which matches with a full-infilled pixel-row that is listed earlier in the room data.  Which is not a problem for unused room elements, of course.

 

Aside: This has prompted me to think of something - if any of the non-conveyor tiles in 'Conservatory Roof' had happened to have a fully filled-in pixel-row, then the Cell Graphics Bug would have caused the conveyor present in that room to have a pixel-pattern, even though Matthew never defined one!  Although since the conveyor attribute is set to #FF, this pixel pattern would only display itself when Willy is killed in that room, causing all the infilled pixels in the primary pixel-buffer instantaneously to flash in white-INK-on-black-PAPER!

 

Anyway, one non-#FF value that I have come across is in Room 18 ('On the Roof').  The ramp attribute byte is set to #07, and there is a graphic byte with that value in the Earth cell data (third pixel-row down).  However, the Cell Graphics Bug does not occur, because Water and Ramp cells share a common attribute in that room, and so the Water cell pixel pattern (which comes before Earth's definition in the data) takes precedence for the Water-Ramp combined cell-types.

Edited by IRF
Link to comment
Share on other sites

I've just come across the first of the previously-documented instances of the CGB: the conveyor in Room 24 ('West of Kitchen').

 

Interestingly enough, the conveyor attribute matches one of the Water cell graphic bytes - but even if it didn't, the buggy CPIR loop would have encountered a match with two of the Earth cell graphic bytes anyway, before it reached the proper conveyor attribute byte!

 

EDIT: A similar thing is true of the instance affecting the conveyor in 'Tool Shed'.

 

******

 

Room 29 'The Nightmare Room' - the previously-documented instance of CGB affecting the conveyor is present in the table - but that only occurs because the attribute byte for conveyor is located at the wrong Offset Byte within the room data!  Once the misaligned bytes are shunted into where we think are their correct locations, the Cell Graphics Bug stops occurring even without the CGB Bug-Fix in place!

 

Also in the Nightmare Room, as I spotted earlier, the Fire cells (which are unused but which have a defined pixel-pattern and non-#FF attribute) would be affected by the CGB if any were placed in the layout.

 

******

 

I've been through all the tables, and I'm now confident that there are no more* matches that would give rise to the Cell Graphics Bug, other than with a default #FF attribute byte for unused room elements.

 

* i.e. no more matches other than the conveyors documented in the SkoolKit disassembly, the recently discovered instance affecting the Fire cells in 'A Bit of Tree', and the 'theoretical instance' affecting the unused Fire cells in 'The Nightmare Room' (which has a defined attribute and graphic, even though it is unused).

 

Phew!

 

P.S.  I'd be happy to analyse similar tables for 'Manic Miner', if you have the time and inclination to put MM through the same SPECSAISIE analysis?

Edited by IRF
Link to comment
Share on other sites

Danny, have you only spotted the instances where the initials 'BGB' appear in the rightmost column of the tables (the 'overspill' column, that is empty in most cases)?

 

I'm not sure if "spotted" is the right word here, but yes, when I said "If I understand the output correctly, SPECSAISIE shows the Cell Graphics Bug (=Block Graphics Bug) occurs in rooms 16, 31, 33, 41, 47, 51, 52, 62 and 63", I was only referring to the rooms where SPECSAISIE prints the initials 'BGB'.

 

I could see there were others bits of information in some rooms which seemed abnormal (in relation to other rooms), but I didn't try to analyse them. But you've done a thorough job of it :).

Edited by jetsetdanny
Link to comment
Share on other sites

I'm not sure if "spotted" is the right word here, but yes, when I said "If I understand the output correctly, SPECSAISIE shows the Cell Graphics Bug (=Block Graphics Bug) occurs in rooms 16, 31, 33, 41, 47, 51, 52, 62 and 63", I was only referring to the rooms where SPECSAISIE prints the initials 'BGB'.

 

I could see there were others bits of information in some rooms which seemed abnormal (in relation to other rooms), but I didn't try to analyse them. But you've done a thorough job of it :).

 

The point I was making is that SPECSAISIE prints the initials 'BGB' for at least half of the rooms in JSW!  But you only appear to have spotted the ones that happen to sit in the right-hand columns of the tables ('jutting out' from the main tables, so to speak).

 

If you look again you will see there are 'BGB' entries scattered throughout the tables that you failed to spot the first time!  ;)

Edited by IRF
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.