Slants and Wraps

It was a frustrating weekend filled with regressions and complex problems to solve…

The travel module is by far the oldest code in the game. Iterations of it go back all the way to 2005. As a result, some things that DID work long ago weren’t working now.

Boats, for example, were completely broken. At some point I completely removed my original code, so I had to re-write it from scratch.

A big part of that was that I decided not to have your boat “carried” by moving water. The main issue is that it breaks the turn-based nature of the rest of the game, and it also requires checking for moving water tiles on an interrupt.

Light was another broken part, I found every single cave I went into was fully lit. I investigated and discovered I had never re-integrated light properly after changing the LOS algorithm. This lead to a two-day maddening exercise where a few simple code changes BROKE the LOS algorithm and I had to chase down why.

But the worst thing this weekend was slants and wraps.

I designed the map engine to allow me to project maps not only in squares or rectangles, but also as rhomboids, a slanted rectangle. This means making sure that when both you and mobs move, they move with correction to the X axis in relation to the Y to account for the slant. It also affects placement of mobs in the map window. The short explanation here is, you NEED your  Y differential because you need to calculate what actual window thresholds are per line. It took a lot of experimentation and code cycling to get this right.

The other thing maps can do is wrap. Normal map mode just extends the last character on the edges to infinity; stepping off the map forces a reload to a new map. Wrapped mode means it projects to the other edge, and creates a closed loop. Projecting the map isn’t too bad, but mob placement once again gets complex; you have to account for the fact that a mob and you could be at opposite ends and thus extremely close, not far away.

On the plus side, transactions are working well. I got the gambling module working great, and buying and selling works too.

Next on the list, I have to fix up some other services (healing, identifying) and make sure the new inventory system (removing and using equipment and items) works as intended.

This entry was posted in Blog, Coding, CRPG, Design, Screenshots, TI-99/4a. Bookmark the permalink.

3 Responses to Slants and Wraps

  1. Realms of Quest says:

    You put a lot of emphasis on map features, for certain.

    Videos of my upcoming CRPG, Realms of Quest V for the Commodore VIC-20:

    Part One: Party Creation

    Part Two: Gameplay

    Part Three: Viewing Player Characters

    • adamantyr says:

      Very impressive! 😀

      The music is a bit loud… Although I’m seething with jealousy hearing all those lovely base notes. (The TI’s sound chip is naturally two octaves higher than normal because of timing issues.)

      The portraits are very well done too. How did you go about converting them to the lower resolution on the VIC-20? Part of me is like “Hmm… I COULD add portraits potentially…”

      • Realms of Quest says:

        Thank you!

        The music was done by somebody else and I really like the result. The VIC sound chip has always been “loud” or “garish” without any sense nuance (but I think that’s part of it’s charm), so the best way to offset this is to just lower the volume until it sounds just right.

        As for the graphics, I do go through a few steps. Now, I’m not the most proficient computer graphics artist, but I’m familiar with GIMP. What I do is find an image that I’d like to use, then crop it, resize it to 44*88 pixels, do some adjustments with brightness and contrast. After that, I export it to grayscale RAW format and then use a VIC-20 tool to read the file to convert it to MG format (which was created by a VIC-20 enthusiast.) This conversion process does dither the resultant image, so I have to take that into account.

        The creator of the MG file format also wrote the code for the game to increase the number of effective colors “on the fly” by manipulating display registers while the raster beam outputs to the display. With just the right amount of contrast in the image I export in GIMP, I can come up with some very nice color combinations.

        It’s really a lot of trial and error — it takes me sometimes several attempts to finally get a resultant image that looks good. I might even go through another review of all my portrait graphic elements to see where improvements can be made.

Leave a Reply

Your email address will not be published. Required fields are marked *