petit chou Posted May 22, 2015 Share Posted May 22, 2015 Hi there, Does anyone have any good information on the exact structure of the expected ROM header in an Intellivision ROM? I've found examples that strategically pass zeros and ones (like the ones in the jzintv documentation labeled "EXEC friendly ROM header") but I would really like to know if possible more about what exactly is supposed to be here and why. Does anyone here have any leads or know where I might be able to find this sort of documentation? Any help would be appreciated. Thanks a bunch! Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/ Share on other sites More sharing options...
+DZ-Jay Posted May 22, 2015 Share Posted May 22, 2015 Hi there, Does anyone have any good information on the exact structure of the expected ROM header in an Intellivision ROM? I've found examples that strategically pass zeros and ones (like the ones in the jzintv documentation labeled "EXEC friendly ROM header") but I would really like to know if possible more about what exactly is supposed to be here and why. Does anyone here have any leads or know where I might be able to find this sort of documentation? Any help would be appreciated. Thanks a bunch! Search the Web for something called "Your Friend The Exec." It is the programmer's guide used at Mattel. Keep in mind that it is a proprietary document owned by Intellivision Productions, Inc. Here's the layout: 3.5 THE UNIVERSAL DATA BLOCK Certain universal information is placed at the beginning of each cartridge. This data, the Universal Data Block (UDB), is used by the EXEC in performing its functions. Each cartridge must start with the following: BIDECLE OBJGRAM ; Address of moving object picture base BIDECLE PLIST ; Address of process table BIDECLE RESET ; Address of reset routine BIDECLE BACKGRAM ; Address of background picture base BIDECLE BLIST ; Address of coded list for GRAM load BIDECLE NAME ; Address of cartridge name and date DECLE KC.key(s) ; Bits for automatic key clicks DECLE BD.Xside(s) ; Bits for extending screen border DECLE BG.mode ; Background mode (color stack or FG/BG) DECLE BD.color ; Background color stack - color #1 DECLE BD.color ; - color #2 DECLE BD.color ; - color #3 DECLE BD.color ; - color #4 DECLE BD.color ; Border color DECLE <picture #>*8 ; GRAM space for object 0 DECLE <picture #>*8 ; GRAM space for object 1 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242403 Share on other sites More sharing options...
+DZ-Jay Posted May 22, 2015 Share Posted May 22, 2015 By the way, the reason the examples put zeros and ones is to prepare an EXEC-friendly Universal Data Block that bypasses the EXEC itself. As you can see, the examples set null-pointers to the process and GRAM load lists. Otherwise, it would require your program to use the EXEC and conform to its framework, and therefore a lot more internal knowledge of its structures. 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242405 Share on other sites More sharing options...
GroovyBee Posted May 22, 2015 Share Posted May 22, 2015 Don't search! Just get this (its a 17M download) :- http://www.intellivisionbrasil.com/.\docs\manuais-hardware\Service_YourFriendTheEXEC.pdf 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242410 Share on other sites More sharing options...
+DZ-Jay Posted May 22, 2015 Share Posted May 22, 2015 (edited) Don't search! Just get this (its a 17M download) :- http://www.intellivisionbrasil.com/.\docs\manuais-hardware\Service_YourFriendTheEXEC.pdf Well, I was trying to avoid giving direct links to documents of dubious legality... Oh, and that one is still missing page D-1. -dZ. Edited May 22, 2015 by DZ-Jay 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242416 Share on other sites More sharing options...
GroovyBee Posted May 22, 2015 Share Posted May 22, 2015 Oh, and that one is still missing page D-1. I never knew that! Shows how often I've looked at that document . 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242417 Share on other sites More sharing options...
petit chou Posted May 22, 2015 Author Share Posted May 22, 2015 Thank you all so very much for your extremely helpful replies! I am continually amazed at how encouraging and supportive this community is. 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242726 Share on other sites More sharing options...
+DZ-Jay Posted May 23, 2015 Share Posted May 23, 2015 Sure. If you have more specific questions, we'll try to answer them. 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242952 Share on other sites More sharing options...
GroovyBee Posted May 23, 2015 Share Posted May 23, 2015 Thank you all so very much for your extremely helpful replies! I am continually amazed at how encouraging and supportive this community is. If you need help with assembler or IntyBASIC there are always people around to ask. Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3242985 Share on other sites More sharing options...
+DZ-Jay Posted May 23, 2015 Share Posted May 23, 2015 By the way, some additional information on the UDB (a.k.a. ROM Header) can be found in Valter Prette's "Programming The Intellivision" white-papers. I've attached a copy for your reference. -dZ. WhitePaper-Intellivision Programming I.pdf WhitePaper-Intellivision Programming 2.pdf 1 Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3243016 Share on other sites More sharing options...
intvnut Posted May 24, 2015 Share Posted May 24, 2015 (edited) FWIW, I personally avoid the EXEC whenever possible. While the document may be entitled "Your Friend the EXEC," understanding the EXEC requires access to proprietary documentation that the rights-holders have chosen to keep close to their chests. That makes it decidedly unfriendly in my opinion. YFTE can help you understand some of the details, but from what I understand, it doesn't actually have all of the information you need to use the EXEC properly anyway. It expects you to have access to the EXEC-related macros and header files that define many of the constants, etc. The EXEC is not really my friend. Is your goal to better understand existing games, or to write new ones? If it's to better understand existing games, you might play around with dis1600. It understands various data structures that hang off the cartridge header and certain EXEC entry points. As I do occasionally fix bugs from time to time, you might get the latest and/or greatest: http://spatula-city.org/~im14u2c/intv/dl/jzintv-20150213-win32.zip http://spatula-city.org/~im14u2c/intv/dl/jzintv-20150213-linux-x86-64.zip http://spatula-city.org/~im14u2c/intv/dl/jzintv-20150213-osx.zip If your goal is to write a new game, I'd suggest writing it without the EXEC's "help." Either use IntyBASIC, or solicit help here on AA on building the support pieces you need that you'd otherwise rely on the EXEC for. You'll get a more responsive game, and you won't be tied to the restrictions and quirks of the EXEC. For one thing, it eats nearly all of the 16-bit RAM and a good portion of 8-bit RAM! For another, it limits your game's frame rate to 20Hz. The ROM capacity restrictions that made the EXEC a good idea in 1979 - 1981 no longer hold in 2015. FWIW, the strategically places 0s and 1s and such in the ROM header are there mainly to benignly bypass the EXEC in as efficiently a way as possible to drop into your own game, while maximizing compatibility with the ECS, and leaving a hook whereby the game can identify itself via the "cartridge title" entry. (The cartridge title entry is also how the header wrests control from the EXEC, by setting the flag "run code after the title".) Anyway, whatever your goals, best wishes and good luck. We're here to help. Edited May 24, 2015 by intvnut Quote Link to comment https://forums.atariage.com/topic/238582-rom-header-information/#findComment-3243452 Share on other sites More sharing options...
Recommended Posts
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.