What's new (2020)

New Game: Mini XMAS Battle

December 22nd, 2020

A tiny update for a tiny game. It's a barebone Christmas-themed QBGorillas knock-off in Mode 7. No fancy coding here, move along people.

EDIT: Version .4 of PLAYMate is available... now with 100% more directory browsing in the file manager. It's like Christmas has come early this year... might be an ambush! Take cover!

EDIT: Did you know you an extra episode is unlocked right about now in Cody McCloud?

Nothing screams Christmas like Halloween

December 20th, 2020

Or nothing screams Halloween like Christmas... anyway, I'm reviewing Night of the Vampire Bunnies, a game originally programmed for GW-BASIC and ported by the author to QBASIC a few years later. It's certainly one of the better text-based adventure games in QB and something tells me it's partially due to it's design.

Update: I was wondering where I got the program so I made a quick search and found out that someone else reviewed the GW-BASIC version of this game earlier this year and backported it to the Tandy TRS-80 MC-10! check it out here!

New version of PlayMATE

November 28th, 2020

This version does most of the things I'd expect that kind of program to do, so I don't think I'll modify it again anytime soon (unless something goes terribly wrong.)

The new file format is plain text (more or less what you'd get with the import/export of the previous version,) so it's easier to convert PLAY strings found in QuickBASIC programs to SPK files. It's now possible to remove and insert bars, the tracker doesn't allow notes to overlap anymore, and tons of tiny visual glitches have been fixed. The biggest rewrite comes from the note() array, where elements are added and removed while preserving the note order. This allows a faster search algorithm to retrieve note indices. Except for the file loading that takes a little longer than before this upgrade is a net positive.

I also added two more songs for the heck of it.

It fixed itself

November 24th, 2020

... at least, I think it did. Version .2 of PlayMATE is available for download if you're into noisily beeping melodies. Also included are "Infernal Galop" by Jacques Offenbach, Frederic Chopin's Opus 69 n°1 and some shortened versions of Emile Waldteufel's "Skater's Waltz," and Beethoven's "Fur Elise." There's also three Christmas songs. If I can improve the import system, I'll probably drop the binary file format and use standard PLAY strings instead with a small header for the time signature and whatnots.

Creative cursing

November 22nd, 2020

I've got some good news regarding the PLAY "tracker." First, the timing issue is gone. Second, exported strings are much smaller (30% on average) than before. Third, the tracker redraw routine has been optimized, the column and row of the cursor are now highlighted (so drawing notes is much easier.) Fourth, notes can now be up to 64 beats in length. Lastly, I fixed a few overflow crashes caused by extremely large time signatures (like 16/2 for instance.)

And now for the bad news: the goddamn crash on exit shit is still fucking happening for some godforsaken reasons I really cannot pinpoint. I thought it was related to PCOPY and SCREEN because after removing that part of the code, it seemed to work fine... and then it crashed again after 60+ attempts. Then I removed the quick toggling of the mouse cursor because I suspected it could be another reason... and it worked... for 60+ tries and then it crashes again. I have no idea where the fuck this bug is coming from or what is causing it but damn is it frustrating. At this point, I can only assume it's memory corruption and pretty much any random component has the ability to cause the issue. But I also don't want to assume it's memory corruption because then I couldn't explain why it's ONLY happening on exit. It's the second day I'm dedicating to hunting this thing and I'm already sick of it.

Play, Pain and Pondering

November 19th, 2020

A few days ago, I said (well, I did not, but I implied it... sort of) I would focus on "simpler" programs until I got actual hardware to test my code on. And so I worked on a "simple" program that would comply with a large list of "DO NOT USE" instructions including: OUT, INP, PEEK, POKE, DEF SEG, VARSEG, VARPTR, SADD, LSET, RSET and CALL ABSOLUTE... basically my bread and butter. At that point the only thing left is CALL INTERRUPTX and arrays, which is still a lot... but then, this happened:

run-time error R6003 - integer divide by 0

That's a new one. I don't recall this happening in DOSBox with my previous, trickier programs. What did I do wrong this time? I'm positive I am NOT dividing by 0 anywhere. So is it PCOPY and SCREEN? Is it some kind of weird timing stuff going on with the PLAY instruction? Is it the custom UI manager library? I recall getting completely wrong results when passing library functions as arguments, but after moving the whole library into the main module and seeing the problem persist, I'm clueless. Could it be DOSBox? Your guess is as good as mine.

To top it off, it only crashes on exit. What the hell is this thing? Fuck me I'm stunned.

Anyway, if you want to give it a go, the program in question is in the games/tools menu and is a PLAY "tracker". I found it hard to compose anything from scratch without any music knowledge so I made something a little more visual. It's not perfect, it still has its fair share of bugs (including some timing issues,) but it's a decent start I think.

Insight is 2020

November 9th, 2020

Thanks to the inter-dimensional flesh-eating doomsday mitochondria thingy that's been around for a year, we're something like six months behind schedule on the house renovation. I still need to get my hands on actual old hardware to be able to fix the code I wrote (and uploaded) up until now (I mean... six months ago... holy shit!) It seems that code snippets work but more complex stuff... not so much. It's frustrating and demoralizing but I know that as soon as I get a proper office and proper hardware, I won't have to trust DOSBox's leniency and I'm fairly certain I'll be able to fix it all; even if that means rewriting everything from scratch (at least I know now where to focus my attention in each project.)

In other news, I don't know what happened, I don't know how it happened or since when, but the banner wasn't being displayed properly. It should be fixed now.

Nothing much

May 11th, 2020

Still busy fixing the previous games so they could run on genuine hardware (super excited about that...) also, I'm "working" (on paper) on a tile-based map editor with a few nifty features that could make it flexible and rebust enough to be used for different projects. It's gonna be great.

It works in my DOSBox!

April 30th, 2020

Erik tried to launch several of my games on his genuine 486 with mixed results. Since I have no idea how I could possibly fix bugs that never show up in DOSBox, I set a virtual machine up with DOS 6.0 to give them a go. So far, I've patched Panda BLAST! (no downloadable fix available yet) and I'm not sure what's going on with MineSweeper Duo (crashes on initialization while Erik says it works fine.) Cody McCloud works on the virtual machine (except it doesn't seem to recognize the mouse) while Erik says it refuses to run... I desperately need to get my hands on a genuine DOS machine... On the plus side, Sexy Smart Slide and Mode Y seem to work as intended.

Happy Halloween!

April 29th, 2020

Do you (or someone you know) like wandering around a spooky house, collecting ropes, murder confession letters and blood-stained knives? My housekeeper doesn't want to clean my place anymore. In other news, you'll find a code-centric review of Helter Skelter, an edutainment game where you wander around a spooky house, collecting ropes, murder confession letters and blood-stained knives for the Charles Manson murder trial. Who would have thought my life you be so much like a QuickBASIC game? Oh, and Happy Halloween!

EDIT: This quarantine stuff has been going on for so long I lost track of time entirely, so it may not actually be Halloween. Fun fact: time is also something Manson's followers were not aware of! Man! It's like edutainment DOES work after all!

New specs.

April 9th, 2020

Quick note: I just uploaded MIDI (Musical Instrument Digital Interface) file specifications. It's an old document (1999, twenty years ago, holy shit!) I've seen floating around, just fixed a few typos and converted it to plain text. I've got other formats like MOD too, but I never used that format, so I don't know how accurate it is. Given the rarety of that stuff, I'll probably have a look, see if it makes sense, and upload anyway.

New Game: Cody McCloud

April 8th, 2020

Yes! FUCK YES! I'm done with this thing! Free at last! Time to do something else, go outside, see people and... what are you talking about? "Flesh-eating bacteria," "everyone is infected," "have you not been prepared?" Anyway, Cody McCloud, a BreakOut clone in QuickBASIC has finally been released and it's available for download in the "Games/tools" droplist (I'm leaving the demo around for now just in case anyone's interested, I'll remove it later.) Be warned that it's not bug-free but so isn't anyone according to the news.

What do you mean too soon? It's been months! MONTHS I SAY!

Sorting things out

April 6th, 2020

Cody is on the way, for real this time, I swear. In other news, I added a super tiny code snippet showing how to do "top down sort" in QuickBASIC, showing how much faster it is compared to "bubble sort." It's in the Articles section.

Interpreters shout-out

March 29th, 2020

Just a little note to let you know about qpschool, a new Neocities page featuring a few tutorials for Basic-256, an "easy to use version of BASIC designed to teach anybody how to program." It's completely interpreted so there's no need to compile anything (write, execute and enjoy right away.) In that respect, it is similar to projects like CoolBasic, thinBASIC, SmallBASIC and PC-Basic. By comparison, FreeBASIC and QB64 both require the code to be compiled and cannot be executed on the fly. So, if you think this might be right down your alley, go check it out!

Interviews

March 27th, 2020

Behold! Another category has been added to the menu: "interviews." While browsing some archives, I found three interviews that I thought would be interesting to share.

The first interview is with then Microsoft employee Greg Whitten, responsible for porting BASIC to IBM computers and one of the key programmers behind QuickBASIC. The second interview is with Pete Berg, webmaster of one of the most popular QuickBASIC website from the late 90s, talking about the demise of BASIC as a language and the importance of a strong community. And finally we've got an interview with Richard D. Clark, retired professional programmer, sharing his thoughts on the QuickBASIC/FreeBASIC community, the differences between professional and hobbyist programmers, and the industry as a whole.

If I find other interesting chitchats, I'll make sure to upload them.

RPG-lite

March 4th, 2020

Still busy with the house; we used to think we'd only repair what needed to be repaired, but given the overall mess that's currently going on in there, we decided to go all the way through. This project keeps getting bigger and bigger and we can't wait for it to be over. Anyway, I added a quick review for MiniRPG1 Boardgame, which is supposedly a demo of some sort although it features a beginning, an end, and everything in-between. It's also supposed to have RPG elements, but I'm not too sure about that either. It could use some tiny improvements, but it's still nice (albeit sluggish.) Go check it out. EDIT: fixed some typos.

Sorry nothing

February 5th, 2020

I'm being a big scatterbrain lately and I can't seem to focus on anything. I just noticed a few typos, mistakes and dead links in the Mode Y Introduction article so I fixed them. I'll probably reformat the palette article too. I've recently toyed with randomly generated mazes and pseudo-3D rendering and may attempt to do something with that. An infinite dungeon-crawler maybe? I don't know. Having a proper raycaster for the 3D view would be nice (although I'm not too eager to trip and fall for the full-screen real-time raycasting engine in pure QBasic joke.)

Not to be confused with Cool Spot

January 23rd, 2020

I wasn't planning to review Wetspot 2 (especially since I name-dropped it last week-end,) but then I found the source code lying around, so here we are. The safe word of the day is candidiasis. Love you.

Let's play a game...

January 18th, 2020

I'm having a hard time drawing the last elements of Cody because I feel like at this point, "everything is done" (as in: there's nothing new and exciting to do - only more of the same.) So I've been working on other things in the meantime, along with taking care of the house. And because it's been a while since anything consequential has been uploaded, I've been tidying up previous articles (AGAIN) and I'm done writing an overview of interrupts (so I stop covering the same stuff over and over again.)

If you need a quick fix for QuickBASIC games (who doesn't?) here's a short list: Columns (a perfect reproduction of Sega's arcade game,) Super Stack and Ultimate Super Stack (great game inspired by Kirby's Star Stacker,) Frogger (a remake of the original arcade game,) Scrambled Eggs (a somewhat clunky clone of Puzzle Bobble/Bust-A-Move,) Wetspot 1 and 2 (a very polished arcade game based on Sega's Pengo with Disney music and A-Ha's "Take On Me",) Qoop (a fast-paced color-matching game based on Zoop,) and Crazy Numbers (a two-player strategy game based on Penthouse Hot Numbers according to the author, but based on Maxit if you ask me, because I'm a pure and innocent soul.)

What's up?

January 10th, 2020

New year, new me. Where's the previous me? I don't know and neither do you if the IRS asks. With that out of the way, I think I should be able to release Cody McCloud soon-ish: I still need a couple of new backdrops, some illustrations for the story and a few more levels (I finally wrote a level editor, so that's nice.) I'm so late on that project that I don't feel the urge to even rush it anymore, which is both a blessing and a curse.