Angband 2.9.3L

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Gwarl
    Administrator
    • Jan 2017
    • 1025

    Angband 2.9.3L

    The L is for .live

    I've been working on updating 2.9.3 with some newer features and made a repository with my changes. The reason I chose 2.9.3 is because many variants, even those based on 2.8.1 incorporate many patches that were eventually added to Vanilla. So it serves as a starting point for refurbishing other variants (it seems that many variants stopped keeping up with vanilla changes after 2.9.3).

    Contribute to OwenGHB/angband-293L development by creating an account on GitHub.


    This removes most frontends and deprecates most others, besides curses. There are several patches to modernise the GCU frontend.

    L64 patch - There's a bug in older versions and variants of angband which causes them to fail on 64 bit systems, it was incorporated into 3.0.x and has been applied here

    xterm colour patch - At some point poschengband incorporated a colour scheme brought into V in 3.1.2v2 and I've gotten quite practiced at applying it to older variants which need it. 2.9.3 follows the same pattern as it is the pattern. This patch is incorporated here.

    bigscreen - Through laborious comparisons of 2.9.3, 2.9.4, 2.9.7 and 3.0.1, using the 2.9.0 bigscreen patch as a guide, I managed to reconstruct the changes which 3.0.1's bigscreen curses mode relies on, and added the option to play with a main term window larger than 80x24. Interestingly I noted that not all the hardcoded constants which the original bigscreen patch modified were updated in V - this is why gruesome software bugs still leap out from halfway down the screen - they appear on line 23 (Term->hgt-1). This makes a huge difference

    monster list - A feature already present in 3.0.6, copying the implemention from there was quite difficult as it would have relied on other fundamental changes, and I'm not sure I even like the 3.0.6 iteration that much. Instead I applied a patch for version 2.9.1 which hadn't broken compatibilty with 2.9.3 to provide a visible monster list subwindow. This is a little different, it applies color coding to enemies based on whether they are OOD, unique, OOD uniques etc

    Note that you can't use bigscreen and the monster list at the same time, as thus far you can either have a large playing area or subwindows, but not both. This is still the case in 4.x but the situation is different in poschengband and its forks - a GCU port upgrade I intend to bring to current V and then backport.

    I would also like to have [ as a command to see the monster list without needing to use a subwindow, present as a feature in 3.1.2 but with code in places that don't exist in 2.9.3. having an object list too might be nice for the sake of completeness. But that might not be strictly necessary - I have provided for an interface which help prevent offscreen deaths with

    The final change I intend to make is only really relevant to angband.live - character outputs. It would be nice to include the descriptive savefile headers from 3.5.0 and later to be read by the server but they rely on a savefile system brought in in 3.1.x. That might not be prohibitive but it does make things less straightforward. The alternative is to include the patch presently used for most variants on the site, which outputs the info to a .txt file

    This project can be used to set a standard for renovation of older variants. Kangband in particular is conformant to 2.9.3 codewise so it should be relatively straightforward to apply the same changes. Kangband has very pretty towns and I am looking forward to seeing them in bigscreen, as well as the Zangband 2.5+ wilderness.
  • Gwarl
    Administrator
    • Jan 2017
    • 1025

    #2
    And I almost forgot - thanks to Nick for creating AngbandPlus, which was an invaluable resource for this

    Comment

    • Nick
      Vanilla maintainer
      • Apr 2007
      • 9634

      #3
      This is wonderful, awesome work.
      One for the Dark Lord on his dark throne
      In the Land of Mordor where the Shadows lie.

      Comment

      • Pete Mack
        Prophet
        • Apr 2007
        • 6883

        #4
        There are some things that made it into very late versions of 3.0 that really belong in other variants, notably the knowledge menus from unangband. It is easily portable code, and unangband doesn't use the menu code, so its version of the knowledge menu works independently of it. (But the menu code makes other things easier, too.)

        Comment

        • Gwarl
          Administrator
          • Jan 2017
          • 1025

          #5
          Just ported most of this to Kangband 2.9.3r1 (no monster list yet) - possibly the first time it's been playable with a big screen?

          Contribute to OwenGHB/Kangband-293L development by creating an account on GitHub.


          Also up on angband.live

          Comment

          • Gwarl
            Administrator
            • Jan 2017
            • 1025

            #6
            I've managed to get zangband 2.4.0 to understand the difference between /pref/ and /user/ so that it functions properly on angband live, and it is a strong candidate for the next bigscreening.

            zangband included its own version of the bigscreen patch in 2.5.2 but the original fixed wilderness was removed for 2.5.0

            Comment

            • takkaria
              Veteran
              • Apr 2007
              • 1951

              #7
              Ah, this is very cool - 2.9.3 was current when I first encountered Angband. It's funny to see it resurrected.
              takkaria whispers something about options. -more-

              Comment

              • Gwarl
                Administrator
                • Jan 2017
                • 1025

                #8
                Originally posted by takkaria
                Ah, this is very cool - 2.9.3 was current when I first encountered Angband. It's funny to see it resurrected.
                2.9.4alpha incorporated the reportedly controversial JLE patch so 2.9.3 was arguably the last 'old' angband. Although having played some variants based on 2.8.1, and then playing 2.9.3, I suspect 2.8.1 was also more difficult.. (but won't compile until I pick up more tricks)

                The idea of anything older than 2.8.1 fills me with mild horror

                Comment

                • takkaria
                  Veteran
                  • Apr 2007
                  • 1951

                  #9
                  Originally posted by Gwarl
                  2.9.4alpha incorporated the reportedly controversial JLE patch so 2.9.3 was arguably the last 'old' angband. Although having played some variants based on 2.8.1, and then playing 2.9.3, I suspect 2.8.1 was also more difficult.. (but won't compile until I pick up more tricks)
                  I think by the time JLE was incorporated, it wasn't super controversial... it had been around for a few years already by that point. But like any significant change not everyone liked it. The spell list was significantly revised too - once every 17 years seems quite like a good pace to me.

                  The idea of anything older than 2.8.1 fills me with mild horror
                  After I removed Lua, the code from 3.0.6 closely resembled the code from 2.9.3. And there were a *lot* of cleanups after that. For example, the #defines around the custom int types were horrendous. I spent ages ripping out code for systems that were dead already 12 years ago and simplifying stuff, so it's funny to see you doing the same thing now, for the same platforms... But all that code was needed to get things working for someone, somewhere, on a some mainframe. It's funny now the dust has settled, desktop computers have peaked, and Windows/Mac/Linux are the only three platforms anyone cares about supporting, but at one point that didn't seem like an obvious outcome. O diversity has reduced a lot.

                  And it blows my sometimes that bits of Angband have existed in three different languages (probably more than one version of Pascal, and then C and Lua) over four decades. Ben Harrison did a very good job of turning code that still resembled the Moria - that was written in Pascal - into something readable. Even if by modern software engineering practices it's a total nightmare.
                  Last edited by takkaria; August 14, 2019, 00:48.
                  takkaria whispers something about options. -more-

                  Comment

                  • Gwarl
                    Administrator
                    • Jan 2017
                    • 1025

                    #10
                    Well, see the picture attachment for my motivation. Judging by the code as I found it, Kangband has never been run in a terminal with a main term window larger than 80x24 before, but it's very pretty.
                    Attached Files

                    Comment

                    • Gwarl
                      Administrator
                      • Jan 2017
                      • 1025

                      #11
                      just got done porting the customiseable gcu port subwindows code from poschengband into latest V (and 3.2.0 while 4.1.3 was giving me segfaults)

                      that will be part of the standard to work toward for restoring other variants, I've sent Nick the file so hopefully it'll appear in future updates. the modifications retain support for the much simpler (and less flexible) -n4 style syntax

                      now I am free to work on adding a site feature to allow the customization for variants which support it so I can customise my kangband subwindow layout

                      Comment

                      • Gwarl
                        Administrator
                        • Jan 2017
                        • 1025

                        #12
                        I've ported the subwindow handling to the following versions:

                        2.9.3, 3.2.0, 3.4.1, 3.5.1, 4.0.5, 4.1.3

                        which is a list still three shorter than the number on the site. I will get around to 3.0.6, 3.1.2v2 and 3.3.0 in due course.

                        Comment

                        • Gwarl
                          Administrator
                          • Jan 2017
                          • 1025

                          #13
                          2.9.3 updates: changed the monster list window colours to conform better to later versions (trivia: Tome2 uses the original, unaltered patch) and added a user interface option "toggle_xp" from Zangband (shows xp to next level rather than total in the character display)

                          Comment

                          • Gwarl
                            Administrator
                            • Jan 2017
                            • 1025

                            #14
                            I have compiled the Benbands!

                            Copying h-system.h from 2.9.0 over the versions present in 2.7.4-2.8.3 allows them to compile and from there just fix the L64 bug and you're set.

                            I also attempted 2.7.1v2 which is up on AngbandPlus despite rephial's claim that 2.7.4 is the oldest benband with surviving source code. This version still resembled older versions and while I could persuade it to compile it won't run. This version lacks 'gcu' or 'ncurses' support and only provides a frontend for 'Actual Unix Curses'

                            AngbandPlus also provided me with 2.6.1 (the archive present on rephial will not extract for me). This is a different beast entirely, and while I eventually got it to compile using subtle trickery, as with 2.7.1v2, it will not run.

                            2.7.4 is the first version which resembles angband in terms of file and code structure. By 2.8.0 it looks like angband as a game as well - previous to these points, angband looks like a moria variant, and not like angband.

                            Comment

                            • Gwarl
                              Administrator
                              • Jan 2017
                              • 1025

                              #15
                              Fixed an incredibly minor but incredibly annoying bug where the cursor wouldn't hide on the linux GCU port. It just *looks* nicer now.

                              Copied the fix from a 3.0.6 fix submitted by Alexander Ulyanov

                              Comment

                              Working...
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎