Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - Wolf3D on SMS was possible?

Reply to topic
Author Message
  • Joined: 13 Jun 2017
  • Posts: 96
Reply with quote
Wolf3D on SMS was possible?
Post Posted: Tue Jun 13, 2017 11:53 am
Last edited by 386DX on Wed Jun 14, 2017 2:06 pm; edited 2 times in total
Hi,
do you think that something like the pc game Wolfeinstein 3D on the SMS hardware could have been done with some heavy optimization and a lighter engine? Or was just technically impossible?
I think the engine only should be opensource nowdays maybe some coder could try (not me I would not even know how to code something so complex).
Thank
Bye
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14732
  • Location: London
Reply with quote
Post Posted: Tue Jun 13, 2017 7:01 pm
It's known as a raycaster and it can be done at low resolution, small size and without textures. There is a Game Gear game, Face Ball 3000, which does this. It's a long​ way from Wolf 3D.
  View user's profile Send private message Visit poster's website
  • Joined: 08 Jun 2017
  • Posts: 5
  • Location: San Francisco
Reply with quote
Post Posted: Tue Jun 13, 2017 7:17 pm
386DX wrote
Hi,
do you think that the pc game Wolfeinstein 3D on the SMS hardware could have been done with some heavy optimization and a lighter engine? Or was just technically impossible?
I think the engine only should be opensource nowdays maybe some coder could try. :)
Thank
Bye


There's always a way, right? I'm not intimately familiar with SMS specs, but I've seen raycasters done on pretty weak systems to varying degrees of success. Like Mood for C64 is a really old one:



Or, The Dark for ZX Spectrum:


Both of these are rendering at a very low resolution though.

I'm not sure or not if it could have done this, which is probably closer to what you're envisioning:
  View user's profile Send private message Visit poster's website
  • Joined: 12 Jan 2005
  • Posts: 187
  • Location: Reconquista, Santa Fe, Argentina
Reply with quote
Post Posted: Tue Jun 13, 2017 7:53 pm
The Dark seems to be something different, not scaling or raycasting. Notice that the game doesn't have rotating walls but just overlapping blocks that are updated and possibly even replaced by larger ones as you get closer, or smaller ones when you walk away. Doesn't look like scaling at all.

Also, I guess the Spectrum hardware is a bit different. I have never seen sprite flickering but what I see is a lot of "jelly effect" when scrolling. Do the ZX Spectrum update the image in vertical lines instead of using sprites?

The fact that they are 8 bit computers (and teh Spectrum has the same processor as the SMS and with the same speed) doesn't mean they have the same capabilities.
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14732
  • Location: London
Reply with quote
Post Posted: Tue Jun 13, 2017 9:15 pm
Spectrum has a 1bpp memory mapped screen, no hardware sprites or scaling, so it's all CPU work. It looks like it's a super low res raycaster with approximately 8x8 blocks resolution, with textures in them to sort of hide the blockiness.

Raycasters draw in vertical lines, the jelly is probably the screen being updated across multiple frames.
  View user's profile Send private message Visit poster's website
  • Joined: 10 May 2016
  • Posts: 130
  • Location: Canada
Reply with quote
Post Posted: Tue Jun 13, 2017 9:55 pm
Wisdom Tree attempted to make Super Noah's Ark 3D (Wolf 3D) for the NES with an extra chip, but cancelled it due to the cost of adding the extra chip. I'm sure Wolf3D could've worked on the SMS even if it meant including a chip in the cartridge.
  View user's profile Send private message Visit poster's website
  • Joined: 25 Feb 2006
  • Posts: 874
  • Location: Belo Horizonte, MG, Brazil
Reply with quote
Post Posted: Wed Jun 14, 2017 12:13 am
Also, if you are a hardware guy, you can always "cheat" and add an ARM CPU to the cartridge:
Wolf 3D for GB
  View user's profile Send private message Visit poster's website
  • Joined: 25 Feb 2006
  • Posts: 874
  • Location: Belo Horizonte, MG, Brazil
Reply with quote
Post Posted: Wed Jun 14, 2017 12:25 am
BTW, a long time ago, I tried implementing a raycaster for the GameBoy; not much came out of it, but taking a look at the source can give you some ideas.
  View user's profile Send private message Visit poster's website
  • Joined: 30 Jun 2016
  • Posts: 196
  • Location: Melbourne, Australia
Reply with quote
Post Posted: Wed Jun 14, 2017 1:47 am
haroldoop wrote
Also, if you are a hardware guy, you can always "cheat" and add an ARM CPU to the cartridge:
Wolf 3D for GB

I was going to mention such a thing. You could probably get away with treating the VDP as a 64*48 framebuffer just with tilemap updates, and have that work smoothly with external assistance.

Of course, that does remove some of the charm of doing it unassisted.
  View user's profile Send private message Visit poster's website
  • Joined: 13 Jun 2017
  • Posts: 96
Reply with quote
Post Posted: Wed Jun 14, 2017 1:32 pm
haroldoop wrote
Also, if you are a hardware guy, you can always "cheat" and add an ARM CPU to the cartridge:
[Wolf 3D for GB[/url]

That's impressive! I didn't think that it could have been done on a console not meant to have an external on cartridge cpu like the SuperFX of the Snes.
  View user's profile Send private message
  • Joined: 13 Jun 2017
  • Posts: 96
Reply with quote
Post Posted: Wed Jun 14, 2017 1:37 pm
Last edited by 386DX on Wed Jun 14, 2017 2:06 pm; edited 1 time in total
haroldoop wrote
BTW, a long time ago, I tried implementing a raycaster for the GameBoy; not much came out of it, but taking a look at the source can give you some ideas.

It was just an idea, I could not write code that complex but I was just imagining a similar tech demo on the Master System, not enough skills.
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 3811
  • Location: Stockholm, Sweden
Reply with quote
Post Posted: Wed Jun 14, 2017 1:46 pm
Given that it's possible to use a subset of the screen as a bitmap, it is theoretically possible to do that. But I wonder what the speed would be.
Maybe keeping a very very small window... ?
  View user's profile Send private message Visit poster's website
  • Joined: 25 Feb 2006
  • Posts: 874
  • Location: Belo Horizonte, MG, Brazil
Reply with quote
Post Posted: Wed Jun 14, 2017 3:52 pm
Tales of Popolon (MSX) is a homebrew MSX cartridge game that uses raycasting. AFAIK, its performance is close to what one should expect from a pure software SMS raycaster.

There is also a NES Raycaster.
  View user's profile Send private message Visit poster's website
  • Joined: 28 Jan 2017
  • Posts: 556
  • Location: Málaga, Spain
Reply with quote
Post Posted: Wed Jun 14, 2017 4:40 pm
I think yes its possible.

Other thing is the framerate as i think you will have to paint all columns tiles every change (anf i mean columns, not rows, so will be even slower).

More interesting should be a 3d mode 7 like effect using sverx technique
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 3811
  • Location: Stockholm, Sweden
Reply with quote
Post Posted: Wed Jun 14, 2017 5:18 pm
eruiz00 wrote
More interesting should be a 3d mode 7 like effect using sverx technique


it's a few days I'm thinking about this. still, I'm not sure how to do that, as I'm not interested in monochromatic mode 7...
  View user's profile Send private message Visit poster's website
  • Joined: 28 Jan 2017
  • Posts: 556
  • Location: Málaga, Spain
Reply with quote
Post Posted: Wed Jun 14, 2017 5:48 pm
I have to say i have a sinple example which does a simplistic outrun like road with curves. Velocity is made redefining tiles. It was for a racing game which were posponed due to te platformer one i am working (was an error as i am learning a platformer is a hard thing to do, not also for perfomance troubles, also for gameplay concerns hard to clarify, and the racing one could be made yet).
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14732
  • Location: London
Reply with quote
Post Posted: Wed Jun 14, 2017 7:57 pm
Raycasters are column rendered but the VDP is very row oriented, plus with flat shading the column data is only really changing in a subset of the cells. Thus it might be better to render the scene to memory and then reduce it to deltas, to be emitted row-wise. There's still the possibility to have the delta be huge, and things like enemies have to be deal with too, but I suspect it would be playable, but probably fairly low frame rate (with small arenas and orthogonal, grid walls like Wolf 3D).
  View user's profile Send private message Visit poster's website
  • Joined: 28 Jan 2017
  • Posts: 556
  • Location: Málaga, Spain
Reply with quote
Post Posted: Wed Jun 14, 2017 9:36 pm
Yeah! I could have not explain better :) i think you can have four shading colorr (one for wall face direction) so could make visible the different walls. If a wall has not texture, you only have a full shaded tile for the wall middle tiles and some tiles for up and down sides ( for different angles based on perspective) of walls (although compute what to use is complicate) everything based on a 8 pixels width column raycast.... maybe could ask to john carmack :)
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 3811
  • Location: Stockholm, Sweden
Reply with quote
Post Posted: Thu Jun 15, 2017 8:02 am
eruiz00 wrote
based on a 8 pixels wide column raycast


yes, rendering the tile column into RAM and pushing it to VRAM tiles making them planar (as in RAM they would probably be stored in a "one byte per each pixel" way). This way it can have 16 colors too, and look great.
  View user's profile Send private message Visit poster's website
  • Joined: 28 Jan 2017
  • Posts: 556
  • Location: Málaga, Spain
Reply with quote
Post Posted: Thu Jun 15, 2017 12:42 pm
Question here:

You speak about 1 byte per tile... but this is not possible on vram, isnt it?
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 3811
  • Location: Stockholm, Sweden
Reply with quote
Post Posted: Thu Jun 15, 2017 1:14 pm
I only meant that when you render, you won't be putting the pixel directly to VRAM as SMS video memory is planar.
Thus you'll likely render to RAM where you'll keep each pixel in a single byte and then convert to planar from here, 8 pixels a time to push 4 bytes to VRAM.
In another topic here on this forum I was asking the fastest way to convert to planar, and Psidum suggested some very good method. Unfortunately it's still quite slow - each bit must be handled (moved) which is a killer as there are 4 bits for each pixel.
  View user's profile Send private message Visit poster's website
Reply to topic



Back to the top of this page

Back to SMS Power!