[HN Gopher] Pinball Fantasies assembly source code
       ___________________________________________________________________
        
       Pinball Fantasies assembly source code
        
       Author : velmu
       Score  : 82 points
       Date   : 2021-09-27 07:12 UTC (15 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | Radim wrote:
       | Developed 30 years ago and in Sweden, judging by the code
       | comments :)
       | 
       | https://github.com/historicalsource/pinballfantasies/blob/ma...
        
         | geon wrote:
         | > FELHANTERINGEN CP! (TMINSTONE OUT OF MEM)
         | 
         | The error handling is retarded! (At least out of mem)
         | 
         | > TONINGEN SKA INTE SLUTA P BAJSBRUNT UTAN P SVART!
         | 
         | The fade should not stop on poop-brown, but on black!
        
         | mcraiha wrote:
         | It also seems that there are some text conversion issues in
         | comments, since e.g. "anv,,nd" is not a word, but "anvand" is.
        
           | Delk wrote:
           | Looks like it might be encoded in code page 850, which was
           | commonly used in DOS at the time for non-English locales, at
           | least in parts of Europe.
           | 
           | On another note, it's interesting to see what appear to be
           | some kinds of todo items or task assignments in the comments
           | of fantasie.asm: things like testing on different kinds of
           | displays and computers. I guess the project management
           | toolbox was a bit less refined at the time.
        
             | egypturnash wrote:
             | The whole set of credits for the original Amiga version is
             | less than ten people: two programmers, one artist, one
             | musician, and a couple of producers. This port was done by
             | "FrontLine Design", who seemed to be three more people,
             | according to the text in intro.asm.
             | 
             | I'm not sure you _need_ a complex project management
             | toolbox for a team that size.
             | 
             | (Digital Illusions grew into DICE, who certainly does need
             | complex project management tools; I wonder how many of the
             | original members are still there.)
        
               | tpmx wrote:
               | "FrontLine Design" was also known as The Space Pigs in
               | the early PC demo scene (90-93).
        
             | hipnoizz wrote:
             | I remember reading about the development of Baldur's Gate
             | II - around 2000 I suppose, a rather big game, especially
             | for its times - and they supposedly tracked all bugs using
             | some kind of physical board and paper notes. I'm not sure
             | if that is true of course.
             | 
             | Pinball Fantasies was likely developed probably around
             | 1991-1992, so 8 years earlier. We are really rather spoiled
             | by nowadays tools (when we are not complaining about Jira
             | etc. of course). I also still remember rather horrible
             | crudeness of tools like Bugzilla or Mantis which were one
             | of the first tools in this area I worked with.
        
             | ftrobro wrote:
             | Project managing in assembler code, I love it. One of
             | Gabriels assignments is that he should test if the game
             | runs well on his dad's laptop.
        
           | TonyTrapp wrote:
           | The "conversion issue" is merely a display issue on GitHub -
           | I myself appreciate that the source files were uploaded as-is
           | and not converted to UTF-8. They are true relics of their
           | time and will look correct when viewed in the programs they
           | were intended to be used with.
        
       | krautsourced wrote:
       | For reference: https://www.youtube.com/watch?v=S-VT8Hs3OhY
       | 
       | It is so obvious from the style and music that a demo group (The
       | Silents) were behind this game. I'm still loving it to this day.
       | Missing getting boxes of demo discs :)
       | 
       | Also: https://www.youtube.com/watch?v=o96I_UfSdIU Man, Jesper Kyd
       | was great back then already...
        
       | snvzz wrote:
       | Great news, even if it's not the Amiga version, which is the one
       | I'd really love to read the sources for.
        
         | lukego wrote:
         | Yeah I was really excited expecting to see m68k Amiga code. Oh
         | well, maybe next time!
        
       | doublerabbit wrote:
       | How are the graphics created? Were they actually encoded as
       | bitmap values, or were they binary type files shipped with the
       | game?
        
         | TonyTrapp wrote:
         | They don't seem to be part of the repository. In the final
         | game, they were part of the individual tables' exectuables, my
         | guess would be that commands like `INCLUDELIB STONES.LIB` are
         | responsible for linking the graphics into the executable.
        
           | delusional wrote:
           | It's really a shame since that means you can't compile this
           | to a functional executable without significant effort.
        
       | banana_giraffe wrote:
       | This is cute:                   DB " HI HACKER!  PLEASE DON'T
       | CRACK THIS PROGRAM! IT WAS MADE BY"         DB " THE DEMO GROUP
       | TSP. WE NEED THE MONEY TO BE ABLE TO KEEP ON"         DB " CODING
       | GAMES FOR THE PC! THIS PROGRAM ISN'T HARD TO CRACK, SO"
       | DB " MAKE A DEMO INSTEAD TO PROVE YOUR SKILLS... IF YOU CRACK IT"
       | DB " WE WILL HATE YOU 4EVER!  HAVE A NICE DAY! :-) "
       | 
       | I remember back in the day I always loved seeing these little
       | messages in hexdumps of programs I was trying to understand.
        
         | TonyTrapp wrote:
         | I always particularly loved the tech scroller shown in-game:
         | TECHSCROLL DB 21 dup(1),'YEAH     YOU ARE PROBABLY WONDERING
         | HOW IT IS POSSIBLE TO MAKE A GAME LIKE THIS ON THE PC'
         | DB '                         FIRST OF ALL THE GAME IS CODED IN
         | 100 PERCENT ASSEMBLER LANGUAGE              '           DB '
         | WE RUN IN A SPECIAL VGA   320 X 240   OR   360 X 350   IN 256
         | COLOR MODE                        HARDWARE IS USED FOR
         | SCROLLING THE TABLE           '           DB '      THE
         | FLIPPERS AND DOT MATRIX SCOREPANEL ARE DELTA ANIMATED AND TO
         | MAKE THE GRAPHICS RUN FLICKER FREE WE ARE USING RASTER
         | INTERRUPTS                      THE PALETTE IS USED FOR
         | FLASHING THE LIGHTS      '           DB '
         | THE MUSIC ROUTINE HAS FEATURES SUCH AS SOFT CLIPPING AND
         | INTERPOLATIVE MIXING          '           DB '
         | ALTOGETHER THIS MAKES THE GAME POSSIBLE TO RUN ON A 12 MHZ 286
         | WITH SOUNDBLASTER MUSIC AT 16KHZ IN EACH FRAME'           DB 21
         | DUP (1),255
        
         | Jare wrote:
         | TSP = The Silents PC?
        
           | TonyTrapp wrote:
           | The Space Pigs, known for this demo among others
           | https://www.pouet.net/prod.php?which=3972
        
       | conradfr wrote:
       | I played that game a lot as a kid. Especially Party Land ...
       | because I liked the colors and the music.
       | 
       | And I wasn't that good.
        
       | hipnoizz wrote:
       | Pinball Dreams and Pinball Fantasies were my favourite pinballs
       | games on Amiga (and then Psycho Pinball on PC). I know that
       | nowadays e.g. Pinball FX3 provides so many bells and whistles and
       | boards... but I often find all these boards to be kind of
       | overloaded and so busy with animations, sounds and flashing
       | lights... Maybe it is like with football games - I understand
       | that FIFA or PES are much more complete games but the arcade
       | charm of Sensible Soccer makes it a winner for me.
       | 
       | This or just a nostalgia factor...
        
         | tomc1985 wrote:
         | Pinball FX3 is so hostile to regular gamers too. The level
         | select screen makes it really hard to see which tables you own
         | and which you don't (to incentivize you to buy more), until you
         | go and find them and add them to favorites column. There is no
         | way to filter the list by tables you own. I am so sick of this
         | upsell bullshit when I have already given them my money, and
         | even worse most of the list is licensed franchise bullshit for
         | properties I do not care about.
         | 
         | Also their ball physics feel weird. It has gotten better from
         | FX -> FX2 -> FX3, but still feels off. Their remakes of actual
         | tables seem to have a different physics model and ball
         | interactions feel a lot more plausible
        
         | legohead wrote:
         | the nostalgia factor for Dreams & Fantasies for me is mostly
         | the music & sfx. the game was fun, but the atmosphere from the
         | music brought it to a new level.
         | 
         | I still hear the laughing from Haunted Mansion [1] in my head
         | quite often.
         | 
         | [1] https://youtu.be/y6xfzwO8GdA?t=933
        
         | squarefoot wrote:
         | Same here, I loved those two games, graphics was excellent,
         | music too, and motion was incredibly fluid for a 8MHz machine.
         | The linked .asm code however seems rather x86 than M68K to me,
         | it's probably a late x86 DOS port. The PC port of the above
         | games was not bad, but it lacked the same smoothness of the
         | Amiga version and, if memory serves, music was a lot worse.
         | 
         | > but the arcade charm of Sensible Soccer makes it a winner for
         | me
         | 
         | +1. It was damn fun, as Kick Off had been a couple years
         | before. I have great memories of tournaments with friends; good
         | old times.
        
           | Narishma wrote:
           | I've never played the Amiga version but the PC version was
           | very smooth even on my old 286.
        
         | moepstar wrote:
         | >but I often find all these boards to be kind of overloaded and
         | so busy with animations, sounds and flashing lights
         | 
         | No, i think you're quite right - especially tables that don't
         | have a "real world counterpart" often don't make a lot of sense
         | to me, rules wise and also, have way too much going on, too
         | many gimmicks etc...
         | 
         | Real world emulations on the other hand most of the time have
         | really well thought out gameplay and lots and lots of replay
         | value.
         | 
         | I miss the days being able to go to an arcade or some random
         | pub and play a few balls...
        
           | hipnoizz wrote:
           | Which of the boards in Pinball FX3 you think are not
           | overloaded? Triggered by my recent visit in some pinball
           | 'museum' (me and my family spent like 3 hours playing on
           | various tables) I did a quick research about available
           | pinball games, then I played a little a bit those 2 tables
           | available for free in Pinball FX3 and demoed a couple of
           | others. But it was easier to achieve some 'competence' and
           | understanding and select favourite ones when you had 4 boards
           | in Pinball Dreams/Fantasies then in FX3 when you had few
           | dozens of them...
        
           | nthitz wrote:
           | https://pinballmap.com/ is a great resource for finding games
           | in your area though it's mostly US based
        
       | thewakalix wrote:
       | > (ILLEGAL SPARNING?)
        
         | aliswe wrote:
         | 1984!
        
       | flatiron wrote:
       | So weird. Todays ModernVintageGamer episode features this game
       | and then this pops up!
        
       | zxcvbn4038 wrote:
       | I was not familiar with this one -
       | https://www.youtube.com/watch?v=o3mQqdvm6lI
        
       | pavlov wrote:
       | The subroutine "set_360x350" (in fantasie.asm) brings me back to
       | teenage VGA hacking.
       | 
       | It starts with the standard 320x200x256c MCGA mode (13h), then
       | proceeds to tweak a few dozen video card registers into a
       | combination that produces a 360*350 frame buffer.
       | 
       | Just don't fry your CRT while trying to come up with the magic
       | register combo!
        
       | wpietri wrote:
       | Ooh, this is neat. Long time since I've had to read assembler.
       | The first thing that jumps to mind is wanting to read the tests
       | for this, which of course don't exist. In retrospect, creating
       | this seems herculean; there's so much knowledge about how it
       | should work that lives only in somebody's head, and only as long
       | as they can hold it all there.
        
         | jonny_eh wrote:
         | The nice thing about game development (at least back then) is
         | that once you ship the game, you can expunge all that info from
         | your brain. So as long as the game works when you ship it, no
         | need for tests to catch regressions.
        
           | pavlov wrote:
           | This model of development also meant cross-platform ports
           | were practically rewrites.
           | 
           | In practice it wasn't really possible to reuse code unless
           | the target platform had the same CPU and at least equal
           | graphics features (as was the case with e.g. porting from
           | Atari ST to Amiga). So every port started from scratch.
        
           | degenerate wrote:
           | That is, until your boss says " _Great job everyone! Time to
           | get started on Pinball Fantasies 2_ "
        
             | jonny_eh wrote:
             | Better hope it fails :D
        
       ___________________________________________________________________
       (page generated 2021-09-27 23:01 UTC)