Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Anarkavre

Members
  • Content count

    146
  • Joined

  • Last visited

Everything posted by Anarkavre

  1. Anarkavre

    Megalyth Brendt Pantley R.I.P

    RIP Megalyth. You were a good dude and I enjoyed talking with you on IRC.
  2. I have been working on a Doom RPG reverse engineering project for the past year. I started by creating some C functions and data structures to work with the game data files with help from Decoding Doom RPG and fraggle's .bsp file format documentation. I managed to figure out a little more of the file formats that hasn't been discovered yet and fixed some things that were slightly wrong. The custom engine I am creating is written in C++ and uses SDL and OpenGL. It supports VR for the Oculus Rift and Oculus Quest using Oculus Link. I am also creating a map editor which will support mods. There is still a lot of work to be done, but here are some early screenshots. Update 1 I implemented some of the UI for the status bar. The direction indicator changes based on the direction of the player and a message shows based on the target of the player. I plan to add optional enhancements like quickslot items. Update 2 I have made some more progress that I thought I would share. I have replicated 50% of the event scripting including things such as doors and dialog. I implemented pickup of weapons and rendering them from the first person perspective. The weapons also animate and play the sound effects when fired. Update 3 I managed to get the resources from the BREW version off my phone. Special thanks to @Erick194 and @kraze for showing me the tools necessary to achieve this. The J2ME and BREW resources are both supported by the engine.
  3. Anarkavre

    Doom RPG Reverse Engineering Project

    I'm sorry I have been gone so long, but I finally decided to release the Doom RPG Utility that I created. It contains all of the .h and .c files to read the game data files. The project is a bit rough still, but fairly simple to build. Feel free to ask me any questions if you have issues.
  4. @Erick194 This is wonderful news! If I can contribute any code from my early OpenGL and VR implementation, then please let me know. I'm sorry I have been on a long hiatus, but life got in the way.
  5. Anarkavre

    Doom RPG Reverse Engineering Project

    @kraze Thank you for the series of playthrough videos. They have been enjoyable to watch and valuable for making observations.
  6. Anarkavre

    Doom RPG Reverse Engineering Project

    Here is some more footage.
  7. Anarkavre

    Doom RPG Reverse Engineering Project

    @omalefico32x A lot of work is still needed before it is fully playable.
  8. Anarkavre

    Doom RPG Reverse Engineering Project

    Here is some footage of the VR mode.
  9. Anarkavre

    Doom RPG Reverse Engineering Project

    I uploaded the BREW versions of Doom RPG and Orcs & Elves to archive.org for preservation. You can contact me by private message for links or search for them on your own.
  10. Anarkavre

    Doom RPG Reverse Engineering Project

    @Forlorn @PROPHESSOR I will try to record some more videos when I have some free time. @/bin/cat Thank you for the information. I figured out enough of the bar file format in a hex editor to write a utility to extract the resources, but that clarified the things I wasn't sure about.
  11. Anarkavre

    Doom RPG Reverse Engineering Project

    @kraze I sent you a private message.
  12. Anarkavre

    Doom RPG Reverse Engineering Project

    Here are the last two videos. Revenant Belphegor
  13. Anarkavre

    Doom RPG Reverse Engineering Project

    Here are three more videos. Fire Nightmare Dr. Guerard/Kronos
  14. Anarkavre

    Doom RPG Reverse Engineering Project

    @Erick194 The phone is the Motorola V325.
  15. Anarkavre

    Doom RPG Reverse Engineering Project

    @fraggle I am going to document things I corrected and discovered about the game data files. Hopefully we can consolidate definitive documentation.
  16. Anarkavre

    Doom RPG Reverse Engineering Project

    @Erick194 I tried to do that early last year, but was unsuccessful. Unfortunately the model of the phone I have has a lock on the directory where BREW apps are stored, so you cannot copy any of the data off the phone in a simple manner. If anyone has any knowledge on this, it would be greatly appreciated. Until then, all I can do is share screenshots and videos. I do not want to risk bricking the phone.
  17. Anarkavre

    Doom RPG Reverse Engineering Project

    @InDOOMnesia No, this is the actual legendary BREW version of the game that I still have.
  18. Anarkavre

    Doom RPG Reverse Engineering Project

    You may find this video interesting.
  19. Anarkavre

    Doom RPG Reverse Engineering Project

    Thanks everyone! @Erick194 There is no gameplay yet, but you can walk around the maps and there is collision detection using the blockmaps.
  20. Anarkavre

    Game Engine Black Book: Doom

    There was an interview with Fabien Sanglard about the book.
  21. Anarkavre

    SIGIL v1.21 - New Romero megawad [released!]

    I hope he makes us his bitches again.
  22. Visplanes have always seemed mysterious, so I planned to write an article explaining them that was simple to understand. I went through all the related code and everything can be categorized into three stages: Generation, Mapping, and Rendering. I will explain the code for these three stages with simple explanations and visuals. Just a warning, parts of this require knowledge of algebra, geometry, and trigonometry, so brush up on those for a full understanding. So with that, let’s delve into the mysterious visplanes. Generation Each frame R_ClearPlanes is called in R_RenderPlayerView to reset data related to clipping, visplane generation, and texture mapping. I will come back to the part related to texture mapping in a later section. R_FindPlane is called in R_Subsector for both the floor and the ceiling. This checks to see if a visplane already exists with the same height, pic, (different for floor and ceiling) and light level of the subsector. If it cannot find one, it creates a new one with the height, pic, and light level of the subsector. R_CheckPlane is called in R_StoreWallRange for both the floor and the ceiling if they are visible. This checks if the plane selected earlier can be merged with the area it wants to render. If there is no vertical divide, the area is merged with the visplane. If it cannot be merged, a new visplane is created. As the linesegs are rendered in R_RenderSegLoop, the top and bottom of the visplane are marked for both the floor and the ceiling if they are visible. Mapping R_DrawPlanes is called in R_RenderPlayerView to draw all visplanes that were generated. If the visplane is for a sky, it will draw the sky as columns like the walls and the sprites since it does not have to be projected the same way as floors and ceilings. If the visplane is for a floor or ceiling, it will convert the columns into spans of pixels to be drawn. Figure 1 - Floor as columns Figure 2 - Floor as spans It does it this way because the strip of the floor or ceiling is at a constant depth and it helps save on perspective calculations that can be done once and used for the entire span. R_MakeSpans is called in R_DrawPlanes for each visplane drawn. It performs the conversion from columns to spans. When a span is ready to be drawn, R_MapPlane is called in R_MakeSpans. It performs the necessary perspective calculations for the span and caches them so they can be reused. The mathematics behind this is simple algebra, geometry, and trigonometry. We can find the distance to the strip of floor or ceiling using similar triangles and some known variables. We know the distance of the floor or ceiling from the player's view, the distance of the projection plane y the span is on from the center y of the projection plane, and the distance from the player to the projection plane. The distance from the player to the projection plane can be easily calculated. The player field of view is 90° which makes it a 45°–45°–90° triangle. The projection plane would be along the hypotenuse of this triangle. Figure 3 - Field of view and projection plane We can find the distance from the player to the projection plane using trigonometry. projectionplanedistance = (viewwidth / 2) / tan(90 / 2) = viewwidth / 2 The distance can then be calculated. distance = planeheight * projectionplanedistance / dy The step used for texture mapping can also be calculated. We know that the distance to the projection plane is equal to half of the width of the projection plane. This also applies for the distance to the strip of floor or ceiling. step = distance / projectionplanedistance We need to know the step in the x and y directions of world space. We can find these using trigonometry. xstep = step * cos(viewangle - 90) ystep = -step * sin(viewangle - 90) The last thing we need before rendering can happen is the point in world space where the strip of floor or ceiling begins. This can be found using trigonometry and some known variables. We know the player view x, the player view y, the player view angle, the view angle of the projection plane x where the span starts, and the distance to the strip of floor or ceiling. x = viewx + (distance / cos(xviewangle) * cos(viewangle + xviewangle) y = -viewy - (distance / cos(xviewangle) * sin(viewangle + xviewangle) Rendering R_DrawSpan or R_DrawSpanLow is called in R_MapPlane depending on the graphic detail mode set. It draws the span by stepping over the strip of floor or ceiling in texture space and sampling the texture at each discrete point. Figure 4 - Sampling points Figure 5 - Sampling points zoomed That is all there is to visplanes. They aren't very mysterious after all. I wrote a little demo that lets you watch a floor be drawn. You can also turn, move, and strafe. You can think of it as being a room with walls infinitely far away, so the visplane starts at the horizon which is the center y of the projection plane. The demo isn't exactly how Doom works, but it uses all the same mathematics that I explained. I hope you enjoyed this article and learned something from it. If I made any mistakes or errors, please let me know so that I may make corrections.
  23. Anarkavre

    The Definitive Guide to Visplanes

    I have not seen it, but I will read it. I was curious how they worked for use in my ray-casting engine. Once I learned everything, I thought the knowledge may benefit others. I was planning on writing this article for a few months. I had the figures, notes, and a rough draft, but I only wrote the full article today. I wasn't aware of anything that went in depth and I wanted to try to explain it as simple as possible.
  24. Anarkavre

    Doom on Halt and Catch Fire

    Did anyone else see Doom on the last episode of Halt and Catch Fire? There is a scene of a game conference and Cameron, one of the main characters, makes her critique of Doom. She has a negative opinion at first, but then her opinion becomes more positive when in a later scene she plays a game of deathmatch against Gordon, another main character. I had a feeling that Doom would eventually be mentioned or shown when there was a season set in the '90s.
  25. Anarkavre

    Eclipse

    I saw it in Gatlinburg, Tennessee. It was amazing when it was fully eclipsed.
×