
Castle of Viana - Capiroto's Revenge
A downloadable game for Windows, macOS, Linux, and Android
REQUIRES DOSBOX FOR MODERN SYSTEMS
A #cgajam MS-DOS game (theme: history repeats itself) where you traverse a floating castle in Viana do Castelo to kill the demon Capiroto (again).
How to play:
z - Jump
x - Shoot arrow
c - Attack
Up - Shoot arrow up/climb stairs
Arrows - Move
Esc - Quit
Enter - Pause
Credits:
Daniel Monteiro - Programming, audio and some art
Pedro Fernandes - Art
Update: experimental OPL2LPT support! To run with it, execute the main game with "viana opl2lpt"
As seen on 8-Bit Guy(18:59)
The New Retro Show (12:50)
Toni Ortiz
And Jupy Plays Indie Games (3:58)
A very good review by Sparcie:
And finally, a quick gameplay by HT words:
Status | Released |
Platforms | Windows, macOS, Linux, Android |
Rating | Rated 5.0 out of 5 stars (1 total ratings) |
Author | Daniel "MontyOnTheRun" Monteiro |
Genre | Platformer, Action |
Tags | 486, adlib, cga, cgajam, Metroidvania, msdos, opl2lpt, platform, Puzzle-Platformer |
Code license | BSD 3-clause 'New' or 'Revised' License |
Average session | About a half-hour |
Languages | English |
Inputs | Keyboard |
Download
Install instructions
Tested on a real 486-SL 25Mhz running MS-DOS 7 and a Pentium 600Mhz running FreeDOS. 8 MB of RAM should be enough.
Runs cool on DOSBox.
Comments
Log in with itch.io to leave a comment.
This looks to be really amazing and authentic.
However, I am having significant trouble with DOSBox, which doesn't usually happen.
With DOSBox Staging, I get:
Load error: no DPMI - Get csdpmi*b.zip
And in DOSBox-X, I get:
Page Fault cr2=0040a0d0 in RMCB at eip=a0d0; flags=3016
It seems very vulnerable to crashing when DOSBox cycles / processor speed is adjusted, which isn't usually the case with most applications.
I wonder if this is very sensitive to certain ways that DOSBox is configured. I may have to try this game on real hardware to see what happens.
The DPMI error is because you need to download CWSDPMI (or run under Windows 95).
As for the dosbox-x, crash, that's really odd! I've tested on 486s and Pentiums, but there's always a chance a bug sneaked in. I will look into it.
Thank you for your interest...but please, bear in mind the grunt of the work done for this game was only a 2 week effort 😇
Edit: Ah yes, as for the authenticity, I think Trixter said it best: this deserved to be a Real Mode game. But given that this was one of my first DOS games, it is protected mode (386+) instead. At least I eventually did make a 8088+CGA game, but damn, it was hard work!
Thanks!
Yours was one of the first "new Retro" DOS games, I think. There are some similar efforts even today, such as Anzu Castle Gracula and Gold Miner.
DOSBox Staging actually had trouble with Anzu Castle Gracula until a recent DOSBox update, so it seems like some emulators are having trouble with new homebrew. (Makes sense, since DOSBox forks would not have been tested very much with new games).
386 is available to me, so maybe this will be tested eventually. I just learned of your 3D Dungeon game, and my hardware is just enough to meet requirements!
I found out about Viana in a 'history of CGA' topic somewhere. There's been a lot of questions about CGA recently - why it was the way it was - and they are being answered.
It's really great that you made your games actually run on classic video cards.
My understanding is that people never really stopped creating DOS games - it just slowed to a crawl.
I always try to make code that's very "boring" in the sense that I use standard DJGPP functions for almost everything. This make the keyboard handling a tad "bad", but also makes it very compatible, for example. I will give Staging a try (but I was always partial to DOSBox-X).
Since you have a 386, can I ask you to try a WIP version of the RPG I'm working on (1) ? Its much more optimized than Dungeons of Noudar (which very much prefers a 486). This evolution of the engine is much more optimized and even runs well enough on a GBA!
CGA is a funny topic for me. My first PC had a CGA and I hated the colours with a passion (and I kind of still do), but I have to agree it is the kind of limitation that makes you try hard to make something good out of it. Give me a 486 with VGA any day and I will be happy - but at the same time, it is not far from a (very slow) modern PC; some people would even say it's boringly normal.
Currently, I'm downsizing my retrolab and might finally go for one of those modern portable 386s. Is this what you have?
(1): https://montyontherun.itch.io/tragedy-of-the-uncanny
I'd be happy to help you!
Yes, I have the Book386, which has 8 MB DRAM and 40 Mhz processor.
My first computer was an 8 or 12 Mhz 286, but it is long-since sold! So the Book386 is the closest thing I could get.
DOSBox Staging is very new, and I can understand why many people wouldn't have adopted it yet. The reason I started using it is because a vintage enthusiast recommended it for its ability to self-configure to very compatible sound and graphics configs.
0.81 did not show certain graphics in Anzu Castle Gracula, but it was mostly fixed by 0.82. But there is still flickering with that game in both Staging and SVN, probably other DOSBox as well.
Seems that DOSBox was bugfixed for the OG DOS catalogue, and not modern retro.
I started using the 286 in 1989. Mine, fortunately, was VGA. Most of the games available for 286 were still CGA / EGA, though, so I suffered through CGA a bit. I remember those times well! Pharoah's Tomb was one of my first games, on a 5 1/4 floppy.
Your thoughts on limitations breeding creativity have a lot of support. I don't think we've really pushed CGA to its limits. There's the rarely-used 160px 16-colour mode, and the ability to change Colour 0 in the normal 4-colour palettes.
Look at this beautiful chart:
https://mastodon.social/@cyningstan/109326743745572940
I enjoyed trying the various graphics mode options for DOS games on startup, but it was years before I would see a SoundBlaster.
I haven't played around much with the Book386. Just tested in upon receiving it, and it seems to work. What's holding me back is trying to find a spare 4:3 monitor suitable for it. I'd want to display your games on something bigger than the 7" Book386 screen! But I'd be happy to accelerate things for you, and get this thing running with modern retro software. I have vintage peripherals for it, too!
Hey - I think we need to continue our conversation over a private channel; how would you prefer to proceed?
As it has OPL2LPT support, is there also support for normal Sound Blaster / Adlib OPL-2 audio? I couldn't get OPL audio to work on DOSBox yet...
Also, is it fine to include this game on the DOS Game Jam Demo Disc?
I would be honoured if you do...but this was actually only on the CGA Jam.
My only game on the (MS-)DOS Game Jam was the 32-bit version of Derelict (https://itch.io/jam/ms-dos-game-jam-3/rate/974016), but I guess you're referring to another game jam?
Yes, it's a nice game and CGA Jam fits nicely, even if it's not a "DOS Game Jam", strictly speaking. We'll probably also include some non-Jam or even non-Itch games to round out the collection.
Sadly, no - this was the first time I was working with the OPL chip. But since my other games do have Adlib/SB support, if you give me a couple of days, I can fix this.
If you have the time, that'd be great :) I'm beginning to make a list of games and ask for permission, so there's still at least a few weeks time to make a new build.
OK, got Adlib and OPL2LPT working fine. PC Speaker works well, but oddly, there's some delay with the sound starting. It's been a while since I last touched this interrupt handling code.
Also got VGA graphics to work, but it will still use the CGA art (but at least there will be no dithering and potentially faster).
I hope to ship this by tomorrow, if that's OK.
OK, got some improvements there. The timing of things still is a bit wonky, but got a lot better.
Unfortunately, since this was my first "big" game for DOS, there are still some issues I might never really fix without a big rewrite.
Following this V2.1, I might end up doing this big overhaul, but it would take quite a long time. Meanwhile, this new version should be enough for the compilation :)
Thanks, updated to v2.1 :)
Wow. You’re making your on DOS game. That’s so cool!
Says the one making GBC games - THAT is the ultimate stuff! XD
I guess we’re both just really cool!
You just got featured on The 8 Bit Guy latest video (Ad-Lib Sound Card for the Parallel Port). I couldn't be more shocked when i saw the "Viana" hearth. I never ever expected to see something from my district on 8 Bit Guy! Great work man.
Can't jump, game softlocked. Running Windows 7.
I assume "climb stais" (nice typo btw) means to jump.
What do I do?![]()
It's because you "stai" there =P Thanks for picking that typo.
Regarding the jumping, I assume that Windows might be messing with the shift detection? If you type stuff while holding shift after quitting the game, does it make the letters uppercase?
Thanks for reporting. I will release a newer version (fixing bugs, supporting VGA and adding experimental OPL2LPT support) in the next few days. This version is still the original one, written from scratch during a mad sprint, over 2 weeks.
Shift? I was pressing space. The shift detection is working, let me try using shift.
OH.
Sorry for being s t u p
Is there some way to play it on windows?
you will need DOSBox or a older, 32-bit Windows.
Tested it on Windows Me, but should run fine in Windows 7.
With DOSBox, you could run it anywhere you fancy! :)
There is also a Emscripten-DOSBox version, but emulation is far from accurate.
Awesome, glad to see another entry that's written for DOS :) Out of curiosity, is this running in proper Mode 4h? Or Mode 13h with the CGA colours?
Hello there!
Thanks! This game uses mode 4h and writes to the interleaved memory pages - considering it's a 32 bit protected mode program, it's far from well described on the literature; but I eventually managed it. Somehow, I feel like I should have done like you: a 16 bit application. Well - I'm happy with my results anyway.
Congrats on your game!
Thanks, it's just a shame I couldn't get the performance going well enough. But going to keep at it, and see if I can get it to run on a 286..
SERIOUSLY... This game JAM needs a technical winner and is THIS game. NOW, this is programming the real thing.
A game that you really could have played back in time, very well done. One of the games that was more "true" to the idea of making a CGA retro style game. Good job !
Thanks! In 1988, we could have earned some serious cash =-P
On a more serious note, it's funny how we can't realize the progress we got with compilers. To have the performance I got while updating the whole screen would have required coding some sick assembler. Towards the end of the deadline, I was getting sloppy and throwing std::vectors all over the place. With some more time and research, this could be optimized to even run on a lower end 386 (being fair - my 486 is quite low end; possibly slower than a high-end 386).
The code is not C++14-ish as my other releases, but still quite far from juggling registers - I might need some ASM for a interrupt handler in order to improve the controls (admittedly, the weakest link in this game).
You and your friend who did the art did an amazing job making this game, one of the best works I have seen lately. Although I dont do this for more than 8 years, I have coded in C++ and even Cobol =p, and thank god technology is way better nowadays. Congrats man !
Having played it (great job!), this actually could be optimized all the way down to an 8088, as the playfield doesn't scroll. A challenge for the next CGA JAM, perhaps. :)
Thanks Jim!
This certainly could be worked to run on a 8088, but I only have a 486 at my disposal. Also, I'm still not sure if modern versions of DJGPP are still capable of generating real mode code (used GCC 7, cross compiling from Ubuntu).
Anyway, I'm certainly not done with DOS Game Development :)
You have a few options in 2017 for making 16-bit DOS games coming from a 32/64-bit GCC background: An old 16-bit compiler like Borland C or Turbo C; OpenWatcom which can compile to a 16-bit output; or probably the best option, a newly-released toolchain based on GCC 6.2 available here: https://blogs.mentor.com/embed... (if the link didn't make it through, google for "Sourcery CodeBench Lite for IA16").
My DOS retrocoding is in a mix of Turbo Pascal and assembler, as the TP IDE allows coding/debugging on the old hardware itself. But I'm old, and quite insane.
Took me a while, but I finally got GCC-IA16 to work well and even display some basic CGA graphics.
The lack of far pointers leads me believe I will have to rely on ASM for that, right?
Considering I already have to do it for keyboard anyway..
oooh, I like this