WinterGrascph GSoC

Tuesday, 23 August 2016

And so it has come to this, all things must end. But it is nothing to be sad about for me, this has been a great addition to my experiences and I welcome the change for it has been something short of 3 and a half months that I've been working on DM. Not that I won't be working on it from now on, but I'm definitely taking a few days off, lest I come to dislike it for looking at the codebase for too long.

The pull request to merge the engine is due next week as it still doesn't compile with GCC (strangerke has been working on it relentlessly (think 127kbs of error log reduced to 9)). Relatedly, the code is not particularly compliant with the coding conventions at ScummVM (strangerke is working on it, I'll soon start feeling ashamed and will have no choice but to help him).

As for the future of this blog, it is possible that I will post updates for when something major gets incorporated into the engine (think support for other versions).

Almost forgot about the new stuff, if I remember correctly it's convenient loading/saving from the launcher and from the inventory. And also there are debugger commands like godmode, noclip, set pos/map and the aptly named, gimme, which spawns items. Entering the commands without arguments will output their usage, call 'help' for a list of them.

Gimme can be used like this: call 'listItems', if you are looking for something enter any part of it in caps like this 'listItems OF FEAR'. Once you found what you are looking for, call gimme with its name: 'gimme HORN OF FEAR'.

Setting the map is slightly broken. For best results, teleport to an adjacent map, then use pos to set your position next to some stairs and off you go. Avoid using noclip.

Friday, 12 August 2016

Yay! The color palette is FIXED once and for all! No more radioactive green snot on every object and champion and door and what not! The GUI looks fabulous with it's newfound colours, it's just so much more pleasant to click on it now.
Now, the original game uses copper to stretch those few colours the Amiga platform could offer at any given moment and given that ScummVM has no support for something like that (and why would it?) I shied away from even coming close to trying to fix it. Now as the end is nigh, it had to be fixed, and so it was! Phase one, double the palette and offset the pixel colours. Phase two ???. Phase three, profit!
Relatedly the engine is almost complete. What's missing is correcting some display functions, hunting down a few annoying bugs and making sure the game can be finished and then all will be well. The later, so I gather, is not yet achievable. The fluxcages spawned to trap Mr Chaos cannot be seen, because the function drawing them is missing, and that particular function happens to be in assembly (... ehh) and so I can't really test if anything is happening at all, gonna have to make it draw some dummy image.
As always, here's a nice GIF, basking in it glory:

Wednesday, 10 August 2016

Cursor got fixed, seems like googling Amiga hardware sprites is all it needed. Also found the bug with the spell symbols, a petty toUpper call in the text drawing method, dunno what is was doing there in the first place. Long story short, dungeon looks a lot nicer now, palette needs a fix and then it will truly look splendid (sans some scrabbled textures). Here, have nice GIFshot:

Friday, 5 August 2016

The title says it all. There are now sounds in the game, it is the first thing that worked on the first try, or so I hope. One can now indulge in the angry grunts the champions make when you bump them into the walls. Makes one wonder if they want to be there in the first place. Why would they follow an order to go headfirst into the wall?
Also, blitShrink function has been dusted and adjusted and thus the dungeon looks a lot nicer. It seems that after hours of searching for broken code, I realized that nothing is broken, but the original blitShrink method works a bit differently than what I tried to simulate it with. So it seems I can't avoid the assembly after all.

Friday, 29 July 2016

I'm really tired as I'm writing this, but I don't want to leave it for tomorrow. I wish I could tell you of all the new features, but there aren't really any. Most of my week was spent fixing bugs which made the game crash and burn. The engine is in a playable state, taken that the player can ignore the broken display, the missing sounds and no ending. Speaking of which, I really should take a look at the numerous display functions now, fixing them would make the game look a lot more alive.
Sorry for no screenshots this time, this blog post is turning out to be very short.

Friday, 22 July 2016

Another week has gone by. The end of the summer is inching closer and closer with every passing day. The engine hasn't grown nearly as much as last week. I managed to fix the bug with the groups, it turned out to be very simple, I was just searching for it in the wrong places. The result is that the player can progress to the next level and fight 'em wicked monsters (nice gif included), put some keys in keyholes and what not. One just has to be careful not to spin around too much or else the display code crashes in some bizarre way. The worst about it is that the call stack is messed up, it seems to be something inside the aptly named function f115_cthulhu. Code for saving and loading has found itself inside the engine as well, although trying to load a save crashes the game (couldn't muster up enough motivation to fix it yet). That's the end of the post, have nice gif: (just as always, ignore the broken cursor)

Saturday, 16 July 2016

The engine is coming along well. Great many lines of code and even greater many bugs have been incorporated into it this week. It seems that for every bug I fix, that makes the engine crash and burn, there are three more waiting right around the corner. Right now the most inconvenient one is that group management has not yet been tested as there have been zero enemies on the 0th level and as I've spent most of my time fixing bugs there (for example making the damned door open when the player steps on the pressure plate in front of it). So when the player takes the stairs, the game goes down with a segfault.
Items can now be put into the inventory, they can be placed and be thrown around. Interaction with the dungeon is more or less in place, the player can press buttons, step on plates and uhhh that's all there is in the hall of champion people. The champions can now attack and take damage (don't walk into walls). The former has not much use, since we can't even get near enemies yet.
I planned on having some screenshots of combat, but since I can't get me some real enemies right now, you'll have to watch me fight this wicked door instead.