The fact that Westen House is already a complete game - and that its assets are available via GitHub - is both a good thing and a bad thing for the purpose of conversion to another system.
On the one hand, it meant that I could extract the MSX graphical assets from GitHub easily enough, and use them as a template for the SAM remix. This, in theory, saves an awful lot of time and effort, in that I could just follow the sizes and shapes already present, and just add more colour to bring everything up to SAM Coupé MODE 4 quality.
On the other hand, it meant that I might end up constrained by the appearance of the MSX assets, and miss opportunities to take fuller advantage of MODE 4 on the SAM. The one thing I was intent on ensuring, for the SAM conversion, was that the basic scenery - the walls and floors - should no longer look like unfilled colour vector outlines over a black background. Beyond that, I was hoping it would be possible to vary the colour of the walls, floors, etc. to better differentiate all the rooms. While the specific construction of each location seems broadly unique in the MSX game, the same wall pattern is used throughout the house. While that might work with the original presentation, a little more variety would go a long way toward ensuring the best possible presentation on the SAM.
The first problem I hit upon is that it's not entirely clear how the MSX game draws its locations. Take the entrance hall for example:
The floor area is 224 pixels wide from corner to corner, while the isometric 'wood floor' asset is 64 x 32 pixels in size.
My initial assumption had been that the whole 64 x 32 pixel assed was repeated as often as required... but I quickly realised that made no sense and couldn't be the case after all. Tiles of that size would require all rooms to conform to the same size requirements, and they clearly don't. A floor only 224 pixels wide uses 3.5 tiles of 64 pixels wide. Plus, even trying to arrange tiles that way led to unwanted seams appearing throughout the floor.
My next thought was that each block of flooring in the assets was a 3x3 set of isometric tiles, but I quickly dismissed that idea, not least because if the way walls and doors interact with the floors, and because the floor textures are broken up into even numbered patterns - 8 wood panels wide, for example.
Then I realised that I could possibly ignore the fact that it appears to be isometric, and break each 64x32 pixel block into four 32x16 pixel chunks, with one additional 32x16 pixel chunk taken out of the middle, which can be repeated to fill out any floor area... But, equally, it could be eight 16x8 pixel chunks around the edges with either one 16x16 chunk or two 16x8 chunks repeating to fill out the floor area.
This last option would seem to tally with the walls, which are clearly built out of panels 16 pixels wide and up to 48 pixels tall, while the door frames are 32 pixels wide and up to 64 pixels tall, including the sections of floor attached to some of them. The crypt walls are different, though - the corners of the room are drawn in as normal, but the walls themselves are frequently represented by just a single 16 pixel wide section of brick pattern, which is placed part way between each corner. This may necessitate a different approach to the walls in the SAM version. Hopefully it won't mean the black background has to show through...A closer look look at the floors revealed that, in most cases, the outermost sections of the 64 x 32 pixel floor assets were each made up of two identical 16 x 8 pixel chunks and that, with the exception of the grass texture and the larger wood floor texture, the remainder of any floor could be built using either two 16 x 8 pixel chunks, one 16 x 16 chunk, or one 32 x 8 chunk. The grass texture repeats a single 16 x 8 pixel chunk, and I believe the larger wood floor texture is not actually used in the game... so that would very much simplify things.
However, it would also limit the kind of customisation I could do with the floor textures. My first wood floor, as shown in the mockup above, gave almost every board a unique pattern, and I'd done my level best to make the stone tile floors as varied as possible within the 64 x 32 pixel patterns of the original MSX assets. Chances are, that just won't be possible in the finished game, or it will make the code for drawing the rooms vastly more complicated... Either way, there's no great benefit in tweaking the floors any further till we have confirmation on precisely how the floors are drawn.
And then, going back to the doors, they're stored in some very odd ways in the assets. The visible doorways themselves are mostly stored in the file doors.png, but a strip from one side of each is stored separately on objects.png - presumably the foreground part that the player sprite has to move 'behind' as it passes through a doorway. The larger part of each doorway includes blank spaces to be filled with the missing frame part and the floor tiles, but each also has a section of floor attached:
This could, conceivably, become another limiting factor in the customisation of the floors... but, if my first round of mockups is anything to go by, it may not end up too bad. However, the inconsistency of the cutouts between the different door styles is another aspect that must also be influenced by how the floors are drawn... so, again, until we ascertain exactly how it's done, there's not much more I can do without the risk of it being a huge waste of time and effort.
By the looks of things, the doorways are simply overlaid on the floors, and then the missing section of door frame is added later - after the player sprite is drawn while it's close to the doorway.
It's at this point I start to see the appeal of keeping everything on a black background... It certainly simplifies things, but I'm hoping the improvements to the presentation will be worth any extra hassle experienced in making it work.
Comments
Post a Comment