"Multi-cart" menu programming project

Basic and Machine Language

Moderator: Moderators

6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

"Multi-cart" menu programming project

Post by 6502dude »

I don't have a lot of spare time lately, my programming skills are limited, and I prefer working with a soldering iron :wink: .

I'm proposing a Denial forum member "Multi-cart" programming project for menu development.

This would be open to all Denial forum members.

All those participating in the project will have name entered into a drawing for the hardware prize pictured here:


Image

(winner to pay actual shipping charges & responsible for any applicable import duties.)

Note: the picture depicted is not the final revision - which includes expanded ram write line inhibit logic.
I will update this post the final hardware picture when I find the scan of it.

Here are some initial basic rules:

i) Drawing to be done by independent third party

ii) I will build up game BIN image files and burn eproms to suit NTSC or PAL land winner.

iii) Target dates - start April 27th end June 30th (or earlier)

iv) Participants must be Denial forum members as at 04/27/2007 00:00 UTC

v) Winner must post photo of "Multi-cart" with Denial menu in action in their home setup

vi) Credits list must be included within menu to include all those already recognized at TPUG presentation of the hardware, and all those that participate in the menu programming project.

vii) Denial Multi-Cart Menu must be written in assembler and distributed as open source

viii) I will be available to assist with testing and debuging

ix) Project participants will decide via vote when project is completed (subject to minimum functional requirements)

x) Participantion in this project includes contributions for (a) programming of menu (b) music (c) custom character set (d) animations

xi) Denial Forum members to vote on development milestones


I think the above allows for greater participation and will generate some great ideas in the forum.

Plus, joining in the fun, Denial members have a chance to win a limited edition Vic-20 "multi-cart"

Please advise if there is any interest in this group project.

If there is, I will post minimum functional requirements and operational details to select games, perform reset, etc.
Last edited by 6502dude on Wed May 23, 2007 8:09 pm, edited 2 times in total.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
Jeff-20
Denial Founder
Posts: 5759
Joined: Wed Dec 31, 1969 6:00 pm

Re: "Multi-cart" menu programming project

Post by Jeff-20 »

6502dude wrote:iv) Participants must be Denial forum members as at 04/27/2007 00:00 UTC
Woo-hoo! I qualify! :P
High Scores, Links, and Jeff's Basic Games page.
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

After a bit of consideration, I'll bite. :-D Post some more details and in particular repeat how each game is going to be selected. I saw from your presentation that you write three values to 38912-14 and then the program gets switched in and the computer does a soft reset (?) to start it.
Anders Carlsson

Image Image Image Image Image
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

carlsson wrote:Post some more details and in particular repeat how each game is going to be selected.
Thanks for your interest in this project :D

The logic of game/application selection is as follows:

- poke 38913,x is used to select game in 8K cell in eprom #1

- poke 38914,y is used to select game in 8k cell in eprom #2

- poke 38916,z to perform software reset & start the game (the value of z is not relevant).

Where a game is only 4K or 8K (not spanning eproms), the value of 255 is used for x or y to disable the eprom which is not used for the game.

This may be all be done via a look up table of values since this will be defined when eprom images are built for NTSC for PAL cart.

ie: GAME_NAME, EPROM#1_Value,EPROM#2_Value

Where:
GAME_NAME = displayed value via call to $FFD2
x=EPROM#1_Value
y=EPROM#2_Value

Example from:
http://www.bjlyons.com/cbm/vic20/multic ... 7-2007.xls

Frogger would be: "Frogger", $06, $FF
Predator would be: "Predator",$FF,$06

An example of a game > 8K

Donkey Kong would be: "Donkey Kong",$03,$03

32K Expanded RAM would be: "32K Expanded",$FF,$FF

Expanded RAM Write Inhibit would be: "text here",$80,$FF

In each case, a JSR may be invoked to do a reset (poke38916,z) to start the game.

The values of 38913, 38914, & 38916 may change after I look at I/O2 address space conflict for Q-bert game.

However, the fundental logic of selecting independant address to enable / disable each eprom and perform reset will not change.

The lookup table of game names and their relative addressing (based on "multi-cart") is expected to be located in top 8K block of Eprom #2. This should appear at address $C000 in Vic-20 memory.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

I think Carlsson is the right men, if you need help ask me, in any case i may contribute with other PRG to CART conversion to load other, at the moment, unexpanded games.
It's possible to start standard 8k or 16k games too ?, i may release some special cart in $a000 or $a000+$6000 that move itself to $1200> but the menu must select ram in bank 1 or 1 and 2 before start it.
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

nbla000 wrote:It's possible to start standard 8k or 16k games too ?, i may release some special cart in $a000 or $a000+$6000 that move itself to $1200> but the menu must select ram in bank 1 or 1 and 2 before start it.
Yes, the hardware will support storing a game which must run from ram space.

As noted, a copy utility can simply move pgm fom ROM to RAM, and then start it.

This feature will allow storing your favourite game in ROM and not needing to modify any address in the code, to make it run from $A000. Also, when stored in ROM, there is need to lug along a floppy disk and drive to play your favourite .prg games.

I was thinking of modifying the Scott Adams games loader to be more generic and to accomodate rom to ram moves for Scott Adams games + .prg games.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
Schema
factor
Posts: 1430
Joined: Tue Mar 23, 2004 7:07 am
Website: http://www.jammingsignal.com
Location: Toronto, Ontario

Post by Schema »

Aw man. I have a head-start on this, but I have zero time at the moment to contribute further. Have fun though!
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

Schema wrote:Aw man. I have a head-start on this, but I have zero time at the moment to contribute further. Have fun though!
All contributions are welcome for the hardware prize. :)

I don't play games, so holding onto the hardware is somewhat pointless for me.

If someone else can derive enjoyment from the hardware, I would rather see that, then it sitting idle for years, or discarded for parts on use of the board for another project.

This is an idea that I considered several weeks ago, at the outset of hardware design.

Also, I would like to see hardware capabilities realized via software development.

My next hardware project is an analogue to digital conversion idea.

I plan to have this done for September TPUG meeting and will present it, if there is interest in TPUG group for a demo.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Heh. BBC News had coverage of the Sinclair Spectrum 25 years last week, and in the text they had written something about how the computer lives on through emulation and now the games can be enjoyed digitally (as opposed to the analogue 1980's). I suppose the writer tried to refer to loading from audio cassettes, but once the data is converted in the computer, it should be just as digital as it appears in the emulator.
Anders Carlsson

Image Image Image Image Image
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

carlsson wrote:.....games can be enjoyed digitally (as opposed to the analogue 1980's)
The writer of the story either didn't know what they were writing about (which is pretty common) or they were try to play upon general public's perception that digital is superior to analogue.

I still think it is funny to see ads for "digital" speakers.

I'm glad I don't do product marketing anymore.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Since the cat is out of the bag, I suppose I can post the link to the menu software as of now. I believe it is the most recent revision, although not by far the final one (e.g. credits need to be improved, and some bugs need to be fixed). I also included two musics, of which 6502dude linked his demo with the Mozart piece if I understand correctly.

http://www.cbm.sfks.se/multicart/

The PRG file is possible to attach in VICE, but if you select a game from the menu the program will crash out, because you don't have access to the multicart hardware itself.
Anders Carlsson

Image Image Image Image Image
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

Very good work, nice char and music but i think that was much more fun if you implement more categories and in mixed mode, for example a game like ALPHA ZOO may be in "A" menu and in "Educational" Menu or in PAL/NTSC, Sport, platforms, Classics and why not favorites using a disk/tape to store favorites info, i think it's a nice idea.
What do you think ? i may do some tests using your sources ?
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Everything is possible. The sky is the limit.

In order to make it simple, I decided to list each program only in one place. Also, to not require scrolling of pages, I limited each subpage of entries to 16-18. That is why S is divided into two parts. As the number of real cartridge games increases - I think there are quite a number of images not present on this list - as well as some other software also is converted to run from ROM, we would have to look over how to implement the menus.

I don't know about favorites. It means you would have to load data into RAM, which in the worst case may be overwritten once you start a game. Perhaps if the multicart has some battery backuped or writable Flash memory. This is way beyond my league and also out of the scope for this project I think. But anyone is free to experiment. That is why I made the sources public. I know in theory how to implement this list of favorites, but it also requires the menu software to have a mechanism to compose favorites.
Anders Carlsson

Image Image Image Image Image
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

carlsson wrote:we would have to look over how to implement the menus.
ok, i take a look.
I don't know about favorites. It means you would have to load data into RAM, which in the worst case may be overwritten once you start a game.
Yes, my idea is to optionally use a SEQ file "MULTICART.SEQ" from a disk with just some pointers for each favorite cart, yes i need to reload it after a reset but i think that doesn't require too much time and in any case it's optional, only if user wants.
Perhaps if the multicart has some battery backuped or writable Flash memory. This is way beyond my league and also out of the scope for this project I think.
I don't think to modify hardware in any case may be possible to use 3k ram with battery because doesn't change video pointers.
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

This is my first MENU layout.
Image
Heart symbol it's used to identify favorite games, in red there is the actual selected game, by pressing return start the game.
Up/Down arrows to move selection
F1 to enter in the Help screen ???
F2 to set/unset selected game as favorite
F3 To enter to the Filter Menu (see below)
F4 Music On/OFF
F5 Page Up
F7 Page Down

Filter Menu settings idea:

Code: Select all

F1 NTSC 
F2 PAL   
F3 ARCADE
F4 SPORT
F5 SHOT EM UP
F6 PLATFORMS
F7 ADVENTURES
F8 EDUCATIONAL
C= FAVORITE
and for each element the choice is (YES/NO/ALL)

My typical setting may be:

Code: Select all

F1 NTSC        ALL 
F2 PAL         YES
F3 ARCADE      ALL
F4 SPORT       ALL
F5 SHOT EM UP  ALL
F6 PLATFORMS   ALL
F7 ADVENTURES  NO
F8 EDUCATIONAL NO
C= FAVORITE    YES

I need just one byte in ROM for each menu element to check F1/F8 filters and 10 bytes to store the filters selection and music choice + 255 bytes or 255/8 bytes if i'm not lazy on disk to load Favorite Option (255 games max right ?).

My idea is to check if exist a Drive from #4 to #30 and if exist automatically load "MULTICART.SEQ" file, if during game selection the user changes filters or set/unset favorite resave the "MULTICART.SEQ" file before start the game.

That's all, what do you think ?
Post Reply