Thursday, 5 July 2018

More CPC stuff, but what's next?

It's time to write more news here from time to time (must have missed the last one, my motivation is dropping again for anything).

I diverted at the time with CPC coding. Which is inspiring after a long time. Fiddled with enough z80 assembly, trying to finish an intro for ReSeT CPC competition, not sure where going with that, but since I didn't have time for 4k, it ended into something smaller. I like the result although not sure how good it is for 1k. It looks more plain and stationary, however I like the effect. It was my attempt to rotate some 3d axes in order to use them for 3d objects on a grid, however time was short and what you see here is rotation of more than one 3d axes together, offsetted at different angles.


Later on, I was working a bit more on the Wolfenstein CPC, still haven't debugged the new method for raycasting, however it's closer to the one skipping rays, as I added a nice fraps FPS counter that now tells me, even the old good one was only 6-8fps, while I hope to achieve 10-12fps when making this one work. And maybe I'll rewrite parts of it in assembly for even more.

Not sure however when I'll go back to CPC, as I started the project I had left, trying to start working on my 4th tech video, this time about the CEL rendering of 3DO. I do hope to finish it by end of July, else I'll have my holidays on August and it will be delayed. But I don't want to rush and do a half job for this one. It will be more interesting than the others, showing/explaining the peculiar "quad" rasterizer of 3DO (which btw gave me an idea for a 3DO game or demo with special style, I am very excited about), the performance bottlenecks depending on texture size and maybe more, but I'd like to carefully explain things this time, cover them as I imagine would make for a great explanation.

I even thought of my 5th video I want to finish till December, on a different subject, but very interesting explanation on triangle vs quad affine mapping, things I noticed and my visual way to explain. There might be a period on August/September where I will stay off though and focus on other things without deadlines, real life or just relax.

I am tackling in my head with many plans I want to fill, maybe a bit of releasing my first 3DO Doom port, which I forgot, some other things I want to try on CPC, but how to plan all in my time so that not everything goes back and forgotten as usually.

Or I just want to relax for a bit. Once I relax, a fire burns for more coding and crazy stuff I wanna try. I can't even play a game these days, without somehow feeling that I'd rather spend that time in more creative endeavours. Which is good I guess that I cannot simply succumb to the laziness of gaming for long periods, but when I try to start working on those endeavours, I feel the struggle of procrastination again.

Ok, not sure the next week I'll be writing something here, but only from time to time..

Thursday, 21 June 2018

Adding more to the list, diverting.

There are few elements to the flow of my current projects.
I've totally forgotten my plans to work on my 4th youtube video (which I have to really get back to).
The last few days I have been very slow, started maybe getting tired or for other reasons. (maybe I need another pause).
I added a new project to my list. I was inspired between nostalgically rewatching a lot of old CPC demos and checking at ReSeT demoparty. Decided to start working on a tiny intro, maybe 1k.
Almost hasn't started. I had an idea of what effect I will do, then changing my mind the following days, but almost not even starting by clearing up the framework since my last Voxel1k. Hmm,. it seems like I have almost 4 years to do anything on CPC.

Anyway, so I guess I have to focus a bit on this as I registered on the site. Can't escape now, must make intro :)

And then I may be able to come back again to what's left. I need to be able to finish my 4th video before the end of July. And then what else? I will try to finish with the Doom 3DO ISO. Which I could already publish if I wanted, but I'll be giving it time as to develop few more things and see if I can optimize more before the first release.

There was a little project since last Wednesday in the CPC wolfenstein project too. I managed to replace the old raycasting algorithm with a better approach inspired by this paper. Almost, as there are some serious artifacts, mostly few bugs I have to solve. But it's ready in place, when the last bugs are found I can test and see if 1) it really alleviates the usual bugs in the corners of the wall blocks, 2) how much the speed improves (right now, I realized I do half the muls per ray, and also the algorithm is simpler for the compiler and for rewriting in assembly). I was also thinking of adding a timer during interrupts to coarsly compare speed (even though there is a tedious way in the debugger of winape32 to do this) or display fps. Not sure when I'll do this.

Wednesday, 13 June 2018

More things going on, slowly.

I am working on things here and there. Mainly the Doom 3DO port, although I'd like to start with my 4th youtube video too. I could release an ISO or binary and instructions soon, not sure, the main menu features are one, however I might still get more into and try to optimize few things.

Then I also started experimenting with some additional features, like thick map lines (almost pseudo-antialias, using the GPU but drawing a thick darker line and a thin brighter above, surprsingly works but more like cartoonish lines :) and a hack I am currently trying to make work that could possibly be used for water movement. I want to add more to the rendering, from alpha blended projectiles and maybe emitting particles to replacement for the sky (3d stars, maybe skybox, etc) but mostly experimental as I have fun and dreaming of how it could be enhanced. I know, I should be focusing on optimizing the engine first. Anyway, might post previews soon.

One thing I was trying too, is to see if I can compile Doom 3DO using gcc. But the original 3DO libs are binaries in another format, so there are linking conflicts. Would take some effort to do that so I left it. I thought as a more optimizing compiler than the old armcc, we'd have a chance for speed improvements even from inception.

Today, I remembered about my wolfenstein CPC. I first read about a better way to raycast that can solve some bugs and maybe be slightly better but surely sorter code that could make it easier to port to assembly. Then I went back to the old project, fought my time with codeblocks setup and sdcc to make it work (something got changed in my compiler settings and other shit). That's why I got frustrated as I lost time and did less that I wanted today. So many things to even do on that old engine. There are bugs to fix, for some reason I think the latest SDCC creates wrong z80 code but not sure, I need to check a lot of things to make sure it's not blowing up. I also prepared some code place to try the newer raycast way, who knows when now :P

I get these sudden inspirations, sometimes at work, sometimes on the road, I think of some effect or sudden idea and I want to go back at home to work with it (instead of my regular plans). Then, maybe when I am back it's too late and I lose motivation, or maybe I start working but something happens and disrupts me or something doesn't work on the compiler or other reasons. So, I hope I'll go back to the CPC engine as I was in the middle of things, but maybe not tomorrow as I have to focus on the 3DO Doom stuff and videos.

I also bought the domain and hosting for this new site: bugothecat.net
I will use it as a personal site and will also post the first release of Doom 3DO there.

Thursday, 7 June 2018

Little news on 3DO Doom porting

Work has started already on the Doom 3DO port.

I am mostly cleaning up the old code, trying to leave only the code changes that are relevant to the first release (the other are clutter, experimental code changes, etc). Yes, I am planning to release a first official ISO or most probably a binary and a process to replace it in the original ISO.

I am mainly planning to release the version with the hi/low quality for walls and floors. Doesn't help much with the framerate though. The process to optimize if it's possible, will be much harder. Meanwhile, I am thinking of many other additional things I could experiment and add, from additional options (cheats enabled directly from a menu instead of tedious keypresses), some experimental rendering I know I can add optionally (particles, alpha projectiles, water effect, special effects, star sky). And of course continue with my benchmarks and attempts to optimize the main rendering (I am thinking of trying to replace wall rendering with single quad per linedef, even if the texturing will be totally wrong, just to see how it performs. And maybe also a flat rendering version for the walls). I will write all of these down in a notepad and start working one after the other.

My other plans will be to finish my 4th video on 3DO cel rendering. I have 1-2 months for it. I'd take my time as I do want to not work exclusively with it and spare some time with general 3DO coding or other stuff.

Wednesday, 30 May 2018

Remission

After I finished my 3rd Retrotech video, I fell into a strange remission. I don't know if it's the right word. Like a cool off/pause of some of my activities for few days. I also happened to be a bit sick and of low energy, so I'll give it few days. I mostly paused the coding sessions in Habitica, will get them back after the weekend.

This post is a little crappy because I forgot I have to write one and it's 20 minutes before midnight. I already feel like a robot with Habitica and I am off from this think for a while.

Anyway,. I had a sort moment of accomplishment for finishing the video, and planning for what's next. I am thinking of the next two months from now, before my Summer holidays.


  • 4th video which will be more interesting on the 3DO cel rasterizer, it's weirdness and bottlenecks. I was originally thinking I could do one video per month, so two vids maybe, but maybe I'll take this lighter and spend more time to make it good.
  • I gotta return into Doom 3DO port. I am thinking I should maybe release a first port with the few changes with low detail floor/ceiling options. Not sure if I can add anything else now. Will investigate what will be the good method to just provide the binary (and source code too of course) and users who have the game and can get the ISO, would replace it. I don't know if I could give the whole ISO or this is not legit.
  • More work on the tools that could help me making the videos faster. I am envisioning of a minimal GUI that would help me script the events, instead of typing tick numbers in code. My framework has improved every video, have classes with Event lists, that take a function pointer or lambda with float t that is supposed to be from 0 to 1 and I will interpolate and render things accordingly. Every time I add and improve things but it's always messy. Now, the GUI would take time (I'll just go with boxes for event times, simple keyframer bar, etc). That could be a work that I do in parallel with other things, maybe taking long time to finish, will see.
  • I was working on a bit Sam Coupe and my 8bit experimentation framework. I could maybe go back to it.
The most important plans are a 4th video on 3DO cel engine and a little bit of work on Doom 3DO (just establish the first released port). Don't think I want to do more during the next two months.

Then I am thinking about the project I never started, an indie game. Not sure but I'll want to start this on August/September. It will be a long project without deadline that I will work gradually.

I guess that's it for now. I am writing this in a hurry as I wasn't in a mood for anything today but had this scheduled. Hopefully this is just a small period of laziness or need to rest for a short time.

Wednesday, 23 May 2018

Retrotech youtube plans

Gah,. I procrastinated again.
Sort off.. can go back on track again.
It's just that if you miss one or two days, all plans go back.

Habitica did work well enough. It taught me some interesting things. As you push yourself in task you don't necessary feel like doing, you might learn some stuff. Sometimes I unconsciously take the path of least resistance. So, if my plans is to do two sessions of coding work, as I am getting more tired or at particular days feeling less like, I'd either find a subtask that doesn't need as much focus or my sessions will be shorter, or maybe long enough but most percentage of the time is spent being distracted. I would like to improve that in the future, so if I say I'll work for 1 hour on something, it should be more focused, more productive.

The first thing I was trying to finish, is the scripting to my 3rd video on youtube. I was planning to finish the main part of the video tonight, but I don't think I will do. The plan was to maybe finish early by Friday so that the weekend is more free to either focus on other things and/or relax. Maybe I'll have to finish it during the weekend (which is also followed by a bank holiday) or if I don't want to push it I'll give it a little bit more. However, 90% it's gonna be released before Monday.

I also plan to continue with some more small videos, attempting to post two of them before August. They are all small and in my mind should be able to be produced in a month or 2-3 weeks at best (if I could hold on the focus/productive principle). But reality hits you and you struggle and get burned by the whole process. I am either planning to make some tools to ease the process or improve my focus. There has to be a way to produce a video per month and even in a way that it won't fully occupy my schedule.

That's the other thing I am looking for. When I was doing my first video it was last year, where I had this idea to try and produce technical videos about retro computer subjects since maybe 2015!!! At the beginning of 2017 I had the new year's resolution to finally make my first. I only ended up working harder, 2 months closer to the end of the past year and it kinda paid off as it was received well. The second video wasn't as much viewed as I expected, but then again I pushed for 1-2 months to make it and was fast to release it without being exactly what I wanted. The video I am planning to release now, adds 1-2 parts of things I didn't show as I wanted. It's like a follow up, nothing special.

Anyway,. the thing is that this sounds a lot, 2-3 months, but first I was writing a lot of code for my framework (rendering functions, timed events classes, various other utilities) and then scripting something that's bigger and more tedious than what I am doing now in the later and incoming videos. However, you could maybe compress the time spent in one or one and a half month? It's not like I was working full time (or the remaining 6 hours as I return from my job). It could be sparse like 1 hour per day, then some days omitting to work, but here is the thing: You have every day in your mind, how to finish this project, how you have to come back from work or use that weekend to finish the damn thing. Even if there are 4 hours between the 1 hour you have worked, and you can spend 1-2 hours to work on some other project and the rest of the time to relax, this is not what happens. So,. by focusing too much on the video, I didn't work on other projects I wanted. I mean, the amount of dedication to this video, could be used to do massive work on the Doom 3DO porting/optimizing itself, something I regret having left back (and still can't see when I can go back to it soon).

So, I wish in the future to regulate my time to be able to be productive enough so that I can make smaller at least videos of this kind, but in a way that it's not a burn out or defocus from other projects I want to work in parallel. The good thing is that for some days Habitica helped me put 2-3 things in the calendar where I can do some sort sessions or switch projects depending on my mood, so I had started working on 1-2 other things the last two weeks (before focusing these days only on the video, so maybe in a month's effort, 1-2 weeks could be solely focus on the video and 2-3 weeks in between split on other projects).

It was random small stuff, one was trying to go back to Sam Coupe coding, then I started working on a PC framework for experimenting with pseudo rendering to CPC or Sam Coupe vram, and in the future preparing/generating z80 or binary code, sort of a big centralized suite of functions to generate data/code for 8bit platforms with classes and structures suitable to each different system. Weird to start with that with the pretense of generating some code for Sam and then losing my mind with this instead of coding for the Sam itself.

I talked more about my Retrotech youtube videos in this post (instead of the original other plans I wanted) but it's my main project right now. I just need to see how can I handle this so that it's not too hard on me and leave me time and motivation and energy to pursue 2-3 other random things at times.

Wednesday, 16 May 2018

Habitica

Sometime ago, I was thinking of ways to motivate myself finish work. And one of these ideas was to somehow integrate daily successes or fails into a minigame. I was thinking of a cute japanishe RPG where if I fail to complete real life tasks or maybe based on my weight or blood sugar my hero would weaken, making the game harder or annoying to play (or what about hacking Doom to make the guy being a slagfest? ;)

Since I am most of the time lazy and this was one of a million of ideas that I never even started, I shrugged it off and forgot it. Recently though, I thought what if someone else has made something similar? Well, of course someone would have thought of the most obvious thing already! There are many such attempts at "gamification" as they call it.

So, I ended up finding Habitica which I quite like. It's very easy to use and has three categories of tasks:

Habits, which can hang out there and you can do any of them whenever you want and many times. I can set one for example to read a book for an hour or a chapter of a book, maybe at a particular day I read more hours or chapters, but it doesn't have to be a specific day. You are not bound by any date or completion time. It's things you would occasionally want to do more but not bound to.

Dailies, which are daily goals set, like everyday hygiene, or specific days (e.g. Tuesday: read that book, Thursday: do fasting, Everyday: work on that project, Weekends: clean house) so at the end of the day you get asked what have you complete. Failing any of these will reduce your character's HP.

To-Dos, those are tasks with a deadline. I only have one for now, one of my creative projects (my next youtube retrotech video) due in days. Not sure what happens if I fail this.

And there is more into it, succeeding in these goals will get you XP and gold which you can use to buy various items and animals and other stuff (also add your own rewards, e.g. watch Netflix for an evening for 50 gold), you can set up quests with your friends, more I haven't discovered. There is no game to play, like an RPG where you really move your character, not like I imagined it, but that could move away from the goals and make you lose focus to some videogame. But it worked quite well so far, even as a fun little thing that could dry away possibly.

My thoughts on "gamification" but also on this notion of "reward or punish yourself if you succeed/fail" were a bit shaby (not sure what this word means but I felt it's feeling =). If I say to myself "study for 1 hour and I will allow you to eat a donut", then I could just not do the work and eat the donut anyway. Nobody stops you. If you could somehow tell your friend to steal your money (btw, I am just looking at Beeminder. Risky?) or an AI would know what you did and automatically lock away your pleasures? So, I couldn't see how this could motivate me. Reward yourself. But I can do it already, unconstrained!

It seems to work so far. I kinda push on working even a tiny bit on my projects, read some books I didn't had time to, not neglect hygiene (what is to wash teeth for few minutes if you are gonna get gold and XP? :). I mean, I am kinda into it surprisingly, even this post is a result of it! I decided to set up two dailies, every Wednesday I'll be posting something here, while on Saturday a post at Optimus Monologue. Normally, I have abandoned these blogs, so I thought it would be a good idea to see how it goes if I gamify the process. What if I don't have anything to write? Then here, I could just write about my progress with my coding projects, I would just write something. My goal isn't strict (so could I massage the keyboard to give q9y8 hdfoqerofdg wt chvqepb vo rbevtc8c43ptc34fh14fcp31 and post just to add a successful goal? :) so it doesn't say that I have to write this amount of words (but could be altered if I see I am taking the path of least resistanceduihaidohopc;iha;caa; =)))

I was also thinking about the possibility of a motivation/procrastination webpage where you might be able to gain money, in some hollow cryptocurrency... kthxbye :P

p.s. iuwerhb43oreqphgcfiowergjoieqjgioeqr trg ghg bfdgsb swb g tw wrtbw retgg re erggregerwgerw   rewtgreegrew g grer ewgr wrgwe .,. ^_^