Jump to content
IGNORED

GROM files


Asmusr

Recommended Posts

This is a peice of cake to pull off.

 

1. Make a copy of the memory of the game in the TI memory.

2. Put a copy in the GROM after a GROM header for a Cartridge.

3. The Header points to the first program line that sets up the environment for the computer say like EA Cartridge.

4. After the set up use the GPL MOVE command to move the GPL GROM copy of your game into the TI memory locations.

5. Use the GPL XML command (eXecute Machine Language) to start the Assembly Program now in memory.

 

Using this method the game should be up and running about 1 second after they select the game from the TI Main menu.

 

My GPL demos GPLHOW2A to GPLHOW2K pretty much explain how this works so use GPL HOW 2 SERIES

 

http://atariage.com/...ment-resources/

 

This is the first demo I did on GPL HOW 2

 

http://www.youtube.com/watch?v=Cs4D_Gn0Le8&list=TLoBpitlpLjyY

Edited by RXB
Link to comment
Share on other sites

The file extension .BIN is used by Classic99 at the very least. Within Classic99, I would place the .BIN file into my MODS folder, then goto the CARTRIDGE tab and then USER / OPEN and select the .BIN file from there to autoload the cartridge image.

 

The RPK files in MESS format are usable by Classic too, we just unzip the RPK using a decent zipper, and we can get to .BIN files from within them.

 

To make a MESS cartridge, we would have to have the .BIN file(s) in a folder with an XML file for MESS with information on it (cart name, etc etc, see any XML layout file within any RPK file to get the structure of it)

 

The MESS RPK folder would then need to be compressed with the RPK format extension, "yourgame.RPK"

 

As for WIN994a, I have no idea whatsoever of how to make a cart image for that .... but I bet other people on here do know. :)

Edited by Retrospect
Link to comment
Share on other sites

I have 4 x 4K map level files in Titanium. If I concatenate them into a 16K file, call the file titaniumg.bin, and place a line in classic99.ini:

rom1=G|6000|4000|mods\titaniumg.bin

Is that sufficient to 'mount' the file as GROMs? Will they be mounted as 2 x 8K or 3 x 6K GROMs?

As you can probably tell I have no experience with GROMs whatsoever.

Link to comment
Share on other sites

I have a Windows tool that will convert an EA#5 program into a properly formatted GROM cartridge:

 

http://harmlesslion.com/software/makecart

 

GROMs are memory devices, and to be recognized as a cartridge, you need a small header on it. Your game runs in CPU space, so has to be copied from GROM to RAM to run, which means you need a small GPL program to do the copy. My tool automates all that.

 

Link to comment
Share on other sites

I have a Windows tool that will convert an EA#5 program into a properly formatted GROM cartridge:

 

http://harmlesslion....ftware/makecart

 

GROMs are memory devices, and to be recognized as a cartridge, you need a small header on it. Your game runs in CPU space, so has to be copied from GROM to RAM to run, which means you need a small GPL program to do the copy. My tool automates all that.

 

From what I read of your program it will not work as he needs 16K and as I understand it your program only does 8K?

 

So he would need another bank of 8K GRAM for the 16K of his program?

Link to comment
Share on other sites

I have a Windows tool that will convert an EA#5 program into a properly formatted GROM cartridge:

 

http://harmlesslion....ftware/makecart

 

GROMs are memory devices, and to be recognized as a cartridge, you need a small header on it. Your game runs in CPU space, so has to be copied from GROM to RAM to run, which means you need a small GPL program to do the copy. My tool automates all that.

 

Thanks Tursi, I have tried your tool and it worked fine after disabling the boot tracking in my program, but it still needs a companion disk with the map, music and sprite files. My plan for the cartridge was to run the main program from ROM but put the data files into GROMs (of which I understand you can have 40K). When I need a map file I will then copy the relevant part of the GROM into CPU RAM. Will I still need GPL for that? Will that be compatible with the new 512K card?

Link to comment
Share on other sites

 

 

From what I read of your program it will not work as he needs 16K and as I understand it your program only does 8K?
So he would need another bank of 8K GRAM for the 16K of his program?


My program will do up to 32k (since you can't load a PROGRAM image file larger than that). It recognizes all blocks of the memory expansion and also handles 6k GROM boundaries if you choose it to. It can also pre-load the character set and include the Editor/Assembler utilities if your program needs them.

 

Thanks Tursi, I have tried your tool and it worked fine after disabling the boot tracking in my program, but it still needs a companion disk with the map, music and sprite files. My plan for the cartridge was to run the main program from ROM but put the data files into GROMs (of which I understand you can have 40K). When I need a map file I will then copy the relevant part of the GROM into CPU RAM. Will I still need GPL for that? Will that be compatible with the new 512K card?


Ah yes... does it load any data at runtime, or only at boot? You can tell Classic99 to save a PROGRAM image file for you containing all the data you use pre-loaded -- it will even save the VDP part (although your code would then need to load it). There's no automated way today to make software that loads files from disk suddenly load from cartridge.

Jon's suggestion of using a bank-switched ROM instead of GROM would actually let you get to cartridge faster right now, you would just need to write the code to load. But, you can also write it to copy from GROM, either way works. If you are already running assembly, then no, you don't need GPL.

I don't know anything about the new 512k card, but if it affects cartridges it isn't going to be very popular. ;) So I would expect not!

 

(Can't seem to post properly at all from IE, even after wiping cache. Lovely.)

Link to comment
Share on other sites

Ah yes... does it load any data at runtime, or only at boot? You can tell Classic99 to save a PROGRAM image file for you containing all the data you use pre-loaded -- it will even save the VDP part (although your code would then need to load it). There's no automated way today to make software that loads files from disk suddenly load from cartridge.

Yes it loads data both when it returns to the start screen and also between levels.

 

Jon's suggestion of using a bank-switched ROM instead of GROM would actually let you get to cartridge faster right now, you would just need to write the code to load.

I don't know how to program for ROM bank switching. Where can I read about it?

 

I don't know anything about the new 512k card, but if it affects cartridges it isn't going to be very popular. ;) So I would expect not!

I guess I wasn't clear. I was referring to your new cartridge board project, the one with the GROM emulation. :-)

Link to comment
Share on other sites

Yes it loads data both when it returns to the start screen and also between levels.

Ah, okay, so you definitely need more than a loader, you need storage as well.

 

I don't know how to program for ROM bank switching. Where can I read about it?

Um.. there's a little bit here: http://atariage.com/forums/topic/185680-walking-through-bank-switching/?hl=bank+switching&do=findComment&comment=2341583

 

The basic concept is that you write to a ROM address to change the address lines, and thus switch which bank you're reading from. In this design the data is ignored, and the least significant address lines are latched for the new 'page'.

 

I guess I wasn't clear. I was referring to your new cartridge board project, the one with the GROM emulation. :-)

Oh, yeah.. nothing fancy there when used as a memory device. You can use the ROM or the GROM. The ROM is cheaper, mind you, the GROM chip is around $15, last time I looked. But I was thinking of demonstrating stripped down cheaper versions.. any AVR with enough I/O pins will work, it doesn't have to be the monster we laid out for this board :)

 

So far as headers go.. there is that old book, but Theirry Nouspikel's page describes it quite nicely as well, including limitations: http://nouspikel.group.shef.ac.uk/ti99/headers.htm

Link to comment
Share on other sites

Found the attached. I guess this is what I need?

I have a tutorial on how I implemented bank-switching in Pitfall. It is in the Development Resources Thread, section 6 "Tutorials -> Building a multi-bank ROM image". Quite sure there are easier ways, but it did the trick for me and allowed me to have different code at the same memory address. Vector (jump) tables may also work for you.

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

I have a tutorial on how I implemented bank-switching in Pitfall. It is in the Development Resources Thread, section 6 "Tutorials -> Building a multi-bank ROM image"

Thank you. I don't know how I could have missed it.

 

Edit: Very impressive. I didn't realize how difficult it must have been until a read your paper. But Pitfall was designed to work on an unexpanded console. It must be possible to cut a lot of corners if you can copy into 32K RAM.

Link to comment
Share on other sites

Rich - what GPL assembler do you use? Do you use the Funnelweb environment as your development environment (programmers editor) worth something like RAG GPL assembler holed up to the Fweb menus?

 

Any chance you could hook me up with copied of your assembler and linker (or the whole Fweb disk if that's what you're using.

 

Mark

Link to comment
Share on other sites

Rich - what GPL assembler do you use? Do you use the Funnelweb environment as your development environment (programmers editor) worth something like RAG GPL assembler holed up to the Fweb menus?

 

Any chance you could hook me up with copied of your assembler and linker (or the whole Fweb disk if that's what you're using.

 

Mark

I use the Ryte Data GPL Assembler and not anything else.

 

I tried all of the others but the RAG and Ryte Data GPL Assembler seem to be the ones I favor the most. (Ryte Data GPL Assembler is the only Endless pass Assembler in the TI99/4A)

 

I use Note Pad and Classic99 paste into EA Editor or sometimes Ti99Dir to convert Note Pad to TI Files.

 

Now when I was on my TI I used FW but my 80 column TIM card died so moved to PC99 and did that for a year.

 

So here is everything I used to use in FW 40 column on PC99. This copy is from Classic99 but runs from RXB LOAD program.

 

Rich

GPLRICH.zip

Link to comment
Share on other sites

Rich - what GPL assembler do you use? Do you use the Funnelweb environment as your development environment (programmers editor) worth something like RAG GPL assembler holed up to the Fweb menus?

 

Any chance you could hook me up with copied of your assembler and linker (or the whole Fweb disk if that's what you're using.

 

Mark

I forgot the linker but it is in this GPLHOW2 and you can put it on the other disk.

GPLHOW2A.zip

Link to comment
Share on other sites

Hi Rich, thanks for the files! And apologies (to all) for the terrible spelling in my earlier post - bloody predictive text on mobiles SUCKS!

 

Rich, I noticed that on the first disk there is the following three files:

 

ASSM1 (9K)

ASSM2 (1K)

ASSM3 (1K)

 

And the same three files on the second zip that you posted, but the file sizes are different? Is the first disk a 9900 assembler (for FWEB) and the second one is a GPL assembler?

 

I need to try to remember how to configure the FWEB menus so that I can put the 9900 assembler, GPL assembler, and GPL linker onto menu entries. If anyone can remember how in hell to load the menu configuration program, please post!!

Link to comment
Share on other sites

Rich,

 

Aha! Just read the README file in the second zip, so things make more sense now. I plan to change the filenames of ASSM1 ASSM2 and ASSM3 on the second ZIP file that you posted, since they are the GPL assembler files. I'll call them GASSM1 GASSM2 and GASSM3 and put them on the FWEB disk, with the linker.

 

Am I correct in thinking that I only need to run the LINK (linker) program if I want to convert the GPL program into something that can be loaded via Editor/Assembler?

 

Let's assume that I don't want to do that for the moment. Let's assume I just want the 'normal' output from the assembler (the GPL object file). I assume I can this file in (for example) Classic99 to build a Classic99 cartridge with? In other words, I just make the appropriate entry in Classic99.ini and point it at the object files (which I will copy over to classic99/mods).

 

Am I on the right track?

 

I'm interested in exploring GPL in it's native environment - i.e. running out of a cartridge, more than simulating it via a E/A5 program, as, if I do use GPL, it'll be used in real cartridge.

 

That leaves GPL manuals. What do you recommend to learn the GPL instruction set? I have a book somewhere from TI (very late 70's I think) called something like TI Home Computer GPL Specification, and it details all the GPL instructions. Is that a good place to start? I don't know of any GPL articles/columns in publications such as Micropendium/Smart Programmer. Are there any?

 

Mark

Link to comment
Share on other sites

... That leaves GPL manuals. What do you recommend to learn the GPL instruction set? I have a book somewhere from TI (very late 70's I think) called something like TI Home Computer GPL Specification, and it details all the GPL instructions. Is that a good place to start? I don't know of any GPL articles/columns in publications such as Micropendium/Smart Programmer. Are there any?

...

 

There's Heiner Martin's TI99/4A Intern. It has a chapter on all of the GPL commands as well as commented dumps of console GROM0 and ROM (which includes the GPL interpreter so you can see exactly how the GPL commands work).

 

...lee

  • Like 1
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...