Jess Ragan #1 Posted July 15, 2009 Let's say I was interested in making video games for the ColecoVision, but wanted to do it in a high-level programming language so my brain doesn't explode. Where would I start? What software would I need, and where could I get it? Are there any example programs I could compile and run on an emulator or the actual hardware? Inquiring minds want to know, and would greatly appreciate links to the aforementioned software. Quote Share this post Link to post Share on other sites
newcoleco #2 Posted July 15, 2009 I would like to tell you that there are many options, but I've seen only Assembler and C languages used for Coleco games even if Pascal should be possible too in theory. I would like to tell you that there is a miracle devkit that can do everything you want, but it's not true. I would like to tell you there are many tools and great support, but we are fans doing our best to make the Coleco programming experience a little more fun and easier year after year. I'm working on a kit, PKK is working on a kit, and some other programmers use their own kit most of the time composed of disassembled rom files and technical information documents. My first devkit was made in year 2000 based on Marcel de Kogel's work; it was used for some projects like dacman, miss space fury and a few others. Today, this kit is at its 3rd or 4th revision and being ported to sdcc compiler (instead of using Hi-Tech C compiler under cp/m emulation). Because I'm still working on the new kit, it's in beta version now, I will not lie to you and say there is no bug or bad surprise in it... but some people do already like it, and I'm using it for my most reccent Coleco projects already. Make your own opinion about my kit by looking at my blog here : http://newcoleco.dev-fr.org/ Note : It will be easier for me to suggest you a kit if you can tell me what is your programming experience and what do you know (in a technical point of view) about ColecoVision. Quote Share this post Link to post Share on other sites
Jess Ragan #3 Posted July 18, 2009 Well, I don't even know how to compile anything. I think that's the main problem I've had with C in general, and that's definitely the case here. Is there some sort of step-by-step guide that I could use to compile a sample program? (Also, for Pete's sake, somebody show the ColecoVision fans a little mercy and make a BASIC compiler for this thing!) Quote Share this post Link to post Share on other sites
Pixelboy #4 Posted July 18, 2009 (edited) Well, I don't even know how to compile anything. I think that's the main problem I've had with C in general, and that's definitely the case here. Compiling (and linking) just means running a program that takes your source code and turns it into a ROM which you can put on a cartridge. The compiler itself does all the work for you (as long as there are no mistakes in your source code), and you just need to sit there for a few seconds and wait until the program completes its job. Is there some sort of step-by-step guide that I could use to compile a sample program? I haven't yet tried the new incarnation of Daniel's Coleco library (which is designed to be used with the SDCC compiler) but with the old Hi-Tech C compiler, there's a program that Daniel created called CCI.EXE, which is a GUI frontend for using the compiler. It's very simple to use: You just add all your source files to a list on the screen, then push a button to run the compilation, and at the end, you get your ROM. Of course, there are a few details you need to know and configure, but nothing difficult. It's really like riding a bike: Do it once successfully, and the process will be straightforward for you after that. (Also, for Pete's sake, somebody show the ColecoVision fans a little mercy and make a BASIC compiler for this thing!) The problem with your request is that it doesn't change much of anything whether you work in C or in BASIC. You will still need to compile your code to get a ROM which you can put on a cartridge. Normally, BASIC is an interpreted language, which means that you use a program to load your source file into RAM, and the program executes your source file line by line (so no compiler is required in this case). You cannot do something like that with the ColecoVision, because you can only have compiled machine code on a CV cartridge, and there's only 1K of RAM to work with, so everything has to be very tight. Believe me, Jess, once you've gotten into C language, you'll ditch the idea of using BASIC, because you will understand how C language works in your favor to better harness the power of the machine. BASIC will not help you in such areas as the main NMI loop (which is tied to the screen refresh rate, and is useful for controlling such things as joystick input and sound output) and controlling the main stack in RAM (which is important when you only have 1K to work with). At one time, I wanted to design a language similar to Visual Basic, which would be easier to learn and use than C, but after making my first game in C on the CV (namely Sudoku), I realized that C is easy enough with the help of the Coleco libraries (and graphic editors like Daniel's ICVGM), and gets the job done quite admirably. I suggest you start with a simple demo project. For instance, try to make a program that moves an 8x8 square around the screen via the joystick (kind of like Adventure on the Atari 2600). You have a choice of defining this square as a tile or as a sprite. Working with tiles is generally easier for something like this, because it's only a question of using the "print_at" function (from the Coleco library) with X and Y coordinates to "print" the square on the TV screen (it works just like the PRINT command in BASIC, really). The downside is that you can only move the square in increments of 8 pixels. If you want to move the square around the screen in a smooth fashion, you need to define your square as a sprite. It's slightly more complicated to do, but after you've done it once, you'll understand how it works. It's all very easy to do, but you need to break yourself into it by writing that first program, and no one can do that in your place. Well, someone could write it for you, I suppose, but then you wouldn't learn nearly as much compared to writing it yourself. I wrote my game of Sudoku myself completely from scratch, and it was quite a learning experience, especially where the Coleco library is concerned, because the docs I had to work with did not explain every detail, and I ended up scratching my head several times and then asking for a little help from Daniel. If you don't have any prior experience with C language, then it may be a little more difficult for you than it was for me, but overall, it's not something that should intimidate you, especially if you only want to do simple little games on the CV. Daniel's Coleco library takes a lot of the technical hassle away from the programmer, so the simpler your game is, the more the Coleco library helps you. For your first "real" CV game, may I suggest doing a text adventure, perhaps? It hasn't been done on the CV before, AFAIK, and a text adventure doesn't require any sprites, just joystick input management and printing text on the screen... Edited July 18, 2009 by Pixelboy Quote Share this post Link to post Share on other sites
Jess Ragan #5 Posted July 20, 2009 Yeesh, I know what a compiler is. I've compiled software in Quick BASIC 4.5 back in the '90s, and in Dragon BASIC (for the GameBoy Advance) last night. I just don't know how to use the software for any of the C packages I've tried. It's just one great big tangled mess of files, and I don't know where to begin. I don't even know where I'm supposed to put the pre-written sample programs that I downloaded from Daniel's web site! It's frustrating! If there was some YouTube tutorial which explains where I should unzip files and how to compile software in C, it would help a lot. Quote Share this post Link to post Share on other sites
Jess Ragan #6 Posted July 20, 2009 Sorry, this is just kind of frustrating. Anyway, I've made some progress on the software I downloaded from Bienvenu's web site. Only problem now is that the compiler can't find the file "SDCC," and I don't seem to have it anywhere in the dozen or so programs I've downloaded so far. Is it copyrighted or something? Quote Share this post Link to post Share on other sites
JamesD #7 Posted July 21, 2009 Sorry, this is just kind of frustrating. Anyway, I've made some progress on the software I downloaded from Bienvenu's web site. Only problem now is that the compiler can't find the file "SDCC," and I don't seem to have it anywhere in the dozen or so programs I've downloaded so far. Is it copyrighted or something? Are you sure it's a program and not a path? Quote Share this post Link to post Share on other sites
youki #8 Posted July 21, 2009 did you read that post about Daniel's SDCC kit? http://www.atariage.com/forums/index.php?showtopic=138513 the kit is really straigth foward. And Daniel documented all extremely well. Quote Share this post Link to post Share on other sites
Jess Ragan #9 Posted July 21, 2009 Yeah, I did that a couple of days ago. SDCC wasn't included in Bienvenu's package, but it was easy enough to find online, and best of all, it was free! So now I'm able to compile and link ColecoVision software. However, right now I want to get familiar with Dragon BASIC for the GameBoy Advance. I'm impressed with it so far, and I believe the software has a lot of promise as a development environment. Quote Share this post Link to post Share on other sites
newcoleco #10 Posted July 25, 2009 Yeah, I did that a couple of days ago. SDCC wasn't included in Bienvenu's package, but it was easy enough to find online, and best of all, it was free! So now I'm able to compile and link ColecoVision software. However, right now I want to get familiar with Dragon BASIC for the GameBoy Advance. I'm impressed with it so far, and I believe the software has a lot of promise as a development environment. Good luck with your Gameboy Advance projects. Do not hesitate to ask questions if you need help with your future Coleco projects. Quote Share this post Link to post Share on other sites
Vectorman #11 Posted July 28, 2009 Are any hobbyists (besides Opcode) programming for the CV in assembly? Obviously C would be easier but I have doubts it would produce smooth, professional looking games or games that scream "homebrew!". Quote Share this post Link to post Share on other sites
newcoleco #12 Posted July 28, 2009 Are any hobbyists (besides Opcode) programming for the CV in assembly? Obviously C would be easier but I have doubts it would produce smooth, professional looking games or games that scream "homebrew!".Each ColecoVision programmer find his way to program games for this game system. Back in the 90s, Norman Nithman did help a few Coleco programmers by releasing a few listing of disassembled ROM including Q*Bert, Coleco BIOS, and his game Tic Tac Toe. I did save 2-3 files and put them in a folder named TASM because the compiler he did use was Table-ASM (TASM). Note : It's the time and effort you put in a project that makes a videogame professional looking, not the programming language. Coding in assembler gives you the possibility to use every single byte at your advantage by optimizing your code to be smaller or faster based on your programming skills and the algorithms you decide to implement in your code. Quote Share this post Link to post Share on other sites
youki #13 Posted July 28, 2009 Are any hobbyists (besides Opcode) programming for the CV in assembly? Obviously C would be easier but I have doubts it would produce smooth, professional looking games or games that scream "homebrew!". Exactly has said newcoleco, it is not the language that make the game professional looking. Look newcoleco's "jeeper's creeper" or my game Ghost'n Zombies (more screenshot here) I know professional game that looks lot of less professionnal! And i think some of colecovision game (like Donkey kong) have be done in Pascal. Quote Share this post Link to post Share on other sites
Jess Ragan #14 Posted July 28, 2009 Yeah, I did that a couple of days ago. SDCC wasn't included in Bienvenu's package, but it was easy enough to find online, and best of all, it was free! So now I'm able to compile and link ColecoVision software. However, right now I want to get familiar with Dragon BASIC for the GameBoy Advance. I'm impressed with it so far, and I believe the software has a lot of promise as a development environment. Good luck with your Gameboy Advance projects. Do not hesitate to ask questions if you need help with your future Coleco projects. Sounds like a plan. Is there a tutorial beyond installation? I took a C class back in 2002 and some of the code on your site makes sense, but it'd be really handy to have a how-to guide for the more complex features like sprites and tiles. Your code does have some liner notes in it, but they're all in French... Before I forget, thanks for all your help! I'm going to see if I can get tiles going in Dragon BASIC later tonight, and I'll let you know how that works out for me. I was going to use the bitmapped mode for Gorf, but it's looking more and more like I'm going to have to fake some of those effects with tiles. Aggravatingly, you can't load a character set in the bitmapped mode, and some of those features (LINE in particular) just don't seem to work properly. Quote Share this post Link to post Share on other sites
newcoleco #15 Posted September 26, 2009 Sounds like a plan. Is there a tutorial beyond installation? I took a C class back in 2002 and some of the code on your site makes sense, but it'd be really handy to have a how-to guide for the more complex features like sprites and tiles. Your code does have some liner notes in it, but they're all in French... Before I forget, thanks for all your help! I'm going to see if I can get tiles going in Dragon BASIC later tonight, and I'll let you know how that works out for me. I was going to use the bitmapped mode for Gorf, but it's looking more and more like I'm going to have to fake some of those effects with tiles. Aggravatingly, you can't load a character set in the bitmapped mode, and some of those features (LINE in particular) just don't seem to work properly. Any progress in your plan to get started into the videogame programming world for classic game systems? Quote Share this post Link to post Share on other sites
PkK #16 Posted September 29, 2009 Are any hobbyists (besides Opcode) programming for the CV in assembly? Obviously C would be easier but I have doubts it would produce smooth, professional looking games or games that scream "homebrew!". Choice of programming language does not affect smoothness, professional look or screaming "homebrew!". Howver assembly allows for more optimization, so I tend to write my games in C first, an then later reimplement the time-critical functions in assembler (looking at the assembler-generated code first, sometimes it'S so good hand-written asm won't be better and sometimes I see a way to improve the compiler). So in the end my games are written in a mixture of C and assembler. Philipp Quote Share this post Link to post Share on other sites