Dimensional Dilemma Machine Problem

Amy M. Freestone
Adam Dukes
Sam Brown

     

Purpose of the Project

Create a short RPG which tells a story through a series of conversations with non-playable characters in the game. Utilize multiple segments to allow the entire game to written into a single executable file. Develop a system for storing information about events and their corresponding locations.


Basic Premise of the Game

You were running late for a very important engagement. On your way home, you noticed what looked like a good shortcut, and decided to take the chance. When next you are aware of your surroundings, you are no longer in this dimension. You have become trapped in another dimension with no idea of how you got there and no idea of how to return.
     Dimensional Dilemma tells your story as you struggle to find a way home, overcoming great obstacles during your journey.


Segments in Addition to those Normally Used

  • Maps: contains map data
  • Events: contains conversation and monster data

Variables

  • CurrentLocation: stores the current location of the hero on the map as the offset in Maps
  • CurrentMap: stores the offset of the map in Maps being displayed on the screen
  • CurrentMonster: stores the offset of the current monster in Events being fought
  • KeyValue: stores the scan code of a key
  • OrigKeyHandler: stores segment and offset of original keyboard interrupt handler
  • PrevKeyHander: stores offset or previous keyboard interrupt handler
  • HeroHP: hero's current HP
  • HeroMaxHP: hero's maximum HP
  • HeroMP: hero's current MP
  • HeroMaxMP: hero's maximum MP
  • HeroSpeed: hero's speed
  • HeroDefense: hero's current defense
  • HeroNormDefense: hero's normal defense
  • MonsterHP: monster's current HP
  • MonsterSpeed: monster's speed
  • MonsterDefense: monster's current defense
  • MonsterNormDefense: monster's normal defense

Procedures

  • InitInstallKey

    • Input: none
    • Output: none
    • Functionality: installs first keyboard interrupt handler and saves segment and offset of original one to OrigKeyHandler
    • Person Responsible: Amy

  • InstallCombatKey

    • Input: none
    • Output: none
    • Functionality: installs combat keyboard interrupt handler and saves offset of previous interrupt to PrevKeyHandler
    • Person Responsible: Amy

  • CombatKeyHandler

    • Input: none
    • Output: none
    • Functionality: handles keyboard interrupts during combat, storing the valud of a valid keypress to KeyValue - calls Quit when Esc pressed
    • Person Responsible: Amy

  • InstallDialogKey

    • Input: none
    • Output: none
    • Functionality: installs dialog keyboard interrupt hander and saves offset of previous interrupt to PrevKeyHandler
    • Person Responsible: Amy

  • DialogKeyHandler

    • Input: none
    • Output: none
    • Functionality: handles keyboard interrupts during dialog sequences, saving the value of a valid keypress to KeyValue - calls Quit when Esc pressed
    • Person Responsible: Amy

  • InstallMapKey

    • Input: none
    • Output: none
    • Functionality: installs map movement keyboard interrupt handler and saves offset of previous interrupt to PrevKeyHandler
    • Person Responsible: Amy

  • MapKeyHandler

    • Input: none
    • Output: none
    • Functionality: handles keyboard interrupts during map movement sections, storing the value of a valid keypress to KeyValue - calls Quit when Esc pressed
    • Person Responsible: Amy

  • RestorePrevKey

    • Input: none
    • Output: none
    • Functionality: installs keyboard interrupt handler at the offset stored in PrevKeyHandler
    • Person Responsible: Amy

  • UninstallKey

    • Input: none
    • Output: none
    • Functionality: installs original keyboard interrupt handler stored in OrigKeyHandler
    • Person Responsible: Amy

  • EnterDialog

    • Input: none
    • Output: none
    • Functionality: calls InstallDialogKey, ClearDialog, and otherwise prepares for dialog
    • Person Responsible: Sam

  • ClearDialog

    • Input: none
    • Output: none
    • Functionality: clears any text in dialog box
    • Person Responsible: Sam

  • DialogLine

    • Input:
      • BX: offset of string terminated with '$' that should be 28 printed characters or less for proper operation
    • Output: none
    • Functionality: prints dialog line at BX in the dialog section of the screen
    • Person Responsible: Sam

  • Conversations - many procedures

    • Input: none
    • Output: none
    • Functionality: set up and carry out conversation between hero and a character
    • Person Responsible: Amy

  • EnterCombat

    • Input: none
    • Output: none
    • Functionality: calls InstallCombatKey, DisplayCombatMenu, carries out combat with CurrentMonster
    • Person Responsible: Adam

  • MonsterAI

    • Input: none
    • Output: none
    • Functionality: causes CurrentMonster to attack hero
    • Person Responsible: Adam

  • CastHeal

    • Input: none
    • Output: none
    • Functionality: causes hero to lose 1 MP and gain 25 HP
    • Person Responsible: Adam

  • CastFire

    • Input: none
    • Output: none
    • Functionality: causes hero to lose 1 MP CurrentMonster to lose 10-MonsterDefense HP if bit 1 of [CurrentMonster+1] is 0
      • HP loss can be modified and preferably randomized.
    • Person Responsible: Adam

  • SwingSword

    • Input: none
    • Output: none
    • Functionality: causes CurrentMonster to lost 10-MonsterDefense HP if bit 0 of [CurrentMonster+1] is 1
      • HP loss can be modified and preferably randomized.
    • Person Responsible: Adam

  • DisplayCombatMenu

    • Input: none
    • Output: none
    • Functionality: calls ClearDialog, calls DialogLine to display combat menu
    • Person Responsible: Adam

  • HeroDies

    • Input: none
    • Output: none
    • Functionality: ends game when hero dies
    • Person Responsible: Adam

  • Fights - many procedures

    • Input: none
    • Output: none
    • Functionality: set up combat between hero and a monster
    • Person Responsible: Adam

  • DrawMap

    • Input:
      • BX: offset of map to be drawn
    • Output: none
    • Functionality: draws the map located at BX, saves BX to CurrentMap, calls InstallMapKey
    • Person Responsible: Sam

  • MoveDown

    • Input: none
    • Output: none
    • Functionality: calls CheckEvent, moves down on CurrentMap, saves location to CurrentLocation
    • Person Responsible: Sam

  • MoveUp

    • Input: none
    • Output: none
    • Functionality: calls CheckEvent, moves up on CurrentMap, saves location to CurrentLocation
    • Person Responsible: Sam

  • MoveRight

    • Input: none
    • Output: none
    • Functionality: calls CheckEvent, moves right on CurrentMap, saves location to CurrentLocation
    • Person Responsible: Sam

  • MoveLeft

    • Input: none
    • Output: none
    • Functionality: calls CheckEvent, moves left on CurrentMap, saves location to CurrentLocation
    • Person Responsible: Sam

  • Main Process

    • Input: none
    • Output: none
    • Functionality: basic framework of the program that calls other functions
    • Person Responsible: Adam

  • Quit

    • Input: none
    • Output: none
    • Functionality: ends the game
    • Person Responsible: Adam