Announcement

Collapse

Forum Rules and Etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Rule 1: Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Rule 2: Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Rule 3: Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


Rule 4: "PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Rule 5: Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

Wolf3D hacked for 8086/8088 CPUs

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • maxtherabbit
    replied
    Thanks!

    Leave a comment:


  • JoJo_ReloadeD
    replied
    Originally posted by maxtherabbit View Post

    This link is dead. Does anyone still have a copy of this binary?
    http://vieju.net/pub/Retro/foro/Util...es/8087v20.zip

    Leave a comment:


  • maxtherabbit
    replied
    Originally posted by JoJo_ReloadeD View Post
    This link is dead. Does anyone still have a copy of this binary?

    Leave a comment:


  • NeXT
    replied
    FYI, it might of been better and faster to send him a PM instead of bumping a 10 year old thread. ;-0

    Leave a comment:


  • be3
    replied
    Originally posted by Mike Chambers View Post
    oh heck no, that's on a 3.4 GHz pentium 4 with windows 7. :P

    the raycaster is much smoother than that video makes it look though, it's because of camstudio when i captured it. get around 60-70 FPS. (which isn't that great considering the system i'm running on, and what it is)

    QuickBASIC isn't a bad system to work with, obviously i use it plenty with the TCP stuff and whatnot, but the compiler generates relatively slow code but yes with some ASM compiled OBJ files linked in, it can get pretty powerful.

    take a look at freebasic though if you like BASIC. it's amazing. it can compile for windows and linux. http://www.freebasic.net
    Hello, Mike Chambers, could you share source of 8086/8088 Wolf3D?

    Leave a comment:


  • Mike Chambers
    replied
    Originally posted by Andretti View Post
    That's pretty neat, was it running on an 8088? For BASIC, it was fairly smooth.

    You know, not many people would create a graphic program totally from assembly. When I use to play around with it, I built up a library of many small routines I could reuse. Anything time critical I used assembly with QuickBasic providing the front end. It was a great environment to work in.
    oh heck no, that's on a 3.4 GHz pentium 4 with windows 7. :P

    the raycaster is much smoother than that video makes it look though, it's because of camstudio when i captured it. get around 60-70 FPS. (which isn't that great considering the system i'm running on, and what it is)

    QuickBASIC isn't a bad system to work with, obviously i use it plenty with the TCP stuff and whatnot, but the compiler generates relatively slow code but yes with some ASM compiled OBJ files linked in, it can get pretty powerful.

    take a look at freebasic though if you like BASIC. it's amazing. it can compile for windows and linux. http://www.freebasic.net

    Leave a comment:


  • Andretti
    replied
    Originally posted by Mike Chambers View Post
    oh i'm pretty familiar with raycaster coding, i wrote this recently in freebasic from scratch
    That's pretty neat, was it running on an 8088? For BASIC, it was fairly smooth.

    You know, not many people would create a graphic program totally from assembly. When I use to play around with it, I built up a library of many small routines I could reuse. Anything time critical I used assembly with QuickBasic providing the front end. It was a great environment to work in.

    Leave a comment:


  • Mike Chambers
    replied
    Originally posted by southbird View Post
    Well, it wouldn't necessarily "eat up" any CPU if you rewrite the renderer from scratch for the new target. That's unfortunately about the only "sane" way to do it. I do have a description of a raycast renderer like it uses in a textbook somewhere... don't know how clear it is in the source... but the best performance would likely come from a new renderer.



    I figured as much. It would only be every cycle if it were doing palette animations or something.
    oh i'm pretty familiar with raycaster coding, i wrote this recently in freebasic from scratch:

    http://www.youtube.com/watch?v=CaUzyNQgUgc

    a couple minor graphical glitches, still working on it.

    i'm just not good enough with ASM to write one that'll perform well on an 8088. or write one in ASM at all. :P

    Leave a comment:


  • southbird
    replied
    Originally posted by Mike Chambers View Post
    and yeah that's why i didn't want to mess with EGA / CGA. the byte packing. it would be pretty interesting to see though. then i could try it on my supersport 8088 laptop which has a CGA built-in. i'd like to see that because the 8088 in it can be run at a turbo mode of 7.16 MHz instead of 4.77. the byte packing would eat up some CPU though.
    Well, it wouldn't necessarily "eat up" any CPU if you rewrite the renderer from scratch for the new target. That's unfortunately about the only "sane" way to do it. I do have a description of a raycast renderer like it uses in a textbook somewhere... don't know how clear it is in the source... but the best performance would likely come from a new renderer.

    the palette code is only used when fading in/out and the menu's red fades.
    I figured as much. It would only be every cycle if it were doing palette animations or something.

    Leave a comment:


  • Mike Chambers
    replied
    Originally posted by southbird View Post
    Yeah, that'd be the problem with a PUSH / SHIFT / POP thing is the cycle counts probably blow away any "optimization" you may have earned originally. Another idea is to try a less apparent operation to make up for a shift, if the shift is greater than four bits. Now, I've been doing 6502 asm as late, and haven't ever really done 8086 assembler (though I mean to get into that sooner than later!), but I'm thinking if you needed to do something like a logical shift right six bits, you could use a rotate left instruction accompanied by an AND instead...

    Starting Value: 11011100
    Target: Shifted right six bits = 00000011

    11011100 -> ROL -> 10111001 -> ROL -> 01110011
    01110011 -> AND #3 -> 00000011

    So two ROLs and an AND, instead of 6 SHRs (as apparently is the 8086 inst.) This should also work in reverse for a large left shift.

    That's just an example, I don't know what kind of shifts you're dealing with. But if the amount is greater than 4, and it's a LOGICAL not arithmetic shift, this type of trick will prove valuable. Saving, Loading, Restoring a register probably isn't going to net that much performance.

    Also, you mentioned a 768 byte copy. Is that done every frame or just in a while? Because if it's every frame, you MAY get a little bit of performance boost by unrolling that loop. (E.g. write 8 bytes 96 times instead of 1 byte 768 times.)


    Finally, porting to EGA or CGA -- shouldn't be IMPOSSIBLE, though I don't know if the "snow" problems of a CGA might cause trouble. The big deal is you'll pretty much have to rewrite the rendering code to deal with the different byte packing in 16 (2 pixels per byte) or 4 (4 pixels per byte) colors. That would be some pretty serious reprogramming. But, if you're dedicated enough...
    that's a good point about the shifts, but i haven't seen one that does more than 4 or 5 at a time. most of them are 2 or 3 at a time, and those i didn't even bother replacing because of the PUSH / POP you have to add onto it.

    and yeah that's why i didn't want to mess with EGA / CGA. the byte packing. it would be pretty interesting to see though. then i could try it on my supersport 8088 laptop which has a CGA built-in. i'd like to see that because the 8088 in it can be run at a turbo mode of 7.16 MHz instead of 4.77. the byte packing would eat up some CPU though.

    the palette code is only used when fading in/out and the menu's red fades.
    Last edited by Mike Chambers; September 16, 2009, 11:40 AM.

    Leave a comment:


  • southbird
    replied
    Yeah, that'd be the problem with a PUSH / SHIFT / POP thing is the cycle counts probably blow away any "optimization" you may have earned originally. Another idea is to try a less apparent operation to make up for a shift, if the shift is greater than four bits. Now, I've been doing 6502 asm as late, and haven't ever really done 8086 assembler (though I mean to get into that sooner than later!), but I'm thinking if you needed to do something like a logical shift right six bits, you could use a rotate left instruction accompanied by an AND instead...

    Starting Value: 11011100
    Target: Shifted right six bits = 00000011

    11011100 -> ROL -> 10111001 -> ROL -> 01110011
    01110011 -> AND #3 -> 00000011

    So two ROLs and an AND, instead of 6 SHRs (as apparently is the 8086 inst.) This should also work in reverse for a large left shift.

    That's just an example, I don't know what kind of shifts you're dealing with. But if the amount is greater than 4, and it's a LOGICAL not arithmetic shift, this type of trick will prove valuable. Saving, Loading, Restoring a register probably isn't going to net that much performance.

    Also, you mentioned a 768 byte copy. Is that done every frame or just in a while? Because if it's every frame, you MAY get a little bit of performance boost by unrolling that loop. (E.g. write 8 bytes 96 times instead of 1 byte 768 times.)


    Finally, porting to EGA or CGA -- shouldn't be IMPOSSIBLE, though I don't know if the "snow" problems of a CGA might cause trouble. The big deal is you'll pretty much have to rewrite the rendering code to deal with the different byte packing in 16 (2 pixels per byte) or 4 (4 pixels per byte) colors. That would be some pretty serious reprogramming. But, if you're dedicated enough...

    Leave a comment:


  • JoJo_ReloadeD
    replied
    Originally posted by Jorg View Post
    Do you actually have that V20 port somewhere?
    Because I just remember that my XT has a V20 installed.
    (and a 8087)
    here it is:
    http://vieju.net/pub/Retro/xt/wolf3d/8087v20.zip

    Leave a comment:


  • Jorg
    replied
    Originally posted by JoJo_ReloadeD View Post
    Nice work



    That's why I choose to make the port to the v20/v30's.. they handle SHL with multiple shifts a time.. Those bunch of shr xx,1 ... would overkill a 8088...
    Do you actually have that V20 port somewhere?
    Because I just remember that my XT has a V20 installed.
    (and a 8087)

    Leave a comment:


  • Mike Chambers
    replied
    alright go back to the first post and re-download. i've uploaded the last update i will probably do. i did the SHL/R _,CL optimization (haven't noticed a speed increase though) and the cheat menu is in there.

    Leave a comment:


  • Mike Chambers
    replied
    also, i just added a couple more options to my cheat menu.





    tomorrow i'll do the SHL/SHR _,CL optimization and upload the new EXE w/ the menu. all my cheats are tested and working.

    Leave a comment:

Working...
X