VOGONS


New game: Loonies 8192 (386+, VGA, OPL-2)

Topic actions

Reply 60 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie

Thank you for testing and the audio files -- can I use your audio files in the Loonies 8192 Soundtrack playlist on SoundCloud?

Since r34, the music should be well-timed even with the slow machine (probably also with the slow VGA card you have). Since r35, the graphics corruption (which as introduced with the switch to Mode Y in r33) should be fixed.

The reason why the graphics were corrupt is that even though switching to mode 0x13 clears the screen, it only does so for the pixels "belonging" to mode 0x13, so all the other planes were not cleared, the fix was simply to clear the VGA memory when switching to Mode Y (= mode 0x13 + some modifications to VGA registers).

Here's a new build, r36 with the following changes:

  • Some new tiles for variety
  • New background patterns

The tiles and background patterns were actually "recovered" from a pre-release version that I didn't put online, those mostly didn't make the cut because of the 8k boundary and the fact that the background was always drawn "on demand", now that it's drawn only once to offscreen VGA memory and then just blitted to the screen, all the patterns "cost" the same, so there's no runtime performance difference between the different patterns.

Attachments

  • Filename
    LOON8R36.EXE
    File size
    38.45 KiB
    Downloads
    42 downloads
    File comment
    Loonies 8192, r36 (286+)
    File license
    Fair use/fair dealing exception

Reply 61 of 117, by Jo22

User metadata
Rank l33t++
Rank
l33t++
thp wrote:

can I use your audio files in the Loonies 8192 Soundtrack playlist on SoundCloud?

Sure, as far as I'm concerned that's fine. 😀

But if you wish, I could also use my DB50XG and record the songs again.

Edit: Attached. Recorded with DB50XG on SB16 CT1740.

Attachments

  • Filename
    main_db50xg.mp3
    File size
    830.2 KiB
    Downloads
    24 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    descent_db50xg.mp3
    File size
    1.85 MiB
    Downloads
    21 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    clickedy_db50xg.mp3
    File size
    1.58 MiB
    Downloads
    19 downloads
    File license
    Fair use/fair dealing exception
Last edited by Jo22 on 2018-07-31, 21:00. Edited 1 time in total.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 62 of 117, by root42

User metadata
Rank l33t
Rank
l33t

And here is my test of the latest release on the 286: it is definitely playable on the 486 settings. However it is a bit sluggish at times. But might be due to my capture device. I have to test on the real monitor, once my HDMI to DVI cable arrives...

Music is running perfectly now, and the artifacts are gone that we saw before. The 286 mode is fast but a bit ugly. Maybe it's still good for XTs, if you had a different binary for 8bit machines... Otherwise I would dump the 286 version and rename the other two modes to 286 and 386+.

https://youtu.be/q1Xbr8VNj5c

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 63 of 117, by DevanWolf

User metadata
Rank Newbie
Rank
Newbie

We really need support for the CT-460/CSM-1 and Miracle Piano! On the Casio LK-100 and CTK-491 (and other keyboard that have the 100 tone and 5 MIDI channel setup) there is a GM mapping option, for LK-100 turn Local Control OFF, for CTK-491, set Tone Map to G (in Transpose/Tune/MIDI menu). The Miracle Piano has a Miracle Port for computer serial connection, if only they get the serial driver working on other MIDI programs other than their own software, otherwise maybe just use the MIDI connectors.
I uploaded the instrument list for the CT-460/CSM-1 and the Miracle Piano in case they don't know what the list of those non-GM MIDI sound generators are, they're Cakewalk compatible Instrument mapping files but you might want to open them in a text editor like Notepad or Notepad++.
I might look for another non-GM sound module and add it to the game.

I'm gonna try the music on other GM compatible keyboards and sound modules like Casio CTK-2100, Edirol SD-90, Yamaha DD-55, MIDIPLUS miniEngine USB (sound based on DreamBlaster S2), etc. When I try it on a laptop however I have a Yamaha MU5 I bought from eBay with serial host port and also acts as a portable MIDI interface to plug in to other MIDI equipment!

Update: See my next post for the MIDIs for CT-460/CSM-1 and Miracle Piano.

Attachments

Last edited by DevanWolf on 2018-08-22, 03:14. Edited 1 time in total.

Reply 64 of 117, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Cool video, thanks for sharing! :) I also like to use MS Mouse driver v6.24 (but mine is 6.24BZ - are they any different ?)
By the way, root42, may I ask you what kind of NC clone you are using ? I'm using NC 1.02 here on my 286.

Edit: @DevanWolf I like that idea. So let's see.. Loonies currently uses Channel 1, 2 and 10..
The default mappings of GM, Casio and Miracle Piano are:

GM
CH01= Grand Piano
CH02= Bright Acoustic Piano
CH10= Glockenspiel

Casio CT/CSM1
CH01= Harpsichord
CH02= Vibraphone
CH10= Funky Clavi

Miracle

CH01= Detuned Piano
CH02= FM Piano
CH10= Guitar

General MIDI Instrument Patch Map:
https://www.cs.cmu.edu/~music/cmsip/readings/ … ecs_Patches.htm

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 65 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie

Updated build R37: The clearing of the VGA memory was actually still messed up, because for some reason I didn't clear all 256 KiB, this fixes it. Also the "ugly" background on the slow speed setting was because I changed the palette layout but forgot to update that color index in the drawing code (the more options, the more there is to test and to potentially forget to test 😉. For fun, I added a slide-in animation (using VGA scrolling) for the hardware setup screen + removed flickering by doing "inefficient" double buffering (render the screen off-screen, then blit it to the screen). Eventually I plan to use real page flipping for that, but for now it's okay. The loading screen now has a loading bar, since it might take a while on slower machines (it's pre-rendering and then blurring the backgrounds off-screen).

What I still like to do at some point:

  • Use INT 9 (BIOS keyboard interrupt) for key down/key up events instead of relying on DOS 0x21 (ah=0x0b/0x07)
  • Maybe Joystick support, although from reading the docs it's messy and super timing dependent due to the gameport's design

The keyboard handling will make it possible to override the typematic feature of the BIOS and implement a nice hold-and-move mechanic (also when pressing and holding DOWN, I can then make it so that only the current block will drop, but until DOWN is released and pressed again, subsequent blocks will not be affected by the fast falling). Again, this is something I want to implement but have not implemented yet.

Attachments

  • Filename
    LOON8R37.EXE
    File size
    38.97 KiB
    Downloads
    24 downloads
    File comment
    Loonies 8192, r37 (VGA scrolling, double-buffered setup screen, loading bar)
    File license
    Fair use/fair dealing exception

Reply 66 of 117, by root42

User metadata
Rank l33t
Rank
l33t
Jo22 wrote:

Cool video, thanks for sharing! 😀 I also like to use MS Mouse driver v6.24 (but mine is 6.24BZ - are they any different ?)
By the way, root42, may I ask you what kind of NC clone you are using ? I'm using NC 1.02 here on my 286.

Sören Kragh's DOS Controller. It is Freeware. However only download link I can find is an abandonware site, so I won't link to it. Advantages: written in assembly, extremely fast and small. Less than 60 KiB. Even less resident, iirc. Can edit files up to about 600 KiB in size, depending on your DOS memory.

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 67 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie

New revision r38 adding support for direct BIOS Keyboard handling (skipping the DOS keyboard routines), this makes the movement of the blocks when pressing left/right/down smoother, since the game can handle presses as well as releases instead of just pre-digested keyboard events. This might affect things like DOS keyboard mappings (e.g. Y<->Z on QWERTZ keyboards), but should result in better input handling.

Attachments

  • Filename
    LOON8R38.EXE
    File size
    40.09 KiB
    Downloads
    25 downloads
    File comment
    Loonies 8192, revision 38 (with BIOS keyboard handling)
    File license
    Fair use/fair dealing exception

Reply 68 of 117, by Tiido

User metadata
Rank l33t
Rank
l33t

What I do is chain in on the keyboard interrupt so I can get the scancodes etc. directly as the keys are pressed and also still get character codes via DOS functions that follow keyboard layout (I personally use Dvorak layout so all the keys would be very messed up compared to QWERTY variations 🤣).

I install my own handler and then call the previous handler at the end of mine. Just don't do any IRQ acks yourself or other keyboard controller management, let the old handler do those.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 69 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie
Tiido wrote:

What I do is chain in on the keyboard interrupt so I can get the scancodes etc. directly as the keys are pressed and also still get character codes via DOS functions that follow keyboard layout (I personally use Dvorak layout so all the keys would be very messed up compared to QWERTY variations 🤣).

I install my own handler and then call the previous handler at the end of mine. Just don't do any IRQ acks yourself or other keyboard controller management, let the old handler do those.

That's an interesting approach. When/where do you call the DOS functions to "collect" the key presses, and how do you correlate them with the events you get from the BIOS interrupt? And can you still read the scancode from port 0x60 before chaining to the DOS keyboard ISR? Since you say you let the old handler do the IRQ acks, I assume you can't really do anything inside the ISR (like calling an INT 0x21, AH=0x06) after chaining to the old handler?

Reply 70 of 117, by Tiido

User metadata
Rank l33t
Rank
l33t

I use my handler to just set/clear bits in a 128 byte array that corresponds to what each key does via port $60, this handles the physical keys and gets me as many keys pressed supported the keyboard itself allows, and while you can call other INTs from the handler you will get the last input not most current one.
In the main thread you get all keys access via that array and to get the character codes for stuff like text input you go to interrogate a DOS function (INT $16, AH=$00 and $01) to get the keys out of keyboard buffer of DOS, then you don't have that desync.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 71 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie
Tiido wrote:

I use my handler to just set/clear bits in a 128 byte array that corresponds to what each key does via port $60, this handles the physical keys and gets me as many keys pressed supported the keyboard itself allows, and while you can call other INTs from the handler you will get the last input not most current one.
In the main thread you get all keys access via that array and to get the character codes for stuff like text input you go to interrogate a DOS function (INT $16, AH=$00 and $01) to get the keys out of keyboard buffer of DOS, then you don't have that desync.

Yes, that makes sense, I do it in a similar way (i put all scancodes I read from port 0x60 into a ring buffer and then process all events in the main loop so I can generate "key down" and "key up" events, using the 128 byte array to filter out key repeat events). However, when I read the scancode from the keyboard controller (I use "in al, 0x60"), that byte will be removed from the input buffer, so even if I chain to the old INT 0x09 handler, it wouldn't have a scancode to read?

Come to think of it, do I get that right?

  • INT 0x09: Hardware interrupt from PS/2 (but also AT?) keyboard controller, default handler = BIOS routine (would read from port 0x60, fill data into internal data structures for INT 0x16)
  • INT 0x16: Keyboard BIOS service, called by application or DOS, provided by BIOS (possibly overwritten by DOS for non-QWERTY keyboard layouts), can translate scancodes to ASCII characters
  • INT 0x21 (AH=0x0B / AH=0x07): DOS-provided routines, no press/release, no scancodes, just ASCII characters and extended keys (like kbhit() / getch())

Is INT 0x16 available also before DOS starts (not relevant for my game, but interesting for understanding)? Is INT 0x16 overwritten by DOS to provide the keyboard layout translation features (scancode->different keys, e.g. QWERTY/QWERTZ/Dvorak)? Now that you have mentioned INT 0x16 (something I didn't know about before), maybe it would be just enough to use those calls (query if key pressed, retrieve scancode event) and not hook INT 0x09 at all?

Reply 72 of 117, by thp

User metadata
Rank Newbie
Rank
Newbie

New build r41 with support for CD-Audio, tested in DOSBox. Shows "CD Audio" as audio device option if MSCDEX is installed and it reports at least one CD-ROM drive. CD-ROM image is also bootable (FreeDOS kernel). In DOSBox, it can be played using:

imgmount -t cdrom d /path/to/loonies.cue
d:\loon8r41.exe

Have not tested it on real CD-ROM drives yet, the seek times might cause some pauses when the track is repeated. The audio tracks are slightly mixed variations of the MIDI tracks, with some effects and filters applied, and the title screen background music in the CD-Audio case is Almond-200-BackLL by visual and the MSCDEX interfacing code is based on Barry Egerter's code.

If burning on a real CD-ROM, the OGG files might need to be decoded to WAV and the CUE sheet file adjusted slightly if the burning program doesn't recognise OGG files in CUE sheets.

Attachments

  • Filename
    LOON8R41.EXE
    File size
    41.66 KiB
    Downloads
    34 downloads
    File comment
    Loonies 8192, r41 (optional support for CD-Audio)
    File license
    Fair use/fair dealing exception
  • Filename
    loonies-r41-cdrom.zip
    File size
    1.74 MiB
    Downloads
    46 downloads
    File comment
    Loonies 8192, r41 (Mixed-Mode CD-ROM with CD-Audio)
    File license
    Fair use/fair dealing exception

Reply 73 of 117, by alvaro84

User metadata
Rank Member
Rank
Member

(Damn. I have been pretty much looking forward to see this game working on a real retro rig since the topic was opened then what setup I build on my desk...? A Pentium+GUS of course. Too fast with no OPL2... so I'll have to try it later. But I see there were quite a few new releases since the beginning...)

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 74 of 117, by Tiido

User metadata
Rank l33t
Rank
l33t
thp wrote:

Yes, that makes sense, I do it in a similar way (i put all scancodes I read from port 0x60 into a ring buffer and then process all events in the main loop so I can generate "key down" and "key up" events, using the 128 byte array to filter out key repeat events). However, when I read the scancode from the keyboard controller (I use "in al, 0x60"), that byte will be removed from the input buffer, so even if I chain to the old INT 0x09 handler, it wouldn't have a scancode to read?

Keyboard buffer is a logical thing that DOS/BIOS creates itself and is not part of the keyboard controller (don't confuse it with controller's output buffer), reading $60 does nothing to it. In fact without calling the DOS functions afterwards (when chaining the keyboard IRQ) the buffer fills and you get beeps each time you press keys after that point. I have no ring buffer, only a 128 byte array with 1 key per byte and the IRQ handler sets or clears the bytes according to scancode that $60 provides.

Come to think of it, do I get that right? […]
Show full quote

Come to think of it, do I get that right?

  • INT 0x09: Hardware interrupt from PS/2 (but also AT?) keyboard controller, default handler = BIOS routine (would read from port 0x60, fill data into internal data structures for INT 0x16)
  • INT 0x16: Keyboard BIOS service, called by application or DOS, provided by BIOS (possibly overwritten by DOS for non-QWERTY keyboard layouts), can translate scancodes to ASCII characters
  • INT 0x21 (AH=0x0B / AH=0x07): DOS-provided routines, no press/release, no scancodes, just ASCII characters and extended keys (like kbhit() / getch())

Is INT 0x16 available also before DOS starts (not relevant for my game, but interesting for understanding)? Is INT 0x16 overwritten by DOS to provide the keyboard layout translation features (scancode->different keys, e.g. QWERTY/QWERTZ/Dvorak)? Now that you have mentioned INT 0x16 (something I didn't know about before), maybe it would be just enough to use those calls (query if key pressed, retrieve scancode event) and not hook INT 0x09 at all?

That's correct yes.

INT $16 is available prior to DOS and KEYB will overwrite the scancode to charcode translation stuff for non QWERTY+english layouts. I tried using $21 but it always seemed to be blocking type, no matter what I did the program waited until a key was actually pressed (But I don't really have any good documentation around either so perhaps I did something wrong). Going at INT $16 to get charcodes I had no sort of problems. I always make my programs follow scancodes for things that need to follow physical layout (i.e arrow keys and whatever is used for actions and whatnot) and charcodes for stuff that needs to follow logical layout like text entry.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 75 of 117, by Jo22

User metadata
Rank l33t++
Rank
l33t++

You're making quite a progress there, thp. I'm glad that the game works so well right now. 😀
Maybe I'll make another video with a 16MHz 286 in the next few days (if I have got the spare time to tidy up the room).

root42 wrote:
Jo22 wrote:

Cool video, thanks for sharing! 😀 I also like to use MS Mouse driver v6.24 (but mine is 6.24BZ - are they any different ?)
By the way, root42, may I ask you what kind of NC clone you are using ? I'm using NC 1.02 here on my 286.

Sören Kragh's DOS Controller. It is Freeware. However only download link I can find is an abandonware site, so I won't link to it. Advantages: written in assembly, extremely fast and small. Less than 60 KiB. Even less resident, iirc. Can edit files up to about 600 KiB in size, depending on your DOS memory.

Wow, thanks for the information. I'm a long time user of NC 1.x (since my youth/childhood), so NC clones do interest me a lot! 😁
First clone I saw was Northern Commander, then Midnight Commander (*nix) and Volkov Commander, of course.

thp wrote:

New build r41 with support for CD-Audio, tested in DOSBox.

That's impressive. Maybe you'll also include other -um.- exotic audio devices at some point ?
I'm curious how the music sounds as a chip tune (quare wave or "AM" instead of the OPL-2's FM).
CMS was part of Sound Blaster I and II, Tandy 3-Voice was available to Tandy users and via TSR for Covox plugs.
Anyway, I'm not going to dictate you anything, of course. Surprise us, if you like (in the future). 😉

Edit: Oh, and there was the Innovation SSI-2001, of course (used C64's SID). And the Sound Master (AY-3-8910 ?).
And OPL4, too. Not chiptune-ish, but it can be accessed on various cards directly. To play MIDI, for example: http://www.os2museum.com/wp/44-voice-midi-on-yamaha-opl4/

Edit: Again, it don't dictate you anything, don't wrorry. I'm just thinking out loud. i thought that maybe programming
one of them might be interesting for you. Of course, there are many more, too. Or maybe you'll make your own music device at
some point.. A lot of stuff, starting from a NE555 to an Arduino can be hooked up to the serial/parallel port of a PC.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 76 of 117, by Eleanor1967

User metadata
Rank Member
Rank
Member

I did a recording of the game (build 37) using an Ensoniq Soundscape S2000. They are attached below if you want to add those to your soundcloud. I would have also done a recording with my SW60XG, but its setup for adress 320 and your game sadly doesnt support doing that 😉

Attachments

  • Filename
    loonies.rar
    File size
    2.01 MiB
    Downloads
    21 downloads
    File license
    Fair use/fair dealing exception

Reply 77 of 117, by DevanWolf

User metadata
Rank Newbie
Rank
Newbie

I made the CT-460/CSM-1 and Miracle Piano versions of the music as well.

Filename
Casio CT-460 CSM-1 Loonies 8192 Music.zip
File size
2.12 KiB
Downloads
26 downloads
File comment
MIDI files for Casio CSM-1/CT-460/660 (for a future version of Loonies 8192)
File license
Fair use/fair dealing exception
Filename
Miracle Piano Loonies 8192 Music.zip
File size
2.11 KiB
Downloads
19 downloads
File comment
MIDI files for the Miracle Piano (for a future version of Loonies 8192)
File license
Fair use/fair dealing exception

I also created a MIDI serial port driver for the Miracle Piano Teaching System keyboard. I looked for one online but came up empty, but I made it from a modified Kawai GMRSNT serial driver by setting the baud rate to 9600. No other serial drivers (Roland, Yamaha, etc.) used this baud rate. Worked well on Windows XP. If your operating system or computer isn't compatible with or don't know how to install the driver let me know (if I can help you/make another one). The programmer for this game should add Serial MIDI at baud rate 9600 for Miracle Piano (not General MIDI) as an audio device option as well, otherwise use the MIDI interface.

Filename
Miracle Piano Serial Driver.zip
File size
9.12 KiB
Downloads
47 downloads
File comment
NOTE: If you installed the serial driver but the COM port selection dialog does not show up (and the driver says no driver for this device have not been installed), uninstall your current corrupted/in-use serial driver. (I had to uninstall Yamaha CBX Driver from Setup because it lost it's audio device for Yamaha CBX and cannot be uninstalled using Device Manager so the driver can work on my HP Compaq nc8430 running Windows XP.)
File license
Fair use/fair dealing exception

Alternatively, you can use this: http://projectgus.github.io/hairless-midiserial and set the baud rate to 9600, might want to use MIDI Yoke.
Sorry for the filesize limit, but I uploaded all the songs for each of my MIDI synths including the Scratch soundfont here on Google Drive. (thp, aren't you supposed to upload all my songs to your soundtrack?)
Note that the MIDI keyboards YPG-635, CTK-800, and CTK-2100 have no MIDI jack, so for connection is USB MIDI. USB flash drives can be hooked up to the YPG-635 and play MIDI files from the USB drive. The keyboards LK-100 and CTK-491 are partially GM compatible but a setting must be done from panel and there is no "All Notes Off" controller (but CTK-496/700 does), so a workaround is move the POWER/MODE slider to the other mode (e.g. Casio Chord then Normal).

I'll work on some more pre-GM synths to work support for this game later.

Attachments

  • Filename
    Loonies 8192 Music MIDI Rip.zip
    File size
    2.14 KiB
    Downloads
    19 downloads
    File comment
    GM MIDI files extracted from the Loonies 8192 game itself
    File license
    Fair use/fair dealing exception
Last edited by DevanWolf on 2018-08-30, 17:33. Edited 1 time in total.

Reply 78 of 117, by alvaro84

User metadata
Rank Member
Rank
Member

And, finally! I got to test the game (r41) on real hardware. I aimed pretty low as it claims to have a performance profile for 286s - so I tried it on the Real Thing.

Headland HT12/A chipset working in WS0, 16MHz AMD CPU, 2.5MB RAM (DIP+SIPP), SBPro2 for the music, and a variety of VGA cards. I had no apparent bug-like problems with any of these. To my surprise it pretty much worked with the dog slow 8-bit Intel Kama VGA (Landmark: 570kB/s) - it ran about as good as with a faster VGA (Tseng ET4000, Cirrus Logic GD5426) in 486 mode. So it didn't feel as responsive as in ideal conditions. I plan to try it on something faster too in the not very distant future. Some kind of 386, perhaps.

Other things: please please do something with the visibility! When the blocks go small romboids, especially of similar colors, I'm completely lost and play to survive until the next sprite switch... I think the game could use longer music pieces, or more of them.

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 79 of 117, by Jo22

User metadata
Rank l33t++
Rank
l33t++

^I second that: Game was playable with the 486 setting, too.
Just did another recording with my 16MHz 286, as promised earlier (+EMU386 loaded).
https://youtu.be/VZMme7Edx6s

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//