VOGONS

Common searches


First post, by tarasque

User metadata
Rank Newbie
Rank
Newbie

Do you think that a demake of the famous game Canabalt would be possible on an original PC XT (8088 at 4.77) maintaining the same speed and even music? I know it was done for C64!

Reply 1 of 12, by vstrakh

User metadata
Rank Member
Rank
Member
tarasque wrote on 2023-10-30, 07:14:

I know it was done for C64!

PC XT has no hardware sprites, CGA can't scroll horizontally, so even if 8088 is more performant than 6502 - it has too much work to do, too many bytes to shuffle around in order to deliver the same kind of visuals. So I'd be pessimistic about the overall performance.

Reply 2 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

VGA might be able to do it. I remember watching various scrolling demos from the 90s.
They needed 286+, though, I believe. Maybe a V20/30 is enough as a substitute ?

PS: CGA.. CGA has CVBS out. How about superimposing?
The MSX2 video chip could be installed on an PC bus card..

Edit: See and learn. 🙂 http://msxbanzai.tni.nl/curiosity.html

"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 3 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Here's an example of a DOS game that was modified to use the MSX2 VDP of the SVI-838.

https://www.youtube.com/watch?v=Pjeq24_QNVk

It's Perry Mason: The Case of the Mandarin Murder.
Just have a look at Mobygames, it's an MS-DOS executable using the MSX graphics.

https://www.mobygames.com/game/1196/perry-mas … er/screenshots/

"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 4 of 12, by VileR

User metadata
Rank l33t
Rank
l33t

Yeah, a C64 is certainly much better equipped to handle this game than an original PC/XT (at least with CGA).

That said...
- CGA sure can scroll horizontally. It's limited to character (8-dot) increments, but the C64 version scrolls even more coarsely than that at 50 fps, and it still looks good. If you check out what games like Prohibition do on CGA/4.77 MHz at 60 fps, we're certainly not far off.
- The sprites in this game look fairly small, and if you keep the bandwidth and timing limitations in mind, you could probably do them justice in some fashion.

So my gut and experience tell me that the problem won't necessarily be with the scrolling and the sprites. Things like the static background that the C64 version has - now that's a tougher nut to crack (let alone the parallaxed layers in the original). CGA has no hardware assist for that... either everything scrolls or nothing does; keeping even a semblance of it would require some very tight code *and* some well-thought-out visual tricks of the "doing more with less" type.

Dunno what I'd do about the colors - probably mode 6 (black-and-white 640x200) using dither patterns. Or mode 5 on the composite output (=NTSC color burst disabled) to get actual greyscale, although that limits you to one particular type of display. Or nerf the whole thing down to text mode. 😁

The music though? Ain't gonna happen... not without a sound card.

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 5 of 12, by Zup

User metadata
Rank Oldbie
Rank
Oldbie

Sorry, but suddenly it seems very doable.

Some context: a spanish page (bytemaniacos) makes a BASIC contest every year. The entries may be plain BASIC or compiled BASIC for the ZX Spectrum, and this year someone made Boriel RUNNER, a mostly faithful recreation of Canabalt.

https://www.youtube.com/watch?v=hEENBpGEPRc

A ZX Spectrum is a computer that has a Z80A (8 bits microprocessor) running at 3.5MHz. It has 48K of RAM, and it does not have hardware sprites nor hardware scrolling.

So, if a very inferior machine can run this... why not your powerful IBM 5150?

I have traveled across the universe and through the years to find Her.
Sometimes going all the way is just a start...

I'm selling some stuff!

Reply 6 of 12, by vstrakh

User metadata
Rank Member
Rank
Member

ZX spectrum Boriel RUNNER is not quite the same.
There are three unrelated and non-overlapping areas, updated separately at different points in time. Nothing like multilayer parallax in C64 game. Sure PC/XT can do that, but the example in question is C64.
With VGA and reloadable fonts it should be possible to achieve that speed in text mode, the low number of colors helps here. But with CGA it's all quite limited.

Reply 7 of 12, by VileR

User metadata
Rank l33t
Rank
l33t

Yup, something like the Spectrum game could be done on an XT with no problem. It could be outdone by a fair bit actually, but it's the C64 version that was the comparison point.

As for doing it with CGA... insert a "challenge accepted" for some day when I get the time, maybe. 😁

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 8 of 12, by Zup

User metadata
Rank Oldbie
Rank
Oldbie

Do you want a PORT or a DEMAKE?

A PORT should be as faithful as the original; a DEMAKE should make the game like it would have been experienced if launched on that machine abiding to the limitations of that system.

So yes, there are differences:
- The game does not run at 60 fps. Even trying to run it at 50 fps in the Spectrum would be a challenge. So you have that chunky movement feeling that you could feel on many games of the era.
- As you said, the parallax is made using non-overlapping areas. Again, many games did that trick. As an example, Commando Tracer (a game from that era) had three non-overlapping planes.

So I guess that if Canabalt was released on PC about 1982 through 1985, it would not have had a three overlaping plane parallax with overimposed score (and some other details like the birds). I guess they would have gone the "cheaper" way (i.e.: less planes, some bezel that had the scores, and maybe it had three lives instead of one). Having a bezel would have had the added benefit of reducing the number of pixels to draw (via reducing the playable area).

Also, keep in mind that this game was made in compiled BASIC, so it runs through a runtime (way faster than the BASIC interpreter, still slower than making that thing in pure assembler). I guess that making it on assembler could result in a faster game or a similar speed game with better graphics (i.e.: making a two plane parallax scroll).

Sure that the C64 clone is better (note that the score is not overimposed, and that there are only TWO parallax planes), but you don't have to mimic every aspect of the game.

I have traveled across the universe and through the years to find Her.
Sometimes going all the way is just a start...

I'm selling some stuff!

Reply 9 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

How about making a new CGA graphics card based on the NEC µPD7220 ?
https://en.wikipedia.org/wiki/NEC_%C2%B5PD7220

It was used in Soviet Union, even.
And strictly speaking, it's what the original CGA controller should have been, anyway.
Too bad it wasn't cheap enough for IBM to consider it.

Existing, BIOS supported CGA modes can surely be supported, just like it's done on EGA/VGA.

"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 10 of 12, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie
Zup wrote on 2023-11-01, 13:08:

So I guess that if Canabalt was released on PC about 1982 through 1985, it would not have had a three overlaping plane parallax with overimposed score (and some other details like the birds). I guess they would have gone the "cheaper" way (i.e.: less planes, some bezel that had the scores, and maybe it had three lives instead of one). Having a bezel would have had the added benefit of reducing the number of pixels to draw (via reducing the playable area).

Very good point!
There was plenty of multiplatform games in the 80s, but nobody was expecting miracles - it was obvious that ZX Spectrum version can't be indentical to the IBM PC version of the same game, see eg. Sim City:

simcity-spectrum.png
Filename
simcity-spectrum.png
File size
5.06 KiB
Views
824 views
File license
Fair use/fair dealing exception
simcity-ega.png
Filename
simcity-ega.png
File size
20.17 KiB
Views
824 views
File license
Fair use/fair dealing exception

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.

Reply 11 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

^The 68k version of Sim City was even better than the PC version, maybe.

Attachments

  • simcity.png
    Filename
    simcity.png
    File size
    91.96 KiB
    Views
    806 views
    File comment
    Sim City for Sharp X68000
    File license
    Fair use/fair dealing exception

"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 12 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Another idea that comes to mind, use an EGA/VGA graphics card and upload a custom font.
By modifying the character set, you can essentially have your own sprites/tiles in text-mode.
DOS tools by Central Point and Symantec used that to draw their GUIs (TUIs).

Since no individual pixels must be moved, but whole predefined graphical blocks can be chosen, it's less stressing to the system.
Even a slowpoke like an 4,77 MHz XT might be up to the task.

Edit: Or if period-correctnes is important, how about an Hercules Plus?
It has a soft font feature, I heard. Maybe that can be used in a similar fashion?

Edit: Or if CGA must be used no matter what, how about using some sort of mapper chip?
It could be installed on an 8-Bit "ISA" card and assist at scrolling/shifting picture data.
Maybe a shift register can be used, somehow?

Or, the unused Hercules video page could be made available in a CGA-only system.
Just add some 32 KB of RAM or more on that card and map it in at the right location.
That way, CGA has a second page to draw onto silently in the background.

Activating the "other page" is another story, of course. Not sure if the CGA has a provision to specify frame buffer region. 🤷‍♂️
Maybe a simple binary copy to currently active CGA video memory is fast enough?

Edit: I forgot, CGA uses an alias for frame buffer location. Hm. That's bad.
Maybe that can be fixed, somehow? Or do actual applications depend on the alias?

Edit: Please forget what I wrote, I didn't think it through.
The alias issue only applies if we're at 32 KB total, not if we're at 2x 32 KB of video memory (CGA uses 2x16 KB due to aliasing).

Edit: But the idea with two video pages is still interesting, maybe.
Isn't that what CGA emulators on Hercules systems use?
It seems to be fast enough on real hardware.

So how about natively using Hercules graphics for the game instead of targeting CGA here?
That C64 port/demake of Canabalt is grayscale, isn't it?
A Hercules card might be good enough to draw such graphics.
The second video page could be used like in Commander Keen 4 on EGA systems, maybe?
Draw one page, display the other?

"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//