[Homebrew] Resident Evil: Hazardous Battle File #1

Discussion in 'Sony Programming and Development' started by Gemini, Nov 24, 2014.

  1. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    [​IMG]
    This is a homebrew game currently in development, RE1 gone arcade in a manner of speaking. This project is the result of a branch to my other RE project (Behind the Mask, a Gun Survivor remake in classic style) and it's completely based on a PSX engine I created years ago called Squeeze Bomb.

    [​IMG]
    The idea of the engine retooling comes from random brain storming sessions about turning a previous project of mine into some sort of game development library with Squeeze Bomb as a base. The core library stays the same while gameplay strays a lot away from its original design, and goes all the way to add 3D support with prerendered backgrounds. Technically speaking, this should be almost as advanced as most commercial projects barely relying on PSY-Q formats to achieve best performance.

    [​IMG]
    Due to the custom nature of the engine I was able to grab some updated RE1 assets from Deadly Silence and make them run smooth on hardware. Rendering code is currently capable of drawing a high amount of polygons on screen (around 1500-1600 gouraud polygons) thanks to micro optimizations, inlined GTE commands, and other funky stuff like register+cache abuse.

    [​IMG]
    Hazardous Battle is developed by me with support from my fellow SonicBlue, who also happens to be the background artist for Behind the Mask. He provided a terrible amount of help with designs about gameplay and interface style.

    If everything goes as planned, we should be able to release a demo by xmas or roughly around that period. What the demo will include:
    • Chris Redfield and Jill Valentine as playable characters.
    • A full battle scenario of Spencer's mansion, your mission is to make your way to the courtyard.
    • Zombies will be your main enemies, with some areas to have enemy respawn similar to Dino Crisis 2.
    • Yawn might be included as a mid-boss battle in the attic.
    • Weapons for Jill: Combat Knife (as a sub weapon), Beretta M92F, Arwen 37
    • Weapons for Chris: Combat Knife, Beretta M92FS, Remington M870.

    The full game will include other scenarios from RE1, a much wider array of enemies (even Sega Saturn exclusive creature 'Tick'), 16 weapons (including some special ones from REmake and RE1 for PC), and S.T.A.R.S. cast with a few exceptions (Brad, Edward, and Joseph).

    Random updates can be found on this twitter page.
     
    Last edited: Nov 24, 2014
    Ss4gogeta0 and 0rgon3 like this.
  2. Tommo92

    Tommo92 Rising Member

    Joined:
    Oct 8, 2014
    Messages:
    50
    Likes Received:
    4
    I'm not a dev but will you be releasing the source to your engine (if it hasn't got any licensed code in it)
     
  3. Lem

    Lem Newly Registered

    Joined:
    Nov 6, 2014
    Messages:
    2
    Likes Received:
    0
    Man, that looks good. Is it all built from stuff from other games or are you making any of your own assets?
     
  4. MottZilla

    MottZilla Champion of the Forum

    Joined:
    Feb 1, 2006
    Messages:
    5,066
    Likes Received:
    102
    Looks interesting. I hope you post updates here too.
     
  5. tkeely4777

    tkeely4777 Rapidly Rising Member

    Joined:
    Mar 9, 2013
    Messages:
    77
    Likes Received:
    5
    Very exciting! Fingers crossed that the project comes to fruition!
     
  6. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    Code doesn't fall into any licenses I'm aware of. As for releasing sources I still have quite a number of doubts, but I guess I could post critical stuff about PSX development. Still, when I did that years ago with Opera of the Red Moon it went quite ignored and this project extends API from Opera. Maybe times are a bit more mature now to make it work?

    It's partially brand new assets and other ones imported. Sonic and I sort of made also reworked assets from stuff that comes from other games or that simply aren't compatible with how the PSX works (i.e. the Saturn imported Tick, because of how Sega's consoles are totally weird when it comes to uv maps). A huge amount of pixel art and HUD elements were created by me.

    I mostly post brief snippets of updates on twitter, but I'll make sure to expand that information here and on the other board where I write news (The Horror is Alive, a RE themed site).

    [EDIT] Some brief updates from development:
    [​IMG]
    Sonic started trying to add a few rooms from REmake. So far adding extra elements to the background has been messy, but doable.

    [​IMG]
    This other one is about simulating better RE1 lights. So far so good, they should look identical for authenticity's sake.

    Final update, I'm done adding S.T.A.R.S. Beretta models, M92F and M92FS.

    [EDIT 2] Another update, this time in the form of video footage with Jill exploring the mansion:

    More tech info inside.
     
    Last edited by a moderator: May 25, 2015
  7. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    Time for a bump with 2 new videos showcasing enemy implementations (click for YT redirect):
    [​IMG] [​IMG]
    Most of their AI is done and emulates respectively RE2 and RE1 incarnations of Cerberus and T-002, they only need some minor polishing in general and sound banks. The T-002 video includes a golden Tyrant, some sort of personal homage to the Saturn exclusive yellow Tyrant. As usual more info can be found in description.
     
    Last edited: Dec 12, 2014
  8. MottZilla

    MottZilla Champion of the Forum

    Joined:
    Feb 1, 2006
    Messages:
    5,066
    Likes Received:
    102
    It looks very nice. Other than the lack of door animations and the on screen debug information it would be mistaken for a commercial RE game.
     
  9. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    Here goes another slice of Tyrant:

    This time it's the Berserk T-002 you'd fight on the heliport at the end of RE1. I changed some things in order for you to kill him with regular firepower instead of just the Rocket Launcher. The original would do some funny crap like restoring his health when it goes below zero and trigger that cutscene with Brad dropping the launcher. In the video there is also a slight moment when T-002 stops moving and rethinks his pattern if he can't perform a back-slash; I later changed that to make him walk again as soon as he's done with the animation, just to keep him a little more threatening/convincing.

    [EDIT] Latest video with Black Tiger: https://www.youtube.com/watch?v=dSikJjMPgos
    Trying to get Yawn implemented as well, but so far only making his body move is quite the ordeal. I may go an implement Plant 42 while I research for a solution that actually works.
     
    Last edited by a moderator: May 25, 2015
  10. szczuru

    szczuru Spirited Member

    Joined:
    May 12, 2010
    Messages:
    115
    Likes Received:
    0
  11. redopiate

    redopiate Rising Member

    Joined:
    Jun 30, 2012
    Messages:
    57
    Likes Received:
    0
    You wouldn't happen to have any information on the engine you used for this would you? Like information on getting a copy? :3
     
  12. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    This is actually based on my own PSX engine called Squeeze Bomb. You can consider it pretty much built from scratch tho, since most foundation modules have been completely rewritten or updated.

    [EDIT] Time to update this thread as well, while I'm at it:

    This reimplementation of Plant42 isn't completely working yet, but at least the way all those tentacles move and die seems close enough to the original, and you also get to see the FN Minimi. Now, since this boss was a bit too messed up in the original scripted behavior, I'm considering the idea of providing some different attacks, like an acid spit coming from those flower-tentacles instead of the usual slap+grab+dandruff fall.
     
    Last edited by a moderator: May 25, 2015
  13. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    I'm extremely amazed by all of this. I was looking to implement a Saturn Resident Evil clone, but got stuck with the 3D engine.

    As of now, I'm barely pushing 21,000 polygons/s (700 per frame)...
     
    Last edited: Feb 17, 2015
  14. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    That sounds like a very low amount even for the Saturn. Does it account for back face culling/normal clip removing invisible faces? My calculation ignores invisible polygons or otherwise it'd be almost double the count (roughly 3000 primitives processed).
     
    Last edited: Feb 18, 2015
  15. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    Yeah, it's fairly low, but I have no other figures on what average performance is on the Saturn. Back face culling is implemented and doubled the polygon count. But currently, it only does orthographic projection (with perspective, need the expensive divide by w). What do you mean by normal clipping? Hands down, my biggest bottleneck next to matrix multiplication is polygon sorting. It's what's bogging everything down.

    I can't think of anything else to do to optimize.

    [​IMG]



    On the engine itself, are you using the actual .RDT files from Resident Evil 1?
     
    Last edited: Feb 18, 2015
  16. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    Does it work any better with pure perspective? Ortho wasn't exactly ideal for 3D games - you can sort of simulate it with a very low FOV and a distant target camera.

    Same thing as back face culling: polygons aren't rendered if their points are in reverse order.

    I have my own room format generated from project files using yet another format. RE1 rooms have been converted to the meta format for manipulation, then turned into what the engine natively understands.
     
    Last edited: Feb 18, 2015
  17. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    What do you mean by does it work better? Do you mean faster? The model corruption you see is due to the polygon sorter. For your engine, are you using the OT? The PlayStation actually sorts polygons in hardware, correct?

    I'm definitely planning on adding that in. I have orthographic projection only because I wanted to get something up and running very quickly.

    Got it. I found implementing back face culling in object space to be much easier to grasp.

    That's great. I found some of the things in the RE 1 .RDT to be a little weird. I was mostly trying to figure out how it masking works, so I was curious if you implemented that.
     
  18. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    If you perform w transformation per-vertex, then yes, pure perspective is going to be faster, but if you use a matrix that has the Z row set to 0 then it should work exactly the same.

    Yup, it's pretty much the only way to sort everything, unless you send primitives right through the hardware registers (not recommended).

    It's simply sprites sorted at different OT levels in the same list as 3D primitives.
     
    Last edited: Feb 19, 2015
  19. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    Yeah, I'm using a software implementation of OT (bucket sort using insertion sort). Though it's not working very well because I haven't found a way to correctly spread out clumps of polygons over multiple buckets. Things begin to fall apart when dense objects are used (a single bucket gets populated with all the vertices rather than spread out).

    I'll have to look how it really works on the PlayStation. It kind of sucks no such feature is available on the Saturn.

    Oh, that makes perfect sense.
     
  20. Gemini

    Gemini Retro developer

    Joined:
    Apr 1, 2008
    Messages:
    406
    Likes Received:
    88
    It's a LIFO list split into any level of depth of your choice. An OT entry points to the first linked primitive, that primitive is linked to a next one, and so on until it hits the end of the chain. DMA fetches each primitive from the current pointer and sends a number of words from it specified in the tag attribute (this is how you make a Z level by walking through the full list). This method also allows for linked primitives, if they are adjacent in memory and only one tag is used to account for multiple strings of data. The only problem with this sort method is that you need packet data to be in memory until both frame buffers are filled. IIRC the Saturn SGL library doesn't need this as you can setup vertices, polygons, and attributes to be used straightaway, but this is extremely limiting in some regards.

    As for registering a primitive into an OT list, this is how it's done in my GTE code to sort a textured gouraud quad:
    - tag is a u32 pointer
    - si->tag is the primitives first 32 bits containing OT pointer in the lower 24 bits and size in the upper 8 bits (0x0C000000 means 12(+1) words).
    - ifo->otz is the z value returned by the GTE, which I shift by 4 in order to fit into an OT with 1024 levels of depth.
     
    Last edited: Feb 19, 2015
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page