Jump to content
IGNORED

Adventureland


JetSetIlly

Recommended Posts

I've had a go at porting Scott Adams' Adventureland, mainly out of interest to see if this kind of text adventure was possible on the 2600.

 

first_screen.jpg

 

 

It's a more or less straight compile (some changes) of the C version of Adventureland to ARM.

 

I added the main ARM program which:

  - accepts keypad input by cycling through groups of letters (phone pad style)

  - packing letter glyphs into datastreams (two glyphs per datastream)

  - does some basic word wrapping

 

The 6507 program meanwhile renders the 15 datastreams producing a 30 column text display. For this first version, the renderer is very simple and works over three frames so a slow phosphor fade is recommended.

 

Adding a more advanced text renderer (ie. one that works over two frames) should be possible It's just a case of reading and ordering the 15 datastreams appropriately and you shouldn't need to touch the ARM program.

 

Binary and source on github.

 

https://github.com/JetSetIlly/Adventureland-2600/

 

As I say, I wrote it out of curiosity and experimentation but it might prove fun to play.

 

Edited by JetSetIlly
  • Like 9
Link to comment
Share on other sites

2 hours ago, JetSetIlly said:

I've had a go at porting Scott Adams' Adventureland, mainly out of interest to see if this kind of text adventure was possible on the 2600.

 

first_screen.jpg

 

 

It's a more or less straight compile (some changes) of the C version of Adventureland to ARM.

 

I added the main ARM program which:

  - accepts keypad input by cycling through groups of letters (phone pad style)

  - packing letter glyphs into datastreams (two glyphs per datastream)

  - does some basic word wrapping

 

The 6507 program meanwhile renders the 15 datastreams producing a 30 column text display. For this first version, the renderer is very simple and works over three frames so a slow phosphor fade is recommended.

 

Adding a more advanced text renderer (ie. one that works over two frames) should be possible It's just a case of reading and ordering the 15 datastreams appropriately and you shouldn't need to touch the ARM program.

 

Binary and source on github.

 

https://github.com/JetSetIlly/Adventureland-2600/

 

As I say, I wrote it out of curiosity and experimentation but it might prove fun to play.

 

… maybe input in combination with this (but it needs cartridge slot - only data through a cassette player). 

 

3CC55207-AEB8-444A-AD44-AB6C50D8F51D.jpeg

Edited by Bomberman94
Link to comment
Share on other sites

2 minutes ago, CrazyChris said:

Why not assign one key per word on the keypad? Like, a key for North, South, Look, Inventory...

 

Yes. I thought about using the second keypad in this way. Another possibility is the paddle to quickly scroll to the correct letter. All good ideas to experiment with.

Link to comment
Share on other sites

8 minutes ago, Bomberman94 said:

With „normal“ joystick input there is actually no way to enter a command, right? I tried but…

 

No. There isn't.

 

8 minutes ago, Bomberman94 said:

but nice characters - good readability with not too much flickering. 

 

I think we can get the amount of flickering much lower. It would be nice to replicate this rendering kernel for the game.

 

 

  • Like 1
Link to comment
Share on other sites

  • 2 years later...

I was getting a bit overwhelmed with my other current project (not Gopher2600) so I decided to chance pace this weekend and picked up Adventureland again. I thought it would be interesting to see if I could improve the text rendering.

 

I've made a start at least. It's not a 36 character display like in the @Omegamatrix demo but for Adventureland I don't think the display needs to be that wide.

 

(Happily, I've also reduced the flicker to just two frames, rather than three, which was an ugly hack and an unforgivable heresy)

 

To compensate for the relatively narrow character display, I've managed to implement what we might ambitiously refer to as proportional fonts and kerning. New image below.

 

16999cca5857d9d3.thumb.jpg.8f6f79aff477f83ced90aab4a7280cf6.jpg

 

And one without the CRT effects

pix_composite_advland_20231225_223309.thumb.jpg.22e2221832a1516433db46ce50a37467.jpg

 

With a good lower case set of letters I think we can improve things even more. But I've found it challenging to come up with anything

that looks good across the entire alphabet. If anyone wants to help me and offer a lower case set then I'd be happy to take a look.

 

Maybe I need to increases the height of the glyphs. At the moment I've limited them to 5 "pixels" high and 3 "pixels" wide. I could add

support for lower case descenders (the bit that goes below the line, like in a lower case g), that would probably help.

 

I've also decided that if I were to ever complete this project, I need to ditch the keypad support. I think an on screen keyboard and joystick

would be better. Maybe keyword selection?

 

Link to comment
Share on other sites

10 hours ago, RevEng said:

Have a look at the fonts that @SpiceWare and some others came up with. Some of the resolutions use a line or two for descenders, but the smaller ones like 3x5 use raised descenders, and it looks fine to me.

Thanks. They look great. As a first attempt, this is what the first screen of Adventureland now looks like

crt_composite_advland_20231226_112213.thumb.jpg.0880e8a360cacef7a953ff1fb665fe24.jpg

 

Where I can, I've added kerning information for some letter combinations. For example, 'T' and 'e' are closer than they would normally be. Also 't' and 's'. The question mark is also closer to the 'o' of 'do'

 

I think it's readable. I'll do some more work on the fonts and change the lower case letters so that they can descend below the baseline.

 

  • Like 2
Link to comment
Share on other sites

Christmas break is over so I'll package up what I've got. I've added an on-screen keyboard, controlled by the joystick. This is a lot easier to deal with than the keypad, although I reckon I could improve this by replacing the keyboard with some way of selecting keywords. But it'll do for now. This isn't a serious project, just something to play with really.

 

https://github.com/JetSetIlly/Adventureland-2600/releases/tag/v0.2

 

https://raw.githubusercontent.com/JetSetIlly/Adventureland-2600/master/.screenshots/first_screen.jpg

Edited by JetSetIlly
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Wow - I really like this one. It works well IMO with joystick control only - fast and intuitive. 
 

Maybe some suggestions:

- if I remember right (adventures played many years ago) you can simply type „e“ for example to go to the east (here you must type „go e“)

- if you typed in too much letters, some characters remain at the right until a new command (like here the „d“ from „sand“)

- if you type „q“ (or quit) the screen turns black with no chance to reset/return to a new game

- colors doesn’t really matter here, so here’s a screenshot from my PAL Atari 2600 (I like this blue - reminds me of my C64 😅)

 

 

IMG_0229.jpeg

Edited by Bomberman94
Link to comment
Share on other sites

51 minutes ago, Bomberman94 said:

Wow - I really like this one. It works well IMO with joystick control only - fast and intuitive.

Thanks. It's just an experiment really but if you're finding that it's playable then that's great too!

 

47 minutes ago, Bomberman94 said:

Maybe some suggestions:

- if I remember right (adventures played many years ago) you can simply type „e“ for example to go to the east (here you must type „go e“)

I'm using the MS-DOS version of Adventureland and recompiling it for the ARM chip. I've added the 2600 specific parts of course but the way the game flows hasn't been changed. There are probably other implementations of Adventureland that allow you to just type "e" for "east" but not the version I'm using.

 

An interesting solution to this would be to allow the second joystick to be used to input direction. So left player for typing and right player for compass movements.

 

53 minutes ago, Bomberman94 said:

- if you typed in too much letters, some characters remain at the right until a new command (like here the „d“ from „sand“)

Thanks. I can fix that.

 

54 minutes ago, Bomberman94 said:

- if you type „q“ (or quit) the screen turns black with no chance to reset/return to a new game

Interesting. I hadn't thought about "quit". I'll see what I can do.

 

 

Thanks again for the feedback 🙂

  • Like 1
Link to comment
Share on other sites

5 hours ago, JetSetIlly said:

@Bomberman94 I've fixed the issues you identified. I've also added the ability to move quickly (North, South, East and West) by using the second joystick

https://github.com/JetSetIlly/Adventureland-2600/releases/tag/v0.3

 

Just a heads up that I'm not able to move the cursor with developer mode turned on in Stella. I tracked it down to specifically 'Drive unused TIA pins randomly on a read/peek'. Turning that off allows me to move the cursor again. The mouse over gives a hint at what the issue could be.

 

- James

 

image.thumb.png.5fd89b0e0c113ef174f769e30e1e43a5.png

 

- James

  • Thanks 1
Link to comment
Share on other sites

Posted (edited)
9 hours ago, ZeroPage Homebrew said:

Just a heads up that I'm not able to move the cursor with developer mode turned on in Stella. I tracked it down to specifically 'Drive unused TIA pins randomly on a read/peek'. Turning that off allows me to move the cursor again. The mouse over gives a hint at what the issue could be.

Thanks! I have a similar setting in Gopher2600. You'd think I'd use it and have it set when developing games, wouldn't you? 🙂

image.png.e3fbd2a457173893c8a51a4403b5d809.png

 

Anyway, that's fixed: https://github.com/JetSetIlly/Adventureland-2600/releases/tag/v0.4

 

9 hours ago, ZeroPage Homebrew said:

 The mouse over gives a hint at what the issue could be.

Interestingly, the hint in the tooltip wasn't the reason. Although I agree it normally would be.

 

In this case the problem was because (in the C code for the ARM program) I was checking if the fire button had changed and not going on to check if the joystick has changed if it had. The simplified logic for this:

 

IF INPT4 has changed
    deal with fire button bit
ELSE IF joystick direction has changed
    deal with joystick
ENDIF

 

The first condition should be:

 

IF fire button bit of INPT4 has changed

 

It's a subtle difference but because some of the pins of INPT4 are not driven, the randomised pins options in the emulators caused the fire button to be dealt with every frame, meaning the joystick direction was never checked.

 

Edited by JetSetIlly
  • Like 1
Link to comment
Share on other sites

Played your last build: bugs/problems are gone (but hadn’t checked second joystick control). 
 

Great to see that it have a scoring system (not seen this before). 
 

What does it mean when you put in a command that is unknown („you use word GO“ or so)?

 

Here‘s an actual screenshot:

 

 

IMG_0231.jpeg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...