Doom for Nintendo 64

Discussion in 'Nintendo Game Development' started by jnmartin84, Jul 3, 2014.

  1. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    NEWEST 64DOOM ROM BUILDER TOOLKIT RELEASE DATE: 2016 NOVEMBER 23
    "Newer, much faster Doom engine binary with mostly-fixed save game handling. There is a known bug where if you save a game, start a New Game from the Doom menu, then try to load your saved game, the game crashes. Loading games from the initial Doom main menu works fine however (reset the console after starting a new game if you wish to re-load your last saved game instead)."

    -----

    I have released all source code and build artifacts for 64Doom through a GitHub project that can be found at: https://github.com/jnmartin84/64doom as required by the GPL.

    Please find linked below the latest release of the 64Doom ROM creator toolkit.

    https://github.com/jnmartin84/64doom/blob/master/64DOOM_BUILDER.zip?raw=true

    PLEASE READ THE INCLUDED "README" FILE CAREFULLY BEFORE ASKING WHY YOUR BUILDS DON'T WORK. PAY SPECIAL ATTENTION TO THE LIST OF WAD FILENAMES.

    -----

    New features:
    0) Gamma correction is now user adjustable
    1) SAVE GAMES! Save and load full game state using Controller Memory Pak.
    2) Analog stick movement (D-PAD still works for movement as well, all other buttons still mapped to the same functions as before).
    3) Better instrument samples for music playback.
    4) Draws in 16-bit color mode instead of the 32-bit color mode used previously.
    -----

    Differences from last release:
    1) WAD files now go under "wadfiles" sub-directory.
    2) Identifier files now live under "identifiers" sub-directory.
    3) "make_doom.sh" now produces a Z64 file as output instead of a V64 file.

    -----

    Notes:
    If you plan on saving your game, make sure you have a fully empty Memory Pak (fully empty meaning 123 blocks free) to devote to Doom alone (one per each game version). I know with the 64Drive you can copy the mempak contents to one of three Virtual Paks. I personally have one Virtual Pak for Ultimate Doom and one for Doom 2.

    -----


    N64 controller mapping:
    ===============
    D-PAD UP / ANALOG STICK UP :: move forward
    --
    D-PAD DOWN / ANALOG STICK DOWN :: move backward
    --
    D-PAD LEFT / ANALOG STICK LEFT :: turn left
    --
    D-PAD RIGHT / ANALOG STICK RIGHT :: turn right
    --
    L TRIGGER :: strafe left
    --
    R TRIGGER :: strafe right
    --
    C LEFT :: switch to previous weapon
    --
    C RIGHT :: switch to next weapon
    --
    C UP :: toggle auto-map
    --
    C DOWN :: ENTER key
    --
    Z :: toggle run on/off
    --
    A :: shoot
    --
    B :: use (open doors, flip switches)
    --
    START :: ESCAPE key
    --
    L + R :: enable/disable debug output and GOD MODE
    --
    L + Z :: press 5 times in a row to skip to next level
    --
    R + Z :: increases gamma correction

    Doom 2, newest 64Doom release, direct audio/video capture thanks to Mike.Reiner at Doomworld forums:
    ===============================================================


    Doom 2 Ending Sequence, newest unreleased 64Doom build, on my personal N64/64drive:
    =======================================================


    Ultimate Doom, newest 64Doom release, on my personal N64/64drive:
    ==========================================


    Doom 2, newest build, on real Nintendo 64 hardware (thanks Borman!):
    ===========================================


    Doom shareware with MUSIC, newest build, on real Nintendo 64 hardware (thanks to Borman):
    =========================================================


    Doom shareware, recent build, on real Nintendo 64 hardware (thanks Borman):
    ===============================================
    https://www.youtube.com/watch?v=Z3UNtghoYLc

    Doom 2, older unreleased build, running emulated under MESS:
    ======================================
    http://youtu.be/JnbjASpSscM

    Some game-play video from a newer build (thanks to Borman for the caputure):
    ================================================
    https://www.youtube.com/watch?v=wUYV56L3I_s

    Another video capture by Borman (an older build):
    ==============================
    https://www.youtube.com/watch?v=MkI4elW730Q

    HD video of Doom 2 running under N64 emulation in MESS (cell-phone capture):
    ================================================
    http://youtu.be/CkJ8tIjxNPU

    All videos in one playlist, for comparison purposes:
    ==============================
    http://www.youtube.com/playlist?list=PL3y63jnDbX2-z6KNqK7_q49yN7Kzov1J3
     
    Last edited: Nov 23, 2016
    gwald likes this.
  2. root670

    root670 Robust Member

    Joined:
    Apr 4, 2010
    Messages:
    205
    Likes Received:
    17
    Making some progress at least. Are you using the official SDK or libdragon for this?
     
  3. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I used libdragon, mostly so I didn't have to roll my own ROM filesystem.

    I have written pixel buffer graphics, sound and input drivers for my own N64 projects in the distant past so I am sure I could get back to that point. The filesystem part always eluded me.

    -- begin old first post --

    I have been seriously working on porting Doom to Nintendo 64 for a few months now. I made my first attempt at it almost 15 years ago and made little headway. I've made a large amount of progress in the last 3 days. It boots and runs up through the main menu (first background transition is where it locks up). It works with the commercial version of the first Doom (DOOM.WAD) -- I think this is "The Ultimate Doom?"

    Some issues with trying to port this:
    lack of real debugger with symbol support (the debugger in MESS is not too useful in this regard) -- took forever to figure out why textures/patches weren't being found (memcpy wasn't working correctly in many cases, implemented my own)
    it runs really slow (about 4 minutes from first text on screen to rendering the game graphics -- the slowness seems to be in resource processing at startup)

    Will post updates as they come. Working from the old "linuxxdoom" code base as I have experience porting it to several platforms over the years.

    -- end old first post --
     
    Last edited: Jul 12, 2014
    gwald likes this.
  4. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I forced a palette update at startup and got this :eek: :D

    0084.png
     
  5. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I just un-commented out a bunch of code I commented out as part of my laborious print-debugging process (comment out code til it runs as far as I left the code in). Waiting to see if I get game graphics now.
     
  6. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Hahaha holy shit.

    0085.png
    0086.png

    It hangs at the second screenshot there, but that's a start!
     
  7. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I messed with a bunch of game variables before so I need to do a diff and see what I need to change back, but I think I should have something that is playable in a month's time.
     
  8. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Consider this the product of a few nights work starting on Tuesday and I would say not too shabby. Hope I can get it playable asap.
     
  9. Borman

    Borman Digital Games Curator

    Joined:
    Mar 24, 2005
    Messages:
    9,543
    Likes Received:
    1,880
  10. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I got past the hanging at title screen (had the wrong game version set in the code; had to switch to retail for Ultimate Doom instead of registered as I had it set to before). I am implementing controls now to see if I can get to gameplay!
     
  11. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Locks up when I select 'NEW GAME.' I saw the episode selection menu one time. Not sure where the lock up is now.
     
  12. saturnu

    saturnu Spirited Member

    Joined:
    Dec 8, 2011
    Messages:
    143
    Likes Received:
    29
    check out Chilly Willys libdragon version!


     
  13. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    I will take a look at it, but I am not too sure that any of those changes will impact my work in a significantly meaningful way. The most important thing I could get would be better debugging capabilities but that is more a limitation of my testing environment (running and debugging built ROMs in MESS) than the libraries I am using.
     
  14. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    My next step is probably going to be trying to hack up the debugging code in MESS so that I can load symbol information into it (at the very least function labels).
     
  15. lolzvid

    lolzvid Peppy Member

    Joined:
    Jan 27, 2012
    Messages:
    340
    Likes Received:
    11
    Awesome job, man!
    Keep up with the work (if you release a homebrew cart of your ports, maybe I could get one) dude!
     
  16. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Demos don't run in attract mode because they report as being for a different game version. Another step closer but no gameplay yet.
     
  17. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Menus make it crash. If I force it to 'autostart' it starts the first map and it is playable!

    0090.png
    0091.png
    0092.png

    Next step is figuring out why controls are unstable and seeing if it works with the shareware WAD. When I get a shareware build running I will post a v64 file for people to test with.
     
  18. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    It runs pretty smoothly even though it is under emulation. I took a video with my phone I am trying to figure out how to post. Mostly to demonstrate the Playstation 1-era loading times haha.
     
    Last edited: Jul 4, 2014
  19. jnmartin84

    jnmartin84 Robust Member

    Joined:
    Nov 11, 2013
    Messages:
    236
    Likes Received:
    31
    Note: Game freezes when you hit the last switch to exit the first level.
     
  20. justice99

    justice99 Spirited Member

    Joined:
    Nov 18, 2011
    Messages:
    123
    Likes Received:
    24
    Very impressive, keep us up to date!
    Thanks man!
     
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page