Fall 1997, Professor Yap
V22.0201.002, Machine Organization I
FINAL PROJECT
Proposal Due: Wed Nov 19, 1997 (Next Week)
Project Due: Wed Dec 10, 1997 (Last Class)
INTRODUCTION
The project is to write a game playing program.
It requires significant use of interrupts and
text or video graphics (based on material in
chapters 12, 15 and 16 of the text book).
Many of your basic needs
(random number generator, timer) will be
provided. We also give examples of mouse and sound routines.
The type of games you can program is really up
to your imagination.
This year, I plan to make it easier for people
to produce a substantial game without having to
begin from scratch. I will provide you with several
games (from previous classes), and you are to
improve them in significant ways. Our grading
will (TRY) not discriminate between whether you take
this route or build a game from scratch. There are
pluses and minuses, of course, which you can weigh.
This will be posted by the end of this week.
What I would like to see in your games:
interactivity, use of computer graphics
and some real-time elements (i.e., the player need to
respond within a reasonably short time span).
Hence it is unlikely that I will approve a
project to build a paint program or
a screen saver! But check with me first.
We will grade you favorably if you impress
us with something in your game. So do not be shy to tell
us of any nice features you have!
YOU MUST KEEP THIS DOCUMENT WITH YOU THROUGHOUT THIS PROJECT
FOR REFERENCE. WHEN IN DOUBT, ASK.
PROJECT TEAM
This project is to be accomplished by
a team of 2 or 3 students. As I said, there are
tradeoffs between having 3 (less work per person
but perhaps ability to tackle a bigger project)
or 2 (less problems of coordination and personality conflicts).
To be successful, please be
willing to be flexible and ``go the extra mile'' for your
partner (you never know when you might need your
partner's goodwill later). Remember: even
if you have difficulties with each other, it may be
to your advantage to cooperate.
If there are problems you cannot resolve, please
inform me and I will intervene.
PROPOSAL
You need to submit a proposal for your project.
The proposal is worth 20 points [-10 points if
you do not form your teams by Nov 17].
It can be submitted any time before
MONDAY (November 24). You must submit
the proposal by email. What is needed in your proposal:
- The length of your proposal should be about
one type-written page (when printed).
- Names of team members (names and email)
- Title of project
- User level description of the game:
- What does the user see on the screen?
- What is the objective of the game?
- How does the user play? (buttons? keyboard?)
- IMPLEMENTATION PLAN:
- What video mode will you use? (Why?)
- What technical tools do you need?
(set up interrupt vectors,
need random number generator,
need mouse,
need sound,
etc). You may need to read up
chapters 12,15 and 16.
- What user friendly features will you
implement?
(online help,
ability to set level of game,
etc)
- Divide the effort into two parts:
``basic features'' of the game (that
you know you can finish in time),
and ``advanced features'' (if
time permits). Be realistic even
about ``advanced features''.
FORMAT AND POSTING OF PROPOSAL: I am going to post your proposal
in a list for the rest of the class to view.
Hence your proposal must be conform to a basic
HTML format (ready for web posting).
Here is a sample proposal format
that EVERY ONE MUST USE (copy this file, and replace
the contents with YOUR own proposal.
Note that I intend to approve your proposal
almost instantly by email, unless I
find some problems. If your project starts to
deviate from your proposal, you need to obtain
my permission and perhaps resubmit a new proposal.
GENERAL PLANNING
Your project should be realistic for our time frame.
It is STRONGLY RECOMMENDED THAT you may want to only implement the
basic features of your game before trying to
implement advanced features (see proposal above).
Try to allocate the last few days of the project
to debugging, commenting and documentation.
It is silly to work so hard on the programming part
but then neglect this simple part which is easy to satisfy,
and which carries a significant part of the grade.
We suggest that you each delay any other ``optional''
activities for at least the last 2 weeks of this project.
POINT ALLOCATION: Our goal is to make this
grading process as predictable as possible.
We will, as usual allocate a certain number
of points to certain items. BUT some items are allocated
negative points. E.g., the COVER PAGE
of your report carries negative 20 points.
This means that if you fail to provide an adequate
cover page, up to 20 points are subtracted.
But no positive points are allocated for the cover page.
So your aim is to get 0 points for your cover page.
TO BE HANDED IN
Hand in the following 2 items in an envelop (sealed)
with the following information:
FINAL PROJECT, V22.0201.003, Yap
Your project name.
Your team names
It is your responsibility to keep extra copies of what you hand in,
and we suggest you put the envelop under my door rather
than in the mail box (we had one lossage in hw3).
ITEM 1: REPORT
This item is a SINGLE document that is placed between
proper covers [-5pts].
E.g., to get a SINGLE document,
I prefer a book-type binding, but I could accept
the use of binder clips.
You should prepare this report in the computer
and these computer files must also be submitted (see item 2).
PROPER ENGLISH [-20pts].
Please take pride in what you write -- we want to emphasize
that writing well is an important part of your education.
Make sure that you write in English!
For instance, each English sentence has a verb, not two and not zero,
and ends in a full stop (I have seen ``sentences'' that violate
such basic rules).
NOTE: Sorry we have to say this.
The grader reported some sloppy writing in your hw2
when you had to write some sentences.
The document must contain the following sections:
- COVER PAGE [-20pts]
This contains
(a) the course identification
(including semester, year, instructor),
(b) name of project,
(c) Team Member Names,
(d) ID's of each member,
(e) email addresses (must have),
(f) phones (optional).
(g) Signature of each member,
(h) and NOTHING ELSE.
- SECTION A: CONTENTS PAGE [5pts]
(a) A table of contents of document.
(b) A list of all the files in diskette.
(c) Name of program modules and
the PERSON(s) responsible for each module,
(d) Full credits to code or help obtained from elsewhere.
You must specify the source of any copied code, and tell us
where is the original code in your diskette.
If this is all original code, state the following
"THIS IS ALL ORIGINAL CODE".
(e) NOTHING ELSE.
- SECTION B: PROJECT OVERVIEW [10 pts]
B.1. Introduction: this is up to you.
B.2. The object of the game:
this can be modified from your proposal.
B.3. The user view of the game:
this can be modified from your proposal.
B.4. Highlight any interesting or special achievements.
- SECTION C: USER INSTRUCTIONS [10 pts]
C.1. How to install game (including requirements).
C.2. How to execute your program and play game.
Include instructions for quick
EXIT from the game (typing ESCAPE, for instance [-4pts].
C.3. Any features or hints for users to know about.
Tell the user of possible problems here.
- SECTION D: TECHNICAL PORTION [10 pts]
D.1. High-level technical description of your project (1-5 pages).
What kind of graphics, sound, mouse or other routines.
If you have done something nice, this is the place to tell me!
Here are some things of interest to us:
- which graphics mode and any special graphic effects,
- music and sound effects,
- mouse programming,
- interrupt programming,
- use of randomness,
- use of the timer or other ports,
- keyboard programming,
- recursive procedures,
- memory management (chap.14, including .com),
D.2. Summary of the different assembly modules:
how they are organized and related to each other.
What are the key functions in each module.
- SECTION E: CONCLUSION [5 pts]
Describe suggestions for future work (if had time, say).
Give suggestions about how you might do things differently
(a future student in this class may be able to benefit
from your experience).
Include any interesting experience while doing this.
- APPENDIX I: ORIGINAL ASSIGNMENT [2 pts]
Just a copy of this document.
- APPENDIX II: ORIGINAL PROPOSAL [2 pts]
Attache any any approved modifications as well.
- APPENDIX III: COMPLETE GAME PROGRAM [5 pts]
Copy of well-commented programs.
Each file should begin on a new page with the
name of the file at the first line.
If you have 5 files, say,
then you will have subsections III.1, III.2,..., III.5.
- APPENDIX IV: ORIGINAL SOURCES [-100 pts]
Copy of any programs that are not your own, that you
have used or modified for your project. Include
information on your source (e.g., ftp site where you
downloaded the code). You do
not need to include any programs taken from
our text book or which are provided by me.
Each section must begin with a new page.
No section or part may be omitted.
For instance, if you have nothing to say in Subsection B.1,
then insert the sentence
"Subsection B.1 is not applicable" (for instance).
ITEM 2: DISKETTE
The second item in the envelop is a 3.5'' diskette containing
the following information and files [20 pts].
- Label on diskette with class identification,
your team names and project name [-6 pts].
REMEMBER THAT WE GRADE MANY PROJECTS AND IT
IS EASY TO MIX UP DISKETTES FROM DIFFERENT PROJECTS.
- SUGGESTED FINAL CHECK: try to assemble your game and play the
game using the diskette which you hand in. Common
mistakes include:
(a) some crucial files are missing,
(b) you hand in the test version of a game,
(c) you hand in a debugging version of your asm.bat file.
- At the top level, we only want to see the following [-10pta]:
-
(a) A file README.TXT.
-
(b) The subdirectory BIN (for binaries and
executables).
-
(c) The subdirectory SRC (for source code)
-
(d) The subdirectory DOC (for documentation)
-
(e) Optionally, a subdirectory called DATA (for data files),
and/or graphic images.
-
(f) Optionally, a subdirectory called MISC (for anything
else that you want)
- [10pts] The file README.TXT can be
the COVER PAGE and SECTIONS A and B of your report above.
- The subdirectory called DOC contains your complete
report (ITEM 1 above), except for program files
which are already stored in the SRC subdirectory.
I prefer the files to be plain text, but if
you like, something like MS Word is fine.
- In SRC: the main module MUST be called GAME.ASM [-4pts].
- In SRC: there is a macro library called MYMAC.LIB [4pts].
Of course, we expect you to use this library
whenever possible.
- I want you to break up the game into several modules [8pts].
However, do not have more than 10 modules.
All the module name should begin with the letter `G'.
E.g., the modules might be
GAME.ASM, G_GRAFIX.ASM, G_SOUND.ASM, G_INPUT.ASM
that corresponds to the main module, graphics
sound, and input for the game, etc.
Each module must belong to a team member
who has the primary responsibility for it.
The initial comments for the module should give
this information.
- A subdirectory called BIN which contains your executables [-10pts].
- BIN contain an executable called GAME.EXE
must be present [-10pts].
- BIN contains a bat file called ASM.BAT to assemble
your game [2pts].
For instance, if your files are as in the
above example, then the ASM.BAT file might look like this:
TASM GAME + G_GRAFIX + G_SOUND + G_INPUT
TLINK GAME + G_GRAFIX + G_SOUND + G_INPUT
This file is for us, as well as for your own use.
(For your own debugging, you might want to
write another file DB.BAT which calls TASM
with /zi, /z flags, etc, and calling
the turbo debugger TD.)
- BIN contains a bat file called GO.BAT
which calls your GAME.EXE [2pts]. For many students,
the GO.BAT file simply contains the line "GAME.EXE".
But if your game needs to load the TSR program RANDOM.COM
which we provide, then your GO.BAT file might contain
the lines
RANDOM.COM
GAME.EXE
Some other games might have even more fancy setup.
- [-20 points] On the first screen of EVERY game,
the user should see this information:
<TITLE OF GAME>
<NAME OF TEAM MEMBERS>
Machine Org I, V22.0201.002, Fall 1997
CREDITS:
<...if you borrow code for anyone or source...>
<...or owe thanks to...>
<You may put other information here, if appropriate>
- If you have used programs or substantial fragments
of code from other sources, please put them
all under a subdirectory called SOURCES [-80pts].
- If your game requires data files, or will produce
files, please put them all under a subdirectory
called DATA [-4pts]. But files should be explained in
the CONTENTS SECTION of the REPORT.
- NO UNRELATED FILES may be on your disk [-10pts].
If you like, you can have a subdirectory
called OTHERS, and put everything else there.
E.g., hw1.asm, etc, should be in OTHERS.
GRADING
Besides the points already allocated for the above
items, we allocate the following points:
- If your game works properly, and
implements all the basic features in your proposal,
you automatically get 100 points.
If it works only partially, you get parts of 100 points.
You get 0 points if there are assembly errors.
In view of this, I suggest that you take our
suggestion to initially focus your effort on the
``basic game''.
-
Online documentation [20 pts]:
what we mean is that when I execute your
program, I will get an initial introduction
to your game (its name, its objectives, and how to
play it). This can be as simple as
printing a page of instructions at the beginning
of the game.
-
We allocate up to 30 points for additional game features
beyond your basic game. Be sure to tell us about them!
-
We allocate up to 20 points for making the game
more user friendly. For example:
- You allow me to have a quick but graceful
exit from the game (without having to
power down!). Or, I can
get out from a long musical preliminary (which
is nice but...).
- You give me several levels of playing ability.
- You ask me if I want to play the game again,
before quitting.
- You restore the original video mode
after quitting the game.
-
Comments and Inline documentation within the files [25 pts].
We look for overall description of the modules,
the procedures that you have
written and how they call each other, etc.
We normally do not read your code -- but based
on your high level descriptions, we may poke inside your code...
etc.
NOTES
- Please be aware that your game will
be used for my educational goals in future
courses. E.g., I will use it for demonstrations
and possibly put the code out for future
students to modify and improve.
- Instructions are strict:
It is hard to believe, but I had students
who do not submit proposals and are in no team.
At the last moment they hand me a
diskette (from a team of one).
This guarantees an automatic 0 for the project.
- Code re-use:
It should be clear that we encourage you to
reuse code you find elsewhere, provided you
do something new and creative with it. Here are some
caveats.
First, you should take over a major piece of code,
do some minor changes to it, and claim it is your
own. This is very serious plagiarism and
a university disciplinary problem.
Second, never use a piece of code without
fully understanding it yourself.
- Debugging:
re-read debugging instructions from our FAQs page.
You will need to do debugging more than ever.
Test each procedure
before you proceed to writing the next one.
It should be easy to do this
by writing a small main program (the book has many
such examples).
Go into the debugger to see what your procedure is doing.
Keep these test main programs around (but put them in the
subdirectory OTHERS), in case you want
to modify your procedures later!