Skip to content

Commit

Permalink
added LICENCE information and README
Browse files Browse the repository at this point in the history
  • Loading branch information
JetSetIlly committed Aug 7, 2021
1 parent c23f626 commit 8a2cc5c
Show file tree
Hide file tree
Showing 6 changed files with 153 additions and 13 deletions.
Binary file added .screenshots/first_screen.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 17 additions & 13 deletions 6507/cart.asm
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
; BSD 2-Clause License

; Copyright (c) 2021, Stephen Illingworth
;
; All rights reserved.

; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;

; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.

; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

processor 6502
include vcs.h
Expand Down
25 changes: 25 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
BSD 2-Clause License

Copyright (c) 2021, Stephen Illingworth
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
[Adventureland](https://en.wikipedia.org/wiki/Adventureland_(video_game)) is a game created by [Scott Adams](https://en.wikipedia.org/wiki/Scott_Adams_(game_designer)) and released commercially in 1977 for the TRS-80. The game has the distinction of being the first ever game to be released commercially and was the first in a serious of similar games by Adams.

This project a port of `Adventureland` to the `Atari2600`. Specifically, it is a port of the MS-DOS version, written in C (file `advland2.zip` downloadable from the [IF Archive](https://www.ifarchive.org/if-archive/scott-adams/games/))

<img src=".screenshots/first_screen.jpg"/>

The `advland.bin` file must be run on either a `Harmony` or `Melody` cartridge or in an emulator capable of emulating the ARM chip found in those cartridge types. [Stella](https://github.com/stella-emu/stella) is a good emulator for this and [Gopher2600](https://github.com/JetSetIlly/Gopher2600) is an alternative.

### Playing the Game

The game must be played with the `Atari2600` keypad plugged into the left player port. If playing with `Stella` you must manually set the controller to keyboard the first time you play the binary. if playing with `Gopher2600` the keyboard will automatically be detected.

Letters are entered in a similar fashion to how you would enter them on a phone keypad. For example, to enter the letter `G` you press the `4` button on the keypad. To enter the letter `O` meanwhile, you would press the `6` button three times.

The following list shows the keys with the corresponding letter groups. Note that letter groups will "cycle". For example, pressing the `2` button four times will select `A` (the letter group having cycled back to the beginning).

| Keypad | Letters |
|:------:|:-------:|
| 1 | special |
| 2 | A B C |
| 3 | D E F |
| 4 | G H I |
| 5 | J K L |
| 6 | M N O |
| 7 | Q R S T |
| 8 | U V W |
| 9 | X Y Z |
| 0 | space |
| * | delete |
| # | return |

The `1` key is special in that it accepts the currently selected letter and moves the cursor along. You only need to use this however if the next letter is in the same group as the current letter.

For example, to enter the word `LOOK` you would enter `L` by pressing the `5` button three times; the first `O` is entered by pressing the `6` button three times. The second `O` however (because it shares the same key) cannot be entered immediately and you must press the `1` button first.

It's tricky to describe but straight forward after some practice.

**The buttons quoted above refer to the buttons on the hardware keypad. If playing through an emulator you must consider which buttons on your computer keyboard correspond to the buttons on the keypad. See `Stella` or `Gopher2600` documenation for details.**

### Technical Details

As far as possible, the original C code has not been changed. Where it has been changed it is only for reasons of accomodating the limitations of the `Atari2600`. Changes made are documented in the `CHANGES.TXT` file in the `arm/advland` directory.

It is likely that some situations will cause the television image to roll briefly. This will depend on the television or emulator settings. The roll is caused by the advland program taking too long for the base 2600 hardware. Without changing more of the C code to accomodate these limitations there is very little that can be done to prevent this.

The `Atari2600` was in no way designed to display text so getting it to display `adventureland` is challenging. For this first version, I have written a very simple text renderer capable of drawing 15 columns of text. Each column can fit two letter `glyphs`, giving a 30 character display. The 15 columns are drawn in groups of five over three frames causing considerable flicker, so a television or emulator setting with high phosphor fade is recommended.

I believe it should be possible to have a 30 character display over two frames (rather than three) but I have not yet tackled that problem.

### Acknowledgements

Scott Adams for the original Adventureland

Morten Lohre for the C port


### Licence

All files with a licencing header are distributed under the BSD 2-Clause licence. All other files are (as far as I know) in the public domain.
26 changes: 26 additions & 0 deletions arm/glyphs.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
// BSD 2-Clause License
//
// Copyright (c) 2021, Stephen Illingworth
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// the amount to adjust the ASCII value by to correctly index the
// glyphs array
const int upperCaseAdj = 65;
Expand Down
26 changes: 26 additions & 0 deletions arm/main.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
// BSD 2-Clause License
//
// Copyright (c) 2021, Stephen Illingworth
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include <stdarg.h>
#include <defines_cdfj.h>
#include <advland_helpers.h>
Expand Down

0 comments on commit 8a2cc5c

Please sign in to comment.